From b16b9e4656e7199c2aec74a4c8ebc7a875d3ba73 Mon Sep 17 00:00:00 2001 From: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon, 2 Feb 2015 15:02:49 +0100 Subject: massive reduction of unneeded files --- nx-X11/extras/freetype2/ChangeLog | 10022 --------- nx-X11/extras/freetype2/Jamfile | 157 - nx-X11/extras/freetype2/Jamrules | 61 - nx-X11/extras/freetype2/Makefile | 32 - nx-X11/extras/freetype2/README | 39 - nx-X11/extras/freetype2/builds/amiga/README | 90 - .../amiga/include/freetype/config/ftconfig.h | 20 - .../amiga/include/freetype/config/ftmodule.h | 123 - nx-X11/extras/freetype2/builds/amiga/makefile | 207 - nx-X11/extras/freetype2/builds/amiga/smakefile | 236 - .../freetype2/builds/amiga/src/base/ftdebug.c | 185 - .../freetype2/builds/amiga/src/base/ftsystem.c | 450 - nx-X11/extras/freetype2/builds/ansi/ansi-def.mk | 93 - nx-X11/extras/freetype2/builds/ansi/ansi.mk | 21 - nx-X11/extras/freetype2/builds/atari/ATARI.H | 16 - nx-X11/extras/freetype2/builds/atari/FNames.SIC | 37 - nx-X11/extras/freetype2/builds/atari/FREETYPE.PRJ | 33 - nx-X11/extras/freetype2/builds/atari/README.TXT | 51 - nx-X11/extras/freetype2/builds/beos/beos-def.mk | 95 - nx-X11/extras/freetype2/builds/beos/beos.mk | 19 - nx-X11/extras/freetype2/builds/beos/detect.mk | 40 - nx-X11/extras/freetype2/builds/compiler/ansi-cc.mk | 84 - nx-X11/extras/freetype2/builds/compiler/bcc-dev.mk | 82 - nx-X11/extras/freetype2/builds/compiler/bcc.mk | 82 - nx-X11/extras/freetype2/builds/compiler/emx.mk | 81 - nx-X11/extras/freetype2/builds/compiler/gcc-dev.mk | 93 - nx-X11/extras/freetype2/builds/compiler/gcc.mk | 81 - nx-X11/extras/freetype2/builds/compiler/intelc.mk | 86 - .../extras/freetype2/builds/compiler/unix-lcc.mk | 87 - .../extras/freetype2/builds/compiler/visualage.mk | 78 - nx-X11/extras/freetype2/builds/compiler/visualc.mk | 81 - nx-X11/extras/freetype2/builds/compiler/watcom.mk | 85 - nx-X11/extras/freetype2/builds/compiler/win-lcc.mk | 83 - nx-X11/extras/freetype2/builds/detect.mk | 159 - nx-X11/extras/freetype2/builds/dos/detect.mk | 117 - nx-X11/extras/freetype2/builds/dos/dos-def.mk | 54 - nx-X11/extras/freetype2/builds/dos/dos-emx.mk | 21 - nx-X11/extras/freetype2/builds/dos/dos-gcc.mk | 21 - nx-X11/extras/freetype2/builds/dos/dos-wat.mk | 17 - nx-X11/extras/freetype2/builds/freetype.mk | 312 - nx-X11/extras/freetype2/builds/link_dos.mk | 42 - nx-X11/extras/freetype2/builds/link_std.mk | 42 - nx-X11/extras/freetype2/builds/mac/README | 14 - nx-X11/extras/freetype2/builds/mac/freetype.make | 109 - nx-X11/extras/freetype2/builds/mac/ftlib.prj | Bin 59597 -> 0 bytes nx-X11/extras/freetype2/builds/modules.mk | 77 - nx-X11/extras/freetype2/builds/newline | 1 - nx-X11/extras/freetype2/builds/os2/detect.mk | 72 - nx-X11/extras/freetype2/builds/os2/os2-def.mk | 54 - nx-X11/extras/freetype2/builds/os2/os2-dev.mk | 31 - nx-X11/extras/freetype2/builds/os2/os2-gcc.mk | 26 - nx-X11/extras/freetype2/builds/toplevel.mk | 139 - nx-X11/extras/freetype2/builds/unix/.cvsignore | 9 - nx-X11/extras/freetype2/builds/unix/aclocal.m4 | 5922 ----- nx-X11/extras/freetype2/builds/unix/config.guess | 1459 -- nx-X11/extras/freetype2/builds/unix/config.sub | 1549 -- nx-X11/extras/freetype2/builds/unix/configure | 22250 ------------------- nx-X11/extras/freetype2/builds/unix/configure.ac | 178 - nx-X11/extras/freetype2/builds/unix/detect.mk | 90 - .../freetype2/builds/unix/freetype-config.in | 134 - nx-X11/extras/freetype2/builds/unix/freetype2.in | 11 - nx-X11/extras/freetype2/builds/unix/freetype2.m4 | 178 - nx-X11/extras/freetype2/builds/unix/ft-munmap.m4 | 23 - nx-X11/extras/freetype2/builds/unix/ft2unix.h | 61 - nx-X11/extras/freetype2/builds/unix/ftconfig.in | 334 - nx-X11/extras/freetype2/builds/unix/ftsystem.c | 397 - nx-X11/extras/freetype2/builds/unix/install-sh | 316 - nx-X11/extras/freetype2/builds/unix/install.mk | 100 - nx-X11/extras/freetype2/builds/unix/ltmain.sh | 6422 ------ nx-X11/extras/freetype2/builds/unix/mkinstalldirs | 150 - nx-X11/extras/freetype2/builds/unix/unix-cc.in | 100 - nx-X11/extras/freetype2/builds/unix/unix-def.in | 98 - nx-X11/extras/freetype2/builds/unix/unix-dev.mk | 26 - nx-X11/extras/freetype2/builds/unix/unix-lcc.mk | 24 - nx-X11/extras/freetype2/builds/unix/unix.mk | 61 - nx-X11/extras/freetype2/builds/unix/unixddef.mk | 55 - nx-X11/extras/freetype2/builds/vms/ftconfig.h | 331 - nx-X11/extras/freetype2/builds/vms/ftsystem.c | 321 - nx-X11/extras/freetype2/builds/win32/detect.mk | 147 - nx-X11/extras/freetype2/builds/win32/ftdebug.c | 211 - .../freetype2/builds/win32/visualc/freetype.dsp | 349 - .../freetype2/builds/win32/visualc/freetype.dsw | 29 - .../freetype2/builds/win32/visualc/freetype.sln | 33 - .../freetype2/builds/win32/visualc/freetype.vcproj | 1717 -- .../freetype2/builds/win32/visualc/index.html | 38 - nx-X11/extras/freetype2/builds/win32/w32-bcc.mk | 23 - nx-X11/extras/freetype2/builds/win32/w32-bccd.mk | 25 - nx-X11/extras/freetype2/builds/win32/w32-dev.mk | 35 - nx-X11/extras/freetype2/builds/win32/w32-gcc.mk | 26 - nx-X11/extras/freetype2/builds/win32/w32-icc.mk | 23 - nx-X11/extras/freetype2/builds/win32/w32-intl.mk | 23 - nx-X11/extras/freetype2/builds/win32/w32-lcc.mk | 24 - .../extras/freetype2/builds/win32/w32-mingw32.mk | 28 - nx-X11/extras/freetype2/builds/win32/w32-vcc.mk | 23 - nx-X11/extras/freetype2/builds/win32/w32-wat.mk | 23 - nx-X11/extras/freetype2/builds/win32/win32-def.mk | 55 - nx-X11/extras/freetype2/configure | 66 - nx-X11/extras/freetype2/devel/ft2build.h | 41 - nx-X11/extras/freetype2/devel/ftoption.h | 577 - nx-X11/extras/freetype2/docs/CHANGES | 2477 --- nx-X11/extras/freetype2/docs/CUSTOMIZE | 125 - nx-X11/extras/freetype2/docs/DEBUG | 183 - nx-X11/extras/freetype2/docs/FTL.txt | 174 - nx-X11/extras/freetype2/docs/GPL.txt | 339 - nx-X11/extras/freetype2/docs/INSTALL | 67 - nx-X11/extras/freetype2/docs/INSTALL.ANY | 99 - nx-X11/extras/freetype2/docs/INSTALL.GNU | 140 - nx-X11/extras/freetype2/docs/INSTALL.UNX | 65 - nx-X11/extras/freetype2/docs/INSTALL.VMS | 36 - nx-X11/extras/freetype2/docs/PATENTS | 27 - nx-X11/extras/freetype2/docs/TODO | 23 - nx-X11/extras/freetype2/docs/TRUETYPE | 26 - nx-X11/extras/freetype2/docs/UPGRADE.UNX | 127 - nx-X11/extras/freetype2/docs/VERSION.DLL | 110 - nx-X11/extras/freetype2/docs/formats.txt | 139 - nx-X11/extras/freetype2/docs/license.txt | 28 - nx-X11/extras/freetype2/docs/modules.txt | 14 - nx-X11/extras/freetype2/docs/raster.txt | 624 - nx-X11/extras/freetype2/docs/reference/.cvsignore | 1 - nx-X11/extras/freetype2/docs/reference/README | 2 - nx-X11/extras/freetype2/docs/release | 32 - .../freetype2/include/freetype/cache/ftccache.h | 272 - .../freetype2/include/freetype/cache/ftccmap.h | 216 - .../freetype2/include/freetype/cache/ftcglyph.h | 295 - .../freetype2/include/freetype/cache/ftcimage.h | 104 - .../freetype2/include/freetype/cache/ftcmanag.h | 175 - .../freetype2/include/freetype/cache/ftcmru.h | 246 - .../freetype2/include/freetype/cache/ftcsbits.h | 96 - .../freetype2/include/freetype/config/ftconfig.h | 353 - .../freetype2/include/freetype/config/ftheader.h | 564 - .../freetype2/include/freetype/config/ftmodule.h | 19 - .../freetype2/include/freetype/config/ftoption.h | 577 - .../freetype2/include/freetype/config/ftstdlib.h | 144 - .../extras/freetype2/include/freetype/freetype.h | 3083 --- nx-X11/extras/freetype2/include/freetype/ftbbox.h | 89 - nx-X11/extras/freetype2/include/freetype/ftbdf.h | 200 - nx-X11/extras/freetype2/include/freetype/ftcache.h | 825 - .../extras/freetype2/include/freetype/ftchapters.h | 69 - .../extras/freetype2/include/freetype/fterrdef.h | 231 - .../extras/freetype2/include/freetype/fterrors.h | 207 - nx-X11/extras/freetype2/include/freetype/ftglyph.h | 565 - nx-X11/extras/freetype2/include/freetype/ftgzip.h | 100 - nx-X11/extras/freetype2/include/freetype/ftimage.h | 1236 - .../extras/freetype2/include/freetype/ftincrem.h | 292 - nx-X11/extras/freetype2/include/freetype/ftlist.h | 274 - nx-X11/extras/freetype2/include/freetype/ftlzw.h | 99 - nx-X11/extras/freetype2/include/freetype/ftmac.h | 162 - nx-X11/extras/freetype2/include/freetype/ftmm.h | 378 - .../extras/freetype2/include/freetype/ftmodapi.h | 319 - .../extras/freetype2/include/freetype/ftmoderr.h | 154 - nx-X11/extras/freetype2/include/freetype/ftoutln.h | 472 - nx-X11/extras/freetype2/include/freetype/ftpfr.h | 172 - .../extras/freetype2/include/freetype/ftrender.h | 229 - nx-X11/extras/freetype2/include/freetype/ftsizes.h | 159 - .../extras/freetype2/include/freetype/ftsnames.h | 167 - .../extras/freetype2/include/freetype/ftstroke.h | 686 - nx-X11/extras/freetype2/include/freetype/ftsynth.h | 71 - nx-X11/extras/freetype2/include/freetype/ftsysio.h | 195 - .../extras/freetype2/include/freetype/ftsysmem.h | 202 - .../extras/freetype2/include/freetype/ftsystem.h | 309 - .../extras/freetype2/include/freetype/fttrigon.h | 315 - nx-X11/extras/freetype2/include/freetype/fttypes.h | 558 - .../extras/freetype2/include/freetype/ftwinfnt.h | 257 - nx-X11/extras/freetype2/include/freetype/ftxf86.h | 60 - .../freetype2/include/freetype/internal/autohint.h | 205 - .../freetype2/include/freetype/internal/ftcalc.h | 111 - .../freetype2/include/freetype/internal/ftdebug.h | 244 - .../freetype2/include/freetype/internal/ftdriver.h | 206 - .../freetype2/include/freetype/internal/ftgloadr.h | 147 - .../freetype2/include/freetype/internal/ftmemory.h | 367 - .../freetype2/include/freetype/internal/ftobjs.h | 847 - .../freetype2/include/freetype/internal/ftrfork.h | 184 - .../freetype2/include/freetype/internal/ftserv.h | 260 - .../freetype2/include/freetype/internal/ftstream.h | 529 - .../freetype2/include/freetype/internal/fttrace.h | 108 - .../freetype2/include/freetype/internal/internal.h | 49 - .../freetype2/include/freetype/internal/pcftypes.h | 56 - .../freetype2/include/freetype/internal/psaux.h | 741 - .../freetype2/include/freetype/internal/pshints.h | 626 - .../include/freetype/internal/services/svbdf.h | 57 - .../include/freetype/internal/services/svgldict.h | 60 - .../include/freetype/internal/services/svmm.h | 79 - .../include/freetype/internal/services/svpfr.h | 65 - .../include/freetype/internal/services/svpostnm.h | 58 - .../include/freetype/internal/services/svpscmap.h | 113 - .../include/freetype/internal/services/svpsinfo.h | 55 - .../include/freetype/internal/services/svsfnt.h | 69 - .../include/freetype/internal/services/svttcmap.h | 77 - .../include/freetype/internal/services/svwinfnt.h | 50 - .../include/freetype/internal/services/svxf86nm.h | 55 - .../freetype2/include/freetype/internal/sfnt.h | 553 - .../freetype2/include/freetype/internal/t1types.h | 191 - .../freetype2/include/freetype/internal/tttypes.h | 1413 -- .../extras/freetype2/include/freetype/t1tables.h | 399 - .../extras/freetype2/include/freetype/ttnameid.h | 1076 - .../extras/freetype2/include/freetype/tttables.h | 694 - nx-X11/extras/freetype2/include/freetype/tttags.h | 83 - nx-X11/extras/freetype2/include/freetype/ttunpat.h | 59 - nx-X11/extras/freetype2/include/ft2build.h | 39 - nx-X11/extras/freetype2/objs/.cvsignore | 4 - nx-X11/extras/freetype2/objs/README | 1 - nx-X11/extras/freetype2/src/Jamfile | 17 - nx-X11/extras/freetype2/src/autofit/Jamfile | 18 - nx-X11/extras/freetype2/src/autofit/afangles.c | 302 - nx-X11/extras/freetype2/src/autofit/afdummy.c | 37 - nx-X11/extras/freetype2/src/autofit/afdummy.h | 18 - nx-X11/extras/freetype2/src/autofit/afglobal.c | 236 - nx-X11/extras/freetype2/src/autofit/afglobal.h | 41 - nx-X11/extras/freetype2/src/autofit/afhints.c | 989 - nx-X11/extras/freetype2/src/autofit/afhints.h | 248 - nx-X11/extras/freetype2/src/autofit/aflatin.c | 1871 -- nx-X11/extras/freetype2/src/autofit/aflatin.h | 169 - nx-X11/extras/freetype2/src/autofit/afloader.c | 467 - nx-X11/extras/freetype2/src/autofit/afloader.h | 50 - nx-X11/extras/freetype2/src/autofit/afmodule.c | 70 - nx-X11/extras/freetype2/src/autofit/afmodule.h | 16 - nx-X11/extras/freetype2/src/autofit/aftypes.h | 290 - nx-X11/extras/freetype2/src/autofit/autofit.c | 9 - .../freetype2/src/autohint/CatharonLicense.txt | 123 - nx-X11/extras/freetype2/src/autohint/Jamfile | 21 - nx-X11/extras/freetype2/src/autohint/ahangles.c | 147 - nx-X11/extras/freetype2/src/autohint/ahangles.h | 64 - nx-X11/extras/freetype2/src/autohint/aherrors.h | 40 - nx-X11/extras/freetype2/src/autohint/ahglobal.c | 402 - nx-X11/extras/freetype2/src/autohint/ahglobal.h | 59 - nx-X11/extras/freetype2/src/autohint/ahglyph.c | 1699 -- nx-X11/extras/freetype2/src/autohint/ahglyph.h | 95 - nx-X11/extras/freetype2/src/autohint/ahhint.c | 1937 -- nx-X11/extras/freetype2/src/autohint/ahhint.h | 75 - nx-X11/extras/freetype2/src/autohint/ahloader.h | 61 - nx-X11/extras/freetype2/src/autohint/ahmodule.c | 143 - nx-X11/extras/freetype2/src/autohint/ahmodule.h | 42 - nx-X11/extras/freetype2/src/autohint/ahtypes.h | 527 - nx-X11/extras/freetype2/src/autohint/autohint.c | 32 - nx-X11/extras/freetype2/src/autohint/mather.py | 78 - nx-X11/extras/freetype2/src/autohint/module.mk | 25 - nx-X11/extras/freetype2/src/autohint/rules.mk | 77 - nx-X11/extras/freetype2/src/base/Jamfile | 36 - nx-X11/extras/freetype2/src/base/descrip.mms | 23 - nx-X11/extras/freetype2/src/base/ftapi.c | 121 - nx-X11/extras/freetype2/src/base/ftbase.c | 38 - nx-X11/extras/freetype2/src/base/ftbbox.c | 659 - nx-X11/extras/freetype2/src/base/ftbdf.c | 84 - nx-X11/extras/freetype2/src/base/ftcalc.c | 624 - nx-X11/extras/freetype2/src/base/ftdbgmem.c | 763 - nx-X11/extras/freetype2/src/base/ftdebug.c | 242 - nx-X11/extras/freetype2/src/base/ftgloadr.c | 362 - nx-X11/extras/freetype2/src/base/ftglyph.c | 712 - nx-X11/extras/freetype2/src/base/ftinit.c | 161 - nx-X11/extras/freetype2/src/base/ftmac.c | 1092 - nx-X11/extras/freetype2/src/base/ftmm.c | 202 - nx-X11/extras/freetype2/src/base/ftnames.c | 94 - nx-X11/extras/freetype2/src/base/ftobjs.c | 3311 --- nx-X11/extras/freetype2/src/base/ftoutln.c | 795 - nx-X11/extras/freetype2/src/base/ftpfr.c | 126 - nx-X11/extras/freetype2/src/base/ftrfork.c | 717 - nx-X11/extras/freetype2/src/base/ftstream.c | 803 - nx-X11/extras/freetype2/src/base/ftstroke.c | 1906 -- nx-X11/extras/freetype2/src/base/ftsynth.c | 287 - nx-X11/extras/freetype2/src/base/ftsystem.c | 303 - nx-X11/extras/freetype2/src/base/fttrigon.c | 499 - nx-X11/extras/freetype2/src/base/fttype1.c | 70 - nx-X11/extras/freetype2/src/base/ftutil.c | 397 - nx-X11/extras/freetype2/src/base/ftwinfnt.c | 49 - nx-X11/extras/freetype2/src/base/ftxf86.c | 37 - nx-X11/extras/freetype2/src/base/rules.mk | 96 - nx-X11/extras/freetype2/src/bdf/Jamfile | 21 - nx-X11/extras/freetype2/src/bdf/README | 148 - nx-X11/extras/freetype2/src/bdf/bdf.c | 34 - nx-X11/extras/freetype2/src/bdf/bdf.h | 295 - nx-X11/extras/freetype2/src/bdf/bdfdrivr.c | 915 - nx-X11/extras/freetype2/src/bdf/bdfdrivr.h | 76 - nx-X11/extras/freetype2/src/bdf/bdferror.h | 44 - nx-X11/extras/freetype2/src/bdf/bdflib.c | 2435 -- nx-X11/extras/freetype2/src/bdf/descrip.mms | 23 - nx-X11/extras/freetype2/src/bdf/module.mk | 31 - nx-X11/extras/freetype2/src/bdf/rules.mk | 80 - nx-X11/extras/freetype2/src/cache/Jamfile | 35 - nx-X11/extras/freetype2/src/cache/descrip.mms | 25 - nx-X11/extras/freetype2/src/cache/ftcache.c | 31 - nx-X11/extras/freetype2/src/cache/ftcbasic.c | 445 - nx-X11/extras/freetype2/src/cache/ftccache.c | 604 - nx-X11/extras/freetype2/src/cache/ftccback.h | 85 - nx-X11/extras/freetype2/src/cache/ftccmap.c | 303 - nx-X11/extras/freetype2/src/cache/ftcerror.h | 40 - nx-X11/extras/freetype2/src/cache/ftcglyph.c | 189 - nx-X11/extras/freetype2/src/cache/ftcimage.c | 154 - nx-X11/extras/freetype2/src/cache/ftcmanag.c | 680 - nx-X11/extras/freetype2/src/cache/ftcmru.c | 355 - nx-X11/extras/freetype2/src/cache/ftcsbits.c | 344 - nx-X11/extras/freetype2/src/cache/rules.mk | 80 - nx-X11/extras/freetype2/src/cff/Jamfile | 21 - nx-X11/extras/freetype2/src/cff/cff.c | 29 - nx-X11/extras/freetype2/src/cff/cffcmap.c | 326 - nx-X11/extras/freetype2/src/cff/cffcmap.h | 87 - nx-X11/extras/freetype2/src/cff/cffdrivr.c | 480 - nx-X11/extras/freetype2/src/cff/cffdrivr.h | 39 - nx-X11/extras/freetype2/src/cff/cfferrs.h | 41 - nx-X11/extras/freetype2/src/cff/cffgload.c | 2594 --- nx-X11/extras/freetype2/src/cff/cffgload.h | 208 - nx-X11/extras/freetype2/src/cff/cffload.c | 2313 -- nx-X11/extras/freetype2/src/cff/cffload.h | 74 - nx-X11/extras/freetype2/src/cff/cffobjs.c | 775 - nx-X11/extras/freetype2/src/cff/cffobjs.h | 171 - nx-X11/extras/freetype2/src/cff/cffparse.c | 688 - nx-X11/extras/freetype2/src/cff/cffparse.h | 69 - nx-X11/extras/freetype2/src/cff/cfftoken.h | 97 - nx-X11/extras/freetype2/src/cff/cfftypes.h | 255 - nx-X11/extras/freetype2/src/cff/descrip.mms | 23 - nx-X11/extras/freetype2/src/cff/module.mk | 22 - nx-X11/extras/freetype2/src/cff/rules.mk | 72 - nx-X11/extras/freetype2/src/cid/Jamfile | 21 - nx-X11/extras/freetype2/src/cid/ciderrs.h | 40 - nx-X11/extras/freetype2/src/cid/cidgload.c | 449 - nx-X11/extras/freetype2/src/cid/cidgload.h | 51 - nx-X11/extras/freetype2/src/cid/cidload.c | 644 - nx-X11/extras/freetype2/src/cid/cidload.h | 53 - nx-X11/extras/freetype2/src/cid/cidobjs.c | 501 - nx-X11/extras/freetype2/src/cid/cidobjs.h | 163 - nx-X11/extras/freetype2/src/cid/cidparse.c | 198 - nx-X11/extras/freetype2/src/cid/cidparse.h | 123 - nx-X11/extras/freetype2/src/cid/cidriver.c | 157 - nx-X11/extras/freetype2/src/cid/cidriver.h | 39 - nx-X11/extras/freetype2/src/cid/cidtoken.h | 103 - nx-X11/extras/freetype2/src/cid/descrip.mms | 23 - nx-X11/extras/freetype2/src/cid/module.mk | 21 - nx-X11/extras/freetype2/src/cid/rules.mk | 70 - nx-X11/extras/freetype2/src/cid/type1cid.c | 29 - nx-X11/extras/freetype2/src/gzip/Jamfile | 8 - nx-X11/extras/freetype2/src/gzip/adler32.c | 48 - nx-X11/extras/freetype2/src/gzip/descrip.mms | 23 - nx-X11/extras/freetype2/src/gzip/ftgzip.c | 605 - nx-X11/extras/freetype2/src/gzip/infblock.c | 387 - nx-X11/extras/freetype2/src/gzip/infblock.h | 36 - nx-X11/extras/freetype2/src/gzip/infcodes.c | 250 - nx-X11/extras/freetype2/src/gzip/infcodes.h | 31 - nx-X11/extras/freetype2/src/gzip/inffixed.h | 151 - nx-X11/extras/freetype2/src/gzip/inflate.c | 273 - nx-X11/extras/freetype2/src/gzip/inftrees.c | 462 - nx-X11/extras/freetype2/src/gzip/inftrees.h | 63 - nx-X11/extras/freetype2/src/gzip/infutil.c | 86 - nx-X11/extras/freetype2/src/gzip/infutil.h | 98 - nx-X11/extras/freetype2/src/gzip/rules.mk | 75 - nx-X11/extras/freetype2/src/gzip/zconf.h | 278 - nx-X11/extras/freetype2/src/gzip/zlib.h | 830 - nx-X11/extras/freetype2/src/gzip/zutil.c | 181 - nx-X11/extras/freetype2/src/gzip/zutil.h | 216 - nx-X11/extras/freetype2/src/lzw/Jamfile | 9 - nx-X11/extras/freetype2/src/lzw/ftlzw.c | 463 - nx-X11/extras/freetype2/src/lzw/rules.mk | 70 - nx-X11/extras/freetype2/src/lzw/zopen.c | 400 - nx-X11/extras/freetype2/src/lzw/zopen.h | 114 - nx-X11/extras/freetype2/src/otlayout/otlayout.h | 205 - nx-X11/extras/freetype2/src/otlayout/otlbase.c | 181 - nx-X11/extras/freetype2/src/otlayout/otlbase.h | 14 - nx-X11/extras/freetype2/src/otlayout/otlcommn.c | 940 - nx-X11/extras/freetype2/src/otlayout/otlcommn.h | 277 - nx-X11/extras/freetype2/src/otlayout/otlconf.h | 78 - nx-X11/extras/freetype2/src/otlayout/otlgdef.c | 175 - nx-X11/extras/freetype2/src/otlayout/otlgdef.h | 14 - nx-X11/extras/freetype2/src/otlayout/otlgpos.c | 980 - nx-X11/extras/freetype2/src/otlayout/otlgpos.h | 14 - nx-X11/extras/freetype2/src/otlayout/otlgsub.c | 867 - nx-X11/extras/freetype2/src/otlayout/otlgsub.h | 26 - nx-X11/extras/freetype2/src/otlayout/otljstf.c | 189 - nx-X11/extras/freetype2/src/otlayout/otljstf.h | 14 - nx-X11/extras/freetype2/src/otlayout/otlparse.c | 142 - nx-X11/extras/freetype2/src/otlayout/otlparse.h | 99 - nx-X11/extras/freetype2/src/otlayout/otltable.h | 60 - nx-X11/extras/freetype2/src/otlayout/otltags.h | 88 - nx-X11/extras/freetype2/src/otlayout/otlutils.h | 33 - nx-X11/extras/freetype2/src/pcf/Jamfile | 21 - nx-X11/extras/freetype2/src/pcf/descrip.mms | 35 - nx-X11/extras/freetype2/src/pcf/module.mk | 32 - nx-X11/extras/freetype2/src/pcf/pcf.c | 36 - nx-X11/extras/freetype2/src/pcf/pcf.h | 237 - nx-X11/extras/freetype2/src/pcf/pcfdrivr.c | 651 - nx-X11/extras/freetype2/src/pcf/pcfdrivr.h | 44 - nx-X11/extras/freetype2/src/pcf/pcferror.h | 40 - nx-X11/extras/freetype2/src/pcf/pcfread.c | 1175 - nx-X11/extras/freetype2/src/pcf/pcfread.h | 45 - nx-X11/extras/freetype2/src/pcf/pcfutil.c | 132 - nx-X11/extras/freetype2/src/pcf/pcfutil.h | 55 - nx-X11/extras/freetype2/src/pcf/readme | 114 - nx-X11/extras/freetype2/src/pcf/rules.mk | 80 - nx-X11/extras/freetype2/src/pfr/Jamfile | 21 - nx-X11/extras/freetype2/src/pfr/descrip.mms | 23 - nx-X11/extras/freetype2/src/pfr/module.mk | 22 - nx-X11/extras/freetype2/src/pfr/pfr.c | 29 - nx-X11/extras/freetype2/src/pfr/pfrcmap.c | 158 - nx-X11/extras/freetype2/src/pfr/pfrcmap.h | 46 - nx-X11/extras/freetype2/src/pfr/pfrdrivr.c | 203 - nx-X11/extras/freetype2/src/pfr/pfrdrivr.h | 39 - nx-X11/extras/freetype2/src/pfr/pfrerror.h | 40 - nx-X11/extras/freetype2/src/pfr/pfrgload.c | 801 - nx-X11/extras/freetype2/src/pfr/pfrgload.h | 49 - nx-X11/extras/freetype2/src/pfr/pfrload.c | 1081 - nx-X11/extras/freetype2/src/pfr/pfrload.h | 118 - nx-X11/extras/freetype2/src/pfr/pfrobjs.c | 465 - nx-X11/extras/freetype2/src/pfr/pfrobjs.h | 96 - nx-X11/extras/freetype2/src/pfr/pfrsbit.c | 671 - nx-X11/extras/freetype2/src/pfr/pfrsbit.h | 36 - nx-X11/extras/freetype2/src/pfr/pfrtypes.h | 364 - nx-X11/extras/freetype2/src/pfr/rules.mk | 73 - nx-X11/extras/freetype2/src/psaux/Jamfile | 21 - nx-X11/extras/freetype2/src/psaux/descrip.mms | 23 - nx-X11/extras/freetype2/src/psaux/module.mk | 22 - nx-X11/extras/freetype2/src/psaux/psaux.c | 28 - nx-X11/extras/freetype2/src/psaux/psauxerr.h | 41 - nx-X11/extras/freetype2/src/psaux/psauxmod.c | 119 - nx-X11/extras/freetype2/src/psaux/psauxmod.h | 38 - nx-X11/extras/freetype2/src/psaux/psobjs.c | 1784 -- nx-X11/extras/freetype2/src/psaux/psobjs.h | 212 - nx-X11/extras/freetype2/src/psaux/rules.mk | 71 - nx-X11/extras/freetype2/src/psaux/t1cmap.c | 456 - nx-X11/extras/freetype2/src/psaux/t1cmap.h | 123 - nx-X11/extras/freetype2/src/psaux/t1decode.c | 1165 - nx-X11/extras/freetype2/src/psaux/t1decode.h | 64 - nx-X11/extras/freetype2/src/pshinter/Jamfile | 21 - nx-X11/extras/freetype2/src/pshinter/descrip.mms | 23 - nx-X11/extras/freetype2/src/pshinter/module.mk | 22 - nx-X11/extras/freetype2/src/pshinter/pshalgo.c | 2091 -- nx-X11/extras/freetype2/src/pshinter/pshalgo.h | 255 - nx-X11/extras/freetype2/src/pshinter/pshglob.c | 750 - nx-X11/extras/freetype2/src/pshinter/pshglob.h | 196 - nx-X11/extras/freetype2/src/pshinter/pshinter.c | 28 - nx-X11/extras/freetype2/src/pshinter/pshmod.c | 120 - nx-X11/extras/freetype2/src/pshinter/pshmod.h | 39 - nx-X11/extras/freetype2/src/pshinter/pshnterr.h | 40 - nx-X11/extras/freetype2/src/pshinter/pshrec.c | 1215 - nx-X11/extras/freetype2/src/pshinter/pshrec.h | 176 - nx-X11/extras/freetype2/src/pshinter/rules.mk | 72 - nx-X11/extras/freetype2/src/psnames/Jamfile | 21 - nx-X11/extras/freetype2/src/psnames/descrip.mms | 23 - nx-X11/extras/freetype2/src/psnames/module.mk | 22 - nx-X11/extras/freetype2/src/psnames/psmodule.c | 408 - nx-X11/extras/freetype2/src/psnames/psmodule.h | 38 - nx-X11/extras/freetype2/src/psnames/psnamerr.h | 41 - nx-X11/extras/freetype2/src/psnames/psnames.c | 25 - nx-X11/extras/freetype2/src/psnames/pstables.h | 9437 -------- nx-X11/extras/freetype2/src/psnames/rules.mk | 70 - nx-X11/extras/freetype2/src/raster/Jamfile | 21 - nx-X11/extras/freetype2/src/raster/descrip.mms | 23 - nx-X11/extras/freetype2/src/raster/ftraster.c | 3298 --- nx-X11/extras/freetype2/src/raster/ftraster.h | 46 - nx-X11/extras/freetype2/src/raster/ftrend1.c | 273 - nx-X11/extras/freetype2/src/raster/ftrend1.h | 44 - nx-X11/extras/freetype2/src/raster/module.mk | 22 - nx-X11/extras/freetype2/src/raster/raster.c | 26 - nx-X11/extras/freetype2/src/raster/rasterrs.h | 41 - nx-X11/extras/freetype2/src/raster/rules.mk | 69 - nx-X11/extras/freetype2/src/sfnt/Jamfile | 21 - nx-X11/extras/freetype2/src/sfnt/descrip.mms | 23 - nx-X11/extras/freetype2/src/sfnt/module.mk | 22 - nx-X11/extras/freetype2/src/sfnt/rules.mk | 73 - nx-X11/extras/freetype2/src/sfnt/sfdriver.c | 400 - nx-X11/extras/freetype2/src/sfnt/sfdriver.h | 38 - nx-X11/extras/freetype2/src/sfnt/sferrors.h | 39 - nx-X11/extras/freetype2/src/sfnt/sfnt.c | 36 - nx-X11/extras/freetype2/src/sfnt/sfobjs.c | 854 - nx-X11/extras/freetype2/src/sfnt/sfobjs.h | 54 - nx-X11/extras/freetype2/src/sfnt/ttcmap0.c | 1991 -- nx-X11/extras/freetype2/src/sfnt/ttcmap0.h | 80 - nx-X11/extras/freetype2/src/sfnt/ttload.c | 1912 -- nx-X11/extras/freetype2/src/sfnt/ttload.h | 137 - nx-X11/extras/freetype2/src/sfnt/ttpost.c | 521 - nx-X11/extras/freetype2/src/sfnt/ttpost.h | 46 - nx-X11/extras/freetype2/src/sfnt/ttsbit.c | 1467 -- nx-X11/extras/freetype2/src/sfnt/ttsbit.h | 72 - nx-X11/extras/freetype2/src/smooth/Jamfile | 21 - nx-X11/extras/freetype2/src/smooth/descrip.mms | 23 - nx-X11/extras/freetype2/src/smooth/ftgrays.c | 2159 -- nx-X11/extras/freetype2/src/smooth/ftgrays.h | 57 - nx-X11/extras/freetype2/src/smooth/ftsmerrs.h | 41 - nx-X11/extras/freetype2/src/smooth/ftsmooth.c | 374 - nx-X11/extras/freetype2/src/smooth/ftsmooth.h | 49 - nx-X11/extras/freetype2/src/smooth/module.mk | 22 - nx-X11/extras/freetype2/src/smooth/rules.mk | 69 - nx-X11/extras/freetype2/src/smooth/smooth.c | 26 - nx-X11/extras/freetype2/src/tools/cordic.py | 79 - .../extras/freetype2/src/tools/docmaker/.cvsignore | 1 - .../extras/freetype2/src/tools/docmaker/content.py | 585 - .../freetype2/src/tools/docmaker/docbeauty.py | 109 - .../freetype2/src/tools/docmaker/docmaker.py | 107 - .../freetype2/src/tools/docmaker/formatter.py | 203 - .../extras/freetype2/src/tools/docmaker/sources.py | 355 - .../extras/freetype2/src/tools/docmaker/tohtml.py | 489 - .../extras/freetype2/src/tools/docmaker/utils.py | 128 - nx-X11/extras/freetype2/src/tools/glnames.py | 4954 ----- nx-X11/extras/freetype2/src/tools/test_bbox.c | 160 - nx-X11/extras/freetype2/src/tools/test_trig.c | 236 - nx-X11/extras/freetype2/src/truetype/Jamfile | 21 - nx-X11/extras/freetype2/src/truetype/descrip.mms | 23 - nx-X11/extras/freetype2/src/truetype/module.mk | 22 - nx-X11/extras/freetype2/src/truetype/rules.mk | 72 - nx-X11/extras/freetype2/src/truetype/truetype.c | 36 - nx-X11/extras/freetype2/src/truetype/ttdriver.c | 465 - nx-X11/extras/freetype2/src/truetype/ttdriver.h | 38 - nx-X11/extras/freetype2/src/truetype/tterrors.h | 40 - nx-X11/extras/freetype2/src/truetype/ttgload.c | 2039 -- nx-X11/extras/freetype2/src/truetype/ttgload.h | 55 - nx-X11/extras/freetype2/src/truetype/ttgxvar.c | 1520 -- nx-X11/extras/freetype2/src/truetype/ttgxvar.h | 182 - nx-X11/extras/freetype2/src/truetype/ttinterp.c | 7742 ------- nx-X11/extras/freetype2/src/truetype/ttinterp.h | 318 - nx-X11/extras/freetype2/src/truetype/ttobjs.c | 901 - nx-X11/extras/freetype2/src/truetype/ttobjs.h | 437 - nx-X11/extras/freetype2/src/truetype/ttpload.c | 273 - nx-X11/extras/freetype2/src/truetype/ttpload.h | 48 - nx-X11/extras/freetype2/src/type1/Jamfile | 21 - nx-X11/extras/freetype2/src/type1/module.mk | 22 - nx-X11/extras/freetype2/src/type1/rules.mk | 73 - nx-X11/extras/freetype2/src/type1/t1afm.c | 282 - nx-X11/extras/freetype2/src/type1/t1afm.h | 66 - nx-X11/extras/freetype2/src/type1/t1driver.c | 303 - nx-X11/extras/freetype2/src/type1/t1driver.h | 38 - nx-X11/extras/freetype2/src/type1/t1errors.h | 40 - nx-X11/extras/freetype2/src/type1/t1gload.c | 431 - nx-X11/extras/freetype2/src/type1/t1gload.h | 46 - nx-X11/extras/freetype2/src/type1/t1load.c | 2094 -- nx-X11/extras/freetype2/src/type1/t1load.h | 93 - nx-X11/extras/freetype2/src/type1/t1objs.c | 552 - nx-X11/extras/freetype2/src/type1/t1objs.h | 170 - nx-X11/extras/freetype2/src/type1/t1parse.c | 443 - nx-X11/extras/freetype2/src/type1/t1parse.h | 135 - nx-X11/extras/freetype2/src/type1/t1tokens.h | 84 - nx-X11/extras/freetype2/src/type1/type1.c | 33 - nx-X11/extras/freetype2/src/type42/Jamfile | 21 - nx-X11/extras/freetype2/src/type42/descrip.mms | 23 - nx-X11/extras/freetype2/src/type42/module.mk | 22 - nx-X11/extras/freetype2/src/type42/rules.mk | 69 - nx-X11/extras/freetype2/src/type42/t42drivr.c | 233 - nx-X11/extras/freetype2/src/type42/t42drivr.h | 38 - nx-X11/extras/freetype2/src/type42/t42error.h | 40 - nx-X11/extras/freetype2/src/type42/t42objs.c | 643 - nx-X11/extras/freetype2/src/type42/t42objs.h | 126 - nx-X11/extras/freetype2/src/type42/t42parse.c | 1115 - nx-X11/extras/freetype2/src/type42/t42parse.h | 90 - nx-X11/extras/freetype2/src/type42/t42types.h | 54 - nx-X11/extras/freetype2/src/type42/type42.c | 25 - nx-X11/extras/freetype2/src/winfonts/Jamfile | 8 - nx-X11/extras/freetype2/src/winfonts/descrip.mms | 23 - nx-X11/extras/freetype2/src/winfonts/fnterrs.h | 41 - nx-X11/extras/freetype2/src/winfonts/module.mk | 21 - nx-X11/extras/freetype2/src/winfonts/rules.mk | 65 - nx-X11/extras/freetype2/src/winfonts/winfnt.c | 754 - nx-X11/extras/freetype2/src/winfonts/winfnt.h | 107 - nx-X11/extras/freetype2/tests/Jamfile | 41 - nx-X11/extras/freetype2/tests/gview.c | 1292 -- nx-X11/extras/freetype2/vms_make.com | 549 - 550 files changed, 214421 deletions(-) delete mode 100644 nx-X11/extras/freetype2/ChangeLog delete mode 100644 nx-X11/extras/freetype2/Jamfile delete mode 100644 nx-X11/extras/freetype2/Jamrules delete mode 100644 nx-X11/extras/freetype2/Makefile delete mode 100644 nx-X11/extras/freetype2/README delete mode 100644 nx-X11/extras/freetype2/builds/amiga/README delete mode 100644 nx-X11/extras/freetype2/builds/amiga/include/freetype/config/ftconfig.h delete mode 100644 nx-X11/extras/freetype2/builds/amiga/include/freetype/config/ftmodule.h delete mode 100644 nx-X11/extras/freetype2/builds/amiga/makefile delete mode 100644 nx-X11/extras/freetype2/builds/amiga/smakefile delete mode 100644 nx-X11/extras/freetype2/builds/amiga/src/base/ftdebug.c delete mode 100644 nx-X11/extras/freetype2/builds/amiga/src/base/ftsystem.c delete mode 100644 nx-X11/extras/freetype2/builds/ansi/ansi-def.mk delete mode 100644 nx-X11/extras/freetype2/builds/ansi/ansi.mk delete mode 100644 nx-X11/extras/freetype2/builds/atari/ATARI.H delete mode 100644 nx-X11/extras/freetype2/builds/atari/FNames.SIC delete mode 100644 nx-X11/extras/freetype2/builds/atari/FREETYPE.PRJ delete mode 100644 nx-X11/extras/freetype2/builds/atari/README.TXT delete mode 100644 nx-X11/extras/freetype2/builds/beos/beos-def.mk delete mode 100644 nx-X11/extras/freetype2/builds/beos/beos.mk delete mode 100644 nx-X11/extras/freetype2/builds/beos/detect.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/ansi-cc.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/bcc-dev.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/bcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/emx.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/gcc-dev.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/gcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/intelc.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/unix-lcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/visualage.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/visualc.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/watcom.mk delete mode 100644 nx-X11/extras/freetype2/builds/compiler/win-lcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/detect.mk delete mode 100644 nx-X11/extras/freetype2/builds/dos/detect.mk delete mode 100644 nx-X11/extras/freetype2/builds/dos/dos-def.mk delete mode 100644 nx-X11/extras/freetype2/builds/dos/dos-emx.mk delete mode 100644 nx-X11/extras/freetype2/builds/dos/dos-gcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/dos/dos-wat.mk delete mode 100644 nx-X11/extras/freetype2/builds/freetype.mk delete mode 100644 nx-X11/extras/freetype2/builds/link_dos.mk delete mode 100644 nx-X11/extras/freetype2/builds/link_std.mk delete mode 100644 nx-X11/extras/freetype2/builds/mac/README delete mode 100644 nx-X11/extras/freetype2/builds/mac/freetype.make delete mode 100644 nx-X11/extras/freetype2/builds/mac/ftlib.prj delete mode 100644 nx-X11/extras/freetype2/builds/modules.mk delete mode 100644 nx-X11/extras/freetype2/builds/newline delete mode 100644 nx-X11/extras/freetype2/builds/os2/detect.mk delete mode 100644 nx-X11/extras/freetype2/builds/os2/os2-def.mk delete mode 100644 nx-X11/extras/freetype2/builds/os2/os2-dev.mk delete mode 100644 nx-X11/extras/freetype2/builds/os2/os2-gcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/toplevel.mk delete mode 100644 nx-X11/extras/freetype2/builds/unix/.cvsignore delete mode 100644 nx-X11/extras/freetype2/builds/unix/aclocal.m4 delete mode 100644 nx-X11/extras/freetype2/builds/unix/config.guess delete mode 100644 nx-X11/extras/freetype2/builds/unix/config.sub delete mode 100644 nx-X11/extras/freetype2/builds/unix/configure delete mode 100644 nx-X11/extras/freetype2/builds/unix/configure.ac delete mode 100644 nx-X11/extras/freetype2/builds/unix/detect.mk delete mode 100644 nx-X11/extras/freetype2/builds/unix/freetype-config.in delete mode 100644 nx-X11/extras/freetype2/builds/unix/freetype2.in delete mode 100644 nx-X11/extras/freetype2/builds/unix/freetype2.m4 delete mode 100644 nx-X11/extras/freetype2/builds/unix/ft-munmap.m4 delete mode 100644 nx-X11/extras/freetype2/builds/unix/ft2unix.h delete mode 100644 nx-X11/extras/freetype2/builds/unix/ftconfig.in delete mode 100644 nx-X11/extras/freetype2/builds/unix/ftsystem.c delete mode 100644 nx-X11/extras/freetype2/builds/unix/install-sh delete mode 100644 nx-X11/extras/freetype2/builds/unix/install.mk delete mode 100644 nx-X11/extras/freetype2/builds/unix/ltmain.sh delete mode 100644 nx-X11/extras/freetype2/builds/unix/mkinstalldirs delete mode 100644 nx-X11/extras/freetype2/builds/unix/unix-cc.in delete mode 100644 nx-X11/extras/freetype2/builds/unix/unix-def.in delete mode 100644 nx-X11/extras/freetype2/builds/unix/unix-dev.mk delete mode 100644 nx-X11/extras/freetype2/builds/unix/unix-lcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/unix/unix.mk delete mode 100644 nx-X11/extras/freetype2/builds/unix/unixddef.mk delete mode 100644 nx-X11/extras/freetype2/builds/vms/ftconfig.h delete mode 100644 nx-X11/extras/freetype2/builds/vms/ftsystem.c delete mode 100644 nx-X11/extras/freetype2/builds/win32/detect.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/ftdebug.c delete mode 100644 nx-X11/extras/freetype2/builds/win32/visualc/freetype.dsp delete mode 100644 nx-X11/extras/freetype2/builds/win32/visualc/freetype.dsw delete mode 100644 nx-X11/extras/freetype2/builds/win32/visualc/freetype.sln delete mode 100644 nx-X11/extras/freetype2/builds/win32/visualc/freetype.vcproj delete mode 100644 nx-X11/extras/freetype2/builds/win32/visualc/index.html delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-bcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-bccd.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-dev.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-gcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-icc.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-intl.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-lcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-mingw32.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-vcc.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/w32-wat.mk delete mode 100644 nx-X11/extras/freetype2/builds/win32/win32-def.mk delete mode 100644 nx-X11/extras/freetype2/configure delete mode 100644 nx-X11/extras/freetype2/devel/ft2build.h delete mode 100644 nx-X11/extras/freetype2/devel/ftoption.h delete mode 100644 nx-X11/extras/freetype2/docs/CHANGES delete mode 100644 nx-X11/extras/freetype2/docs/CUSTOMIZE delete mode 100644 nx-X11/extras/freetype2/docs/DEBUG delete mode 100644 nx-X11/extras/freetype2/docs/FTL.txt delete mode 100644 nx-X11/extras/freetype2/docs/GPL.txt delete mode 100644 nx-X11/extras/freetype2/docs/INSTALL delete mode 100644 nx-X11/extras/freetype2/docs/INSTALL.ANY delete mode 100644 nx-X11/extras/freetype2/docs/INSTALL.GNU delete mode 100644 nx-X11/extras/freetype2/docs/INSTALL.UNX delete mode 100644 nx-X11/extras/freetype2/docs/INSTALL.VMS delete mode 100644 nx-X11/extras/freetype2/docs/PATENTS delete mode 100644 nx-X11/extras/freetype2/docs/TODO delete mode 100644 nx-X11/extras/freetype2/docs/TRUETYPE delete mode 100644 nx-X11/extras/freetype2/docs/UPGRADE.UNX delete mode 100644 nx-X11/extras/freetype2/docs/VERSION.DLL delete mode 100644 nx-X11/extras/freetype2/docs/formats.txt delete mode 100644 nx-X11/extras/freetype2/docs/license.txt delete mode 100644 nx-X11/extras/freetype2/docs/modules.txt delete mode 100644 nx-X11/extras/freetype2/docs/raster.txt delete mode 100644 nx-X11/extras/freetype2/docs/reference/.cvsignore delete mode 100644 nx-X11/extras/freetype2/docs/reference/README delete mode 100644 nx-X11/extras/freetype2/docs/release delete mode 100644 nx-X11/extras/freetype2/include/freetype/cache/ftccache.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/cache/ftccmap.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/cache/ftcglyph.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/cache/ftcimage.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/cache/ftcmanag.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/cache/ftcmru.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/cache/ftcsbits.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/config/ftconfig.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/config/ftheader.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/config/ftmodule.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/config/ftoption.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/config/ftstdlib.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/freetype.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftbbox.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftbdf.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftcache.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftchapters.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/fterrdef.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/fterrors.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftglyph.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftgzip.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftimage.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftincrem.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftlist.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftlzw.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftmac.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftmm.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftmodapi.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftmoderr.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftoutln.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftpfr.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftrender.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftsizes.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftsnames.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftstroke.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftsynth.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftsysio.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftsysmem.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftsystem.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/fttrigon.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/fttypes.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftwinfnt.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ftxf86.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/autohint.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftcalc.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftdebug.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftdriver.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftgloadr.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftmemory.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftobjs.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftrfork.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftserv.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/ftstream.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/fttrace.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/internal.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/pcftypes.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/psaux.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/pshints.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svbdf.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svgldict.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svmm.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svpfr.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svpostnm.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svpscmap.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svpsinfo.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svsfnt.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svttcmap.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svwinfnt.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/services/svxf86nm.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/sfnt.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/t1types.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/internal/tttypes.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/t1tables.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ttnameid.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/tttables.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/tttags.h delete mode 100644 nx-X11/extras/freetype2/include/freetype/ttunpat.h delete mode 100644 nx-X11/extras/freetype2/include/ft2build.h delete mode 100644 nx-X11/extras/freetype2/objs/.cvsignore delete mode 100644 nx-X11/extras/freetype2/objs/README delete mode 100644 nx-X11/extras/freetype2/src/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/autofit/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/autofit/afangles.c delete mode 100644 nx-X11/extras/freetype2/src/autofit/afdummy.c delete mode 100644 nx-X11/extras/freetype2/src/autofit/afdummy.h delete mode 100644 nx-X11/extras/freetype2/src/autofit/afglobal.c delete mode 100644 nx-X11/extras/freetype2/src/autofit/afglobal.h delete mode 100644 nx-X11/extras/freetype2/src/autofit/afhints.c delete mode 100644 nx-X11/extras/freetype2/src/autofit/afhints.h delete mode 100644 nx-X11/extras/freetype2/src/autofit/aflatin.c delete mode 100644 nx-X11/extras/freetype2/src/autofit/aflatin.h delete mode 100644 nx-X11/extras/freetype2/src/autofit/afloader.c delete mode 100644 nx-X11/extras/freetype2/src/autofit/afloader.h delete mode 100644 nx-X11/extras/freetype2/src/autofit/afmodule.c delete mode 100644 nx-X11/extras/freetype2/src/autofit/afmodule.h delete mode 100644 nx-X11/extras/freetype2/src/autofit/aftypes.h delete mode 100644 nx-X11/extras/freetype2/src/autofit/autofit.c delete mode 100644 nx-X11/extras/freetype2/src/autohint/CatharonLicense.txt delete mode 100644 nx-X11/extras/freetype2/src/autohint/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahangles.c delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahangles.h delete mode 100644 nx-X11/extras/freetype2/src/autohint/aherrors.h delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahglobal.c delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahglobal.h delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahglyph.c delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahglyph.h delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahhint.c delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahhint.h delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahloader.h delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahmodule.c delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahmodule.h delete mode 100644 nx-X11/extras/freetype2/src/autohint/ahtypes.h delete mode 100644 nx-X11/extras/freetype2/src/autohint/autohint.c delete mode 100644 nx-X11/extras/freetype2/src/autohint/mather.py delete mode 100644 nx-X11/extras/freetype2/src/autohint/module.mk delete mode 100644 nx-X11/extras/freetype2/src/autohint/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/base/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/base/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/base/ftapi.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftbase.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftbbox.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftbdf.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftcalc.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftdbgmem.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftdebug.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftgloadr.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftglyph.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftinit.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftmac.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftmm.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftnames.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftobjs.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftoutln.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftpfr.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftrfork.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftstream.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftstroke.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftsynth.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftsystem.c delete mode 100644 nx-X11/extras/freetype2/src/base/fttrigon.c delete mode 100644 nx-X11/extras/freetype2/src/base/fttype1.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftutil.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftwinfnt.c delete mode 100644 nx-X11/extras/freetype2/src/base/ftxf86.c delete mode 100644 nx-X11/extras/freetype2/src/base/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/bdf/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/bdf/README delete mode 100644 nx-X11/extras/freetype2/src/bdf/bdf.c delete mode 100644 nx-X11/extras/freetype2/src/bdf/bdf.h delete mode 100644 nx-X11/extras/freetype2/src/bdf/bdfdrivr.c delete mode 100644 nx-X11/extras/freetype2/src/bdf/bdfdrivr.h delete mode 100644 nx-X11/extras/freetype2/src/bdf/bdferror.h delete mode 100644 nx-X11/extras/freetype2/src/bdf/bdflib.c delete mode 100644 nx-X11/extras/freetype2/src/bdf/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/bdf/module.mk delete mode 100644 nx-X11/extras/freetype2/src/bdf/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/cache/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/cache/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/cache/ftcache.c delete mode 100644 nx-X11/extras/freetype2/src/cache/ftcbasic.c delete mode 100644 nx-X11/extras/freetype2/src/cache/ftccache.c delete mode 100644 nx-X11/extras/freetype2/src/cache/ftccback.h delete mode 100644 nx-X11/extras/freetype2/src/cache/ftccmap.c delete mode 100644 nx-X11/extras/freetype2/src/cache/ftcerror.h delete mode 100644 nx-X11/extras/freetype2/src/cache/ftcglyph.c delete mode 100644 nx-X11/extras/freetype2/src/cache/ftcimage.c delete mode 100644 nx-X11/extras/freetype2/src/cache/ftcmanag.c delete mode 100644 nx-X11/extras/freetype2/src/cache/ftcmru.c delete mode 100644 nx-X11/extras/freetype2/src/cache/ftcsbits.c delete mode 100644 nx-X11/extras/freetype2/src/cache/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/cff/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/cff/cff.c delete mode 100644 nx-X11/extras/freetype2/src/cff/cffcmap.c delete mode 100644 nx-X11/extras/freetype2/src/cff/cffcmap.h delete mode 100644 nx-X11/extras/freetype2/src/cff/cffdrivr.c delete mode 100644 nx-X11/extras/freetype2/src/cff/cffdrivr.h delete mode 100644 nx-X11/extras/freetype2/src/cff/cfferrs.h delete mode 100644 nx-X11/extras/freetype2/src/cff/cffgload.c delete mode 100644 nx-X11/extras/freetype2/src/cff/cffgload.h delete mode 100644 nx-X11/extras/freetype2/src/cff/cffload.c delete mode 100644 nx-X11/extras/freetype2/src/cff/cffload.h delete mode 100644 nx-X11/extras/freetype2/src/cff/cffobjs.c delete mode 100644 nx-X11/extras/freetype2/src/cff/cffobjs.h delete mode 100644 nx-X11/extras/freetype2/src/cff/cffparse.c delete mode 100644 nx-X11/extras/freetype2/src/cff/cffparse.h delete mode 100644 nx-X11/extras/freetype2/src/cff/cfftoken.h delete mode 100644 nx-X11/extras/freetype2/src/cff/cfftypes.h delete mode 100644 nx-X11/extras/freetype2/src/cff/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/cff/module.mk delete mode 100644 nx-X11/extras/freetype2/src/cff/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/cid/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/cid/ciderrs.h delete mode 100644 nx-X11/extras/freetype2/src/cid/cidgload.c delete mode 100644 nx-X11/extras/freetype2/src/cid/cidgload.h delete mode 100644 nx-X11/extras/freetype2/src/cid/cidload.c delete mode 100644 nx-X11/extras/freetype2/src/cid/cidload.h delete mode 100644 nx-X11/extras/freetype2/src/cid/cidobjs.c delete mode 100644 nx-X11/extras/freetype2/src/cid/cidobjs.h delete mode 100644 nx-X11/extras/freetype2/src/cid/cidparse.c delete mode 100644 nx-X11/extras/freetype2/src/cid/cidparse.h delete mode 100644 nx-X11/extras/freetype2/src/cid/cidriver.c delete mode 100644 nx-X11/extras/freetype2/src/cid/cidriver.h delete mode 100644 nx-X11/extras/freetype2/src/cid/cidtoken.h delete mode 100644 nx-X11/extras/freetype2/src/cid/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/cid/module.mk delete mode 100644 nx-X11/extras/freetype2/src/cid/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/cid/type1cid.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/gzip/adler32.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/gzip/ftgzip.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/infblock.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/infblock.h delete mode 100644 nx-X11/extras/freetype2/src/gzip/infcodes.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/infcodes.h delete mode 100644 nx-X11/extras/freetype2/src/gzip/inffixed.h delete mode 100644 nx-X11/extras/freetype2/src/gzip/inflate.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/inftrees.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/inftrees.h delete mode 100644 nx-X11/extras/freetype2/src/gzip/infutil.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/infutil.h delete mode 100644 nx-X11/extras/freetype2/src/gzip/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/gzip/zconf.h delete mode 100644 nx-X11/extras/freetype2/src/gzip/zlib.h delete mode 100644 nx-X11/extras/freetype2/src/gzip/zutil.c delete mode 100644 nx-X11/extras/freetype2/src/gzip/zutil.h delete mode 100644 nx-X11/extras/freetype2/src/lzw/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/lzw/ftlzw.c delete mode 100644 nx-X11/extras/freetype2/src/lzw/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/lzw/zopen.c delete mode 100644 nx-X11/extras/freetype2/src/lzw/zopen.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlayout.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlbase.c delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlbase.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlcommn.c delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlcommn.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlconf.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlgdef.c delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlgdef.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlgpos.c delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlgpos.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlgsub.c delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlgsub.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otljstf.c delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otljstf.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlparse.c delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlparse.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otltable.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otltags.h delete mode 100644 nx-X11/extras/freetype2/src/otlayout/otlutils.h delete mode 100644 nx-X11/extras/freetype2/src/pcf/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/pcf/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/pcf/module.mk delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcf.c delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcf.h delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcfdrivr.c delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcfdrivr.h delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcferror.h delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcfread.c delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcfread.h delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcfutil.c delete mode 100644 nx-X11/extras/freetype2/src/pcf/pcfutil.h delete mode 100644 nx-X11/extras/freetype2/src/pcf/readme delete mode 100644 nx-X11/extras/freetype2/src/pcf/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/pfr/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/pfr/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/pfr/module.mk delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfr.c delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrcmap.c delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrcmap.h delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrdrivr.c delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrdrivr.h delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrerror.h delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrgload.c delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrgload.h delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrload.c delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrload.h delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrobjs.c delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrobjs.h delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrsbit.c delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrsbit.h delete mode 100644 nx-X11/extras/freetype2/src/pfr/pfrtypes.h delete mode 100644 nx-X11/extras/freetype2/src/pfr/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/psaux/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/psaux/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/psaux/module.mk delete mode 100644 nx-X11/extras/freetype2/src/psaux/psaux.c delete mode 100644 nx-X11/extras/freetype2/src/psaux/psauxerr.h delete mode 100644 nx-X11/extras/freetype2/src/psaux/psauxmod.c delete mode 100644 nx-X11/extras/freetype2/src/psaux/psauxmod.h delete mode 100644 nx-X11/extras/freetype2/src/psaux/psobjs.c delete mode 100644 nx-X11/extras/freetype2/src/psaux/psobjs.h delete mode 100644 nx-X11/extras/freetype2/src/psaux/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/psaux/t1cmap.c delete mode 100644 nx-X11/extras/freetype2/src/psaux/t1cmap.h delete mode 100644 nx-X11/extras/freetype2/src/psaux/t1decode.c delete mode 100644 nx-X11/extras/freetype2/src/psaux/t1decode.h delete mode 100644 nx-X11/extras/freetype2/src/pshinter/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/pshinter/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/pshinter/module.mk delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshalgo.c delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshalgo.h delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshglob.c delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshglob.h delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshinter.c delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshmod.c delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshmod.h delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshnterr.h delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshrec.c delete mode 100644 nx-X11/extras/freetype2/src/pshinter/pshrec.h delete mode 100644 nx-X11/extras/freetype2/src/pshinter/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/psnames/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/psnames/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/psnames/module.mk delete mode 100644 nx-X11/extras/freetype2/src/psnames/psmodule.c delete mode 100644 nx-X11/extras/freetype2/src/psnames/psmodule.h delete mode 100644 nx-X11/extras/freetype2/src/psnames/psnamerr.h delete mode 100644 nx-X11/extras/freetype2/src/psnames/psnames.c delete mode 100644 nx-X11/extras/freetype2/src/psnames/pstables.h delete mode 100644 nx-X11/extras/freetype2/src/psnames/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/raster/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/raster/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/raster/ftraster.c delete mode 100644 nx-X11/extras/freetype2/src/raster/ftraster.h delete mode 100644 nx-X11/extras/freetype2/src/raster/ftrend1.c delete mode 100644 nx-X11/extras/freetype2/src/raster/ftrend1.h delete mode 100644 nx-X11/extras/freetype2/src/raster/module.mk delete mode 100644 nx-X11/extras/freetype2/src/raster/raster.c delete mode 100644 nx-X11/extras/freetype2/src/raster/rasterrs.h delete mode 100644 nx-X11/extras/freetype2/src/raster/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/sfnt/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/sfnt/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/sfnt/module.mk delete mode 100644 nx-X11/extras/freetype2/src/sfnt/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/sfnt/sfdriver.c delete mode 100644 nx-X11/extras/freetype2/src/sfnt/sfdriver.h delete mode 100644 nx-X11/extras/freetype2/src/sfnt/sferrors.h delete mode 100644 nx-X11/extras/freetype2/src/sfnt/sfnt.c delete mode 100644 nx-X11/extras/freetype2/src/sfnt/sfobjs.c delete mode 100644 nx-X11/extras/freetype2/src/sfnt/sfobjs.h delete mode 100644 nx-X11/extras/freetype2/src/sfnt/ttcmap0.c delete mode 100644 nx-X11/extras/freetype2/src/sfnt/ttcmap0.h delete mode 100644 nx-X11/extras/freetype2/src/sfnt/ttload.c delete mode 100644 nx-X11/extras/freetype2/src/sfnt/ttload.h delete mode 100644 nx-X11/extras/freetype2/src/sfnt/ttpost.c delete mode 100644 nx-X11/extras/freetype2/src/sfnt/ttpost.h delete mode 100644 nx-X11/extras/freetype2/src/sfnt/ttsbit.c delete mode 100644 nx-X11/extras/freetype2/src/sfnt/ttsbit.h delete mode 100644 nx-X11/extras/freetype2/src/smooth/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/smooth/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/smooth/ftgrays.c delete mode 100644 nx-X11/extras/freetype2/src/smooth/ftgrays.h delete mode 100644 nx-X11/extras/freetype2/src/smooth/ftsmerrs.h delete mode 100644 nx-X11/extras/freetype2/src/smooth/ftsmooth.c delete mode 100644 nx-X11/extras/freetype2/src/smooth/ftsmooth.h delete mode 100644 nx-X11/extras/freetype2/src/smooth/module.mk delete mode 100644 nx-X11/extras/freetype2/src/smooth/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/smooth/smooth.c delete mode 100644 nx-X11/extras/freetype2/src/tools/cordic.py delete mode 100644 nx-X11/extras/freetype2/src/tools/docmaker/.cvsignore delete mode 100644 nx-X11/extras/freetype2/src/tools/docmaker/content.py delete mode 100644 nx-X11/extras/freetype2/src/tools/docmaker/docbeauty.py delete mode 100644 nx-X11/extras/freetype2/src/tools/docmaker/docmaker.py delete mode 100644 nx-X11/extras/freetype2/src/tools/docmaker/formatter.py delete mode 100644 nx-X11/extras/freetype2/src/tools/docmaker/sources.py delete mode 100644 nx-X11/extras/freetype2/src/tools/docmaker/tohtml.py delete mode 100644 nx-X11/extras/freetype2/src/tools/docmaker/utils.py delete mode 100644 nx-X11/extras/freetype2/src/tools/glnames.py delete mode 100644 nx-X11/extras/freetype2/src/tools/test_bbox.c delete mode 100644 nx-X11/extras/freetype2/src/tools/test_trig.c delete mode 100644 nx-X11/extras/freetype2/src/truetype/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/truetype/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/truetype/module.mk delete mode 100644 nx-X11/extras/freetype2/src/truetype/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/truetype/truetype.c delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttdriver.c delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttdriver.h delete mode 100644 nx-X11/extras/freetype2/src/truetype/tterrors.h delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttgload.c delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttgload.h delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttgxvar.c delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttgxvar.h delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttinterp.c delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttinterp.h delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttobjs.c delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttobjs.h delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttpload.c delete mode 100644 nx-X11/extras/freetype2/src/truetype/ttpload.h delete mode 100644 nx-X11/extras/freetype2/src/type1/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/type1/module.mk delete mode 100644 nx-X11/extras/freetype2/src/type1/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/type1/t1afm.c delete mode 100644 nx-X11/extras/freetype2/src/type1/t1afm.h delete mode 100644 nx-X11/extras/freetype2/src/type1/t1driver.c delete mode 100644 nx-X11/extras/freetype2/src/type1/t1driver.h delete mode 100644 nx-X11/extras/freetype2/src/type1/t1errors.h delete mode 100644 nx-X11/extras/freetype2/src/type1/t1gload.c delete mode 100644 nx-X11/extras/freetype2/src/type1/t1gload.h delete mode 100644 nx-X11/extras/freetype2/src/type1/t1load.c delete mode 100644 nx-X11/extras/freetype2/src/type1/t1load.h delete mode 100644 nx-X11/extras/freetype2/src/type1/t1objs.c delete mode 100644 nx-X11/extras/freetype2/src/type1/t1objs.h delete mode 100644 nx-X11/extras/freetype2/src/type1/t1parse.c delete mode 100644 nx-X11/extras/freetype2/src/type1/t1parse.h delete mode 100644 nx-X11/extras/freetype2/src/type1/t1tokens.h delete mode 100644 nx-X11/extras/freetype2/src/type1/type1.c delete mode 100644 nx-X11/extras/freetype2/src/type42/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/type42/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/type42/module.mk delete mode 100644 nx-X11/extras/freetype2/src/type42/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/type42/t42drivr.c delete mode 100644 nx-X11/extras/freetype2/src/type42/t42drivr.h delete mode 100644 nx-X11/extras/freetype2/src/type42/t42error.h delete mode 100644 nx-X11/extras/freetype2/src/type42/t42objs.c delete mode 100644 nx-X11/extras/freetype2/src/type42/t42objs.h delete mode 100644 nx-X11/extras/freetype2/src/type42/t42parse.c delete mode 100644 nx-X11/extras/freetype2/src/type42/t42parse.h delete mode 100644 nx-X11/extras/freetype2/src/type42/t42types.h delete mode 100644 nx-X11/extras/freetype2/src/type42/type42.c delete mode 100644 nx-X11/extras/freetype2/src/winfonts/Jamfile delete mode 100644 nx-X11/extras/freetype2/src/winfonts/descrip.mms delete mode 100644 nx-X11/extras/freetype2/src/winfonts/fnterrs.h delete mode 100644 nx-X11/extras/freetype2/src/winfonts/module.mk delete mode 100644 nx-X11/extras/freetype2/src/winfonts/rules.mk delete mode 100644 nx-X11/extras/freetype2/src/winfonts/winfnt.c delete mode 100644 nx-X11/extras/freetype2/src/winfonts/winfnt.h delete mode 100644 nx-X11/extras/freetype2/tests/Jamfile delete mode 100644 nx-X11/extras/freetype2/tests/gview.c delete mode 100644 nx-X11/extras/freetype2/vms_make.com (limited to 'nx-X11/extras/freetype2') diff --git a/nx-X11/extras/freetype2/ChangeLog b/nx-X11/extras/freetype2/ChangeLog deleted file mode 100644 index df8395022..000000000 --- a/nx-X11/extras/freetype2/ChangeLog +++ /dev/null @@ -1,10022 +0,0 @@ -2004-06-23 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/ftmemory.h [FT_DEBUG_MEMORY]: Declare - FT_QAlloc_Debug and FT_QRealloc_Debug. - - * src/base/ftutil.c (FT_QAlloc): Fix error and debug messages. - (FT_QRealloc): Call FT_QAlloc if original pointer is NULL. - Fix error message. - -2004-06-23 David Turner <david@freetype.org> - - * include/freetype/internal/ftmemory.h, src/base/ftutil.c - (FT_QAlloc, FT_QRealloc), src/base/ftdbgmem.c (FT_QAlloc_Debug, - FT_QRealloc_Debug): New functions that perform allocation without - zero-ing out the corresponding blocks. - - * include/freetype/internal/ftmemory.h (FT_MEM_QALLOC, - FT_MEM_QREALLOC, FT_MEM_QNEW, FT_MEM_QNEW_ARRAY, - FT_MEM_QRENEW_ARRAY, FT_QALLOC, FT_QREALLOC, FT_QNEW, FT_QNEW_ARRAY, - FT_QRENEW_ARRAY): New macros. - - * src/base/ftstream.c (FT_Stream_EnterFrame): Use FT_QALLOC. - * src/gzip/ftgzip.c (FT_Stream_OpenGzip): Use FT_QNEW_ARRAY. - * src/sfnt/sfobjs.c (tt_face_get_name): Use FT_QNEW_ARRAY. - - * src/sfnt/ttload.c (tt_face_load_directory, tt_face_load_metrics, - tt_face_load_gasp): Use FT_QNEW_ARRAY. - (tt_face_load_kern): Use FT_QNEW_ARRAY. - Small optimization in the kerning table verifier; this speeds up - TrueType face opening by about 7%. - (tt_face_load_hdmx): Use FT_QNEW_ARRAY and FT_QALLOC. - - * include/freetype/config/ftmodule.h: Changed the order of modules, - putting TrueType and Type 1 first. This dramatically improves the - performance of face open/close operations. For example, putting the - TrueType driver first in the list results in a 5x speedup when - opening `Vera.ttf'. - - The very problem is that both the PCF and BDF drivers do a lot more - than necessary to detect that they cannot handle a font file. - -2004-06-22 Werner Lemberg <wl@gnu.org> - - * src/pcf/pcfread.c (pcf_read_TOC, pcf_get_properties, - pcf_get_metrics, pcf_get_bitmaps, pcf_get_encodings): Improve - debugging messages. - - * src/pcf/pcfdrivr.c (FT_COMPOMENT): Move up. - (PCF_Face_Init): Simplify code. - - * src/bdf/bdfdrivr.h (BDF_FaceRec): New element `default_glyph'. - - * src/bdf/bdflib.c (_bdf_add_property, _bdf_parse_start), - src/bdf/bdf.h (bdf_font_t): s/default_glyph/default_char/. - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Fix number of glyphs. - Set `default_glyph'. - (BDF_Glyph_Load): Use `default_glyph' for undefined glyph. - - * docs/CHANGES: Updated. - -2004-06-21 Werner Lemberg <wl@gnu.org> - - * docs/CHANGES: Updated. - -2004-06-21 David Turner <david@freetype.org> - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph, - load_truetype_glyph): Don't access (unrounded) - `TT_Size.root.metrics' but (rounded) `TT_Size.metrics'. This fixes - a scaling bug that caused incorrect rendering when the bytecode - interpreter was enabled. - -2004-06-14 Huw D M Davies <h.davies1@physics.ox.ac.uk> - - * src/winfonts/winfnt.c (FNT_Face_Init): Set x_ppem and y_ppem - based on pixel_width and pixel_height. - (FNT_Size_Set_Pixels): Updated. - -2004-06-14 Werner Lemberg <wl@gnu.org> - - * src/lzw/zopen.c: Comment out inclusion of signal.h and unistd.h. - Reported by Hyv�rinen Jyrki Juhani. - -2004-06-11 Werner Lemberg <wl@gnu.org> - - * docs/CHANGES: Updated. - -2004-06-10 David Turner <david@freetype.org> - - * src/base/ftobject.c, src/base/fthash.c, src/base/ftexcept.c, - src/base/ftsysio.c, src/base/ftsysmem.c, src/base/ftlist.c: Removed. - Obsolete. - - * src/raster/ftraster.c (Alignment, PAlignment): New union to fix - problems with 64bit systems. - (AlignProfileSize): Use it. - -2004-06-08 David Turner <david@freetype.org> - - * include/freetype/freetype.h (FT_GlyphMetrics): Move `lsb_delta' - and `rsb_delta' elements to... - (FT_GlyphSlotRec): Here to retain binary compatibility with older - FreeType versions. - Update all users. - - * src/sfnt/sfobjs.c (tt_face_get_name): Remove compiler warning. - - * src/winfonts/winfnt.c (FNT_Load_Glyph): Add missing initialization - of slot->metrics.width and slot->metrics.height when loading a - Windows FNT glyph. Thanks to Huw Davies. - - * include/freetype/cache/ftcmru.h (FTC_MruNode_CompareFunc): Change - return type to FT_Bool. - - * src/cache/ftbasic.c (ftc_basic_family_compare): Change return - type to FT_Bool. - - * src/cache/ftccache.c (FTC_Cache_Init, ftc_cache_init): Make - the former call the latter, not vice versa. - (FTC_Cache_Done, ftc_cache_done): Ditto. - - * src/cache/ftcglyph.c (FTC_GNode_Compare, ftc_gnode_compare): Make - the former call the latter, not vice versa. - (FTC_GCache_Init, ftc_gcache_init): Ditto. - (FTC_GCache_Done, ftc_gcache_done): Ditto. - - * src/cache/ftcimage.c (FTC_INode_Free, ftc_inode_free): Make the - former call the latter, not vice versa. - (FTC_INode_Weight, ftc_inode_weight): Ditto. - - * src/cache/ftcmanag.c (ftc_size_node_compare, - ftc_size_node_compare_faceid, ftc_face_node_compare): Change return - type to FT_Bool. - - * src/cache/ftcsbits.c (FTC_SNode_Free, ftc_snode_free): Make the - former call the latter, not vice versa. - (FTC_SNode_Weight, ftc_snode_weight): Ditto. - (FTC_SNode_Compare, ftc_snode_compare): Ditto. - - * src/cache/ftcsbits.c: Fix some bugs and inefficiencies in the cache - sub-system. - -2004-06-05 Werner Lemberg <wl@gnu.org> - - * src/autofit/afloader.c (af_loader_load_g): Set `lsb_delta' and - `rsb_delta' in slot->metrics and tune side bearings slightly. - -2004-06-04 Werner Lemberg <wl@gnu.org> - - * docs/CHANGES: Updated. - -2004-06-04 David Chester <davidchester@gmx.net> - - Improve inter-letter spacing for autohinted glyphs. - - * include/freetype/freetype.h (FT_Glyph_Metrics): Add elements - `lsb_delta' and `rsb_delta'. - - * src/autohint/ahhint.c (ah_hinter_load): Set `lsb_delta' and - `rsb_delta' in slot->metrics and tune side bearings slightly. - -2004-06-04 David Turner <david@freetype.org> - - * src/autofit/*: Important fixes to the auto-fitter. The output - now seems to be 100% equivalent to the auto-hinter, while being - about 2% faster (which proves that script-specific algorithm - selection isn't a performance problem). - - To test it, change `autohint' to `autofit' in - <freetype/config/ftmodule.h> and recompile. - - A few more testing is needed before making this the official - auto-hinting module. - -2004-06-02 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (compute_glyph_metrics): Fix compiler - warnings. - -2004-06-01 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfobjs.c (tt_face_get_name): Make sure that an English - name record for the Apple platform is preferred to a non-English - entry for the Microsoft platform. Problem reported by HANDA - Ken'ichi. - -2004-05-19 George Williams <gww@silcom.com> - - * src/type1/t1load.c (mm_axis_unmap, mm_weights_unmap): New - auxiliary functions. - (T1_Get_MM_Var): Provide axis tags. - Use mm_axis_unmap and mm_weights_unmap to provide default values - for design and normalized axis coordinates. - - * include/freetype/t1tables.h (PS_DesignMapRec): Change type of - `design_points' to FT_Long. - Update all users. - -2004-05-17 Werner Lemberg <wl@gnu.org> - - * src/base/ftbbox.c (BBox_Conic_Check): Fix boundary cases. - Reported by Mikey Anbary <manbary@vizrt.com>. - -2004-05-15 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfobjs.c (sfnt_done_face): Free face->postscript_name. - -2004-05-15 George Williams <gww@silcom.com> - - * src/sfnt/ttload.c (tt_face_load_max_profile): Always set - face->root.num_glyphs. - -2004-05-14 Masatake YAMATO <jet@gyve.org> - George Williams <gww@silcom.com> - - * src/sfnt/ttload.c (sfnt_dir_check): Handle `bhed' properly. - -2004-05-14 Werner Lemberg <wl@gnu.org> - - * src/cache/ftcbasic.c (ftc_basic_family_compare, - ftc_basic_family_init, ftc_basic_family_get_count, - ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, - ftc_basic_gnode_compare_faceid): Adjust parameters and return types - to prototypes given in header files from include/freetype/cache. - Use casts to proper types locally. - (ftc_basic_image_family_class, ftc_basic_image_cache_class, - ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): Remove - casts. - - * src/cache/ftccback.h: Adjust parameters and return types to - prototypes given in header files from include/freetype/cache. - - * src/cache/ftcimage.c (ftc_inode_free, ftc_inode_new, - ftc_inode_weight): Adjust parameters and return types to prototypes - given in header files from include/freetype/cache. Use casts to - proper types locally. - - * src/cache/ftcsbits.c (ftc_snode_free, ftc_snode_new, - ftc_snode_weight, ftc_snode_compare): Adjust parameters and return - types to prototypes given in header files from - include/freetype/cache. Use casts to proper types locally. - - * src/cache/ftccmap.c (ftc_cmap_node_free, ftc_cmap_node_new, - ftc_cmap_node_weight, ftc_cmap_node_compare, - ftc_cmap_node_remove_faceid): Adjust parameters and return types to - prototypes given in header files from include/freetype/cache. Use - casts to proper types locally. - (ftc_cmap_cache_class): Remove casts. - - * src/cache/ftcglyph.c (ftc_gnode_compare, ftc_gcache_init, - ftc_gcache_done): Adjust parameters and return types to prototypes - given in header files from include/freetype/cache. Use casts to - proper types locally. - - * src/cache/ftcmanag.c (ftc_size_node_done, ftc_size_node_compare, - ftc_size_node_init, ftc_size_node_reset, - ftc_size_node_compare_faceid, ftc_face_node_init, - ftc_face_node_done, ftc_face_node_compare: Adjust parameters and - return types to prototypes given in header files from - include/freetype/cache. Use casts to proper types locally. - - (ftc_size_list_class, ftc_face_list_class): Remove casts. - -2004-05-13 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahmodule.c (ft_autohinter_init, ft_autohinter_done): - Use FT_Module as parameter and do a cast to FT_AutoHinter locally. - (autohint_module_class): Remove casts. - - * src/base/ftglyph.c (ft_bitmap_glyph_init, ft_bitmap_glyph_copy, - ft_bitmap_glyph_done, ft_bitmap_glyph_bbox, ft_outline_glyph_init, - ft_outline_glyph_done, ft_outline_glyph_copy, - ft_outline_glyph_transform, ft_outline_glyph_bbox, - ft_outline_glyph_prepare): Use FT_Glyph as parameter and do a cast - to FT_XXXGlyph locally. - Use FT_CALLBACK_DEF throughout. - (ft_bitmap_glyph_class, ft_outline_glyph_class): Remove casts. - - * src/bdf/bdfdrivr.c (bdf_cmap_init, bdf_cmap_done, - bdf_cmap_char_index, bdf_cmap_char_next): Use FT_CMap as parameter - and do a cast to BDF_CMap locally. - (bdf_cmap_class): Remove casts. - -2004-05-12 Werner Lemberg <wl@gnu.org> - - * src/cff/cffgload.h (CFF_Builder): Remove `error'. - * src/cff/cffgload.c (cff_decoder_parse_charstrings): Replace - `Memory_Error' with `Fail' und update all users. - -2004-05-11 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/psaux.h (T1_ParseState): New - enumeration. - (T1_BuilderRec): Replace `path_begun' with `parse_state'. - Remove `error'. - * src/psaux/t1decode.c (t1_decoder_parse_charstrings): Replace - `Memory_Error' with `Fail' and update all users. - Don't use `builder->error'. - Replace `path_begun' with `parse_state' and check parsing states. - - * src/psaux/psobjs.c (t1_builder_init, t1_builder_start_point): - Replace `path_begun' with `parse_state' and check parsing states. - -2004-05-10 George Williams <gww@silcom.com> - - * src/truetype/ttxgvar.c (ft_var_load_avar): Do free arrays in case - of error -- `avar' is optional so we can't rely on tt_done_blend - being called automatically. - -2004-05-09 George Williams <gww@silcom.com> - - * src/truetype/ttxgvar.c (ft_var_load_avar, ft_var_load_gvar): Fix - error handling. - -2004-05-07 Werner Lemberg <wl@gnu.org> - - * src/pfr/pfrobjs.c, src/pfr/pfrobjs.h (pfr_face_init, - pfr_face_done, pfr_face_get_kerning, pfr_slot_init, pfr_slot_done, - pfr_slot_load): Don't use PFR_XXX but FT_XXX arguments which are - typecast to the proper PFR_XXX types within the function. - Update code accordingly. - - * src/pfr/pfrdrivr.c (pfr_get_kerning, pfr_get_advance, - pfr_get_metrics, pfr_get_service): Don't use PFR_XXX but FT_XXX - arguments which are typecast to the proper PFR_XXX types within the - function. - Update code accordingly. - Use FT_CALLBACK_DEF throughout. - (pfr_metrics_service_rec, pfr_driver_class): Remove casts. - -2004-05-06 Masatake YAMATO <jet@gyve.org> - - * src/truetype/ttgxvar.c (ft_var_load_gvar): Use FT_FACE_STREAM. - (*): Rename local variable OffsetToData to offsetToData. - -2004-05-06 Werner Lemberg <wl@gnu.org> - - * src/cff/cffobjs.c (cff_size_done, cff_size_init, cff_size_reset, - cff_slot_done, cff_slot_init, cff_face_init, cff_face_done): Access - root fields directly. - * src/cff/cffdrivr.c (Load_Glyph): Access root fields directly. - - * src/truetype/ttgload.c (TT_Process_Simple_Glyph): Save current - frame before calling TT_Vary_Get_Glyph_Deltas. - - * src/pcf/pcfdrivr.c (PCF_CMapRec): Rename `cmap' to `root' for - consistency. - (pcf_cmap_init, pcf_cmap_done, pcf_cmap_char_index, - pcf_cmap_char_next): Don't use PCF_XXX but FT_XXX arguments which - are typecast to the proper PCF_XXX types within the function. - Update code accordingly. - (pcf_cmap_class): Remove casts. - (PCF_Face_Done, PCF_Face_Init, PCF_Set_Pixel_Size): Don't use - PCF_XXX but FT_XXX arguments which are typecast to the proper - PCF_XXX types within the function. - Update code accordingly. - Use FT_CALLBACK_DEF throughout. - (PCF_Set_Point_Size): New wrapper function. - (PCF_Glyph_Load, pcf_driver_requester): Use FT_CALLBACK_DEF. - (pcf_driver_class): Remove casts. - -2004-05-04 Steve Hartwell <shspamsink@comcast.net> - - * src/truetype/ttobjs.c (tt_driver_done): Fix typo. - -2004-05-04 Werner Lemberg <wl@gnu.org> - - * src/bdf/bdfdrivr.c (BDF_Face_Done, BDF_Face_Init, - BDF_Set_Pixel_Size): Don't use BDF_XXX but FT_XXX arguments which - are typecast to the proper BDF_XXX types within the function. - Update code accordingly. - Use FT_CALLBACK_DEF throughout. - (BDF_Set_Point_Size): New wrapper function. - (bdf_driver_class): Remove casts. - - * src/cff/cffdrivr.c (Get_Kerning, Load_Glyph, cff_get_interface): - Don't use CFF_XXX but FT_XXX arguments which are typecast to the - proper CFF_XXX types within the function. - Update code accordingly. - Use FT_CALLBACK_DEF throughout. - (cff_driver_class): Remove casts. - - * src/cff/cffobjs.h, src/cff/cffobjs.c (cff_size_done, - cff_size_init, cff_size_reset, cff_slot_done, cff_slot_init, - cff_face_init, cff_face_done, cff_driver_init, cff_driver_done): - Don't use CFF_XXX but FT_XXX arguments which are typecast to the - proper CFF_XXX types within the function. - Update code accordingly. - (cff_point_size_reset): New wrapper function. - - * src/cid/cidobjs.h, src/cid/cidobjs.c (cid_slot_done, - cid_slot_init, cid_size_done, cid_size_init, cid_size_reset, - cid_face_done, cid_face_init, cid_driver_init, cid_driver_done): - Don't use CID_XXX but FT_XXX arguments which are typecast to the - proper CID_XXX types within the function. - Update code accordingly. - (cid_point_size_reset): New wrapper function. - - * src/cid/cidgload.c, src/cid/cidgload.h (cid_slot_load_glyph): - Don't use CID_XXX but FT_XXX arguments which are typecast to the - proper CID_XXX types within the function. - Update code accordingly. - - * src/cid/cidriver.c (cid_get_interface): - Don't use CID_XXX but FT_XXX arguments which are typecast to the - proper CID_XXX types within the function. - Update code accordingly. - Use FT_CALLBACK_DEF. - (t1cid_driver_class): Remove casts. - - * src/truetype/ttdriver.c (tt_get_interface): Use FT_CALLBACK_DEF. - * src/truetype/ttgxvar.c (ft_var_load_avar): Don't free non-local - variables (this is done later). - (ft_var_load_avar): Fix call to FT_FRAME_ENTER. - (TT_Get_MM_Var): Fix size for `fvar_fields'. - (TT_Vary_Get_Glyph_Deltas): Handle deallocation of local variables - correctly. - - * src/base/ftdbgmem.c (ft_mem_debug_realloc): Don't abort if - current size is zero. - -2004-05-03 Steve Hartwell <shspamsink@comcast.net> - - * src/truetype/ttobjs.h, src/truetype/ttobjs.c (tt_face_init, - tt_face_done, tt_size_init, tt_size_done, tt_driver_init, - tt_driver_done): Don't use TT_XXX but FT_XXX arguments which are - typecast to the proper TT_XXX types within the function. - Update code accordingly. - - * src/truetype/ttdriver.c (Get_Kerning, Set_Char_Sizes, - Set_Pixel_Sizes, Load_Glyph, tt_get_interface): Don't use TT_XXX but - FT_XXX arguments which are typecast to the proper TT_XXX types - within the function. - Update code accordingly. - (tt_driver_class): Remove casts. - -2004-05-02 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttload.c (tt_face_free_names): Check that `table->names' - is not NULL. Reported by Gordon Childs <gchilds@quickcut.com.au>. - -2004-04-29 Werner Lemberg <wl@gnu.org> - - * docs/formats.txt: Add more information on PFR format. - -2004-04-28 Werner Lemberg <wl@gnu.org> - - * docs/formats.txt: New file. - * docs/CHANGES: Updated. - -2004-04-28 Masatake YAMATO <jet@gyve.org> - - * include/freetype/internal/tttypes.h (GX_BlendRec_) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Fix a typo. - - * src/truetype/ttgxvar.h (GX_BlendRec_): Fix a typo. - -2004-04-27 Masatake YAMATO <jet@gyve.org> - - * src/truetype/ttgxvar.h: Use FT_LOCAL instead of FT_LOCAL_DEF - for function declarations. - -2004-04-25 George Williams <gww@silcom.com> - - * src/truetype/ttgxvar.c (ft_var_apply_tuple): Fix typo. - -2004-04-25 Werner Lemberg <wl@gnu.org> - - * src/truetype/Jamfile, docs/CHANGES: Updated. - -2004-04-24 Werner Lemberg <wl@gnu.org> - - * src/pcf/pcfdrivr.c: Revert change from 2004-04-17. - * src/pcf/pcfutil.c: Use FT_LOCAL_DEF. - * src/pcf/pcfutil.h: Include FT_CONFIG_CONFIG_H. - Use FT_BEGIN_HEADER and FT_END_HEADER. - Use FT_LOCAL. - -2004-04-24 George Williams <gww@silcom.com> - - Add support for Apple's distortable font technology (in GX fonts). - - * devel/ftoption.h, include/freetype/config/ftoption.h - (TT_CONFIG_OPTION_GX_VAR_SUPPORT): New macro. - - * include/freetype/ftmm.h (FT_Var_Axis, FT_Var_Named_Style, - FT_MM_Var): New structures. - (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, - FT_Set_Var_Blend_Coordinates): New function declarations. - - * include/freetype/internal/services/svmm.h (FT_Get_MM_Var_Func, - FT_Set_Var_Design_Func): New typedefs. - Update MultiMasters service. - - * include/freetype/internal/tttypes.h - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include FT_MULTIPLE_MASTERS_H. - (GX_Blend) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New typedef. - (TT_Face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: New members `doblend' - and `blend'. - - * include/freetype/tttags.h (TTAG_avar, TTAG_cvar, TTAG_gvar): New - macros. - - * include/freetype/internal/fttrace.h: Add `ttgxvar'. - - * src/base/ftmm.c (FT_Get_MM_Var, FT_Set_Var_Design_Coordinates, - FT_Set_Var_Blend_Coordinates): New functions. - - * src/sfnt/sfobjs.c (sfnt_load_face) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Set FT_FACE_FLAG_MULTIPLE_MASTERS - flag for GX var fonts. - - * src/truetype/ttgxvar.c, src/truetype/ttgxvar.h: New files. - - * src/truetype/truetype.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - ttgxvar.c. - - * src/truetype/ttdriver.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - FT_MULTIPLE_MASTERS_H, FT_SERVICE_MULTIPLE_MASTERS_H, and ttgxvar.h. - (tt_service_gx_multi_masters) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: - New service. - (tt_services) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Updated. - - * src/truetype/ttgload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - ttgxvar.h. - (TT_Process_Simple_Glyph, load_truetype_glyph) - [TT_CONFIG_OPTION_GX_VAR_SUPPORT] :Support GX var fonts. - - * src/truetype/ttobjs.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - ttgxvar.h. - (tt_done_face) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call - tt_done_blend. - - * src/truetype/ttpload.c [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Include - ttgxvar.h. - (tt_face_load_cvt) [TT_CONFIG_OPTION_GX_VAR_SUPPORT]: Call - tt_face_vary_cvt. - - * src/truetype/rules.mk (TT_DRV_SRC): Add ttgxvar.c. - - * src/type1/t1driver.c (t1_service_multi_masters): Add T1_Get_MM_Var - and T1_Set_Var_Design. - - * src/type1/t1load.c (FT_INT_TO_FIXED, FT_FIXED_TO_INT): New macros. - (T1_Get_MM_Var, T1_Set_Var_Design): New functions. - - * src/type1/t1load.h (T1_Get_MM_Var, T1_Set_Var_Design): New - function declarations. - -2004-04-23 Werner Lemberg <wl@gnu.org> - - * include/freetype/ftcache.h (FT_Get_CharMap_Index): Rename - declaration and move to... - * include/freetype/freetype.h (FT_Get_Charmap_Index): Here. - (FREETYPE_PATCH): Set to 9. - - * src/base/ftobjs.c (FT_Get_Charmap_Index): New function. - - * builds/unix/configure.ac (version_info): Set to 9:7:3. - * builds/unix/configure: Updated. - - * builds/win32/visualc/index.html, - builds/win32/visualc/freetype.dsp, - builds/win32/visualc/freetype.vcproj: s/218/219/. - - * builds/freetype.mk (refdoc), README, Jamfile (RefDoc): - s/2.1.8/2.1.9/. - - * docs/CHANGES, docs/VERSION.DLL: Updated. - -2004-04-21 Werner Lemberg <wl@gnu.org> - - * src/cff/cffparse.c (cff_parser_run), src/psaux/psobjs.c - (ps_parser_load_field): Use FT_CHAR_BIT. - -2004-04-21 David Turner <david@freetype.org> - - - * Version 2.1.8 released. - ========================= - - - * src/cff/cffobjs.c (cff_face_init): Fix a small memory leak. - - * src/autofit/afloader.c (af_loader_load_g), src/autofit/afmodule.c - (af_autofitter_load_glyph), src/base/ftdebug.c (FT_Trace_Get_Name): - Remove compiler warnings. - - * src/autofit/aftypes.h: Undefine AF_DEBUG. - - * src/lzw/zopen.c (rmask), src/pcf/pcfdrivr.c (pcf_service_bdf, - pcf_services), src/pcf/pcfread.c (tableNames), src/psaux/psobjs.c - (ft_char_table), src/type42/t42drivr.c (t42_service_glyph_dict, - t42_service_ps_font_name): Decorate data arrays with `const' to - avoid populating the `.data' segment. - - * src/lzw/Jamfile: New file. - -2004-04-20 Werner Lemberg <wl@gnu.org> - - * src/psaux/psobjs.c (T1Radix): Renamed to... - (ps_radix): This. - Update current cursor position. - - * docs/CHANGES: Updated. - -2004-04-18 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph), - src/ttdriver.c (Load_Glyph): Change type of `glyph_index' to - FT_UInt. From Lex Warners. - -2004-04-17 Chisato Yamauchi <cyamauch@a.phys.nagoya-u.ac.jp> - - * src/sfnt/ttload.c (tt_face_load_sfnt_header): Really fix change - from 2004-03-19. - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Use `ft_strlen'. - - * src/pcf/pcfutil.c, src/pcf/pcfutil.h: Decorate functions with - `static'. - Remove unused function `RepadBitmap'. - * src/pcf/pcfdrivr.c: Don't include pcfutil.h. - -2004-04-16 Werner Lemberg <wl@gnu.org> - - * builds/unix/freetype-config.in (usage): Fix and improve usage - information. - -2004-04-15 Werner Lemberg <wl@gnu.org> - - * builds/unix/ftconfig.in, builds/vms/ftconfig.h: Define - FT_CHAR_BIT. - - * src/base/ftobjs.c (FT_Load_Glyph): Don't apply autohinting if - glyph is vertically distorted or mirrored. - - * src/cff/cffgload.c (cff_slot_load): Handle zero `size' properly - for embedded bitmaps. - - * docs/CHANGES: Updated. - -2004-04-15 bytesoftware <bytesoftware@btinternet.com> - - * include/freetype/config/ftconfig.h, src/base/ftstream.c - (FT_Stream_ReadFields): More fixes using FT_CHAR_BIT. - -2004-04-14 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ftconfig.h (FT_CHAR_BIT): New macro. - -2004-04-14 Alex Strelnikov <ptktyrf@mail.ru> - - * src/cache/ftcsbits.c (ftc_snode_load): Initialize `*asize' in case - of error. - -2004-04-14 Werner Lemberg <wl@gnu.org> - - * src/base/ftmac.c [__GNUC__]: Define OS_INLINE. - * builds/unix/configure.ac: Don't try to remove `-ansi' compilation - switch on the Mac. - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.5.6. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.8a. - * builds/unix/configure: Regenerated with autoconf 2.59a. - -2004-04-13 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ftconfig.h: Use CHAR_BIT to define - size of FT_SIZEOF_xxx. - -2004-04-12 Chisato Yamauchi <cyamauch@a.phys.nagoya-u.ac.jp> - - * include/freetype/internal/sfnt.h (TT_Find_SBit_Image_Func, - TT_Load_SBit_Metrics_Func): New typedefs. - (SFNT_Interface): Add find_sbit_image and load_sbit_metrics. - - * src/sfnt/sfdriver.c (sfnt_interface): Updated. - * src/sfnt/ttsbit.h (tt_find_sbit_image, tt_load_sbit_metrics): New - declarations. - * src/sfnt/ttsbit.c (find_sbit_image): Renamed to... - (tt_find_sbit_image): This. - Updated all callers. - (load_sbit_metrics): Renamed to... - (tt_load_sbit_metrics): This. - Updated all callers. - -2004-04-12 Werner Lemberg <wl@gnu.org> - - * configure: Accept makepp also. - - * builds/unix/detect.mk: Use proper path to unix-def.mk. - * builds/unix/unix-def.in (BUILD_DIR, PLATFORM): Remove. - * builds/unix/unix.mk (BUILD_DIR, PLATFORM): Define. - Use BUILD_DIR. - - * docs/INSTALL, docs/INSTALL.GNU, docs/INSTALL.UNX: Update - documentation on makepp. - -2004-04-11 Werner Lemberg <wl@gnu.org> - - * src/lzw/zopen.c: Don't include sys/param.h and sys/stat.h. - -2004-04-10 Werner Lemberg <wl@gnu.org> - - * src/lzw/ftlzw.c: Include zopen.h dependent on - FT_CONFIG_OPTION_USE_LZW. - - * src/base/ftdebug.c: s/index/idx/ to avoid compiler warnings. - -2004-04-02 Werner Lemberg <wl@gnu.org> - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.5.2. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.8a. - * builds/unix/configure: Regenerated with autoconf 2.59a. - -2004-04-01 Werner Lemberg <wl@gnu.org> - - * builds/unix/ft-munmap.m4 (FT_MUNMAP_PARAM): Fix arguments of - AC_COMPILE_IFELSE. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.8a. - * builds/unix/configure: Regenerated with autoconf 2.59a. - * builds/unix/config.guess, builds/unix/config.sub: Updated from - `config' CVS module at subversions.gnu.org - * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from - `texinfo' CVS module at subversions.gnu.org. - * builds/freetype.mk (refdoc): Updated. - -2004-03-31 Werner Lemberg <wl@gnu.org> - - Handle broken FNT files which don't have a trailing NULL byte - in the face name string. - - * src/winfonts/winfnt.h (FNT_FontRec): New member `family_name'. - * src/winfonts/winfnt.c (fnt_font_done): Free font->family_name. - (FNT_Face_Init): Append a final zero byte to the font face name. - -2004-03-30 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttload.c (tt_face_load_sfnt_header): Fix change from - 2004-03-19. - -2004-03-27 Werner Lemberg <wl@gnu.org> - - * src/base/descrip.mms (OBJS): Add ftbbox.obj. - -2004-03-26 George Williams <gww@silcom.com> - - Add vertical phantom points. - - * include/freetype/internal/tttypes.h (TT_LoaderRec): Add - `top_bearing', `vadvance', `pp3, and `pp4'. - - * src/autofit/afloader.c (af_loader_load_g): Handle two more points. - - * src/autohint/ahhint.c (ah_hinter_load): Handle two more points. - * src/truetype/ttgload.c (Get_VMetrics): New function. - (TT_Load_Simple_Glyph, TT_Process_Simple_Glyph): Handle two more - points. - (load_truetype_glyph): Use Get_VMetrics. - Handle two more points. - (compute_glyph_metrics): Thanks to vertical phantom points we now - can always compute `advance_height' and `top_bearing'. - * src/truetype/ttobjs.h (TT_SubglyphRec): Add vertical phantom - points. - - - * src/autohint/ahglyph.c (ah_outline_load): Fix allocation of - `news'. - -2004-03-21 Werner Lemberg <wl@gnu.org> - - * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Fix left side bearing. - -2004-03-20 Steve Hartwell <shspamsink@comcast.net> - - * src/cache/ftcmru.c (FTC_MruList_RemoveSelection): Handle a NULL - value for `selection' as `select all'. - -2004-03-19 Steve Hartwell <shspamsink@comcast.net> - - * src/sfnt/ttload.c (tt_face_load_sfnt_header): Reject face_index - values > 0 if loading non-TTC fonts. - - * src/base/ftmac.c (open_face_from_buffer): Set positive face_index - to zero before calling FT_Open_Face. - - * docs/CHANGES: Updated. - -2004-03-04 Werner Lemberg <wl@gnu.org> - - * Jamfile, vms_make.com, builds/win32/visualc/freetype.dsp, - builds/win32/visualc/freetype/vcproj, include/freetype/ftmoderr.h: - Add LZW module. - - * Jamfile.in: Removed. - - * docs/CHANGES: Updated. - - * include/freetype/internal/ftobjs.h: s/MIN/FT_MIN/, s/MAX/FT_MAX/, - s/ABS/FT_ABS/. Updated all callers. - - * src/type1/t1load.c (parse_dict), src/pcf/pcfdrivr.c - (PCF_Face_Init): Use FT_ERROR_BASE. - -2004-03-04 Albert Chin <china@thewrittenword.com> - - Add support for PCF fonts compressed with LZW (extension .pcf.Z, - created with `compress'). - - * include/freetype/config/ftoption.h, devel/ftoption.h - (FT_CONFIG_OPTION_USE_LZW): New macro. - - * include/freetype/ftlzw.h: New file. - * include/freetype/config/ftheader.h (FT_LZW_H): New macro for - ftlzw.h. - - * src/lzw/*: New files. - - * src/pcf/pcfdrivr.c: Include FT_LZW_H. - (PCF_Face_Init): Try LZW also. - - * src/gzip/ftgzip.c: s/0/Gzip_Err_Ok/ where appropriate. - Beautify. - -2004-03-03 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshalgo.c (psh_hint_table_init): Simplify code. - -2004-03-02 Werner Lemberg <wl@gnu.org> - - Add embedded bitmap support to CFF driver. - - * src/cff/cffobjs.h (CFF_SizeRec): New structure. - - * src/cff/cffgload.c (cff_builder_init): Updated. - (cff_slot_load): Updated. - [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Load sbit. - - * src/cff/cffobjs.c (sbit_size_reset) - [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: New function. - (cff_size_get_globals_funcs, cff_size_done, cff_size_init): Updated. - (cff_size_reset): Updated. - [TT_CONFIG_OPTION_EMBEDDED_BITMAPS]: Call sbit_size_reset. - - * src/cff/cffdrivr.c (Load_Glyph): Updated. - (cff_driver_class): Use CFF_SizeRec. - - * docs/CHANGES: Updated. - -2004-03-01 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshglob.c (psh_globals_scale_widths): Don't use - FT_RoundFix but FT_PIX_ROUND. - (psh_blues_snap_stem): Don't use blue_shift but blue_threshold. - - * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD_MAXIMUM): New macro. - (psh_glyph_find_string_points): Use PSH_STRONG_THRESHOLD_MAXIMUM. - (psh_glyph_find_blue_points): New function. Needed for fonts like - p052003l.pfb (URW Palladio L Roman) which have flex curves at the - base line within blue zones, but the flex curves aren't covered by - hints. - (ps_hints_apply): Use psh_glyph_find_blue_points. - -2004-02-27 Garrick Meeker <garrick@digitalanarchy.com> - - * builds/unix/configure.ac: Fix compiler flags for - `--with-old-mac-fonts'. - * builds/unix/configure: Regenerated. - - * src/base/ftmac.c: s/TARGET_API_MAC_CARBON/!TARGET_API_MAC_OS8/. - (FT_New_Face_From_Resource): New function. - (FT_New_Face): Use FT_New_Face_From_Resource. - (FT_New_Face_From_FSSpec): Use FT_New_Face_From_Resource. - [__MWERKS__]: Don't include FSp_fopen.h. - -2004-02-26 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshglob.c (psh_globals_new): Fix value of - `dim->stdw.count'. - Don't assign default values to blue scale and blue shift. - -2004-02-25 Werner Lemberg <wl@gnu.org> - - * docs/CHANGES: Updated. - -2004-02-25 Garrick Meeker <garrick@digitalanarchy.com> - Steve Hartwell <shspamsink@comcast.net> - - Improve MacOS fond support. Provide a new API - `FT_New_Face_From_FSSpec' similar to `FT_New_Face'. - - * src/base/ftmac.c [__MWERKS__]: Include FSp_fpopen.h. - STREAM_FILE [__MWERKS__]: New macro. - (ft_FSp_stream_close, ft_FSp_stream_io) [__MWERKS__]: New functions. - (file_spec_from_path) [__MWERKS__]: Updated #if statement. - (get_file_type, make_lwfn_spec): Use `const' for argument. - (is_dfont) [TARGET_API_MAC_CARBON]: Removed. - (count_face_sfnt, count_faces): New functions. - (parse_fond): Do some range checking. - (read_lwfn): Change type of second argument. - No longer call FSpOpenResFile. - (OpenFileAsResource): New function. - (FT_New_Face_From_LWFN): Use `const' for second argument. - Use OpenFileAsResource. - (FT_New_Face_From_Suitcase): Change type of second argument. - No longer call FSpOpenResFile. - Loop over all resource indices. - (FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Removed. - (FT_GetFile_From_Mac_Name): Use `const' for first argument. - (ResourceForkSize): Removed. - (FT_New_Face): Updated to use new functions. - (FT_New_Face_From_FSSpec): New function. - - * include/freetype/ftmac.h: Updated. - -2004-02-24 Malcolm Taylor <mtaylor@clear.net.nz> - - * src/autohint/ahhint.c (ah_hinter_load) <FT_GLYPH_FORMAT_OUTLINE>: - Handle case where outline->num_vedges is zero while computing hinted - metrics. - -2004-02-24 Gordon Childs <gchilds@quickcut.com.au> - - * src/cff/cffcmap.c (cff_cmap_unicode_init): Provide correct value - for `count'. - -2004-02-24 Werner Lemberg <wl@gnu.org> - - * include/freetype/t1tables.h (PS_PrivateRec): Add - `expansion_factor'. - - * src/pshinter/pshglob (psh_blues_scale_zones): Fix computation - of blues->no_overshoots -- `blues_scale' is stored with a - magnification of 1000, and `scale' returns fractional pixels. - - * src/type1/t1load.c (T1_Open_Face): Initialize `blue_shift', - `blue_fuzz', `expansion_factor', and `blue_scale' according to the - Type 1 specification. - - * src/type1/t1tokens.h: Handle `ExpansionFactor'. - - * docs/CHANGES: Updated. - -2004-02-24 Masatake YAMATO <jet@gyve.org> - - Provide generic access to MacOS resource forks. - - * src/base/ftrfork.c, include/freetype/internal/ftrfork.h: New - files. - - * src/base/ftobjs.c: Include FT_INTERNAL_RFORK_H. - (Mac_Read_POST_Resource, Mac_Read_sfnt_Resource): Remove arguments - `resource_listoffset' and `resource_data' and adapt code - accordingly. These values are calculated outside of the function - now. - Add new argument `offsets'. - (IsMacResource): Use `FT_Raccess_Get_HeaderInfo' and - `FT_Raccess_Get_DataOffsets'. - (load_face_in_embedded_rfork): New function. - (load_mac_face): Use load_face_in_embedded_rfork. - (ft_input_stream_new): Renamed to... - (FT_Stream_New): This. Use FT_BASE_DEF. Updated all callers. - (ft_input_stream_free): Renamed to... - (FT_Stream_Free): This. Use FT_BASE_DEF. Updated all callers. - - * src/base/ftbase.c: Include ftrfork.c. - - * src/base/rules.mk (BASE_SRC), src/base/Jamfile: Updated. - - * include/freetype/internal/internal.h (FT_INTERNAL_RFORK_H): - New macro. - - * include/freetype/internal/fttrace.h: Added `rfork' as a new - trace definition. - - * include/freetype/internal/ftstream.h: Declare FT_Stream_New and - FT_Stream_Free. - - * include/freetype/config/ftoption.h, devel/ftoption.h - (FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK): New option. - - * include/freetype/config/ftstdlib.h (ft_strrchr): New macro. - -2004-02-23 Werner Lemberg <wl@gnu.org> - - * docs/CHANGES: Updated. - - * include/freetype/internal/ftdebug.h: Include FT_FREETYPE_H. - -2004-02-23 Masatake YAMATO <jet@gyve.org> - - Provide a simple API to control FreeType's tracing levels. - - * include/freetype/internal/ftdebug.h (FT_Trace_Get_Count, - FT_Trace_Get_Name): New declarations. - - * src/base/ftdebug.c (FT_Trace_Get_Count, FT_Trace_Get_Name): New - functions. - -2004-02-23 David Turner <david@freetype.org> - - * src/autofit/afhints.c, src/autofit/afhints.h, - src/autofit/aflatin.c, src/autofit/afloader.c, src/types.h: Grave - bugs have been fixed. The auto-fitter works, doesn't crash, but - still produces unexpected results... - -2004-02-21 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshalgo.c (PSH_STRONG_THRESHOLD): Changed to hold - the accepted shift for strong points in fractional pixels (which - is a heuristic value). - (psh_glyph_find_strong_points): Compute threshold for - psh_hint_table_find_strong_points. - (psh_hint_table_find_strong_point): Add parameter to pass threshold. - -2004-02-20 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshrec.c (ps_mask_table_set_bits): Don't call - ps_mask_table_alloc but ps_mask_table_last. - (ps_hints_t2mask): Use correct position and number for vertical - and horizontal hinter mask bits. - - * docs/CHANGES: Updated. - -2004-02-19 Werner Lemberg <wl@gnu.org> - - * src/base/ftstroke.c (FT_Glyph_StrokeBorder): Fix enum handling. - * src/cff/cffdrivr.c (cff_get_cmap_info): Remove compiler warning. - -2004-02-18 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h: Document FT_LOAD_TARGET_XXX properly. - - * src/base/ftglyph.c (ft_bitmap_glyph_class, - ft_outline_glyph_class): Tag with FT_CALLBACK_TABLE_DEF. - - * src/smooth/ftsmooth.c (ft_smooth_render): Handle - FT_RENDER_MODE_LIGHT. - -2004-02-17 Werner Lemberg <wl@gnu.org> - - Fix callback functions in cache module. - - * src/cache/ftccback.h: New file for callback declarations. - - * src/cache/ftcbasic.c (ftc_basic_family_compare, - ftc_basic_family_init, ftc_basic_family_get_count, - ftc_basic_family_load_bitmap, ftc_basic_family_load_glyph, - ftc_basic_gnode_compare_faceid): Use FT_CALLBACK_DEF. - (ftc_basic_image_family_class, ftc_basic_image_cache_class, - ftc_basic_sbit_family_class, ftc_basic_sbit_cache_class): - Use FT_CALLBACK_TABLE_DEF and local wrapper functions. - - * src/cache/ftccache.c: Include ftccback.h. - (ftc_cache_init, ftc_cache_done): New wrapper functions which use - FT_LOCAL_DEF. - - * src/cache/ftccmap.c: Include ftccback.h. - (ftc_cmap_cache_class): Use local wrapper functions. - - * src/cache/ftcglyph.c: Include ftccback.h. - (ftc_gnode_compare, ftc_gcache_init, ftc_gcache_done): New wrapper - functions which use FT_LOCAL_DEF. - - * src/cache/ftcimage.c: Include ftccback.h. - (ftc_inode_free, ftc_inode_new, ftc_inode_weight): New wrapper - functions which use FT_LOCAL_DEF. - - * src/cache/ftcmanag.c (ftc_size_list_class, ftc_face_list_class): - Use FT_CALLBACK_TABLE_DEF. - - * src/cache;/ftcsbits.c: Include ftccback.h. - (ftc_snode_free, ftc_snode_new, ftc_snode_weight, - ftc_snode_compare): New wrapper functions which use FT_LOCAL_DEF. - - * src/cache/rules.mk (CACHE_DRV_H): Add ftccback.h. - -2004-02-17 Masatake YAMATO <jet@gyve.org> - - * include/freetype/ftmac.h (FT_GetFile_From_Mac_Name): Fix a typo - (FT_EXPORT_DEF -> FT_EXPORT). - - * include/freetype/ftxf86.h (FT_Get_X11_Font_Format): Ditto. - -2004-02-15 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (FT_Set_Char_Size): Fix typo. - -2004-02-14 Masatake YAMATO <jet@gyve.org> - - * builds/unix/ftsystem.c: Include errno.h. - (ft_close_stream): Renamed to... - (ft_close_stream_by_munmap): This. - (ft_close_stream_by_free): New function. - (FT_Stream_Open): Use fallback method if mmap fails. - Use proper function for closing the stream. - -2004-02-14 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_dict): Initialize `start_binary'. - -2004-02-13 Robert Etheridge <roberte@stcc.cc.tx.us> - - * src/type42/t42objs.c (T42_Face_Init), src/type1/t1objs.c - (T1_Face_Init), src/cid/cidobjs.c (cid_face_init): Fix computation - of underline_position and underline_thickness. - -2004-02-12 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (FT_Set_Char_Size): Return immediately if - ppem values don't change. Suggested by Graham Asher. - -2004-02-11 Werner Lemberg <wl@gnu.org> - - * src/cid/cidload.c (cid_face_open): Always allocate - face->cid_stream so that we can deallocate it safely. - -2004-02-10 Werner Lemberg <wl@gnu.org> - - Make the PS parser more tolerant w.r.t. non-standard font data. In - general, an error is only reported in case of a syntax error; a - wrong type is now simply ignored (if possible). To be independent - of the order of various MM-specific keywords, the parse_shared_dict - routine has been removed -- the PS parser is now capable to skip - this data. It no longer fails on parsing e.g. - - dup /WeightVector exch def - - Since the token following /WeightVector isn't `[' (starting an - array) it is simply ignored. - - * include/freetype/fterrdef.h: Define `FT_Err_Ignore' (0xA2) as a - new internal error value. - - * src/type1/t1load.c (parse_blend_axis_types, - parse_blend_design_positions, parse_blend_design_map): Return - T1_Err_Ignore if no proper array is following the keyword. - (parse_weight_vector): Use T1_ToTokenArray, initializing `blend' - structure, if necessary. - Return T1_Err_Ignore if no proper array is following the keyword. - (parse_shared_dict): Removed. - (parse_encoding): Set parser->root.error to return T1_Err_Ignore - if no result can be obtained. - Check for errors before accessing `elements' array. - (t1_keywords): Remove /shareddict. - (parse_dict): Reset error if t1_load_keyword returns T1_Err_Ignore. - Set keyword_flag only in case of success. - Check error code if skipping an unrecognized token. - (T1_Open_Face) [!T1_CONFIG_OPTION_NO_MM_SUPPORT]: Call T1_Done_Blend - if blend commands haven't set up a proper MM font. - - * src/psaux/psobjs.c (ps_parser_load_field_table): Remove special - code for synthetic fonts. - Return PSaux_Err_Ignore if no proper value has been found. - -2004-02-09 Werner Lemberg <wl@gnu.org> - - * src/cff/cffgload.c (cff_decoder_parse_charstrings) - <cff_op_endchar>: Preserve glyph width before calling - cff_operator_seac. - -2004-02-09 Martin Muskens <mmuskens@aurelon.com> - - * src/cff/cffgload.c (cff_decoder_parse_charstrings): Handle special - first argument for `hintmask' and `cntrmask' operators also. - -2004-02-08 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.in: Call AC_SUBST for `enable_shared', - `hardcode_libdir_flag_spec', and `wl'. - * builds/unix/configure: Regenerated. - - * builds/unix/freetype-config.in: Make --prefix and --exec-prefix - actually work. - Report a proper --rpath (or -R) value for --libs argument if a - shared library has been built. - - * docs/CHANGES: Updated. - -2004-02-07 Keith Packard <keithp@keithp.com> - - * src/bdf/bdfdrivr.c (BDF_Face_Init, BDF_Set_Pixel_Size): Fix - computation of various vertical and horizontal metric values. - - * src/pcfdrivr.c (PCF_Set_Pixel_Size), src/pcfread (pcf_load_font): - Ditto. - -2004-02-07 Werner Lemberg <wl@gnu.org> - - * builds/win32/visualc/index.html, - builds/win32/visualc/freetype.dsp, - builds/win32/visualc/freetype.dsw, docs/CHANGES: Updated. - -2004-02-07 Vitaliy Pasternak <v_a_pasternak@mail.ru> - - * builds/win32/visualc/freetype.sln, - builds/win32/visualc/freetype.vcproj: New files for VS.NET 2003. - -2004-02-03 Werner Lemberg <wl@gnu.org> - - * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP): - Initialize `node'. - * src/type1/t1load.c (parse_dict): Initialize `have_integer'. - -2004-02-02 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_dict): Handle `RD' and `-|' commands - outside of /Subrs or /CharStrings. This can happen if there is - additional code manipulating those two arrays so that FreeType - doesn't recognize them properly. - (T1_Open_Face): Improve an error message. - -2004-02-01 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_charstrings): Exit immediately if - there are no elements in /CharStrings. This is needed for fonts - like Optima-Oblique which not only define /CharStrings but access it - also. - -2004-02-01 David Turner <david@freetype.org> - - * src/sfnt/Jamfile: Removing `ttcmap' from the list of sources. - - * include/freetype/cache/ftccache.h (FTC_CACHE_LOOKUP_CMP) - <FTC_INLINE>: Provide macro version which doesn't use inline code. - * include/freetype/cache/ftcglyph.h (FTC_GCACHE_LOOKUP_CMP) - <FTC_INLINE>: Ditto. - Use FTC_MRULIST_LOOKUP_CMP. - * include/freetype/cache/ftcmru.h (FTC_MRULIST_LOOKUP_CMP): New - macro. - (FTC_MRULIST_LOOKUP): Use it. - - * src/cache/Jamfile (_sources), src/cache/descrip.mms: Updated. - * src/cache/ftcbasic.c: Fix compiler warnings. - * src/cache/ftcmanag.c (FTC_Manager_LookupSize, - FTC_Manager_LookupFace) <FTC_INLINE>: Use FTC_MRULIST_LOOKUP_CMP. - * src/cache/ftcmru.c (FTC_MruList_Find): Fix a bug (found after - heavy testing). - - * Jamfile: Updating `refdoc' target, and adding `autohint' to the - list of modules to build. Both the autohinter and autofitter will - be built by default. But which one will be used is determined by - the content of `ftmodule.h'. - - * src/autofit/*: Many updates, but the code is still buggy... - -2004-01-31 Werner Lemberg <wl@gnu.org> - - * src/cff/cffgload.c (cff_operator_seac): Fix magnitude of - accent offset. - Update code similarly to the seac support for Type 1 fonts. - (cff_decoder_parse_charstrings) <cff_op_endchar>: Fix magnitude - of accent offset. - Don't hint glyphs twice if seac is emulated. - <cff_op_flex>: Assign correct point tags. - * docs/CHANGES: Updated. - -2004-01-30 Werner Lemberg <wl@gnu.org> - - * src/type1/t1parse.c (T1_Get_Private_Dict): Use FT_MEM_MOVE, not - FT_MEM_COPY, for copying the private dict. - - * src/type1/t1load.c (parse_subrs): Assign number of subrs only - in first run. - (parse_charstrings): Parse /CharStrings in second run without - assigning values. - (parse_dict): Skip all /CharStrings arrays but the first. We need - this for non-standard fonts like `Optima' which have different - outlines depending on the resolution. Note that there is no - guarantee that we get fitting /Subrs and /CharStrings arrays; this - can only be done by a real PS interpreter. - -2004-01-29 Antoine Leca <Antoine-Freetype@Leca-Marti.org> - - * builds/win32/visualc/index.html: New file, giving detailed - explanations about forcing CR+LF line endings for the VC++ project - files. - -2004-01-22 Garrick Meeker <garrick@digitalanarchy.com> - - * src/cff/cffload.c (cff_subfont_load): Initialize `dict'. - -2004-01-22 Werner Lemberg <wl@gnu.org> - - Add support for the hexadicimal representation of binary data - started with `StartData' in CID-keyed Type 1 fonts. - - * include/freetype/internal/t1types.h (CID_FaceRec): Add new - members `binary_data' and `cid_stream'. - - * src/cid/cidload.c (cid_read_subrs): Use `face->cid_stream'. - (cid_hex_to_binary): New auxiliary function. - (cid_face_open): Add new argument `face_index' to return quickly - if less than zero. Updated all callers. - Call `cid_hex_to_binary', then open and assign memory stream to - `face->cid_stream' if `parser->binary_length' is non-zero. - * src/cid/cidload.h: Updated. - - * src/cid/cidobjs.c (cid_face_done): Free `binary_data' and - `cid_stream'. - - * src/cid/cidparse.c (cid_parser_new): Check arguments to - `StartData' and set parser->binary_length accordingly. - * src/cid/cidparse.h (CID_Parser): New member `binary_length'. - - * src/cid/cidgload.c (cid_load_glyph): Use `face->cid_stream'. - - * docs/CHANGES: Updated. - -2004-01-21 Werner Lemberg <wl@gnu.org> - - include/freetype/config/ftstdlib.h (ft_atoi): Replaced with... - (ft_atol): This. - * src/base/ftdbgmem.c: s/atol/ft_atol/. - * src/type42/t42drivr.c: s/ft_atoi/ft_atol/. - -2004-01-20 Masatake YAMATO <jet@gyve.org> - - * include/freetype/ftcache.h: Delete duplicated definition of - FTC_FaceID. - - * src/cff/cffdrivr.c (cff_get_cmap_info): Call sfnt module's TT CMap - Info service function if the cmap comes from sfnt. Return 0 if the - cmap is sythesized in cff module. - -2004-01-20 David Turner <david@freetype.org> - - * src/cache/ftcmanag.c (ftc_size_node_compare): Call - FT_Activate_Size. - -2004-01-20 Werner Lemberg <wl@gnu.org> - - * src/type1/t1parse.c (T1_Get_Private_Dict): Skip exactly one - CR, LF, or CR/LF after `eexec'. - -2004-01-18 David Turner <david@freetype.org> - - * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Remove compiler - warning. - - * src/tools/docmaker/*: Updating beautifier tool. - -2004-01-15 David Turner <david@freetype.org> - - * src/base/ftoutln.c (ft_orientation_extremum_compute): Fix - infinite loop bug. - - * include/freetype/ftstroke.h: Include FT_GLYPH_H. - (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_Glyph_StrokeBorder): New - declarations. - - * src/base/ftstroke.c: Include FT_INTERNAL_OBJECTS_H. - (FT_Outline_GetOutsideBorder): Inverse result. - (FT_Stroker_Rewind, FT_Glyph_Stroke, FT_GlyphStrokeBorder): New - functions. - (FT_Stroker_EndSubPath): Close path if needed. - (FT_Stroker_Set, FT_Stroker_ParseOutline): Use FT_Stroker_Rewind. - - * include/freetype/cache/ftcmanag.h (FTC_ScalerRec, - FTC_Manager_LookupSize): Moved to... - * include/freetype/ftcache.h (FTC_ScalerRec, - FTC_Manager_LookupSize): Here. - - * src/tools/docmaker/docbeauty.py: New file to beautify the - documentation comments (e.g., to convert them to single block border - mode). - * src/tools/docmaker/docmaker.py (file_exists, make_file_list): - Moved to... - * src/tools/docmaker/utils.py (file_exists, make_file_list): Here. - -2004-01-14 David Turner <david@freetype.org> - - * include/freetype/internal/ftmemory.h (FT_ARRAY_COPY, - FT_ARRAY_MOVE): New macros to make copying arrays easier. - Updated all relevant code to use them. - -2004-01-14 Werner Lemberg <wl@gnu.org> - - * src/cff/cffload.c (cff_font_load): Load charstrings_index earlier. - Use number of charstrings as argument to CFF_Load_FD_Select (as - documented in the CFF specs). - -2004-01-13 Graham Asher <graham.asher@btinternet.com> - - * src/pshinter/pshalgo.c (psh_glyph_init): Move assignment of - `glyph->memory' up to free arrays properly in case of failure. - -2004-01-10 Masatake YAMATO <jet@gyve.org> - - Make `FT_Get_CMap_Language_ID' work with CFF. Bug reported by - Steve Hartwell <shspamsink@comcast.net>. - - * src/cff/cffdrivr.c: Include FT_SERVICE_TT_CMAP_H. - (cff_services): Added an entry for FT_SERVICE_ID_TT_CMAP. - (cff_get_cmap_info): New function. - (cff_service_get_cmap_info) New entry for cff_services. - - * src/sfnt/ttcmap0.c: Exit loop after a format match has been found. - Suggested by Steve Hartwell <shspamsink@comcast.net>. - -2004-01-03 Masatake YAMATO <jet@gyve.org> - - * src/base/ftobjs.c (destroy_charmaps): New function. - (destroy_face, open_face): Use `destroy_charmaps'. - -2004-01-01 Werner Lemberg <wl@gnu.org> - - * docs/CHANGES: Updated. - -2004-01-01 Michael Jansson <mjan@em2-solutions.com> - - * src/winfonts/winfnt.c (FNT_Size_Set_Pixels): Fix sign of - size->metrics.descender. - -2003-12-31 Wolfgang Domr�se <porthos.domroese@harz.de> - - * src/cff/cffgload.c (cff_decoder_parse_charstrings) - [FT_DEBUG_LEVEL_TRACE]: Use `%ld' in FT_TRACE4. - <cff_op_flex1>: Change type of dx and dy to FT_Pos and remove - cast for accessing arguments. - -2003-12-31 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Revert previous - change. It's not necessary. - -2003-12-29 Smith Charles <smith.charles@free.fr> - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Handle `repeated - flags set' correctly. - -2003-12-29 Werner Lemberg <wl@gnu.org> - - * src/cff/cffobjs.c (cff_face_init): Fix memory leak by deallocating - `full' and `weight' properly. - * src/cff/cffgload.c (cff_decoder_parse_charstrings) - <cff_op_hintmask> [FT_DEBUG_LEVEL_TRACE]: Use `0x' as prefix for - tracing output. - -2003-12-26 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/sfnt.h (TT_Set_SBit_Strike_Func): - Use FT_UInt for ppem values. - * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Use FT_UInt for - ppem values. - * src/sfnt/ttsbit.h: Updated. - - * src/base/ftobjs.c (FT_Set_Pixel_Sizes): Don't allow ppem values - larger than -0FFFF. - -2003-12-25 Werner Lemberg <wl@gnu.org> - - * src/base/fttrigon.c, src/base/ftgloadr.c: Inlude - FT_INTERNAL_OBJECTS_H. - - * src/base/ftstroke.c (FT_Outline_GetInsideBorder, - FT_Outline_GetOutsideBorder): s/or/o/ to make it compile with - C++ compilers. - - * src/cache/ftcmru.c, include/freetype/cache/ftcmru.h: - s/select/selection/ to avoid compiler warning. - * src/cff/cffload.h: s/select/ftselect/ to avoid potential - compiler warning. - -2003-12-24 Werner Lemberg <wl@gnu.org> - - * src/cache/ftcsbits.c (FTC_SNode_Weight): - s/FTC_SBIT_ITEM_PER_NODE/FTC_SBIT_ITEMS_PER_NODE/. - -2003-12-24 David Turner <david@freetype.org> - - * Fixed compilation problems in the cache sub-system. - - * Partial updates to src/autofit. - - * Jamfile (FT2_COMPONENTS): Add autofit module. - -2003-12-23 Werner Lemberg <wl@gnu.org> - - * src/cff/cffgload.c (cff_lookup_glyph_by_stdcharcode): Handle - CID-keyed fonts. - -2003-12-23 David Turner <david@freetype.org> - - * include/freetype/internal/ftobjs.h (FT_PAD_FLOOR, FT_PAD_ROUND, - FT_PAD_CEIL, FT_PIX_FLOOR, FT_PIX_ROUND, FT_CEIL): New macros. They - are used to avoid compiler warnings with very pedantic compilers. - Note that `(x) & -64' causes a warning if (x) is not signed. Use - `(x) & ~63' instead! - Updated all related code. - - Add support for extraction of `inside' and `outside' borders. - - * src/base/ftstroke.c (FT_StrokerBorder): New enumeration. - (FT_Outline_GetInsideBorder, FT_Outline_GetOutsideBorder, - FT_Stroker_GetBorderCounts, FT_Stroker_ExportBorder): New functions. - (FT_StrokeBorderRec): New boolean member `valid'. - (ft_stroke_border_get_counts): Updated. - * include/freetype/ftstroke.h: Updated. - -2003-12-22 Werner Lemberg <wl@gnu.org> - - * include/freetype/ftwinfnt.h (FT_WinFNT_ID_*): New definitions - to describe the `charset' field in FT_WinFNT_HeaderRec. - * src/winfonts/winfnt.c (FNT_Face_Init): Set encoding to - FT_ENCODING_NONE except for FT_WinFNT_ID_MAC. - - * include/freetype/freetype.h (FT_Encoding): Improve comment, - based on work by Detlef W�rkner <TetiSoft@apg.lahn.de>. - - * docs/CHANGES: Updated. - -2003-12-22 David Turner <david@freetype.org> - - * include/freetype/ftcache.h, - include/freetype/cache/ftcmanag.h, - include/freetype/cache/ftccache.h, - include/freetype/cache/ftcmanag.h, - include/freetype/cache/ftcmru.h (added), - include/freetype/cache/ftlru.h (removed), - include/freetype/cache/ftcsbits.h, - include/freetype/cache/ftcimage.h, - include/freetype/cache/ftcglyph.h, - src/cache/ftcmru.c, - src/cache/ftcmanag.c, - src/cache/ftccache.c, - src/cache/ftcglyph.c, - src/cache/ftcimage.c, - src/cache/ftcsbits.c, - src/cache/ftccmap.c, - src/cache/ftcbasic.c (added), - src/cache/ftclru.c (removed): - - *Complete* rewrite of the cache sub-system to `solve' the - following points: - - - all public APIs have been moved to FT_CACHE_H, everything - under `include/freetype/cache' is only needed by client - applications that want to implement their own caches - - - a new function named FTC_Manager_RemoveFaceID to deal - with the uninstallation of FaceIDs - - - the image and sbit cache are now abstract classes, that - can be extended much more easily by client applications - - - better performance in certain areas. Further optimizations - to come shortly anyway... - - - the FTC_CMapCache_Lookup function has changed its signature, - charmaps can now only be retrieved by index - - - FTC_Manager_Lookup_Face => FTC_Manager_LookupFace - FTC_Manager_Lookup_Size => FTC_Manager_LookupSize (still in - private header for the moment) - -2003-12-21 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_dict): Stop parsing if `eexec' keyword - is encountered. - -2003-12-19 Werner Lemberg <wl@gnu.org> - - * src/cff/cfftypes.h (CFF_MAX_CID_FONTS): Increase to 32. For - example, the Japanese Hiragino font already contains 15 subfonts. - - * src/cff/cffload.c (cff_font_load): Deallocate `sids' array for - CID-keyed fonts. - - * devel/ftoption.h: Define FT_DEBUG_MEMORY. - -2003-12-18 Werner Lemberg <wl@gnu.org> - - * include/freetype/ttnameid.h (TT_ADOBE_ID_LATIN_1): New macro. - * src/type1/t1objs.c (T1_Face_Init): Use TT_ADOBE_ID* values. - -2003-12-18 Werner Lemberg <wl@gnu.org> - - * src/cff/cfftypes.h (CFF_FontRecDictRec): Change type of - `cid_count' to `FT_ULong'. - - * src/cff/cffgload.c (cff_slot_load): Take care of empty `cids' - array. - - * src/cff/cffload.c (cff_charset_done): Free `cids' array. - (cff_font_load): Create cids array only for CID-keyed fonts which - are subsetted. - - * src/cff/cffobjs.c (cff_face_init): Check the availability of - the PSNames modules for non-pure CFFs also. - Set FT_FACE_FLAG_GLYPH_NAMES for a non-pure CFF also if it isn't - CID-keyed. - - * src/cff/rules.mk (CFF_DRV_H): Add cfftypes.h. - -2003-12-17 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfobjs.c (sfnt_init_face): Don't set - FT_FACE_FLAG_GLYPH_NAMES if the font contains a version 3.0 `post' - table. - - * docs/CHANGES: Updated. - -2003-12-17 Masatake YAMATO <jet@gyve.org> - - Add new function FT_Get_CMap_Language_ID to extract the language ID - for TrueType/sfnt fonts. - - * include/freetype/internal/services/svttcmap.h: New file. - * include/freetype/internal/ftserv.h (FT_SERVICE_TT_CMAP_H): Add - svttcmap.h. - - * src/sfnt/sfdriver.c: Include ttcmap0.h. - (tt_service_get_cmap_info): New service. - (sfnt_services): Updated. - - * src/sfnt/ttcmap0.c (tt_cmap*_get_info): New functions. - (tt_cmap*_class_rec): Add tt_cmap*_get_info members. - (tt_get_cmap_info): New function. - * src/sfnt/ttcmap0.h: Include FT_SERVICE_TT_CMAP_H. - (TT_CMap_ClassRec): New field `get_cmap_info'. - (tt_get_cmap_info): New declaration. - - * src/base/ftobjs.c: Include FT_SERVICE_TT_CMAP_H. - (FT_Get_CMap_Language_ID): New function implementation. - * include/freetype/tttables.h (FT_Get_CMap_Language_ID): New - function declaration. - -2003-12-16 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttcmap.c, src/sfnt/ttcmap.h: Removed. Obsolete. - - * include/freetype/internal/sfnt.h (SFNT_Interface): Remove - obsolete fields `load_charmap' and `free_charmap'. - (TT_CharMap_Load_Func, TT_CharMap_Free_Func): Removed. - * src/sfnt/sfnt.c: Don't include ttcmap.c. - * src/sfnt/rules.mk (SFNT_DRV_SRC): Don't include ttcmap.c. - * src/sfnt/ttload.c: Don't include ttcmap.h. - * src/sfnt/sfdriver.c: Don't include ttcmap.h. - (sfnt_interface): Updated. - - * include/freetype/internal/tttypes.h (TT_TableDirRec, - TT_CMapDirRec, TT_CMapDirEntryRec, TT_CMap0, TT_CMap2SubHeaderRec, - TT_CMap2Rec, TT_CMap4Segment, TT_CMap4Rec, TT_CMap6, - TT_CMapGroupRec, TT_CMap8_12Rec, TT_CMap10Rec, TT_CharMap_Func, - TT_CharNext_Func, TT_CMapTableRec, TT_CharMapRec): Removed. - Obsolete. - * src/cff/cffobjs.h (CFF_CharMapRec): Removed. Obsolete. - -2003-12-15 Werner Lemberg <wl@gnu.org> - - * docs/CHANGES: Updated. - -2003-12-15 Wolfgang Domr�se <porthos.domroese@harz.de> - - * builds/atari/*: New directory for building FreeType 2 on Atari - with the PureC compiler. - -2003-12-12 Wolfgang Domr�se <porthos.domroese@harz.de> - - * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String): Add - cast. - * src/cff/cffdrivr.c (cff_ps_has_glyph_names): Assure that return - value is either 0 or 1. - -2003-12-12 Werner Lemberg <wl@gnu.org> - - * src/cff/cffdrivr.c (cff_get_glyph_name): Improve error message. - (cff_get_name_index): Return if no PSNames service is available. - (cff_ps_has_glyph_names): Handle CID-keyed fonts correctly. - * src/cff/cfftypes.h (CFF_CharsetRec): New field `cids', used for - CID-keyed fonts. This is the inverse mapping of `sids'. - * src/cff/cffload.c (cff_charset_load): New argument `invert'. - Initialize charset->cids if `invert' is set. - (cff_font_load): In call to cff_charset_load, set `invert' to true - for CID-keyed fonts. - * src/cff/cffgload.c (cff_slot_load): Handle glyph index as CID - and map it to the real glyph index. - - * docs/CHANGES: Updated. - -2003-12-11 Werner Lemberg <wl@gnu.org> - - * src/cff/cffobjs.c (cff_face_init): Don't set - FT_FACE_FLAG_GLYPH_NAMES for CID-keyed fonts. - Don't construct a cmap for CID-keyed fonts. - -2003-12-10 Werner Lemberg <wl@gnu.org> - - Use implementation specific SID value 0xFFFF to indicate that - a dictionary element is missing. - - * src/cff/cffload.c (cff_subfont_load): Initialize all fields - which hold SIDs to 0xFFFF. - (cff_index_get_sid_string): Handle SID value 0xFFFF. - Handle case where `psnames' is zero. - (cff_font_load): Updated. - Don't load encoding for CID-keyed CFFs. - - * src/cff/cffobjs.c (cff_face_init): Updated. - Don't check for PSNames module if font is CID-keyed. - Compute style name properly (using the same algorithm as in the - CID driver). - Fix computation of style flags. - - * src/cff/cfftoken.h: Comment out handling of base_font_name. - Rename `postscript' field to `embedded_postscript' - * src/cff/cfftypes.h (CFF_FontRecDictRec): Remove `base_font_name' - and `postscript'. - -2003-12-10 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/pcf/pcfdrivr.c (pcf_get_charset_id): New function (a clone - of the similar BDF function). - (pcf_service_bdf): Use it. - -2003-12-09 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfobjs.c (sfnt_load_face): Set FT_FACE_FLAG_GLYPH_NAMES - only if a `post' table is present. - -2003-12-09 George Williams <gww@silcom.com> - - * src/base/ftobjs.c (load_mac_face): Recent versions of Linux - support Mac's HFS+ file system, thus enable code to read /rsrc on - non-Macintosh platforms also. - -2003-12-08 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/psaux.h (PS_TableRec): Change type - of `lengths' to FT_PtrDist. - (T1_DecoderRec): Change type of `subrs_len' to FT_PtrDist. - * include/freetype/internal/t1types.h (T1_FontRec): Change type - of `subrs_len' and `charstrings_len' to FT_PtrDist. - - * src/base/ftobjs.c (Mac_Read_POST_Resource): Replace `junk' - variable with better solution. - (IsMacResource): Remove unused variable `map_len'. - Replace `junk' variable with better solution. - (FT_Open_Face) [!FT_MACINTOSH]: Add conditional - FT_CONFIG_OPTION_MAC_FONTS. - -2003-12-08 Wolfgang Domr�se <porthos.domroese@harz.de> - - * src/autohint/ahhint.c (ah_hinter_hint_edges, - ah_hinter_align_strong_points): Add some casts. - - * src/base/ftoutln.c (FT_OrientationExtremumRec): Change type - of `pos' to FT_Long. - - * src/base/ftobjs.c (Mac_Read_POST_Resource, - Mac_Read_sfnt_Resource): Change type of `len' to FT_Long. - - * src/type42/t42parse.c (t42_parse_dict): Add cast for `n_keywords'. - -2003-12-07 Werner Lemberg <wl@gnu.org> - - * docs/raster.txt: New file, taken from FreeType 1 and completely - revised. - -2003-12-04 Masatake YAMATO <jet@gyve.org> - - * src/type1/t1driver.c (Get_Interface): Remove FT_UNUSED for - t1_interface. t1_interface is used. - -2003-11-27 David Turner <david@freetype.org> - - * src/pfr/pfrdrivr.c (pfr_get_metrics): Revert incorrect change of - 2003-11-23: For PFR fonts, metrics->x_scale and metrics->y_scale are - the scaling values for outline units, not for metric units. - -2003-11-25 Werner Lemberg <wl@gnu.org> - - * src/base/ftcalc.c, include/freetype/internal/ftcalc.h - (FT_MulDiv_No_Round): Surround code with `#ifdef - TT_CONFIG_OPTION_BYTECODE_INTERPRETER ... #endif'. - -2003-11-23 Werner Lemberg <wl@gnu.org> - - * src/base/ftcalc.c (FT_MulDiv_No_Round): New function (32 and - 64 bit version). - * include/freetype/internal/ftcalc.h: Updated. - - * src/truetype/ttinterp.c (TT_MULDIV_NO_ROUND): New macro. - (TT_INT64): Removed. - (DO_DIV): Use TT_MULDIV_NO_ROUND. - - * src/pfr/pfrdrivr.c (pfr_get_metrics): Directly use - metrics->x_scale and metrics->y_scale. - -2003-11-22 Rogier van Dalen <R.C.van.Dalen@umail.leidenuniv.nl> - - * src/truetype/ttinterp.c (CUR_Func_move_orig): New macro. - (Direct_Move_Orig, Direct_Move_Orig_X, Direct_Move_Orig_Y): New - functions. Similar to Direct_Move, Direct_Move_X, and - Direct_Move_Y but without touching. - (Compute_Funcs): Use new functions. - - (Round_None, Round_To_Grid, Round_To_Half_Grid, Round_Down_To_Grid, - Round_Up_To_Grid, Round_To_Double_Grid, Round_Super, - Round_Super_45): Fix rounding of value zero. - - (DO_DIV): Don't use TT_MULDIV. - - (Ins_SHC): This instruction actually touches the points. - (Ins_MSIRP): Fix undocumented behaviour. - - * src/truetype/ttinterp.h (TT_ExecContextRec): Updated. - -2003-11-22 Werner Lemberg <wl@gnu.org> - - * docs/VERSION.DLL, docs/CHANGES: Updated. - - * src/base/ftobjs.c (FT_Set_Char_Size): Make metrics->x_scale and - metrics->y_scale really precise. - - (FT_Load_Glyph): Update computation of linearHoriAdvance and - linearVertAdvance. - - * src/truetype/ttinterp.c (Update_Max): Use FT_REALLOC. - -2003-11-22 David Turner <david@freetype.org> - - * src/autofit/*: More updates. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 8. - * builds/unix/configure.ac (version_info): Set to 9:6:3. - * README: Updated. - -2003-11-13 John A. Boyd Jr. <jaboydjr@netwalk.com> - - * src/bdf/bdfdrivr.c (bdf_interpret_style), src/pcf/pcfread.c - (pcf_interpret_style): Replace spaces with dashes in properties - SETWIDTH_NAME and ADD_STYLE_NAME to simplify parsing. - -2003-11-11 Werner Lemberg <wl@gnu.org> - - * docs/CHANGES: Updated. - -2003-11-11 John A. Boyd Jr. <jaboydjr@netwalk.com> - - Handle SETWIDTH_NAME and ADD_STYLE_NAME properties for BDF and PCF - fonts. - - * src/bdf/bdfdrivr.c (bdf_interpret_style): New auxiliary function. - (BDF_Face_Init): Don't handle style properties but call - bdf_interpret_style. - - * src/pcf/pcfread.c (pcf_interpret_style): New auxiliary function. - (pcf_load_font): Don't handle style properties but call - pcf_interpret_style. - -2003-11-07 Werner Lemberg <wl@gnu.org> - - - * Version 2.1.7 released. - ========================= - - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 7. - - * builds/unix/ft2unix.h: Fix comments. - - * builds/unix/ftconfig.in: Synchronized with ANSI version. - Use `#undef' in templates as recommended in the autoconf - documentation. - Since real `#undef' lines don't survive during configuration, use - `/undef' instead; the postprocessing facility of the - AC_CONFIG_HEADERS autoconf macro converts them to `#undef'. - - * builds/unix/install.mk (install): Install Unix version of - `ftconfig.h'. - - * builds/unix/unix-cc.in (CFLAGS): Set FT_CONFIG_CONFIG_H macro - to include the correct `ftconfig.h' file. - - * builds/unix/ft-munmap.m4 (FT_MUNMAP_DECL): Removed. - (FT_MUNMAP_PARAM): Updated syntax to autoconf 2.59. - - * builds/unix/freetype2.m4: Updated syntax to autoconf 2.59. - - * builds/unix/configure.ac: Use AC_CONFIG_HEADERS instead of - AC_CONFIG_HEADER to create ftconfig.h, and use second argument - to replace `/undef' with `#undef'. - Don't use FT_MUNMAP_DECL but AC_CHECK_DECLS to check for munmap. - Use AS_HELP_STRING in AC_ARG_WITH. - Update syntax to autoconf 2.59. - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.5. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.7.8. - * builds/unix/configure: Regenerated with autoconf 2.59. - * builds/unix/config.guess, builds/unix/config.sub: Updated from - `config' CVS module at subversions.gnu.org - * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from - `texinfo' CVS module at subversions.gnu.org. - - * builds/vms/ftconfig.h: Synchronized with ANSI version. - - * docs/CUSTOMIZE: Fix documentation error. - * docs/CHANGES, docs/VERSION.DLL, docs/release: Updated. - - * builds/freetype.mk (refdoc): Updated --title. - -2003-11-07 David Turner <david@freetype.org> - - - * Version 2.1.6 released. - ========================= - - - * install: Removed. Obsolete. - -2003-11-04 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfdriver.c: Include FT_SERVICE_SFNT_H. - (sfnt_service_sfnt_table): New service. - (sfnt_services): Updated. - - * docs/license.txt: Reworded. - -2003-11-03 Werner Lemberg <wl@gnu.org> - - * include/freetype/*: Add a guard to all public header files which - load FT_FREETYPE_H to reject freetype.h from FreeType 1. - -2003-11-02 Patrick Welche <prlw1@newn.cam.ac.uk> - - * builds/unix/freetype2.m4, builds/unix/ft-munmap.m4: Protect - first argument of AC_DEFUN with brackets to avoid possible - expansion. - -2003-11-02 Werner Lemberg <wl@gnu.org> - - * include/freetype/cache/ftcglyph.h: Don't include stddef.h. - - * include/freetype/freetype.h: Fix check for ft2build.h. - -2003-11-01 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h: Check that ft2build.h has been - loaded first. - - * src/base/fttype1.c (FT_Get_PS_Font_Info): Fix incorrectly applied - patch. - -2003-10-31 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/base/fttype1.c (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): - Fix parameter order in calls to FT_FACE_FIND_SERVICE. - -2003-10-31 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/ftserv.h - (FT_SERVICE_POSTSCRIPT_NAMES_H): Removed. Unused. - - * src/type42/t42drivr.c (t42_services): Updated. - -2003-10-29 David Turner <david@freetype.org> - - * include/freetype/internal/bdftypes.h: Removed. Obsolete. - * src/base/ftbdf.c: Updated. - - * include/freetype/internal/cfftypes.h: Moved to... - * src/cff/cfftypes.h: This place since no other module needs to - know about those types. - - * include/freetype/internal/t42types.h: Moved to... - * src/type42/t42types.h: This place since no other module needs to - know about those types. - - * include/freetype/internal/services/svbdf.h: Include FT_BDF_H. - - * include/freetype/internal/services/svpsname.h: Renamed to... - * include/freetype/internal/services/svpscmap.h: This. - Updated `FT_Service_PsNames' -> `FT_Service_PsCMaps' and - `POSTSCRIPT_NAMES' -> `POSTSCRIPT_CMAPS' everywhere. - - * include/freetype/internal/services/svpsinfo.h: New file, providing - PostScript info service. - - * include/freetype/internal/ftserv.h (FT_SERVICE_POSTSCRIPT_CMAPS_H, - FT_SERVICE_POSTSCRIPT_INFO_H): New macros for svpscmap.h and - svpsinfo.h. - * include/freetype/internal/internal.h (FT_INTERNAL_TYPE42_TYPES_H, - FT_INTERNAL_CFF_TYPES_H, FT_INTERNAL_BDF_TYPES_H): Removed. - - * src/base/fttype1.c: Don't include FT_INTERNAL_TYPE1_TYPES_H and - FT_INTERNAL_TYPE42_TYPES_H but FT_INTERNAL_SERVICE_H and - FT_SERVICE_POSTSCRIPT_INFO_H. - (FT_Get_PS_Font_Info, FT_Has_PS_Glyph_Names): Use new - POSTSCRIPT_INFO service. - - * src/cff/cffdrivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. - (cff_ps_has_glyph_names): New function. - (cff_service_ps_info): New service. - (cff_services): Updated. - - * src/cff/cffload.h, src/cff/cffobjs.h, src/cff/cffparse.h: Don't - include FT_INTERNAL_CFF_TYPES_H but cfftypes.h directly. - - * src/cif/cidriver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. - (cid_ps_get_font_info): New function. - (cid_service_ps_info): New service. - (cid_services): Updated. - - * src/type1/t1driver.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. - (t1_ps_get_font_info, t1_ps_has_glyph_names): New functions. - (t1_service_ps_info): New service. - (t1_services): Updated. - - * src/type42/t42drivr.c: Include FT_SERVICE_POSTSCRIPT_INFO_H. - (t42_ps_get_font_info, t42_ps_has_glyph_names): New functions. - (t42_service_ps_info): New service. - - * src/type42/t42objs.h: Don't include FT_INTERNAL_TYPE42_TYPES_H - but t42types.h directly. - - * src/psnames/psmodule.c (psnames_interface, psnames_services): - Renamed to... - (pscmaps_interface, pscmaps_services): This. - Updated all users. - - - * src/gzip/infblock.c (inflate_blocks): Remove compiler warning. - -2003-10-22 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_encoding): Handle `/Encoding [ ... ]'. - - * src/type1/t1parse.c (T1_Get_Private_Dict): Test whether `eexec' - is real. - - * src/type42/t42parse.c (t42_parse_encoding): Improve boundary - checking while parsing. - - * docs/CHANGES: Updated. - -2003-10-21 Josselin Mouette <joss@debian.org> - - * include/freetype/internal/t1types.h (T1_FontRec): `paint_type' - and `stroke_width' aren't pointers. - - * src/type42/t42objs.c (T42_Face_Done), src/type1/t1objs.c - (T1_Face_Done): Don't free `paint_type' and `stroke_width'. - -2003-10-20 Graham Asher <graham.asher@btinternet.com> - - * src/winfonts/winfnt.c (fnt_cmap_class): Fix position of `const'. - -2003-10-19 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahhint.c (ah_hinter_load_glyph): Patch from - 2003-08-18 introduced a severe bug (FT_Render_Glyph was called - twice under some circumstances, causing strange results). This - is fixed now by clearing the FT_LOAD_RENDER bit of `load_flags'. - - * src/base/ftpfr.c (FT_Get_PFR_Metrics): Initialize `error'. - * src/psaux/psobjs.c (ps_tobytes): Initialize `n'. - * src/type42/t42parse.c (t42_parse_sfnts): Initialize `string_size'. - -2003-10-16 Werner Lemberg <wl@gnu.org> - - Completely revised Type 42 parser. It now handles both fonts - produced with ttftot42 (tested version 0.3.1) and - TrueTypeToType42.ps (tested version May 2001; it is necessary to - fix the broken header comment to be `%!PS-TrueTypeFont...'). - - * src/type42/t42objs.c (T42_GlyphSlot_Load): Change fourth - parameter to `FT_UInt'. - * src/type42/t42objs.h: Updated. - - * src/type42/t42parse.h (T42_ParserRec): Change type of `in_memory' - to FT_Bool. - (T42_Loader): Change type of `num_chars' and `num_glyphs' to - FT_UInt. - Add `swap_table' element. - * src/type42/t42parse.c (T42_KEYWORD_COUNT, T1_ToFixed, - T1_ToCoordArray, T1_ToTokenArray): Removed. - (T1_ToBytes): New macro. - (t42_is_alpha, t42_hexval): Removed. - (t42_is_space): Handle `\0'. - (t42_parse_encoding): Updated to use new PostScript parser routines - from psaux. - Handle `/Encoding [ ... ]' also. - (T42_Load_Status): New enumeration. - (t42_parse_sfnts): Updated to use new PostScript parser routines - from psaux. - (t42_parse_charstrings): Updated to use new PostScript parser - routines from psaux. - Handle `/CharStrings << ... >>' also. - Don't expect that /.notdef is the first element in dictionary. Copy - code from type1 module to handle this. - (t42_parse_dict): Updated to use new PostScript parser routines - from psaux. - Remove code for synthetic fonts (which can't occur in Type 42 - fonts). - (t42_loader_done): Release `swap_table'. - - * src/psaux/psobjs.c (skip_string): Increase `cur' properly. - - * src/type1/t1load.c (parse_charstrings): Make test for `.notdef' - faster. - -2003-10-15 Graham Asher <graham.asher@btinternet.com> - - * src/autohint/ahglobal.c (blue_chars), src/winfonts/winfnt.c - (fnt_cmap_class_rec, fnt_cmap_class), src/bdf/bdflib.c (empty, - _num_bdf_properties), src/gzip/infutil.c (inflate_mask), - src/gzip/inffixed.h (fixed_bl, fixed_bd, fixed_tl, fixed_td), - src/gzip/inftrees.h (inflate_trees_fixed), srf/gzip/inftrees.c - (inflate_trees_fixed): Decorate with more `const' to avoid - writable global variables which are disallowed on ARM. - -2003-10-08 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_font_matrix, parse_charstrings): Remove - code specially for synthetic fonts; this is handled elsewhere. - (parse_encoding): Remove code specially for synthetic fonts; this is - handled elsewhere. - Improve boundary checking while parsing. - (parse_dict): Improve boundary checking while parsing. - Use ft_memcmp to simplify code. - -2003-10-07 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_subrs, parse_dict): Handle synthetic - fonts properly. - (parse_charstrings): Copy correct number of characters into - `name_table'. - -2003-10-06 Werner Lemberg <wl@gnu.org> - - Heavy modification of the PS parser to handle comments and strings - correctly. This doesn't slow down the loading of PS fonts - significantly since charstrings aren't affected. - - * include/freetype/config/ftstdlib.h (ft_xdigit): Renamed to... - (ft_isxdigit): This. Updated all callers. - (ft_isdigit): New alias to `isdigit'. - - * include/freetype/internal/psaux.h (PS_Parser_FuncsRec): Renamed - `skip_alpha' to `skip_PS_token'. - Add parameter to `to_bytes' and change some argument types. - - * src/psaux/psauxmod.c (ps_parser_funcs): Updated. - * src/psaux/psobjs.c (ft_char_table): New array to map character - codes (ASCII and EBCDIC) of digits to numbers. - (OP): New auxiliary macro holding either `>=' or `<' depending on - the character encoding. - (skip_comment): New function. - (skip_spaces): Use it. - (skip_alpha): Removed. - (skip_literal_string, skip_string): New functions. - (ps_parser_skip_PS_token): New function. This is a better - replacement of... - (ps_parser_skip_alpha): Removed. - (ps_parser_to_token, ps_parser_to_token_array): Updated. - (T1Radix): Rewritten, using `ft_char_table'. - (t1_toint): Renamed to... - (ps_toint): This. Update all callers. - Use `ft_char_table'. - (ps_tobytes): Add parameter to handle delimiters and change some - argument types. - Use `ft_char_table'. - (t1_tofixed): Renamed to... - (ps_tofixed): This. Update all callers. - Use `ft_char_table'. - (t1_tocoordarray): Renamed and updated to... - (ps_tocoordarray): This. Update all callers. - (t1_tofixedarray): Renamed and updated to... - (ps_tofixedarray): This. Update all callers. - (t1_tobool): Renamed to... - (ps_tobool): This. Update all callers. - (ps_parser_load_field): Updated. - (ps_parser_load_field_table): Use `T1_MAX_TABLE_ELEMENTS' - everywhere. - (ps_parser_to_int, ps_parser_to_fixed, ps_parser_to_coord_array, - ps_parser_to_fixed_array): Skip spaces. Updated. - (ps_parser_to_bytes): Add parameter to handle delimiters and change - some argument types. Updated. - * src/psaux/psobjs.h: Updated. - - * src/cid/cidload.c (cid_parse_dict): Updated. - * src/cid/cidparse.c (cid_parser_new): Check whether the `StartData' - token was really found. - * src/cid/cidparse.h (cid_parser_skip_alpha): Updated and renamed - to... - (cid_parser_skip_PS_token): This. - - * src/type1/t1parse.h (T1_ParserRec): Use `FT_Bool' for boolean - fields. - (T1_Skip_Alpha): Replaced with... - (T1_Skip_PS_Token): This new macro. - * src/type1/t1parse.c (hexa_value): Removed. - (T1_Get_Private_Dict): Use `ft_isxdigit' and - `psaux->ps_parser_funcs_to_bytes' for handling ASCII hexadecimal - encoding. - After decrypting, replace the four random bytes at the beginning - with whitespace. - * src/type1/t1load.c (t1_allocate_blend): Use proper error values. - (parser_blend_design_positions, parse_blend_design_map, - parse_weight_vector): Updated. - (is_space): Handle `\f' also. - (is_name_char): Removed. - (read_binary_data): Updated. - (parse_encoding): Use `ft_isdigit'. - Updated. - (parse_subrs): Updated. - (TABLE_EXTEND): New macro. - (parse_charstrings): Updated. - Provide a workaround for buggy fonts which have more entries in the - /CharStrings dictionary then expected; the function now adds some - slots and skips entries which still exceed the new limit. - (parse_dict): Updated. - Terminate on the token `closefile'. - - * src/type42/t42parse.c (T1_Skip_Alpha): Replaced with... - (T1_Skip_PS_Token): This new macro. Updated all callers. - (t42_parse_encoding): Use `ft_isdigit'. - - - * src/base/ftmm.c (ft_face_get_mm_service): Return FT_Err_OK if - success. - -2003-10-05 Werner Lemberg <wl@gnu.org> - - * include/freetype/ftmodule.h: Renamed to... - * include/freetype/ftmodapi.h: This to avoid duplicate file names. - * include/freetype/config/ftheader.h (FT_MODULE_H): Updated. - -2003-10-04 Werner Lemberg <wl@gnu.org> - - * src/base/ftoutln.c (FT_OrientationExtremumRec, - FT_Outline_Get_Orientation): Trivial typo fixes to make it compile. - -2003-10-02 Markus F.X.J. Oberhumer <markus@oberhumer.com> - - * src/winfonts/winfnt.c (FT_WinFNT_HeaderRec): `color_table_offset' - has four bytes, not two. - Fix all users. - (fnt_font_load, FNT_Load_Glyph): Add more font validity tests. - -2003-10-01 David Turner <david@freetype.org> - - * src/autofit/*: Adding first source files of the new multi-script - `auto-fitter'. - - * include/freetype/ftoutln.h (FT_Orientation): New enumeration. - (FT_Outline_Get_Orientation): New declaration. - - * src/base/ftoutln.c (FT_OrientationExtremumRec): New structure. - (ft_orientation_extremum_compute): New auxiliary function. - (FT_Outline_Get_Orientation): New function to compute the fill - orientation of a given glyph outline. - - * include/freetype/internal/ftserv.h (FT_FACE_LOOKUP_SERVICE): Fixed - trivial bug which could crash the font engine when a cached service - pointer was retrieved. - -2003-09-30 Werner Lemberg <wl@gnu.org> - - * src/cid/cidload.c (cid_parse_dict): Skip token if no keyword is - found. - - * src/type1/t1parse.c (IS_T1_WHITESPACE, IS_T1_LINESPACE, - IS_T1_SPACE): Removed. - (PFB_Tag): Removed. - (read_pfb_tag): Don't use PFB_Tag. - - * src/type42/t42parse.c (t42_is_space): Handle `\f' also. - (t42_parse_encoding): Handle synthetic fonts. - -2003-09-29 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/t1types.h: Don't include - FT_INTERNAL_OBJECTS_H but FT_INTERNAL_SERVICE_H. - * src/truetype/ttobjs.c: Don't include - FT_SERVICE_POSTSCRIPT_NAMES_H. - -2003-09-29 David Turner <david@freetype.org> - - Added new service to handle glyph name dictionaries, replacing the - old internal header named `psnames.h' by `services/svpsname.h'. - Note that this is different from `services/svpostnm.h' which only - handles the retrieval of PostScript font names for a given face. - (Should we merge these two services into a single header?) - - * include/freetype/internal/psnames.h: Removed. Most of its - contents is moved to... - * include/freetype/internal/services/svpsname.h: New file. - - * include/freetype/internal/services/svpostnm.h - (FT_SERVICE_ID_POSTSCRIPT_NAME): Replaced with... - (FT_SERVICE_ID_POSTSCRIPT_FONT_NAME): New macro. - (PsName): Service named changed to... - (PsFontName): This. - Updated `FT_Service_PsName' -> `FT_Service_PsFontName' and - `POSTSCRIPT_NAME' -> `POSTSCRIPT_FONT_NAME' everywhere. - - * include/freetype/internal/internal.h - (FT_INTERNAL_POSTSCRIPT_NAMES_H): Removed. - * include/freetype/internal/psaux.h: Include - FT_SERVICE_POSTSCRIPT_NAMES_H. - (T1_DecoderRec): Updated type of `psnames'. - * include/freetype/internal/t1types.h: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - Include FT_INTERNAL_OBJECTS_H. - * include/freetype/internal/t42types.h: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H. - * include/freetype/internal/tttypes.h (TT_FaceRec): Updated. - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): Changed - order of parameters. All callers updated. - (FT_FACE_FIND_GLOBAL_SERVICE): New macro to look up a service - globally, checking all modules. - (FT_ServiceCacheRec): Updated. - (FT_SERVICE_POSTSCRIPT_NAMES_H): New macro for accessing - `svpsname.h'. - - * include/freetype/internal/ftobjs.h, src/base/ftobjs.c - (ft_module_get_service): New function. - - * src/cff/cffdrivr.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (cff_get_glyph_name, cff_get_name_index): Use new POSTSCRIPT_NAMES - service. - * src/cff/cffcmap.c (cff_cmap_unicode_init): Updated. - * src/cff/cffload.c, src/cff/cffload.h: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - (cff_index_get_sid_string): Updated. - * src/cff/cffobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (cff_face_init): Use new POSTSCRIPT_NAMES service. - * src/cff/cffobjs.h: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - - * src/cid/cidobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (cid_face_init): Use new POSTSCRIPT_NAMES service. - * src/cid/cidriver.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H. - - * src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Use - new POSTSCRIPT_NAMES service. - * src/psaux/t1decode.h (t1_lookup_glyph_by_stdcharcode, - t1_decode_init): Use new POSTSCRIPT_NAMES service. - * src/psaux/t1cmap.h, src/psaux/t1decode.h: Dont' include - FT_INTERNAL_POSTSCRIPT_NAMES_H. - - * src/psnames/psmodule.c: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - (ps_build_unicode_table): Renamed to... - (ps_unicodes_init): This. - (ps_lookup_unicode): Renamed to... - (ps_unicodes_char_index): This. - (ps_next_unicode): Renamed to... - (ps_unicodes_char_next): This. - (psnames_interface): Updated. - (psnames_services): New services list. - (psnames_get_service): New function. - (psnames_module_class): Updated. - - * src/sfnt/sfobjs.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (sfnt_init_face): Use new POSTSCRIPT_NAMES service. - * src/sfnt/ttpost.c: Don't include FT_INTERNAL_POSTSCRIPT_NAMES_H - but FT_SERVICE_POSTSCRIPT_NAMES_H. - (tt_face_get_ps_name): Updated. - - * src/truetype/ttobjs.c: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - - * src/type1/t1driver.c: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - * src/type1/t1objs.c: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - (T1_Face_Init): Use new POSTSCRIPT_NAMES service. - - * src/type42/t42drivr.c (t42_get_ps_name): Renamed to... - (t42_get_ps_font_name): This. - (t42_service_ps_name): Renamed to... - (t42_service_ps_font_name): This. - (t42_services): Updated. - * src/type42/t42objs.c (T42_Face_Init): Use new POSTSCRIPT_NAMES - service. - * src/type42/t42objs.h: Don't include - FT_INTERNAL_POSTSCRIPT_NAMES_H but FT_SERVICE_POSTSCRIPT_NAMES_H. - - - * src/base/ftglyph.c (FT_Get_Glyph): Don't access `slot' before - testing its validity. Reported by Henry Maddocks - <maddocks@metservice.com>. - -2003-09-21 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE): - Fix compilation warning (s/pptr/Pptr/). - - * include/freetype/internal/internal.h (FT_INTERNAL_PFR_H, - FT_INTERNAL_FNT_TYPES_H): Removed. - -2003-09-21 David Turner <david@freetype.org> - - Migrating the PFR and WINFNT drivers to the new service-based - internal API. - - * include/freetype/internal/fnttypes.h: Removed. Most of its data - are moved to winfnt.h and... - * include/freetype/internal/services/svwinfnt.h: New file. - - * include/freetype/internal/pfr.h: Removed. Most of its data are - moved to... - * include/freetype/internal/services/svpfr.h: New file. - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, - FT_FACE_LOOKUP_SERVICE): Simplify fix of 2003-09-16 by removing - pointer type argument. - Updated all callers. - Update macro names of services header files. - - * src/base/ftobjs.c (FT_Get_Name_Index): Simplified code. - - * src/base/ftpfr.c: Include FT_SERVICE_PFR_H instead of - FT_INTERNAL_PFR_H. - (ft_pfr_check, FT_Get_PFR_Metrics, FT_Get_PFR_Kerning, - FT_Get_PFR_Advance): Use services provided in `PFR_METRICS'. - - * src/base/ftwinfnt.c: Include FT_SERVICE_WINFNT_H instead of - FT_INTERNAL_FNT_TYPES_H. - (FT_Get_WinFNT_Header): Use service provided in `WINFNT'. - - * src/pfr/pfrdrivr.c: Include FT_SERVICE_PFR_H and - FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_PFR_H. - (pfr_service_bdf): Updated. - (pfr_services): New services list. - (pfr_get_service): New function. - (pfr_driver_class): Updated. - - * src/winfonts/winfnt.c: Include FT_SERVICE_WINFNT_H and - FT_SERVICE_XFREE86_NAME_H instead of FT_INTERNAL_FNT_TYPES_H. - (winfnt_get_header, winfnt_get_service): New functions. - (winfnt_service_rec): New structure providing WINFNT services. - (winfnt_services): New services list. - (winfnt_driver_class): Updated. - * src/winfonts/winfnt.h: Add most of the removed fnttypes.h data. - - * src/sfnt/sfdriver.c (sfnt_service_ps_name): Fix typo. - - * src/type1/t1driver.c (t1_service_ps_name): Fix typo. - - * src/cff/cffobjs.c, src/cid/cidobjs.c, src/pfr/pfrsbit.c, - src/psaux/psobjs.c, src/sfnt/sfobjs.c, src/truetype/ttobjs.c, - src/type1/t1objs.c, src/type42/t42objs.c: Removing various compiler - warnings. - -2003-09-19 David Bevan <dbevan@emtex.com> - - * src/type1/t1parse.c (pfb_tag_fields): Removed. - (read_pfb_tag): Fix code so that it doesn't fail on end-of-file - indicator (0x8003). - * docs/CHANGES: Updated. - -2003-09-16 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/ftserv.h (FT_FACE_FIND_SERVICE, - FT_FACE_LOOKUP_SERVICE): Add parameter to pass pointer type. - Ugly, I know, but this is needed for compilation with C++ -- - maybe someone knows a better solution? - Updated all callers. - - * src/base/ftobjs.c (FT_Get_Name_Index, FT_Get_Glyph_Name): Remove - C++ compiler warnings. - - * src/base/ftbdf.c (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): - Fix order of arguments passed to FT_FACE_FIND_SERVICE. - -2003-09-15 Werner Lemberg <wl@gnu.org> - - Avoid header files with identical names. - - * include/freetype/internal/services/bdf.h: Renamed to... - * include/freetype/internal/services/svbdf.h: This. - Add copyright notice. - * include/freetype/internal/services/glyfdict.h: Renamed to... - * include/freetype/internal/services/svgldict.h: This. - Add copyright notice. - * include/freetype/internal/services/multmast.h: Renamed to... - * include/freetype/internal/services/svmm.h: This. - Add copyright notice. - Add FT_BEGIN_HEADER and FT_END_HEADER. - * include/freetype/internal/services/sfnt.h: Renamed to... - * include/freetype/internal/services/svsfnt.h: This. - Add copyright notice. - * include/freetype/internal/services/postname.h: Renamed to... - * include/freetype/internal/services/svpostnm.h: This. - Add copyright notice. - * include/freetype/internal/services/xf86name.h: Renamed to... - * include/freetype/internal/services/svxf86nm.h: This. - Add copyright notice. - - * include/freetype/internal/ftserv.h: Add FT_BEGIN_HEADER and - FT_END_HEADER. - Add copyright notice. - Update macro names of services header files. - - * builds/freetype.mk (SERVICES_DIR): New variable. - (BASE_H): Add services header files. - -2003-09-11 Werner Lemberg <wl@gnu.org> - - * builds/toplevel.mk (distclean): Remove `builds/unix/freetype2.pc'. - - * src/cff/cffdrivr.c: Don't load headers twice. - - * include/freetype/internal/ftserv.h (FT_SERVICE_SFNT_H): New macro. - * src/base/ftobjs.c: Include FT_SERVICE_SFNT_H. - - * src/cff/cffcmap.c: Include `cfferrs.h'. - * src/pfr/pfrdrivr.c: Include `pfrerror.h'. - * src/sfnt/sfdriver.c: Include `sferrors.h'. - * src/psaux/psobjs.h: Add declaration for `ps_parser_to_bytes'. - -2003-09-11 David Turner <david@freetype.org> - - Introducing the concept of `module services'. This is the first - step towards a massive simplification of the engine's internals, in - order to get rid of various numbers of hacks. - - Note that these changes will break source & binary compatibility for - authors of external font drivers. - - * include/freetype/config/ftconfig.h (FT_BEGIN_STMNT, FT_END_STMNT, - FT_DUMMY_STMNT): New macros. - - * include/freetype/internal/ftserv.h: New file, containing the new - structures and macros to provide `services'. - - * include/freetype/internal/internal.h (FT_INTERNAL_EXTENSION_H, - FT_INTERNAL_EXTEND_H, FT_INTERNAL_HASH_H, FT_INTERNAL_OBJECT_H): - Removed, obsolete. - (FT_INTERNAL_SERVICE_H): New macro for `ftserv.h'. - - * include/freetype/internal/services/bdf.h, - include/freetype/internal/services/glyfdict.h, - include/freetype/internal/services/postname.h, - include/freetype/internal/services/xf86name.h: New files. - - * include/freetype/ftmm.h (FT_Get_MM_Func, FT_Set_MM_Design_Func, - FT_Set_MM_Blend_Func): Function pointers moved (in modified form) - to... - * include/freetype/internal/services/multmast.h: New file. - - * include/freetype/internal/sfnt.h (SFNT_Interface): `get_interface' - is now of type `FT_Module_Requester'. - (SFNT_Get_Interface_Func, SFNT_Load_Table_Func): Function pointers - moved (in modified form) to... - * include/freetype/internal/servies/sfnt.h: New file. - - * include/freetype/tttables.h (FT_Get_Sfnt_Table_Func): Function - pointer moved (in modified form) to `services/sfnt.h'. - - * include/freetype/ftmodule.h (FT_Module_Interface): Make it a - a typedef to `FT_Pointer'. - - * include/freetype/internal/tttypes.h (TT_FaceRec): Add - `postscript_name'. - * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Remove - `postscript_name'. - Add `services' element. - (FT_LibraryRec): Remove `meta_class'. - - * src/base/ftbdf.c: Include FT_SERVICE_BDF_H. - (test_font_type): Removed. - (FT_Get_BDF_Charset_ID, FT_Get_BDF_Property): Use services - provided in `FT_SERVICE_ID_BDF'. - - * src/base/ftmm.c: Include FT_SERVICE_MULTIPLE_MASTERS_H. - (ft_face_get_mm_service): New auxiliary function to get services - from `FT_SERVICE_ID_MULTI_MASTERS'. - (FT_Get_Multi_Master, FT_Set_MM_Design_Coordinates, - FT_Set_MM_Blend_Coordinates): Use `ft_face_get_mm_service'. - - * src/base/ftobjs.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and - FT_SERVICE_GLYPH_DICT_H. - (ft_service_list_lookup): New function to get a specific service. - (destroy_face): Updated. - (Mac_Read_POST_Resource): Simplify some code. - (IsMacResource): Fix warnings. - (FT_Get_Name_Index, FT_Get_Glyph_Name): Use services provided in - `FT_SERVICE_ID_GLYPH_DICT'. - (FT_Get_Postscript_Name): Use service provided in - `FT_SERVICE_ID_POSTSCRIPT_NAME'. - (FT_Get_Sfnt_Table, FT_Load_Sfnt_Table): Use services provided in - `FT_SERVICE_ID_SFNT_TABLE'. - - * src/base/ftxf86.c: Include FT_SERVICE_XFREE86_NAME_H. - (FT_Get_X11_Font_Format): Use service provided in - `FT_SERVICE_ID_XF86_NAME'. - - * src/bdf/bdfdrivr.c: Include FT_SERVICE_BDF_H and - FT_SERVICE_XFREE86_NAME_H. - (bdf_get_charset_id): New function. - (bdf_service_bdf): New structure providing BDF services. - (bdf_services): New services list. - (bdf_driver_requester): Use `ft_service_list_lookup'. - - * src/cff/cffdrivr.c: Include FT_SERVICE_XFREE86_NAME_H and - FT_SERVICE_GLYPH_DICT_H. - (cff_service_glyph_dict): New structure providing CFF services. - (cff_services): New services list. - (cff_get_interface): Use `ft_service_list_lookup'. - - * src/cid/cidriver.c: Include FT_SERVICE_POSTSCRIPT_NAME_H and - FT_SERVICE_XFREE86_NAME_H. - (cid_service_ps_name): New structure providing CID services. - (cid_services): New services list. - (cid_get_interface): Use `ft_service_list_lookup'. - - * src/pcf/pcfdrivr.c: Include FT_SERVICE_BDF_H and - FT_SERVICE_XFREE86_NAME_H. - (pcf_service_bdf): New structure providing PCF services. - (pcf_services): New services list. - (pcf_driver_requester): Use `ft_service_list_lookup'. - - * src/sfnt/sfdriver.c: Include FT_SERVICE_GLYPH_DICT_H and - FT_SERVICE_POSTSCRIPT_NAME_H. - (get_sfnt_glyph_name): Renamed to... - (sfnt_get_glyph_name): This. - (get_sfnt_postscript_name): Renamed to... - (sfnt_get_ps_name): This. - Updated. - (sfnt_service_glyph_dict, sfnt_service_ps_name): New structures - providing services. - (sfnt_services): New services list. - (sfnt_get_interface): Use `ft_service_list_lookup'. - - * src/truetype/ttdriver.c: Include FT_SERVICE_XFREE86_NAME_H. - (tt_services): New services list. - (tt_get_interface): Use `ft_service_list_lookup'. - - * src/type1/t1driver.c: Include FT_SERVICE_MULTIPLE_MASTERS_H, - FT_SERVICE_GLYPH_DICT_H, FT_SERVICE_XFREE86_NAME_H, and - FT_SERVICE_POSTSCRIPT_NAME_H. - (t1_service_glyph_dict, t1_service_ps_name, - t1_service_multi_masters): New structures providing Type 1 services. - (t1_services): New services list. - (Get_Interface): Use `ft_service_list_lookup'. - - * src/type42/t42drivr.c: Include FT_SERVICE_XFREE86_NAME_H, - FT_SERVICE_GLYPH_DICT_H, and FT_SERVICE_POSTSCRIPT_NAME_H. - (t42_service_glyph_dict, t42_service_ps_name): New strucures - providing Type 42 services. - (t42_services): New services list. - (T42_Get_Interface): Use `ft_service_list_lookup'. - - - * README, docs/CHANGES: Updating version numbers for 2.1.6, and - removing obsolete warnings in the documentation. - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 6. - * builds/unix/configure.ac (version_info): Set to 9:5:3. - * builds/unix/configure: Regenerated. - - * include/freetype/internal/ftcore.h, - include/freetype/internal/ftexcept.h, - include/freetype/internal/fthash.h, - include/freetype/internal/ftobject.h: Removed. Obsolete. - -2003-09-09 David Turner <david@freetype.org> - - Fixing PFR kerning support. The tables within the font file contain - (charcode,charcode) kerning pairs, we need to convert them to - (gindex,gindex). - - * src/base/ftpfr.c (ft_pfr_check): Fix serious typo. - * src/pfr/prfload.c: Remove dead code. - (pfr_get_gindex, pfr_compare_kern_pairs, pfr_sort_kerning_pairs): - New functions. - (pfr_phy_font_done): Free `kern_pairs'. - (pfr_phy_font_load): Call `pfr_sort_kerning_pairs'. - * src/pfr/pfrobjs.c (pfr_face_get_kerning): Fix kerning extraction. - * src/pfr/pfrtypes.h (PFR_KERN_PAIR_INDEX): New macro. - (PFR_KernPairRec): Make `kerning' an FT_Int. - (PFR_PhyFontRec): New element `kern_pairs'. - (PFR_KernFlags): Values of PFR_KERN_2BYTE_CHAR and - PFR_KERN_2BYTE_ADJ were erroneously reversed. - - * include/freetype/ftoption.h: Commenting out the macro - TT_CONFIG_OPTION_BYTECODE_INTERPRETER. - -2003-09-02 David Turner <david@freetype.org> - - - * Version 2.1.5 released. - ========================= - - -2003-08-31 Manish Singh <yosh@gimp.org> - - * src/bdf/bdflib.c (_bdf_readstream): Don't use FT_MEM_COPY but - FT_MEM_MOVE. - -2003-08-30 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h (FT_ENCODING_SJIS, FT_ENCODING_GB2312, - FT_ENCODING_BIG5, FT_ENCODING_WANSUNG, FT_ENCODING_JOHAB): New - enumerations of FT_Encoding. The FT_ENCODING_MS_* variants except - FT_ENCODING_MS_SYMBOL are now deprecated. - Updated all users. - * docs/CHANGES: Document it. - -2003-08-27 Werner Lemberg <wl@gnu.org> - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Accept lowercase characters - for spacing. - -2003-08-27 Mike FABIAN <mfabian@suse.de> - - * src/pcf/pcfread.c (pcf_load_font), src/bdf/bdfdrivr.c - (BDF_Face_Init): Accept lowercase characters for slant and weight. - -2003-08-18 David Turner <david@freetype.org> - - * include/freetype/config/ftoption.h: Disabling TrueType bytecode - interpreter until the UNPATENTED_HINTING works as advertised. - - * src/autohint/ahhint.c (ah_hinter_load_glyph): Use `|' for - setting `load_flags'. - - * Jamfile: Adding the `refdoc' target to the Jamfile in order to - build the API Reference in `docs/reference' automatically. - - * include/freetype/t1tables.h (PS_FontInfoRec), src/cid/cidtoken.h, - src/type1/t1tokens.h, src/type42/t42parse.c: Resetting the types of - `italic_angle', `underline_position', and `underline_thickness' to - their previous values (i.e., long, short, and ushort) in order to - avoid breaking binary compatibility. - - * include/freetype/ttunpat.h: Fixing documentation comment. - - * include/freetype/config/ftoption.h, devel/ftoption.h - (TT_CONFIG_OPTION_OPTION_COMPILE_UNPATENTED_HINTING): Replaced - with... - (TT_CONFIG_OPTION_UNPATENTED_HINTING): This. Updated all users. - (TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): Removed. - - * include/freetype/internal/ftobjs.h (FT_DEBUG_HOOK_TYPE1): Removed. - (FT_DEBUG_HOOK_UNPATENTED_HINTING): New macro. Use this with - `FT_Set_Debug_Hook' to get the same effect as the removed - TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING. - - * src/truetype/ttobjs.c (tt_face_init): Use - `FT_DEBUG_HOOK_UNPATENTED_HINTING'. - -2003-08-06 Werner Lemberg <wl@gnu.org> - - * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c - (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Fix - previous change. - -2003-08-05 Werner Lemberg <wl@gnu.org> - - * src/type1/t1gload.c (T1_Load_Glyph), src/cff/cffgload.c - (cff_slot_load), src/cid/cidgload.c (cid_slot_load_glyph): Apply - font matrix to advance width also. - * docs/CHANGES: Updated. - -2003-07-26 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.ac (version_info): Set to 9:4:3. - * builds/unix/configure: Updated. - * docs/CHANGES, docs/VERSION.DLL: Updated. - - * include/freetype/freetype.h (FT_GlyphSlot): Change 2003-06-16 - also breaks binary compatibility. Reintroduce an unsigned integer - at the old position of `flags' called `reserved'. - -2003-07-25 Werner Lemberg <wl@gnu.org> - - Make API reference valid HTML 4.01 transitional. - - * src/tools/docmaker/tohtml.py (html_header_1): Add doctype - and charset. - (html_header_2): Fix style elements and add some more. - Fix syntax. - (block_header, block_footer, description_header, description_footer, - marker_header, marker_footer, source_header, source_footer, - chapter_header): Don't use <center>...</center> but `align=center' - table attribute. - (chapter_inter, chapter_footer): Add <li> and use special <ul> - class. - Use double quotes around table widths given in percent. - (keyword_prefix, keyword_suffix): Don't change font colour directly - but use a new <span> class. - (section_synopsis_header, section_synopsis_footer): Don't change - colour. - (code_header, code_footer): Don't change font colour directly but - use a special <pre> class. - (print_html_field): <tr> gets the `valign' attribute, not <table>. - (print_html_field_list): Ditto. - (index_exit): Don't use <center>...</center> but `align=center' - table attribute. - (section_enter): Ditto. - (toc_exit): Don't emit </table>. - (block_enter): Use <h4><a>, not <a><h4>. - (__init__): Fix tag order in self.html_footer. - -2003-07-25 David Turner <david@freetype.org> - - This change reimplements fix from 2003-05-30 without breaking - binary compatibility. - - * include/freetype/t1tables.h (PS_FontInfoRec): `italic_angle', - `is_fixed_pitch', `underline_position', `underline_thickness' are - reverted to be normal values. - - * include/freetype/internal/psaux.h (T1_FieldType): Remove - `T1_FIELD_TYPE_BOOL_P', `T1_FIELD_TYPE_INTEGER_P', - `T1_FIELD_TYPE_FIXED_P', `T1_FIELD_TYPE_FIXED_1000_P'. - (T1_FIELD_TYPE_BOOL_P, T1_FIELD_NUM_P, T1_FIELD_FIXED_P, - T1_FIELD_FIXED_1000_P): Removed. - (T1_FIELD_TYPE_BOOL): Renamed to... - (T1_FIELD_BOOL): New macro. Updated all callers. - - * src/type42/t42parse.c: `italic_angle', `is_fixed_pitch', - `underline_position', `underline_thickness', `paint_type', - `stroke_width' are reverted to be normal values. - (T42_KEYWORD_COUNT): New macro. - (t42_parse_dict): New array `keyword_flags' to mark that a value has - already been assigned to a dictionary entry. - * src/type42/t42objs.c (T42_Face_Init, T42_Face_Done): Updated. - - * src/cid/cidtoken.h: `italic_angle', `is_fixed_pitch', - `underline_position', `underline_thickness' are reverted to be - normal values. - * src/cid/cidobjs.c (cid_face_done, cid_face_init): Updated. - - * src/psaux/psobjs.c (ps_parser_load_field): Updated. - - * src/type1/t1tokens.h: `italic_angle', `is_fixed_pitch', - `underline_position', `underline_thickness', `paint_type', - `stroke_width' are reverted to be normal values. - * src/type1/t1objs.c (T1_Face_Done, T1_Face_Init): Updated. - * src/type1/t1load.c (T1_FIELD_COUNT): New macro. - (parse_dict): Add parameter for keyword flags. - Record only first instance of a field. - (T1_Open_Face): New array `keyword_flags'. - -2003-07-24 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 5. - * builds/unix/configure.ac (version_info): Set to 10:0:3. - * builds/unix/configure: Updated. - * builds/freetype.mk (refdoc): Fix --title. - - * docs/CHANGES, docs/VERSION.DLL, README: Updated. - - * src/tools/docmaker/sources.py (re_crossref): Fix regular - expression to handle trailing punctuation characters. - * src/tools/docmaker/tohtml.py (make_html_word): Updated. - - * docs/release: New file. - -2003-07-23 YAMANO-UCHI Hidetoshi <mer@din.or.jp> - - * include/freetype/internal/psaux.h (PS_Parser_FuncsRec): New - member function `to_bytes'. - - * src/psaux/psauxmod.c (ps_parser_funcs): New member - `ps_parser_to_bytes'. - (psaux_module_class): Increase version to 0x20000L. - - * src/psaux/psobjs.c (IS_T1_LINESPACE): Add \f. - (IS_T1_NULLSPACE): New macro. - (IS_T1_SPACE): Add it. - (skip_spaces, skip_alpha): New functions. - (ps_parser_skip_spaces, ps_parser_skip_alpha): Use them. - (ps_tobytes, ps_parser_to_bytes): New functions. - -2003-07-07 Werner Lemberg <wl@gnu.org> - - * builds/freetype.mk (DOC_DIR): New variable. - (refdoc): Use *_DIR variables. - (distclean): Remove documentation files. - - * builds/detect.mk (std_setup, dos_setup): Mention `make refdoc'. - - * configure: Set DOC_DIR variable. - -2003-07-07 Patrik H�gglund <patrik.hagglund@bredband.net> - - * builds/freetype.mk (refdoc): New target to build the - documentation. - (.PHONY): Updated. - - * include/freetype/freetype.h: Improve documentation of FT_CharMap. - * include/freetype/ftimage,h: Fix documentation of FT_OUTLINE_FLAGS. - * include/freetype/tttables.h: Document FT_Sfnt_Tag. - -2003-07-06 Werner Lemberg <wl@gnu.org> - - * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfread.c - (pcf_load_font): Fix computation of height if PIXEL_SIZE property is - missing. - -2003-07-01 Werner Lemberg <wl@gnu.org> - - * src/cache/ftcsbits.c (ftc_sbit_node_compare): Only add `size' if - there is no error. Reported by Knut St. Osmundsen - <bird-freetype@anduin.net>. - -2003-06-30 Werner Lemberg <wl@gnu.org> - - A new try to synchronize bitmap font access. - - * include/freetype/freetype.h (FT_Bitmap_Size): `height' is now - defined to return the baseline-to-baseline distance. This was - already the value returned by the BDF and PCF drivers. - - The `width' field now gives the average width. I wasn't able to - find something better. It should be taken as informative only. - - New fields `size', `x_ppem', and `y_ppem'. - - * src/pcf/pcfread.c (pcf_load_font): Updated to properly fill - FT_Bitmap_Size. - Do proper rounding and conversion from 72.27 to 72 points. - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Updated to properly fill - FT_Bitmap_Size. - Do proper rounding and conversion from 72.27 to 72 points. - - * src/sfnt/sfobjs.c (sfnt_load_face): Updated to properly fill - FT_Bitmap_Size. - - * src/winfonts/winfnt.c (FNT_Face_Init): Updated to properly fill - FT_Bitmap_Size. - -2003-06-29 Werner Lemberg <wl@gnu.org> - - Redesigning the FNT driver to return multiple faces, not multiple - strikes. At least one font (app850.fon from WinME) contains - different FNT charmaps for its subfonts. Consequently, the previous - design of having multiple bitmap strikes in a single font face fails - since we have only one charmap per face. - - * include/freetype/internal/fnttypes.h (FNT_Size_Rec): Removed. - (FNT_FaceRec): Remove `num_fonts' field and replace `fonts' with - `font'. - - * src/base/ftwinfnt.c (FT_Get_WinFNT_Header): Updated. - - * src/winfonts/winfnt.c (fnt_font_load): Don't set pixel_width equal - to pixel_height. - (fnt_face_done_fonts): Removed. - (fnt_face_get_dll_fonts): Renamed to... - (fnt_face_get_dll_font): This. Add second function argument to - select face index. - Updated to load just one subfont. - (fnt_font_done, FNT_Face_Done): Updated. - (FNT_Face_Init): Handle `face_index'. - Updated. - (FNT_Size_Set_Pixels): Simplified; similar to BDF and PCF, the - bitmap width is now ignored. - (FNT_Load_Glyph): Updated. - Fix glyph index computation. - (winfnt_driver_class): Updated. - -2003-06-25 Owen Taylor <otaylor@redhat.com> - - * src/sfnt/ttload.c (tt_face_load_hdmx): Don't assign - num_records until we actually decide to load the table, - otherwise, we'll segfault in tt_face_free_hdmx. - -2003-06-24 Werner Lemberg <wl@gnu.org> - - * src/cff/cffdrivr.c (cff_get_glyph_name): Protect against zero - glyph name pointer. Reported by Mikey Anbary <manbary@vizrt.com>. - -2003-06-23 Werner Lemberg <wl@gnu.org> - - * src/tools/glnames.py: Updated to AGL 2.0. - * src/psnames/pstables.h: Regenerated. - -2003-06-22 Werner Lemberg <wl@gnu.org> - - * include/freetype/cache/ftcglyph.h, include/freetype/ttnameid.h, - src/base/ftcalc.c, src/base/fttrigon.c, src/cff/cffgload.c, - src/otlayout/otlgsub.c, src/pshinter/pshrec.c, - src/psnames/psmodule.c, src/sfnt/sfobjs.c, src/truetype/ttdriver.c: - Decorate constants with `U' and `L' if appropriate. - - * include/freetype/ftmoderr.h: Updated to include recent module - additions. - - * src/pshinter/pshnterr.h (FT_ERR_BASE): Define as - `FT_Mod_Err_PShinter'. - * src/type42/t42error.h (FT_ERR_BASE): Define as - `FT_Mod_Err_Type42'. - - * src/pshinter/pshrec.h (PS_HINTS_MAGIC): Removed. Not used. - - * include/freetype/config/ftconfig.h [__MWERKS__]: Define FT_LONG64 - and FT_INT64. - -2003-06-21 Werner Lemberg <wl@gnu.org> - - * src/winfonts/winfnt.c (FNT_Load_Glyph): Use first_char in - computation of glyph_index. - (FNT_Size_Set_Pixels): To find a strike, first check pixel_height - only, then try to find a better hit by comparing pixel_width also. - Without this fix it isn't possible to access all strikes. - Also compute metrics.max_advance to be in sync with other bitmap - drivers. - - * src/base/ftobjs.c (FT_Set_Char_Size): Remove redundant code. - (FT_Set_Pixel_Size): Assign value to `metrics' after validation of - arguments. - -2003-06-20 Werner Lemberg <wl@gnu.org> - - Synchronize computation of height and width for bitmap strikes. The - `width' field in the FT_Bitmap_Size structure is now only useful to - enumerate different strikes. The `max_advance' field of the - FT_Size_Metrics structure should be used to get the (maximum) width - of a strike. - - * src/bdf/bdfdrivr.c (BDF_Face_Init): Don't use AVERAGE_WIDTH for - computing `available_sizes->width' but make it always equal to - `available_sizes->height'. - - * src/pcf/pcfread.c (pcf_load_font): Don't use RESOLUTION_X for - computing `available_sizes->width' but make it always equal to - `available_sizes->height'. - - * src/truetype/ttdriver.c (Set_Pixel_Sizes): Pass only single - argument to function. - - * src/psnames/psmodule.c (ps_unicode_value): Handle `.' after - `uniXXXX' and `uXXXX[X[X]]'. - -2003-06-19 Werner Lemberg <wl@gnu.org> - - * src/bdf/bdfdrivr.c: s/FT_Err_/BDF_Err/. - * src/cache/ftccache.c, src/cache/ftcsbits.c, src/cache/ftlru.c: - s/FT_Err_/FTC_Err_/. - * src/cff/cffcmap.c: s/FT_Err_/CFF_Err_/. - * src/pcf/pcfdrivr.c: s/FT_Err_/PCF_Err_/. - * src/psaux/t1cmap.c: Include psauxerr.h. - s/FT_Err_/PSaux_Err_/. - * src/pshinter/pshnterr.h: New file. - * src/pshinter/rules.mk: Updated. - * src/pshinter/pshalgo.c, src/pshinter/pshrec.c: Include pshnterr.h. - s/FT_Err_/PSH_Err_/. - * src/pfr/pfrdrivr.c, src/pfr/pfrobjs.c, src/pfr/pfrsbit.c: - s/FT_Err_/PFR_Err_/. - * src/sfnt/sfdriver.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c, - src/sfnt/ttload.c: s/FT_Err_/SFNT_Err_/. - * src/truetype/ttgload.c: s/FT_Err_/TT_Err_/. - * src/gzip/ftgzip.c: Load FT_MODULE_ERRORS_H and define - FT_ERR_PREFIX and FT_ERR_BASE. - s/FT_Err_/Gzip_Err_/. - -2003-06-19 Dirck Blaskey <listtarget@danbala.com> - - * src/cff/cffload (cff_encoding_load): `nleft' must be FT_UInt, - otherwise adding 1 might wrap the result. - -2003-06-18 Werner Lemberg <wl@gnu.org> - - * src/psnames/psmodule.c (ps_unicode_value): Add support to - recognize `uXXXX[X[X]]' glyph names. - Don't handle glyph names starting with `uni' which have more than - four digits. - -2003-06-16 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h (FT_Open_Flags): Replaced with - #defines for the constants. - (FT_Open_Args): Change type of `flags' to FT_UInt. - (FT_GlyphSlot): Move `flags' to FT_Slot_Internal. - - * include/freetype/ftimage.h (FT_Outline_Flags, FT_Raster_Flag): - Replaced with #defines for the constants. - - * include/freetype/internal/ftobjs.h (FT_Slot_Internal): New - field `flags' (from FT_GlyphSlot). - Updated all affected source files. - (FT_GLYPH_OWN_BITMAP): New macro (from ftgloadr.h). - - * include/freetype/internal/ftgloadr.h (FT_GLYPH_OWN_BITMAP): Moved - to ftobjs.h. - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Use dummy - FT_GlyphSlot_Internal object. - -2003-06-15 Werner Lemberg <wl@gnu.org> - - * builds/compiler/gcc.mk, builds/compiler/gcc-dev.mk (CFLAGS): - Add -fno-strict-aliasing to get rid of zillion warnings from gcc - version 3.3. - -2003-06-14 Werner Lemberg <wl@gnu.org> - - * include/freetype/ftglyph.h (ft_glyph_bbox_unscaled, - ft_glyph_bbox_subpixels, ft_glyph_bbox_gridfit, - ft_glyph_bbox_truncate, ft_glyph_bbox_pixels): Replaced with - FT_GLYPH_BBOX_UNSCALED, FT_GLYPH_BBOX_SUBPIXELS, - FT_GLYPH_BBIX_GRIDFIT, FT_GLYPH_BBOX_TRUNCATE, FT_GLYPH_BBOX_PIXELS. - The lowercase variants are now (deprecated aliases) to the uppercase - versions. - Updated all other files. - - * include/freetype/ftmodule.h (ft_module_font_driver, - ft_module_renderer, ft_module_hinter, ft_module_styler, - ft_module_driver_scalable, ft_module_driver_no_outlines, - ft_module_driver_has_hinter): Replaced with FT_MODULE_FONT_DRIVER, - FT_MODULE_RENDERER, FT_MODULE_HINTER, FT_MODULE_STYLER, - FT_MODULE_DRIVER_SCALABLE, FT_MODULE_DRIVER_NO_OUTLINES, - FT_MODULE_DRIVER_HAS_HINTER. - The lowercase variants are now (deprecated aliases) to the uppercase - versions. - Updated all other files. - - * src/base/ftglyph.c (FT_Glyph_Get_CBox): Handle bbox_mode better - as enumeration. - - * src/pcf/pcfdrivr.c (pcf_driver_class), src/winfonts/winfnt.c - (winfnt_driver_class), src/bdf/bdfdrivr.c (bdf_driver_class): Add - the FT_MODULE_DRIVER_NO_OUTLINES flag. - -2003-06-13 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/pfr/pfrobjs.c (pfr_slot_load): Apply font matrix. - -2003-06-13 Werner Lemberg <wl@gnu.org> - - * builds/dos/detect.mk: Test not only for `Dos' but for `DOS' also. - - * builds/dos/dos-emx.mk, builds/compiler/emx.mk: New files for - EMX gcc compiler. - * builds/dos/detect.mk: Add target `emx'. - - * builds/compiler/watcom.mk (LINK_LIBRARY): GNU Make for DOS doesn't - like a trailing semicolon; add a dummy command. - - * src/cid/cidload.c: Remove parse_font_bbox code (already enclosed - with #if 0 ... #endif). - - * src/type1/t1tokens.h: Handle /FontName. - * src/type1/t1load.c (parse_font_name): Removed. - Remove parse_font_bbox code (already enclosed with #if 0 ... - #endif). - - * src/type42/t42parse.c (t42_parse_font_name): Removed. - Remove t42_parse_font_bbox code (already enclosed with #if 0 ... - #endif). - (t42_keywords): Handle /FontName with T1_FIELD_KEY. - -2003-06-12 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/psaux.h (T1_FieldType): Add - T1_FIELD_TYPE_KEY. - (T1_FIELD_KEY): New macro. - * src/psaux/psobjs.c (ps_parser_load_field): Handle - T1_FIELD_TYPE_KEY. - - * src/cid/cidtoken.h: Use T1_FIELD_KEY for /CIDFontName. - -2003-06-11 Alexander Malmberg <alexander@malmberg.org> - - * src/cache/ftlru.c (FT_LruList_Remove_Selection): Decrease - number of nodes. - (FT_LruList_Lookup): Fix assertion for out-of-memory case. - -2003-06-11 Werner Lemberg <wl@gnu.org> - - * src/cid/cidload.c (cid_decrypt): Removed. - (cid_read_subrs): Use t1_decrypt from psaux module. - * src/cid/cidload.h: Updated. - * src/cid/cidgload.c (cid_load_glyph): Use t1_decrypt from psaux - module. - -2003-06-10 Werner Lemberg <wl@gnu.org> - - * src/cid/cidobjs.c: Apply change 2003-05-31 from <Ron.Dev@gmx.de>. - Compute style flags. - Fix computation of root->height. - * src/cid/cidtoken.h: Handle FontBBox. - * src/cid/cidload.c (cid_load_keyword): Handle - T1_FIELD_LOCATION_BBOX. - (parse_font_bbox): Commented out. - (cid_field_record): Comment out element for parsing FontBBox. - - * src/type42/t42parse.c (t42_parse_font_bbox): Commented out. - (t42_keywords): Handle FontBBox with T1_FIELD_BBOX, not with - T1_FIELD_CALLBACK. - (t42_parse_font_bbox): Commented out. - (t42_load_keyword): Handle T1_FIELD_LOCATION_BBOX. - * src/type42/t42objs.c (T42_Face_Init): Apply change 2003-05-31 - from <Ron.Dev@gmx.de>. - -2003-06-09 George Williams <gww@silcom.com> - - * src/truetype/ttinterp.c (SetSuperRound) <0x30>: Follow Apple's - TrueType specification. - (Ins_MDRP, Ins_MIRP): Fix single width cut-in test. - -2003-06-09 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/gzip/ftgzip.c: (inflate_mask): Replaced with... - (NO_INFLATE_MASK): This. - * src/gzip/infutil.h: Declare `inflate_mask' conditionally by - NO_INFLATE_MASK. - -2003-06-09 Alexis S. L. Carvalho <alexis@cecm.usp.br> - - * src/gzip/ftgzip.c (ft_gzip_file_fill_output): Handle Z_STREAM_END - correctly. - -2003-06-09 Wolfgang Domr�se <porthos.domroese@harz.de> - - * src/pshinter/pshglob.c (psh_globals_new): Change calculation of - dim->stdw.count to avoid compiler problem. - - * src/truetype/ttgload.c (TT_Load_Simple_Glyph): Move the block - variables to the beginning of the function to avoid compiler - problems. - Add casts necessary for 16bit compilers. - -2003-06-09 Werner Lemberg <wl@gnu.org> - - * src/pfr/rules.mk (PFR_DRV_SRC): Add pfrsbit.c. - (PFR_DRV_H): Add pfrtypes.h. - - * include/freetype/config/ftconfig.h: s/__MWKS__/__MWERKS__/. - -2003-06-08 Karl Schultz <kschultz@rsinc.com> - - * src/pfr/pfrsbit.c (pfr_bitwriter_init): Change type of third - argument to FT_Bool. - (pfr_lookup_bitmap_data): Change type of third and fourth argument - to FT_UInt. Updated caller. - (pfr_load_bitmap_bits): Change type of fourth argument to FT_Bool. - -2003-06-08 Werner Lemberg <wl@gnu.org> - - Completely revised FreeType's make management. - - . In all makefiles `/' is used as the path separator. The - conversion to the real path separators is done as late as - possible using $(subst ...). - - . $(HOSTSEP) no longer exists. Now, $(SEP) gives the path separator - for the operating system, and the new $(COMPILER_SEP) the path - separator for the compiler tools. - - . $(BUILD) has been renamed to $(BUILD_DIR). In general, all - directory variables end with `_DIR'. The variants ending in `_' - (like `BASE_' have been removed). - - The following ChangeLog entries only describe changes which are - not related to the redesign. - - * builds/beos/beos-def.mk (BUILD_DIR): Fix typo. - * builds/compiler/watcom.mk (LINK_LIBRARY): Fix linker call to avoid - overlong arguments as suggested by J. Ali Harlow - <ali@avrc.city.ac.uk>. - * builds/dos/dos-wat.mk: New file. - * builds/freetype.mk (FREETYPE_H): Include header files from the - `devel' subdirectory. - - * builds/os2/os2-dev.mk, builds/unix/unixddef.mk, - builds/unix/unixddef.mk, builds/win32/w32-bccd.mk, - builds/win32/w32-dev.mk (BUILD_DIR): Fix path. - - * builds/unix/configure.ac, builds/unic/configure: Updated. - * builds/unix/unix-def.in (DISTCLEAN): Add `freetype2.pc'. - -2003-06-07 Werner Lemberg <wl@gnu.org> - - * src/base/ftmac.c (FT_New_Face_From_SFNT): s/rlen/sfnt_size/ to - make it compile. - - * devel/ftoption.h: Updated. - -2003-06-07 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * include/freetype/internal/psaux.h, src/truetype/ttgload.h: - s/index/idx/ to fix compiler warnings. - - * src/sfnt/ttcmap0.c (tt_face_build_cmaps): Use more `volatile' to - fix compiler warning. - - * src/gzip/ftgzip.c (BUILDFIXED): Removed. - * src/gzip/inftrees.c (inflate_trees_fixed) [!BUILDFIXED]: Use - FT_UNUSED to remove compiler warning. - -2003-06-06 Werner Lemberg <wl@gnu.org> - - * include/freetype/ftstroker.h: Renamed to... - * include/freetype/ftstroke.h: This. - - * src/base/ftstroker.c: Renamed to... - * src/base/ftstroke.c: This. - - * include/freetype/config/ftheader.h (FT_STROKER_H): Updated. - - * src/base/descrip.mms, src/base/Jamfile, src/base/rules.mk: - Updated. - - * src/pcf/pcfdriver.c: Renamed to... - * src/pcf/pcfdrivr.c: This. - * src/pcf/pcfdriver.h: Renamed to... - * src/pcf/pcfdrivr.h: This. - - * src/pcf/Jamfile, src/pcf/rules.mk: Updated. - -2003-06-05 Wenlin Institute (Tom Bishop) <wenlin@wenlin.com> - - * src/base/ftmac.c (file_spec_from_path) [TARGET_API_MAC_CARBON]: - Add `#if !defined(__MWERKS__)'. - -2003-06-05 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/psaux.h (T1_FieldType): Add - T1_FIELD_TYPE_FIXED_1000 and T1_FIELD_TYPE_FIXED_1000_P. - (T1_FIELD_FIXED_1000, T1_FIELD_FIXED_1000_P): New macros. - * src/psaux/psobjs.c (ps_parser_load_field): Handle - T1_FIELD_TYPE_FIXED_1000 and T1_FIELD_TYPE_FIXED_1000_P. - - * src/cff/cffparse.c (cff_kind_fixed_thousand): New enumeration. - (CFF_FIELD_FIXED_1000): New macro. - (cff_parser_run): Handle cff_kind_fixed_thousand. - * src/cff/cfftoken.h: Use CFF_FIELD_FIXED_1000 for blue_scale. - * src/cff/cffload (cff_subfont_load): Fix default values of - expansion_factor and blue_scale. - - * src/cif/cidtoken.h, src/type1/t1tokens.h: Use T1_FIELD_FIXED_1000 - for blue_scale. - - * src/pshinter/pshglob.c (psh_globals_new): Fix default value of - blue_scale. - -2003-06-04 Wolfgang Domr�se <porthos.domroese@harz.de> - - * include/freetype/internal/ftdriver.h, - include/freetype/internal/ftobjs.h, - include/freetype/internal/psaux.h, src/cid/cidgload.c, - src/psaux/psobjs.c, src/psaux/t1decode.c, src/psaux/psobjs.h, - src/pshinter/pshrec.c, src/pshinter/pshalgo.c, - src/psnames/psmodule.c, src/raster/ftraster.c, src/sfnt/sfobjs.c, - src/smooth/ftgrays.c, src/smooth/ftsmooth.c, src/truetype/ttobjs.c, - src/truetype/ttdriver.c, src/truetype/ttgload.c, src/type1/t1afm.c, - src/type1/t1gload.c, src/type1/t1gload.h, src/type1/t1load.c, - src/type1/t1objs.c, src/type42/t42parse.c, src/type42/t42parse.h: - Many casts and slight argument type changes to make it work with - a 16bit compiler. - -2003-06-04 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ftoption.h: Defining - TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING by default is a bad idea - since some fonts (e.g. Arial) produce worse results than without - hinting. Reverted. - -2003-06-04 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (load_truetype_glyph) - [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Call - FT_GlyphLoader_CheckPoints before adding phantom points. This fixes - a segfault bug with fonts (e.g. htst3.ttf) which have nested - subglyphs more than one level deep. Reported by Anthony Fok. - - * include/freetype/config/ftoption.h: Define - TT_CONFIG_OPTION_BYTECODE_INTERPRETER, - TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING, and - TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING to make it the new - default. - -2003-06-03 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahhint.c (ah_hinter_hint_edges): Removed. Just a - wrapper for ah_hint_edges. - (ah_hint_edges): Renamed to... - (ah_hinter_hint_edges): This. - - * src/base/ftobjs.c (FT_Set_Hint_Flags): Removed. Unused. - - * include/freetype/internal/ftobjs.h (FT_Face_InternalRec), - include/freetype/internal/psaux.h (T1_DecoderRec), - src/cff/cffgload.h (CFF_Builder): Remove `hint_flags' field. - Unused. - - * src/cff/cffgload.c (cff_builder_init): Updated. - (cff_decoder_parse_charstrings) <cff_op_endchar>: Call hinter->apply - with decoder->hint_mode instead of builder->hint_flags. - * src/psaux/t1decode.c (t1_decoder_init): Updated. - - * src/base/ftstroker.c (ft_stroke_border_export): s/index/idx/. - - * src/sfnt/sfobjs.c (sfnt_load_face): Commented out code which - increased root->height by 15% if the line gap was zero. There exist - fonts (containing e.g. form drawing characters) which intentionally - have a zero line gap value. - - * src/truetype/ttinterp.c (Free_Project, CUR_Func_freeProj): - Removed. Unused. - Updated all callers. - -2003-06-02 Werner Lemberg <wl@gnu.org> - - * src/cff/cffobjs.c (cff_face_init): Use symbolic names for - Adobe specific encoding IDs (there was a wrong EID value for custom - encoding). - - * src/cff/cffcmap.h (CFF_CMapStdRec): Remove `count'. - * src/cff/cffcmap.c (cff_cmap_encoding_init, - cff_cmap_encoding_done): Updated. - (cff_cmap_encoding_char_index, cff_cmap_encoding_char_next): Use - 256 as limit for character code. - -2003-06-01 Werner Lemberg <wl@gnu.org> - - * src/winfonts/winfnt.c (FNT_Load_Glyph): Revert change from - 2003-03-20. - -2003-05-31 Werner Lemberg <wl@gnu.org> - - * include/freetype/fttrigon.h (FT_Vector_Normalize): Removed. - -2003-05-31 <Ron.Dev@gmx.de> - - * src/type1/t1objs.c (T1_Face_Init): Improve algorithm for guessing - the font style by ignoring spaces and hyphens. - - * builds/unix/freetype2.in: Fix `Version' field. - -2003-05-30 Werner Lemberg <wl@gnu.org> - - Avoid overwriting of numeric font dictionary entries for synthetic - fonts. Additionally, some entries were handled as `integer' instead - of `number'. - - * include/freetype/internal/psaux.h (T1_FieldType): Add - T1_FIELD_TYPE_BOOL_P, T1_FIELD_TYPE_INTEGER_P, and - T1_FIELD_TYPE_FIXED_P. - (T1_FIELD_BOOL_P, T1_FIELD_NUM_P, T1_FIELD_FIXED_P): New macros. - * src/psaux/psobjs.c (ps_parser_load_field): Handle new field types. - - * include/freetype/internal/cfftypes.h (CFF_FontRecDict), - src/cff/cfftoken.h: Change type of underline_position and - underline_thickness to FT_Fixed. - * src/cff/cffload.c (cff_subfont_load): Fix default values of - underline_position and underline_thickness. - * src/cff/cffobjs.c (cff_face_init): Set underline_position - and underline_thickness in `root'. - - * include/freetype/internal/t1types.h (T1_Font): Change point_type - and stroke_width to pointers. - * include/freetype/t1tables.h (PS_FontInfo): Change italic_angle, - is_fixed_pitch, underline_position, and underline_thickness to - pointers. - * src/type1/t1tokens.h: Change italic_angle, is_fixed_pitch, - underline_position, and underline_thickness to pointers. Change - the type of the latter two to `fixed'. - Change type of stroke_width to `fixed' and make it a pointer. - Change paint_type to pointer. - * src/type1/t1objs.c (T1_Face_Done): Updated. - (T1_Face_Init): Updated. - Fix assignment of underline_position and underline_thickness. - - * src/cid/cidtoken.h: Change italic_angle, is_fixed_pitch, - underline_position, and underline_thickness to pointers. Change - the type of the latter two to `fixed'. - Change type of stroke_width to `fixed'. - * src/cid/cidobjs.c (cid_face_done): Updated. - (cid_face_init): Updated. - Fix assignment of underline_position and underline_thickness. - - * src/type42/t42parse.c: Change italic_angle, is_fixed_pitch, - underline_position, and underline_thickness to pointers. Change the - type of the latter two to `fixed'. - Change type of stroke_width to `fixed' and make it a pointer. - Change paint_type to pointer. - * src/type42/t42objs.c (T42_Face_Init): Updated. - Fix assignment of underline_position and underline_thickness. - (T42_Face_Done): Updated. - - * src/base/ftobjs.c (open_face_from_buffer): Fix compiler warning. - * src/pshinter/pshglob.c, src/pshinter/pshglob.h - (psh_globals_set_scale): Make it a local function. - - * test/gview.c: Fix renaming ps3->ps typo. - Formatting. - -2003-05-29 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshalgo1.[ch], src/pshinter/pshalgo2.[ch]: Removed. - * src/pshinter/pshalgo.h: Removed. - - * src/pshinter/pshalgo3.[ch]: Renamed to... - * src/pshinter/pshalgo.[ch]: New files. - s/PSH3/PSH/. - s/psh3/psh/. - s/ps3/ps/. - - * src/pshinter/pshrec.c, src/pshinter/pshinter.c: Updated. - * src/pshinter/rules.mk, src/pshinter/Jamfile: Updated. - - * src/pshinter/pshglob.[ch] (psh_dimension_snap_width): Commented - out. - - * tests/gview.c: Remove code for pshalgo1 and pshalgo2. - Updated. - -2003-05-28 Martin Zinser <zinser@decus.de> - - * vms_make.com: Reworked support for shareable images on VMS. The - first version was kind of a hack; the current implementation of the - procedure to extract the required symbols is much cleaner. - - Reworked creation of MMS files, avoiding a number of temporary files - which were created in the previous version. - - Further work on creating descrip.mms files on the fly. - - * builds/vms/descrip.mms, src/autohint/descrip.mms, - src/type1/descrip.mms: Removed. - -2003-05-28 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshalgo3.c (psh3_glyph_compute_extrema): Skip - contours with only a single point to avoid segfault. - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Activate code for - handling `origin'. - -2003-05-24 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahtypes.h (AH_OPTION_NO_STRONG_INTERPOLATION): - Removed since unused. - -2003-05-21 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ftstdlib.h (ft_strcat): New wrapper macro - for strcat. - - * src/base/ftmac.c (create_lwfn_name): s/isupper/ft_isupper/. - (parse_font): s/memcpy/ft_memcpy/. - (is_dfont) [TARGET_API_MAC_CARBON]: s/memcmp/ft_memcmp/. - * src/base/ftobjs.c (load_mac_face) [FT_MACINTOSH]: - s/strlen/ft_strlen/. - s/strcat/ft_strcat/. - s/strcpy/ft_strcpy/. - * src/gzip/zutil.h: s/memset/ft_memset/. - s/memcmp/ft_memcmp/. - - * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdriver.c - (PCF_Face_Init): Test for charset registry case-insensitively. - - * src/gzip/ftgzip.c (ft_gzip_fil_io): Revert change from yesterday; - it has already been fixed differently. - - * src/truetype/ttinterp.c (DO_SFVTL): Add missing braces around - if-clause. - -2003-05-21 Martin Zinser <zinser@decus.de> - - * t1load.c (parse_blend_axis_types): Fix compiler warning. - - * descrip.mms: Removed. Now created by... - - * vms_make.com: New file. - -2003-05-21 Weiqi Gao <weiqigao@networkusa.net> - - * src/gzip/ftgzip.c (ft_gzip_file_io): Avoid zero value of `delta' - to prevent infinite loop. - -2003-05-21 Lars Clausen <lrclause@cs.uiuc.edu> - - * docs/VERSION.DLL: Provide better autoconf snippet to check - FreeType version. - -2003-05-21 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (open_face): Free `internal' not - `face->internal' in case of error to avoid possible segfault. - - * src/pshinter/pshalgo3.c (ps3_hints_apply): Check whether we - actually have an outline. - -2003-05-20 David Chester <davidchester@qmx.net> - - * src/pshinter/pshalgo3.c (ps3_hints_apply): Try to optimize - y_scale so that the top of non-capital letters is aligned on a pixel - boundary whenever possible. - - * src/autohint/ahhint.c (ah_hint_edges): Make sure that lowercase - m's maintain their symmetry. - -2003-05-20 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahhint.c (ah_hinter_load_glyph): Oops! David's - patch from yesterday has been resolved already in a different - way. Reverted. - -2003-05-19 David Chester <davidchester@qmx.net> - - * src/autohint/ahhint.c (ah_hinter_load_glyph): Don't scale - y_scale locally but face->size->metrics.y_scale. - -2003-05-19 David Turner <david@freetype.org> - - * src/sfnt/ttcmap0.c (tt_cmap4_char_next): Select proper start - value for `hi' to avoid infinite loop. - -2003-05-18 Yong Sun <sunyong@njstar.com> - - * src/raster/ftraster.c (Insert_Y_Turn): Fix overflow test. - -2003-05-18 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ftoption.h [FT_CONFIG_OPTION_MAC_FONTS]: - New macro. - * src/base/ftobjs.c: Use it to control mac font support on non-mac - platforms. - -2003-05-17 George Williams <gww@silcom.com> - - Implement partial support of Mac fonts on non-Mac platforms. - - * src/base/ftobjs.c (memory_stream_close, new_memory_stream, - open_face_from_buffer, Mac_Read_POST_Resource, - Mac_Read_sfnt_Resource, IsMacResource, IsMacBinary, load_mac_face) - [!FT_MACINTOSH]: New functions. - (FT_Open_Face) [!FT_MACINTOSH]: Use load_mac_face. - -2003-05-17 Werner Lemberg <wl@gnu.org> - - * src/base/ftobjs.c (FT_Load_Glyph): Scale linear advance width only - if FT_FACE_FLAG_SCALABLE is set (otherwise we have a division by - zero since FNT and friends don't define `face->units_per_EM'). - -2003-05-15 David Turner <david@freetype.org> - - * src/base/fttrigon.c (FT_Vector_Rotate): Avoid rounding errors - for small values. - -2003-05-15 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahtypes.h (AH_PointRec): Remove unused `in_angle' - and `out_angle' fields. - -2003-05-14 George Williams <gww@silcom.com> - - * src/base/ftmac.c (FT_New_Face_From_SFNT): Handle CFF files also. - -2003-05-14 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h: Fix typo in comment - (FT_HAS_FIXED_SIZES). - -2003-05-10 Dan Williams <dan@bigw.org> - - * builds/unix/aclocal.m4: Comment out definition of - `allow_undefined_flag' for Darwin 1.3. - * builds/unix/configure.ac: Add option --with-old-mac-fonts. - * builds/unix/ltmain.sh: Fix version numbering for Darwin 1.3. - * builds/unix/configure: Regenerated. - - * include/freetype/config/ftconfig.h: Fix conditions for defining - `FT_MACINTOSH'. - * src/base/ftbase.c: Include `ftmac.c' conditionally. - * src/base/ftmac.c: Handle __GNUC__. - -2003-05-07 YAMANO-UCHI Hidetoshi <mer@din.or.jp> - - * src/cid/cidload.c (is_alpha): Removed. - (cid_parse_dict): Use `cid_parser_skip_alpha' instead of `is_alpha'. - -2003-05-07 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahoptim.c, src/autohint/ahoptim.h: Obsolete, removed. - -2003-05-07 David Turner <david@freetype.org> - - * src/autohint/ahglyph.c (ah_setup_uv): Exchange `for' loop and - `switch' statement to make it run faster. - (ah_outline_compute_segments): Reset `segment->score' and - `segment->link'. - (ah_outline_link_segments): Provide alternative code which does - the same but runs much faster. - Handle major direction also. - (ah_outline_compute_edges): Scale `edge_distance_threshold' down - after rounding instead of scaling comparison value in loop. - - * src/autohint/ahhint.c (ah_hinter_align_stong_points): Provide - alternative code which runs faster. - Handle `before->scale == 0'. - - * src/autohint/ahtypes.h (AH_SegmentRec): Move some fields down. - (AH_EdgeRec): Move some fields in structure. - New field `scale'. - - * src/sfnt/ttcmap0.c (tt_cmap4_char_next): Use binary search. - -2003-05-02 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahoptim.c (LOG): Renamed to... - (AH_OPTIM_LOG): This. - (AH_Dump_Springs): Fix log message format. - - * src/autohint/ahhint.c (ah_hint_edges_3): Renamed to... - (ah_hint_edges): This. - -2002-05-02 Keith Packard <keithp@keithp.com> - - * src/bdf/bdfdrivr.c (BDF_Set_Pixel_Size): Initialize `max_advance'. - -2003-05-01 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahglyph.c (ah_test_extrema): Renamed to... - (ah_test_extremum): This. - -2003-04-28 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.ac: Generate `freetype.pc' from - `freetype.in'. - * builds/unix/configure: Regenerated. - * builds/unix/install.mk (install, uninstall): Handle `freetype.pc'. - -2003-04-28 Gustavo J. A. M. Carneiro <gjc@inescporto.pt> - - * builds/unix/freetype2.in: New file. Contains building information - for the `pkg-config' package. - -2003-04-28 David Turner <david@freetype.org> - - * src/base/ftobjs.c (FT_Load_Glyph): Fix boundary check for - `glyph_index'. - -2003-04-25: Graham Asher <graham.asher@btinternet.com> - - Added the optional unpatented hinting system for TrueType. It - allows typefaces which need hinting to produce correct glyph forms - (e.g., Chinese typefaces from Dynalab) to work acceptably without - infringing Apple patents. This system is compiled only if - TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in - ftoption.h. - - * include/freetype/ttunpat.h: New file. Defines - FT_PARAM_TAG_UNPATENTED_HINTING. - - * include/freetype/config/ftheader.h (FT_TRUETYPE_UNPATENTED_H): New - macro to use when including ttunpat.h. - - * include/freetype/config/ftoption.h - (TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING, - TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING): New configuration macros - (not defined, but in comments) for the unpatented hinting system. - - * include/freetype/internal/tttypes.h (TT_FaceRec) - [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: New element `FT_Bool - unpatented_hinting'. - - * src/truetype/ttinterp.c (NO_APPLE_PATENT, APPLE_THRESHOLD): - Removed. - (GUESS_VECTOR): New macro. - (TT_Run_Context) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: - Set `both_x_axis'. - (tt_default_graphics_state) - [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Updated. - (Current_Ratio) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: - Handle `unpatented_hinting'. - (Direct_Move) [NO_APPLE_PATENT]: Removed. - [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Insert assertion. - (Project, FreeProject) - [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Insert assertion. - (Compute_Funcs) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: - Implement unpatented hinting. - (DO_SPVTCA, DO_SFVTCA, DO_SPVTL, DO_SFVTL, DO_SPVFS, DO_SFVFS, - Ins_SDPVTL): Call `GUESS_VECTOR'. - (DO_GPV, DO_GFV) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: - Handle `unpatented_hinting'. - (Compute_Point_Displacement) [NO_APPLE_PATENT]: Removed. - [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Implement unpatented - hinting. - (Move_Zp2_Point, Ins_SHPIX, Ins_DELTAP, Ins_DELTAC) - [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Implement unpatented - hinting. - (TT_RunIns): Updated. - - * src/truetype/ttobjs.c - [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Include - FT_TRUETYPE_UNPATENTED_H. - (tt_face_init) [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING, - TT_CONFIG_OPTION_FORCE_UNPATENTED_HINTING]: Check - FT_PARAM_TAG_UNPATENTED_HINTING. - - * src/truetype/ttobjs.h (TT_GraphicsState) - [TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING]: Add `both_x_axis'. - -2003-04-25 Werner Lemberg <wl@gnu.org> - - * src/bdf/bdflib.c (hash_bucket, hash_lookup): Use `const' for first - argument. - (bdf_get_font_property): Use `const' for third argument. - Updated all callers. - * src/bdf/bdfdrivr.c (BDF_Face_Init): Set pixel width and height - similar to the PCF driver. - * src/bdf/bdf.h (_hashnode): Use `const' for `key'. - Updated. - - * src/gzip/ftgzip.c: C++ doesn't like that the array `inflate_mask' - is declared twice. It is perhaps better to modify the zlib source - files directly instead of this hack. - (zcalloc, zfree, ft_gzip_stream_close, ft_gzip_stream_io): Add casts - to make build with g++ successful. - -2003-04-24 Manish Singh <yosh@gimp.org> - - * src/cid/cidobjs.c (cid_face_init), src/type1/t1objs.c - (T1_Face_Init), src/type42/t42objs.c (T42_Face_Init): Split on `-' - also for searching the style name. - -2003-04-24 David Turner <david@freetype.org> - - * src/pcf/pcfread.c (pcf_load_font): Fixed the computation of - face->num_glyphs. We must increase the value by 1 to respect the - convention that glyph index 0 always corresponds to the `missing - glyph'. - -2003-04-24 Werner Lemberg <wl@gnu.org> - - * builds/unix/unix-cc.in (CFLAGS): Add @CPPFLAGS@. - -2003-04-24 Dieter Baron <dillo@netbsd.org> - - * builds/unix/freetype-config.in (cflags): Emit FreeType 2's include - files first. Otherwise there are conflicts with FreeType 1 - installed simultaneously. - -2003-04-23 Werner Lemberg <wl@gnu.org> - - Fixing bugs reported by Nelson Beebe. - - * src/base/ftstroker.c (FT_Stroker_ParseOutline): Remove unused - variable `in_path'. - - * src/base/ftobjs (ft_glyphslot_set_bitmap): Change type of - second argument to `FT_Byte*'. - * include/freetype/internal/ftobjs.h: Updated. - - * src/bdf/bdflib.c (_bdf_readstream): Remove unused variable `res'. - (_bdf_parse_glyphs): Remove unused variable `next'. - Mark `call_data' as unused. - - * src/cache/ftlru.c (FT_LruList_Lookup): Remove unused variable - `plast'. - - * src/pcf/pcfread.c (pcf_seek_to_table_type): Slight recoding to - actually use `error'. - (pcf_load_font): Remove unused variable `avgw'. - - * src/pfr/pfrobjs.c (pfr_face_get_kerning): Change return type - to `void'. - Mark `error' as unused. - * src/pfr/pfrobjs.h: Updated. - * src/pfr/pfrdrivr.c (pfr_get_kerning): Updated. - - * src/sfnt/ttload.c (sfnt_dir_check): Remove unused variable - `format_tag'. - - * src/sfnt/ttcmap0.c (tt_cmap6_validate, tt_cmap10_validate): Remove - unused variable `start'. - (tt_cmap10_char_next): Remove unused variable `result' - - * src/sfnt/sfobjs.c (tt_face_get_name): Mark `error' as unused. - - * src/sfnt/sfdriver.c (get_sfnt_postscript_name): Mark `error' as - unused. - - * src/type1/t1objs.c (T1_Face_Init): Remove unused variable - `pshinter'. - - * src/type1/t1gload.c (T1_Load_Glyph): Use `glyph_data_loaded' - only for FT_CONFIG_OPTION_INCREMENTAL. - -2003-04-23 Akito Hirai <akito@kde.gr.jp> - - * src/sfnt/ttcmap0.c (tt_cmap4_validate): Provide a weak variant - of the glyph ID bounding check if FT_VALIDATE_TIGHT is not active. - Without this change, many CJK fonts from Dynalab are rejected. - -2003-04-23 Joe Marcus Clarke <marcus@FreeBSD.org> - - * src/base/ftbdf.c (FT_Get_BDF_Property): Check for valid - `get_interface'. - -2003-04-23 Paul Miller <paulm@profoundeffects.com> - - * src/base/ftmac.c (parse_fond): Fix handling of style names. - -2003-04-23 Werner Lemberg <wl@gnu.org> - - * src/pfr/pfrload.c (pfr_extra_item_load_font_id): Use FT_PtrDist - instead of FT_Uint for `len'. - -2003-04-22 Werner Lemberg <wl@gnu.org> - - * src/gzip/ftgzip.c (zcalloc) [!FT_CONFIG_OPTION_SYSTEM_ZLIB]: - Convert K&R format to modern C usage. - (FT_Stream_OpenGzip): Use long constant. - -2003-04-21 Werner Lemberg <wl@gnu.org> - - * src/cache/ftccache.c (ftc_cache_lookup): Remove shadow declaration - of `manager'. - -2003-04-20 Werner Lemberg <wl@gnu.org> - - * doc/INSTALL.UNX: Cleaned up. - -2003-04-09 Torrey Lyons <torrey@mrcla.com> - - * src/base/ftmac.c (open_face_from_buffer): Removed a double-free - bug that had nasty consequences when trying to open an `invalid' - font on a Mac. - -2003-04-09 Mike Fabian <mfabian@suse.de> - - * src/bdf/bdfdrivr.h (BDF_encoding_el), src/pcf/pcf.h - (PCF_EncodingRec): Changed FT_Short to FT_UShort in order to be able - to access more than 32768 glyphs in fonts. - -2003-04-08 David Turner <david@freetype.org> - - - * Version 2.1.4 released. - ========================= - - -2003-04-03 Martin Muskens <mmuskens@aurelon.com> - - * src/type1/t1load.c (T1_Open_Face): Fixed the code to make it - handle special cases where a font only contains a `.notdef' glyph - (happens in PDF-embedded fonts). Otherwise, FT_Panic was called. - -2003-03-27 David Turner <david@freetype.org> - - * README: Udpated. - - * README.UNX: Removed (now replaced by docs/INSTALL.UNX). - - * src/pshinter/pshalgo3.c: The hinter now performs as in 2.1.3 and - will ignore stem quantization only when FT_LOAD_TARGET_SMOOTH is - used. - (psh3_dimension_quantize_len): Enabled. - (psh3_hint_align): Enable commented code. - (psh3_hint_align_light): Commented out. - - * src/base/ftobjs.c (FT_Set_Char_Size): Changed the default - computations to include rounding in all cases; this is required to - provide accurate kerning data when native TrueType hinting is - enabled. - - * src/type1/t1load.c (is_name_char): The Type 1 loader now accepts - more general names according to the PostScript specification (the - previous one was too restrictive). - (parse_font_name, parse_encoding, parse_charstrings, parse_dict): - Use `is_name_char'. - (parse_subrs): Handle empty arrays. - -2003-03-20 David Turner <david@freetype.org> - - Serious rewriting of the documentation. - - * docs/BUGS, docs/BUILD: Removed. - * docs/DEBUG.TXT: Renamed to... - * docs/DEBUG: This. - * docs/CUSTOMIZE, docs/TRUETYPE, docs/UPGRADE.UNX: New files. - * docs/INSTALL.ANY, docs/INSTALL.UNX, docs/INSTALL.GNU New files, - containing platform specific information previously in INSTALL. - * docs/readme.vms: Renamed to... - * docs/INSTALL.VMS: This. - - * docs/*: Updated. - - Introduced three new functions to deal with glyph bitmaps within - FT_GlyphSlot objects: - - ft_glyphslot_free_bitmap - ft_glyphslot_alloc_bitmap - ft_glyphslot_set_bitmap - - These functions are much more convenient to use than managing the - FT_GLYPH_OWN_BITMAP flag manually. - - * include/freetype/internal/ftobjs.h (ft_glyphslot_free_bitmap, - ft_glyphslot_alloc_bitmap, ft_glyphslot_set_bitmap): New functions. - * src/base/ftobjs.c: Implement them. - (ft_glyphslot_done): Use ft_glyphslot_free_bitmap. - - * src/bdf/bdfdrivr.c (BDF_Glyph_Load), src/pcf/pcfdriver.c - (PCF_Glyph_Load): Remove unused variable `memory'. - Use `ft_glyphslot_*' functions. - Don't set `FT_GLYPH_OWN_BITMAP'. - - * src/pfr/pfrsbit.c (pfr_slot_load_bitmap): Use - `ft_glyphslot_alloc_bitmap'. - - * src/sfnt/ttsbit.c (Load_SBit_Image): Change 5th argument to type - `FT_GlyphSlot'. - Adding argument `depth' to handle recursive calls. - Use `ft_glyphslot_alloc_bitmap'. - (tt_face_load_sbit_image): Remove unused variable `memory'. - Don't handle `FT_GLYPH_OWN_BITMAP'. - Update call to Load_SBit_Image. - - * src/type42/t42objs.c (ft_glyphslot_clear): Renamed to... - (t42_glyphslot_clear): This. Updated caller. - Call `ft_glyphslot_free_bitmap'. - - * src/winfonts/winfnt.c (FNT_Load_Glyph): Use - `ft_glyphslot_set_bitmap'. - Don't handle `FT_GLYPH_OWN_BITMAP'. - - * src/cache/ftlru.c (FT_LruList_Lookup): Fixed an invalid assertion - check. - - * src/autohint/ahglyph.c (ah_outline_load): Add two scaling - arguments. - * src/autohint/ahglyph.h: Updated. - * src/autohint/ahhint.c (ah_hinter_load): Updated. - * src/autohint/ahglobal.c (ah_hinter_compute_widths): Updated. - - * src/cache/ftccache.c (ftc_family_done): Fixed small bug that could - crash the cache in rare circumstances (mostly with broken fonts). - -2003-03-15 David Turner <david@freetype.org> - - * src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a small rounding - bug. Actually, it seems that previous versions of FreeType didn't - perform TrueType rounding exactly as appropriate. - -2003-03-14 David Turner <david@freetype.org> - - * src/truetype/ttdriver.c (Set_Char_Sizes): Fixing the small - TrueType native rendering glitches; they came from a small rounding - error. - -2003-03-13 David Turner <david@freetype.org> - - Added new environment variables to control memory debugging with - FreeType. See the description of `FT2_DEBUG_MEMORY', - `FT2_ALLOC_TOTAL_MAX' and `FT2_ALLOC_COUNT_MAX' in DEBUG.TXT. - - * src/base/ftdbgmem.c (FT_MemTableRec): Add `alloc_count', - `bound_total', `alloc_total_max', `bound_count', `alloc_count_max'. - (ft_mem_debug_alloc): Handle new variables. - (ft_mem_debug_init): s/FT_DEBUG_MEMORY/FT2_DEBUG_MEMORY/. - Handle new environment variables. - * docs/DEBUG.TXT: Updated. - - Fixed the cache sub-system to correctly deal with out-of-memory - conditions. - - * src/cache/ftccache.c (ftc_node_destroy): Comment out generic - check. - (ftc_cache_lookup): Implement loop. - * src/cache/ftccmap.c: Define FT_COMPONENT. - * src/cache/ftcsbits.c (ftc_sbit_node_load): Handle - FT_Err_Out_Of_Memory. - * src/cache/ftlru.c: Include FT_INTERNAL_DEBUG_H. - (FT_LruList_Lookup): Implement loop. - - * src/pfr/pfrobjs.c (pfr_face_done): Fix memory leak. - (pfr_face_init): Fixing compiler warnings. - - * src/psaux/psobjs.c (reallocate_t1_table): Fixed a bug (memory - leak) that only happened when a try to resize an array would end in - an out-of-memory condition. - - * src/smooth/ftgrays.c (gray_convert_glyph): Removed compiler - warnings / volatile bug. - - * src/truetype/ttobjs.c (tt_glyphzone_done): Removed segmentation - fault that happened in tight memory environments. - -2003-02-28 Pixel <pixel@mandrakesoft.com> - - * src/gzip/ftgzip.c (ft_gzip_file_done): Fixed memory leak: The ZLib - stream was not properly finalized. - -2003-02-25 Anthony Fok <anthony@thizlinux.com> - - * src/cache/ftccmap.c: Include FT_TRUETYPE_IDS_H. - (ftc_cmap_family_init): The cmap cache now - supports UCS-4 charmaps when available in Asian fonts. - - * src/sfnt/ttload.c, src/base/ftobjs.c: Changed `asian' to `Asian' - in comments. - -2003-02-25 David Turner <david@freetype.org> - - * src/gzip/ftgzip.c (ft_gzip_file_fill_output): Fixed a bug that - caused FreeType to loop endlessly when trying to read certain - compressed gzip files. The following test reveals the bug: - - touch 0123456789 ; gzip 0123456789 ; ftdump 0123456789.gz - - Several fixes to the PFR font driver: - - - The list of available embedded bitmaps was not correctly set in - the root FT_FaceRec structure describing the face. - - - The glyph loader always tried to load the outlines when - FT_LOAD_SBITS_ONLY was specified. - - - The table loaded now scans for *undocumented* elements of a - physical font's auxiliary data record. This is necessary to - retrieve the `real' family and style names. - - NOTE THAT THESE CHANGES THE FAMILY NAME OF MANY PFR FONTS! - - * src/pfr/pfrload.c (pfr_aux_name_load): New function. - (pfr_phy_font_done): Free `family_name' and `style_name' also. - Remove unused variables. - (pfr_phy_font_load): Extract useful information from the auxiliary - bytes. - - * src/pfr/pfrobjs.c (pfr_face_done): Set pointers to NULL. - (pfr_face_init): Provide fallback values for `family_name' and - `style_name'. - Handle strikes. - (pfr_slot_load): Handle FT_LOAD_SBITS_ONLY. - * src/pfr/pfrtypes.h (PFR_PhyFontRec): Add fields `ascent', - `descent', `leading', `family_name', and `style_name'. - - * src/truetype/ttdriver.c (Set_Char_Sizes): Fixed a rounding bug - when computing the scale factors for a given character size in - points with resolution. - - * devel/ft2build.h, devel/ftoption.h: New files (in a new directory) - which are special development versions of include/ft2build.h and - include/freetype/config/ftoption.h, respectively. - -2003-02-18 David Turner <david@freetype.org> - - Fixing the slight distortion problem that occurred due to the latest - auto-hinter changes. - - * src/base/ftobjs.c (ft_recompute_scaled_metrics): Fix rounding. - - * src/truetype/ttdriver.c (Set_Char_Sizes): New variable `metrics2'. - [!TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Removed. - - * src/truetype/ttobjs.h (TT_SizeRec): New field `metrics'. - * src/truetype/ttobjs.c (Reset_Outline_Size): Fix initialization of - `metrics'. - [FT_CONFIG_CHESTER_ASCENDER]: Code removed. - (Reset_SBit_Size): Fix initialization of `metrics'. - - * src/truetype/ttinterp.c (TT_Load_Context): Fix initialization of - `exec->metrics'. - - * src/autohint/ahhint.c (ah_hinter_load): Disabled the advance width - `correction' which seemed to provide more trouble than benefits. - -2003-02-13 Graham Asher <graham.asher@btinternet.com> - - Changed the incremental loading interface in a way that makes it - simpler and allows glyph metrics to be changed (e.g., by adding a - constant, as required by CFF fonts) rather than just overridden. - This was required to make the GhostScript-to-FreeType bridge work. - - * src/cff/cffgload.c (cff_slot_load) [FT_CONFIG_OPTION_INCREMENTAL]: - Allow metrics to be overridden. - * src/cid/cidgload.c (cid_load_glyph) [FT_CONFIG_OPTION_INCREMENTAL]: - Ditto. - - * src/truetype/ttgload.c (load_truetype_glyph) - [FT_CONFIG_OPTION_INCREMENTAL]: Simplify. - (compute_glyph_metrics) [FT_CONFIG_OPTION_INCREMENTAL]: Code block - moved down. - - * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String) - [FT_CONFIG_OPTION_INCREMENTAL]: Updated. - - * include/freetype/ftincrem.h: Updated. - -2003-01-31 David Turner <david@freetype.org> - - * docs/CHANGES, docs/VERSION.DLL, docs/TODO: Updating documentation - for the 2.1.4 release. - - * builds/win32/visualc/freetype.dsp, - builds/win32/visualc/index.html: Updating the project file for - 2.1.4. - - * src/gzip/adler32.c, src/gzip/ftgzip.c, src/gzip/infblock.c, - src/gzip/infcodes.c, src/gzip/inflate.c, src/gzip/inftrees.c, - src/gzip/infutil.c: Removed old-style (K&R)function definitions. - This avoids warnings with Visual C++ at its most pedantic mode. - - * src/pfr/pfrsbit.c: Removed compiler warnings. - - * src/cache/ftccmap.c (ftc_cmap_family_init): Changed an FT_ERROR - into an FT_TRACE1 since it caused `ftview' and others to dump too - much junk when trying to display a waterfall with a font without a - Unicode charmap (e.g. SYMBOL.TTF). - - Implemented FT_CONFIG_CHESTER_BLUE_SCALE, corresponding to the last - patch from David Chester, but with a much simpler (and saner) - implementation. - - * src/autohint/ahhint.c (ah_hinter_load_glyph) - [FT_CONFIG_CHESTER_BLUE_SCALE]: Try to optimize the y_scale so that - the top of non-capital letters is aligned on a pixel boundary - whenever possible. - - * src/base/ftobjs.c (FT_Set_Char_Size) - [FT_CONFIG_CHESTER_BLUE_SCALE]: Round differently. - * src/truetype/ttdriver.c (Set_Char_Sizes) - [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Do some rounding only - if this macro is defined. - - * src/truetype/ttobjs.c (Reset_Outline_Size) - [FT_CONFIG_CHESTER_ASCENDER]: Round differently. - - * src/pshinter/pshalgo3.c: Improved the Postscript hinter. Getting - rid of stem snapping seems to work well here (though the stems are - still slightly moved to increase contrast). - (psh3_dimension_quantize_len): Commented out. - (psh3_hint_align_light): New function. - (psh3_hint_align): Comment out some code. - - THIS IMPROVES ANTI-ALIASED RENDERING, BUT MONOCHROME AND LCD MODES - STILL SUCK. - -2003-01-22 David Chester <davidchester@qmx.net> - - * src/autohint/ahhint.c (ah_compute_stem_width): Small fix to the - stem width optimization. - -2003-01-22 David Turner <david@freetype.org> - - Adding a new API `FT_Get_BDF_Property' to retrieve the BDF - properties of a given PCF or BDF font. - - * include/freetype/ftbdf.h (FT_PropertyType): New enumeration. - (BDF_Property, BDF_PropertyRec): New structure. - FT_Get_BDF_Property): New function. - * include/freetype/internal/bdftypes.h: Include FT_BDF_H. - (BDF_GetPropertyFunc): New function pointer. - - * src/base/ftbdf.c (test_font_type): New helper function. - (FT_Get_BDF_Charset_ID): Use `test_font_type'. - (FT_Get_BDF_Property): New function. - - * src/bdf/bdfdrivr.c: Include FT_BDF_H. - (bdf_get_bdf_property, bdf_driver_requester): New functions. - (bdf_driver_class): Use `bdf_driver_requester'. - - * src/pcf/pcfdrivr.c: Include FT_BDF_H. - (pcf_get_bdf_property, pdc_driver_requester): New functions - (pcf_driver_class): Use `pcf_driver_requester'. - - * src/pcf/pcfread.c: Include `pcfread.h'. - (pcf_find_property): Decorate it with FT_LOCAL_DEF. - * src/pcf/pcfread.h: New file, providing `pcf_find_property'. - - * src/sfnt/ttload.c (sfnt_dir_check): Relaxed the `head' table size - verification to accept a few broken fonts who pad the size - incorrectly (the table should be padded, but its `size' field - shouldn't according to the specification). - -2003-01-18 Werner Lemberg <wl@gnu.org> - - * builds/unix/ltmain.sh: Regenerated with `libtoolize --force - --copy' from libtool 1.4.3. - * builds/unix/aclocal.m4: Regenerated with `aclocal -I .' from - automake 1.7.1. - * builds/unix/configure: Regenerated with autoconf 2.54. - * builds/unix/config.guess, builds/unix/config.sub: Updated from - `config' CVS module at subversions.gnu.org. - * builds/unix/install-sh, builds/unix/mkinstalldirs: Updated from - `automake' CVS module at subversions.gnu.org. - -2003-01-15 David Turner <david@freetype.org> - - * include/freetype/freetype.h: Fixed documentation for - FT_Size_Metrics. - -2003-01-15 James Su <suzhe@turbolinux.com.cn> - - * src/gzip/ftgzip.c (ft_gzip_check_header): Bugfix: couldn't read - certain gzip-ed font files (typo: `&&' -> `&'). - -2003-01-15 Huw D M Davies <h.davies1@physics.ox.ac.uk> - - Added a Windows .FNT specific API (mostly for Wine). Also fixed a - nasty bug in the header loader which would cause invalid memory - overwrites. - - * include/freetype/config/ftheader.h (FT_WINFONTS_H): New macro - for ftwinfnt.h. - * include/freetype/internal/fnttypes.h: Include FT_WINFONTS_H. - (FNT_FontRec): Updated. - Move Windows FNT definition to... - * include/freetype/ftwinfnt.h: This new file. - (FT_WinFNT_HeaderRec): Rename `reserved2' to `reserved1'. - * src/base/ftwinfnt.c: New file, providing `FT_Get_WinFNT_Header'. - * src/winfonts/winfnt.c (winfnt_header_fields): Updated. - Rename `reserved2' to `reserved1'. - (fnt_font_load): Updated. - - * src/base/Jamfile, src/base/descrip.mms, src/base/rules.mk: - Updated. - -2003-01-14 Graham Asher <graham.asher@btinternet.com> - - * include/freetype/ftglyph.h, src/base/ftglyph.c: Added `const' to - the type of the first argument to FT_Matrix_Multiply, which isn't - changed -- this adds documentation and convenience. - -2003-01-13 Graham Asher <graham.asher@btinternet.com> - - * src/sfnt/ttload.c (tt_face_load_metrics) - [FT_CONFIG_OPTION_INCREMENTAL]: TrueType typefaces without - horizontal metrics (without the `hmtx' table) are now tolerated if - an incremental interface has been specified that has a - get_glyph_metrics function, implying that metrics will be supplied - from outside. This happens for certain Type 42 fonts passed from - GhostScript. - -2003-01-11 David Chester <davidchester@qmx.net> - - Patches to the auto-hinter in order to slightly improve the output. - Note that everything is controlled through the new - FT_CONFIG_OPTION_CHESTER_HINTS defined in `ftoption.h'. There are - also individual FT_CONFIG_CHESTER_XXX macros to control individual - `features'. - - Note that all improvements are enabled by default, but can be - tweaked for optimization and testing purposes. The configuration - macros will most likely disappear in the short future. - - * include/freetype/config/ftoption.h - (FT_CONFIG_OPTION_CHESTER_HINTS): New macro. - (FT_CONFIG_CHESTER_{SMALL_F,ASCENDER,SERIF,STEM,BLUE_SCALE}) - [FT_CONFIG_OPTION_CHESTER_HINTS]: New macros to control individual - features. - - * src/autohint/ahglobal.c (blue_chars) [FT_CONFIG_CHESTER_SMALL_F]: - Add blue zone for `fijkdbh'. - * src/autohint/ahglobal.h (AH_IS_TOP_BLUE) - [FT_CONFIG_CHESTER_SMALL_F]: Use `AH_BLUE_SMALL_F_TOP'. - * src/autohint/ahglyph.c (ah_outline_compute_edges) - [FT_CONFIG_CHESTER_SERIF]: Use `AH_EDGE_SERIF'. - (ah_outline_compute_blue_edges) [FT_CONFIG_CHESTER_SMALL_F]: - Increase threshold for `best_dist'. - * src/autohint/ahhint.c (ah_compute_stem_width) - [FT_CONFIG_CHESTER_SERIF]: Provide new version for improved serif - handling. - (ah_align_linked_edge) [FT_CONFIG_CHESTER_SERIF]: Use special - version of `ah_compute_stem_width'. - (ah_hint_edges_3) [FT_CONFIG_CHESTER_STEM]: A new algorithm for stem - alignment when stem widths are less than 1.5 pixels wide centers the - stem slightly off-center of the center of a pixel (this increases - sharpness and consistency). - [FT_CONFIG_CHESTER_SERIF]: Use special version of - `ah_compute_stem_width'. - * src/autohint/ahtypes.h [FT_CONFIG_CHESTER_SMALL_F]: Add - `AH_BLUE_SMALL_F_TOP'. - -2003-01-11 David Turner <david@freetype.org> - - * include/freetype/internal/fnttypes.h (WinFNT_HeaderRec): Increase - size of `reserved2' to avoid memory overwrites. - -2003-01-08 Huw Dawies <huw@codeweavers.com> - - * src/winfonts/winfnt.c (winfnt_header_fields): Read 16 bytes into - `reserved2', not `reserved'. - - * src/base/ftobjs.c (find_unicode_charmap): Fixed the error code - returned when the font doesn't contain a Unicode charmap. This - allows FT2 to load `symbol.ttf' and a few others correctly since the - last release. - (open_face): Fix return value. - -2003-01-08 Owen Taylor <owen@redhat.com> - - Implemented the FT_RENDER_MODE_LIGHT hinting mode in the auto and - postscript hinters. - - * src/autohint/ahtypes.h (AH_HinterRec): Add `do_stem_adjust'. - * src/autohint/ahhint.c (ah_compute_stem_width): Handle - hinter->do_stem_adjust. - (ah_hinter_load_glyph): Set hinter->do_stem_adjust. - - * src/pshinter/pshalgo3.h (PSH3_GlyphRec): Add `do_stem_adjust'. - * src/pshinter/pshalgo3.c (psh3_hint_align): Use `do_stem_adjust'. - (ps3_hints_apply): Handle FT_RENDER_MODE_LIGHT. - - * include/freetype/freetype.h (FT_Render_Mode): Add - FT_RENDER_MODE_LIGHT. - - * src/truetype/ttgload.c: Fixing the TrueType loader to handle - invalid composites correctly by limiting the recursion depth. - (TT_MAX_COMPOSITE_RECURSE): New macro. - (load_truetype_glyph): Add argument `recurse_count'. - Load a composite only if the numbers of contours is -1, emit error - otherwise. - (TT_Load_Glyph): Updated. - -2003-01-08 David Turner <david@freetype.org> - - * Jamrules, Jamfile, Jamfile.in, src/*/Jamfile: Small changes to - support the compilation of FreeType 2 as part of larger projects - with their own configuration options (only with Jam). - -2003-01-07 David Turner <david@freetype.org> - - * src/base/ftstroker.c: Probably the last bug-fixes to the stroker; - the API is likely to change, however. - (ft_stroke_border_close): Don't record empty paths. - (ft_stroke_border_get_counts): Increase `num_points' also in for loop. - (ft_stroke_border_export): Don't increase `write' twice in for loops. - (ft_stroker_outside): Handle `phi' together with `theta'. - (FT_Stroker_ParseOutline): New function. - - * src/base/fttrigon.c (FT_Angle_Diff): Fixing function: It returned - invalid values for large negative angle differences (resulting in - incorrect stroker computations, among other things). - - * src/cache/ftccache.c (ftc_node_hash_unlink): Removing incorrect - assertion, and changing code to avoid hash table size contraction. - - * src/base/Jamfile, src/base/rules.mk, src/base/descrip.mms: Adding - `ftstroker' to default build, as optional component. - -2002-12-26 David Turner <david@freetype.org> - - * src/gzip/adler32.c, src/gzip/infblock.c, src/gzip/inflate.c, - src/gzip/inftrees.c, src/gzip/zconf.h, src/gzip/zlib.h, - src/gzip/zutil.h: Updates to allow compilation without compiler - warnings with LCC-Win32. - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 4. - * builds/unix/configure.ac (version_info): Increased to 9:3:3. - * builds/unix/configure: Regenerated. - * docs/VERSION.DLL: Updated. - -2002-12-23 Anthony Fok <anthony@thizlinux.com> - - * builds/unix/configure.ac, builds/unix/unix-cc.in (LINK_LIBRARY), - builds/unix/unix-def.in (SYSTEM_ZLIB): Small fix to configure - sub-system on Unix to allow other programs to correctly link with - zlib when needed. - -2002-12-19 David Turner <david@freetype.org> - - * include/freetype/internal/sfnt.h (SFNT_Load_Table_Func): New - function pointer. - - * include/freetype/tttables.h (FT_Load_Sfnt_Table): New function. - * src/base/ftobjs.c: Implement it. - - * src/sfnt/sfdriver.c (sfnt_get_interface): Handle `load_sfnt' - module request. - -2002-12-17 David Turner <david@freetype.org> - - * src/base/ftobjs.c (find_unicode_charmap): Added some comments to - better explain what's happening there. - (open_face): Included Graham Asher's fix to prevent faces without - Unicode charmaps from loading. - - * src/winfonts/winfnt.c: Included George Williams's fix to support - version 2 fonts correctly. - (winfnt_header_fields): Updated. - (fnt_font_load): Handle version 2 fonts. - (FNT_Load_Glyph): Updated. - -2002-12-16 David Turner <david@freetype.org> - - * docs/VERSION.DLL: Updating document to better explain the - differences between the three version numbers being used on Unix, as - well as providing an autoconf fragment provided by Lars Clausen. - - * src/smooth/ftgrays.c (gray_render_conic): Fixed small bug that - prevented bezier arcs with negative vertical coordinates to be - rendered appropriately. - -2002-12-02 Antoine Leca <Antoine-Freetype@Leca-Marti.org> - - * src/base/ftobjs.c: Modified the logic to get Unicode charmaps. - Now it loads UCS-4 charmaps when there is one. - (find_unicode_charmap): New function. - (open_face): Refer to the above one. - (FT_Select_Charmap): Idem. - -2002-11-29 Antoine Leca <Antoine-Freetype@Leca-Marti.org> - - * include/freetype/ftgzip.h: Correct the name of the controlling - macro (was __FTXF86_H__ ...). - -2002-11-27 Vincent Caron <v.caron@zerodeux.net> - - * builds/unix/unix-def.in, builds/unix/freetype-config.in, - builds/unix/configure.ac, src/gzip/rules.mk, src/gzip/ftgzip.c - [FT_CONFIG_OPTION_SYSTEM_ZLIB]: Adding support for system zlib - installations if available on the target platform (Unix only). - -2002-11-23 David Turner <david@freetype.org> - - * src/cff/cffload.c (cff_charset_load, cff_encoding_load): Modified - charset loader to accept pre-defined charsets, even when the font - contains fewer glyphs. Also enforced more checks to ensure that we - never overflow the character codes array in the encoding. - -2002-11-22 Antoine Leca <Antoine-Freetype@Leca-Marti.org> - - * include/freetype/ttnameid.h: Updated to latest OpenType - specification. - -2002-11-18 David Turner <david@freetype.org> - - - * Version 2.1.3 released. - ========================= - - -2002-11-07 David Turner <david@freetype.org> - - * src/cache/ftcsbit.c (ftc_sbit_node_load): Fixed a small bug that - caused problems with embedded bitmaps. - - * src/otlayout/otlayout.h, src/otlyaout/otlconf.h, - src/otlayout/otlgsub.c, src/otlayout/otlgsub.h, - src/otlayout/otlparse.c, src/otlayout/otlparse.h, - src/otlayout/otlutils.h: Updating the OpenType Layout code, adding - support fot the first GSUB lookups. Nothing that really compiles - for now though. - - * src/autohint/ahhint.c (ah_align_serif_edge): Disabled serif stem - width quantization. It produces slightly better shapes though this - is not distinguishable with many fonts. - Remove other dead code. - - * src/Jamfile, src/*/Jamfile: Simplified. - Use $(FT2_SRC_DIR). - -2002-11-06 David Turner <david@freetype.org> - - * include/freetype/freetype.h (FT_LOAD_TARGET_LIGHT): New macro. - (FT_LOAD_TARGET, FT_LOAD_TARGET_MODE): Use `& 15' instead of `& 7'. - -2002-11-05 David Turner <david@freetype.org> - - * include/freetype/config/ftoption.h, src/gzip/ftgzip.c: Added - support for the FT_CONFIG_OPTION_SYSTEM_ZLIB option, used to specify - the use of system-wide zlib. - - Note that this macro, as well as - FT_CONFIG_OPTION_BYTECODE_INTERPRETER, is not #undef-ed anymore. - This allows the build system to define them depending on the - configuration (typically by adding -D flags at compile time). - - * src/sfnt/ttcmap0.c (tt_face_build_cmaps): Removed compiler - warnings in optimized mode relative to the `volatile' local - variables. This was not a compiler bug after all, but the fact that - a pointer to a volatile variable is not the same as a volatile - pointer to a variable :-) - - The fix was to change - `volatile FT_Byte* p' - into - `FT_Byte* volatile p'. - - * src/pfr/pfrload.c (pfr_phy_font_load), src/pfr/pfrdrivr.c - (pfr_get_metrics), src/gzip/inftrees.c: Removed compiler warnings in - optimized modes. - - * src/gzip/*.[hc]: Modified our zlib copy in order to prevent - exporting any zlib function names outside of the component. This - prevents linking problems on some platforms, when applications want - to link FreeType _and_ zlib together. - -2002-11-05 Juliusz <jch@pps.jussieu.fr> - - * src/psaux/psobjs.c (ps_table_add): Modified increment loop in - order to implement exponential behaviour. - -2002-11-01 David Turner <david@freetype.org> - - Added PFR-specific public API. Fixed the kerning retrievel routine - (it returned invalid values when the outline and metrics resolution - differ). - - * include/freetype/ftpfr.h, include/freetype/internal/pfr.h: New - files. - - * include/freetype/internal/internal.h (FT_INTERNAL_PFR_H): New - macro for pfr.h. - - * src/base/ftpfr.c: New file. - * src/base/Jamfile, src/base/descrip.mms: Updated. - - * src/pfr/pfrdrivr.c: Include FT_INTERNAL_PFR_H. - (pfr_get_kerning, pfr_get_advance, pfr_get_metrics): New functions. - (pfr_service_rec): New format interface. - (pfr_driver_class): Use `pfr_service_rec'. - Replace `pfr_face_get_kerning' with `pfr_get_kerning'. - * src/pfr/pfrobjs.c: Remove dead code. - - * src/base/ftobjs.c (ft_glyphslot_clear): Small internal fix to - better support bitmap-based font formats. - - * src/base/ftsynth.c (FT_GlyphSlot_Embolden): Fix handling of - `scale'. - Fix arguments to `FT_Vector_From_Polar'. - -2002-10-31 David Turner <david@freetype.org> - - Add support for automatic handling of gzip-compressed PCF files. - - * src/gzip/*: New files, taken from the zlib package (except - ftgzip.c). - - * include/freetype/ftgzip.h, src/gzip/ftgzip.c: New files. - * include/freetype/config/ftheader.h (FT_GZIP_H): New macro for - `ftgzip.h'. - - * src/pcf/pcfdriver.c: Include FT_GZIP_H and FT_ERRORS_H. - (PCF_Face_Init): If normal open fails, try to open gzip stream. - (PCF_Face_Done): Close gzip stream. - - * include/freetype/internal/pcftypes.h (PCF_Public_FaceRec), - src/pcf/pcf.h (PCF_FaceRec): Add `gzip_stream' and `gzip_source'. - - * include/freetype/config/ftoption.h (FT_CONFIG_OPTION_USE_ZLIB): - New macro. - (T1_CONFIG_OPTION_DISABLE_HINTER, FT_CONFIG_OPTION_USE_CMAPS - FT_CONFIG_OPTION_NO_CONVENIENCE_FUNCS, - FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS): Removed. - - (FT_EXPORT, FT_EXPORT_DEF, FT_DEBUG_LEVEL_ERROR, - FT_DEBUG_LEVEL_TRACE, FT_DEBUG_MEMORY): Comment out definitions so - that platform specific configuration file can override. - - * include/freetype/internal/ftstream.h: Include FT_SYSTEM_H. - -2002-10-30 David Turner <david@freetype.org> - - * FreeType 2.1.3rc3 released. - -2002-10-25 David Turner <david@freetype.org> - - * include/freetype/ftcache.h (FT_POINTER_TO_ULONG): New macro. - (FTC_FACE_ID_HASH): Rewritten, using FT_POINTER_TO_ULONG. - -2002-10-22 Giuseppe Ghib� <ghibo@mandrakesoft.com> - - * include/freetype/freetype.h (FT_Encoding): Fix entry for latin-2. - -2002-10-07 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h (FT_Open_Face): Use `const' for `args' - (suggested by Graham). - * src/base/ftobjs.c (FT_Open_Face): Updated. - (ft_input_stream_new): Ditto. - -2002-10-05 David Turner <david@freetype.org> - - Adding support for embedded bitmaps to the PFR driver, and rewriting - its kerning loader/handler to use all kerning pairs in a physical - font (and not just the first item). - - * src/pfr/pfr.c: Include `pfrsbit.c'. - * src/pfr/pfrgload.c: Include `pfrsbit.h'. - * src/pfr/pfrload.c (pfr_extra_item_load_kerning_pairs): Rewritten. - (pfr_phy_font_done, pfr_phy_font_load): Updated. - * src/pfr/pfrobks.c: Include `pfrsbit.h'. - (pfr_face_init): Handle kerning and embedded bitmaps. - (pfr_slot_load): Load embedded bitmaps. - (PFR_KERN_INDEX): Removed. - (pfr_face_get_kerning): Rewritten. - * src/pfr/pfrsbit.c, src/pfr/pfrsbit.h: New files. - * src/pfr/pfrtypes.h (PFR_KernItemRec): New structure. - (PFR_KERN_INDEX): New macro. - (PFR_PhyFontRec): Add items for kerning and embedded bitmaps. - * src/pfr/Jamfile (_sources) [FT2_MULTI]: Add `pfrsbit'. - - * src/base/ftobjs.c (FT_Load_Glyph): Don't load bitmap fonts if - FT_LOAD_NO_RECURSE is set. - Load embedded bitmaps only if FT_LOAD_NO_BITMAP isn't set. - - * src/tools/docmaker/content.py, src/tools/docmaker/sources.py, - src/tools/docmaker/tohtml.py: Fixing a few nasty bugs. - - * src/sfnt/ttcmap0.c (tt_cmap4_validate): The validator for format 4 - sub-tables is now capable of dealing with invalid `length' fields at - the start of the sub-table. This allows fonts like `mg______.ttf' - (i.e. Marriage) to return accurate charmaps. - - * docs/CHANGES: Updated. - -2002-10-05 Werner Lemberg <wl@gnu.org> - - * src/smooth/ftgrays.c (SUBPIXELS): Add cast to `TPos'. - Update all callers. - (TRUNC): Add cast to `TCoord'. - Update all callers. - (TRaster): Use `TPos' for min_ex, max_ex, min_ey, max_ey, and - last_ey. - Update all casts. - (gray_render_line): Fix casts for `p' and `first'. - -2002-10-02 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/bdf/bdflib.c (bdf_load_font): Allocate the _bdf_parse_t - structure with FT_ALLOC instead of using the stack. - -2002-09-27 Werner Lemberg <wl@gnu.org> - - * src/include/freetype/internal/tttypes.h (num_sbit_strikes, - num_sbit_scales): Use `FT_ULong'. - * src/sfnt/sfobjs.c (sfnt_load_face): Updated accordingly. - * src/sfnt/ttsbit.c (tt_face_set_sbit_strike): Ditto. - (find_sbit_image): Remove cast. - * src/raster/ftrend1.c (ft_raster1_render): Fix cast. - -2002-09-27 Wolfgang Domr�se <porthos.domroese@harz.de> - - * src/sfnt/ttload.c (tt_face_load_names): Use cast. - * src/sfnt/ttcmap.c (code_to_next2): Use long constant. - (code_to_index4): Use cast. - (code_to_index8_12): Fix cast. - * src/sfnt/ttcmap0.c (tt_cmap4_char_next, tt_cmap8_char_index, - tt_cmap12_char_index): Use cast for `result'. - (tt_face_build_cmaps): Use cast. - * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_ucs4): Use cast for - `code'. - (sfnt_load_face): Use FT_Int32 for `flags'. - - * src/smooth/ftgrays.c (gray_render_scanline, gray_render_line, - gray_compute_cbox, gray_convert_glyph, gray_raster_reset): Add casts - to `TCoord' and `int'. - More 16bit fixes. - s/FT_Pos/TPos/. - * src/smooth/ftsmooth.c (ft_smooth_render_generic): Add casts. - -2002-09-26 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttpost.c (load_post_names, tt_face_free_ps_names, - tt_face_get_ps_name): Replace switch statement with if clauses to - make it more portable. - - * src/cff/cffobjs.c (cff_face_init): Ditto. - - * include/freetype/ftmodule.h (FT_Module_Class): Use `FT_Long' for - `module_size'. - * include/freetype/ftrender.h (FT_Glyph_Class_): Use `FT_Long' for - `glyph_size'. - - * src/base/ftobjs.c (FT_Render_Glyph): Change second parameter to - `FT_Render_Mode'. - (FT_Render_Glyph_Internal): Change third parameter to - `FT_Render_Mode'. - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Change second parameter - to `FT_Render_Mode'. - - * src/raster/ftrend1.c (ft_raster1_render): Change third parameter - to `FT_Render_Mode'. - * src/smooth/ftsmooth.c (ft_smooth_render, ft_smooth_render_lcd, - ft_smooth_render_lcd_v): Ditto. - (ft_smooth_render_generic): Change third and fifth parameter to - `FT_Render_Mode'. - - * include/freetype/freetype.h, include/freetype/internal/ftobjs.h, - include/freetype/ftglyph.h: Updated. - - * src/cff/cffdrivr.c (Load_Glyph), src/pcf/pcfdriver.c - (PCF_Glyph_Load), src/pfr/pfrobjs.c (pfr_slot_load), - src/winfonts/winfnt.c (FNT_Load_Glyph), src/t42/t42objs.c - (T42_GlyphSlot_Load), src/bdf/bdfdrivr.c (BDF_Glyph_Load): Change - fourth parameter to `FT_Int32'. - - * src/pfr/pfrobjs.c (pfr_face_init): Add two missing parameters - and declare them as unused. - - * src/cid/cidparse.h (CID_Parser): Use FT_Long for `postscript_len'. - - * src/psnames/psnames.h (PS_Unicode_Value_Func): Change return - value to FT_UInt32. - * src/psnames/psmodule.c (ps_unicode_value, ps_build_unicode_table): - Updated accordingly. - -2002-09-26 Wolfgang Domr�se <porthos.domroese@harz.de> - - * src/cff/cffdrivr.c (Get_Kerning): Use FT_Long for `middle'. - (cff_get_glyph_name): Use cast for result of ft_strlen. - * src/cff/cffparse.c (cff_parse_real): User cast for assigning - `exp'. - * src/cff/cffload.c (cff_index_get_pointers): Use FT_ULong for - some local variables. - (cff_charset_load, cff_encoding_load): Use casts to FT_UInt for some - switch statements. - (cff_font_load): Use cast in call to CFF_Load_FD_Select. - * src/cff/cffobjs.c (cff_size_init): Use more casts. - (cff_face_init): Use FT_Int32 for `flags'. - * src/cff/cffgload.c (cff_operator_seac): Use cast for assigning - `adx' and `ady'. - (cff_decoder_parse_charstrings): Use FT_ULong for third parameter. - Use more casts. - * src/cff/cffcmap.c (cff_cmap_unicode_init): Use cast for `count'. - - * src/cid/cidload.c (cid_read_subrs): Use FT_ULong for `len'. - * src/cid/cidgload.c (cid_load_glyph): Add missing cast for - `cid_get_offset'. - - * src/psaux/t1decode.c (t1_decoder_parse_charstrings) <18>: Use - cast for `num_points'. - (t1_decoder_init): Use cast for assigning `decoder->num_glyphs'. - - * src/base/ftdebug.c (ft_debug_init): Use FT_Int. - * include/freetype/internal/ftdriver.h (FT_Slot_LoadFunc): Use - `FT_Int32' for fourth parameter. - * src/base/ftobjs.c (open_face): Use cast for calling - clazz->init_face. - - * src/raster/ftraster.c (Set_High_Precision): Use `1' instead of - `1L'. - (Finalize_Profile_Table, Line_Up, ft_black_init): Use casts. - * src/raster/ftrend1.c (ft_raster1_render): Ditto. - - * src/sfnt/sfnt_dir_check: Compare `magic' with unsigned long - constant. - -2002-09-26 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * builds/amiga/include/freetype/config/ftmodule.h: Updated. - -2002-09-25 David Turner <david@freetype.org> - - * src/autohint/ahtypes.h (AH_HINT_METRICS): Disabling metrics - hinting in the auto-hinter. This produces much better anti-aliased - text. - - * docs/CHANGES: Updating the changes documentation. - -2002-09-25 Anthony Fok <anthony@thizlinux.com> - - * src/sfnt/ttcmap0.c (tt_cmap4_validate, tt_cmap4_char_index, - tt_cmap4_char_next): Added support for opens___.ttf (it contains a - charmap that uses offset=0xFFFFU instead of 0x0000 to indicate a - missing glyph). - -2002-09-21 Wolfgang Domr�se <porthos.domroese@harz.de> - - * src/truetype/ttdriver.c (Load_Glyph): Fourth parameter must be - FT_Int32. - * src/truetype/ttgload.c, src/truetype/ttgload.h (TT_Load_Glyph): - Ditto. - -2002-09-19 Wolfgang Domr�se <porthos.domroese@harz.de> - - More 16bit fixes. - - * src/autohint/ahglobal.c (sort_values): Use FT_Pos for `swap'. - (ah_hinter_compute_widths): Use FT_Pos for `dist'. - Use AH_MAX_WIDTHS. - * src/autohint/ahglyph.c (ah_outline_scale_blue_edges): Use FT_Pos - for `delta'. - (ah_outline_compute_edges): Replace some ints with FT_Int and - FT_Pos. - (ah_test_extrema): Clean up code. - (ah_get_orientation): Use 4 FT_Int variables instead of FT_BBox to - hold indices. - * src/autohint/ahtypes.h (AH_SegmentRec): Change type of `score' - to FT_Pos. - -2002-09-19 Werner Lemberg <wl@gnu.org> - - * builds/unix/config.guess, builds/unix/config.sub: Updated to - recent versions. - -2002-09-18 David Turner <david@freetype.org> - - * src/base/ftobjs.c (FT_Library_Version): Bugfix. - - * FreeType 2.1.3rc2 (release candidate 2) is released! - -2002-09-17 David Turner <david@freetype.org> - - * include/freetype/freetype.h, include/freetype/ftimage.h, - include/freetype/ftstroker.h, include/freetype/ftsysio.h, - include/freetype/ftsysmem.h, include/freetype/ttnameid.h: Updating - the in-source documentation. - - * src/tools/docmaker/tohtml.py: Updating the HTML formatter in the - DocMaker tool. - - * src/tools/docmaker.py: Removed. - -2002-09-17 Werner Lemberg <wl@gnu.org> - - More 16bit fixes. - - * src/psaux/psobjs.c (reallocate_t1_table): Use FT_Long for - second parameter. - -2002-09-16 Werner Lemberg <wl@gnu.org> - - 16bit fixes from Wolfgang Domr�se. - - * src/type1/t1parse.h (T1_ParserRec): Change type of `base_len' - and `private_len' to FT_Long. - * src/type1/t1parse.c (T1_Get_Private_Dict): Remove cast for - `private_len'. - * src/type1/t1load.c: Use FT_Int cast for most calls of T1_ToInt. - Use FT_PtrDist where appropriate. - (parse_encoding): Use FT_Long for `count' and `n'. - (read_binary_data): Use FT_Long* for second parameter. - * src/type1/t1afm.c (afm_atoindex): Use FT_PtrDist. - - * src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused label. - * src/pshinter/pshalgo3.c (psh3_hint_align): Remove unused variable. - -2002-09-14 Werner Lemberg <wl@gnu.org> - - Making ftgrays.c compile stand-alone again. - - * include/freetype/ftimage.h: Include ft2build.h only if _STANDALONE_ - isn't defined. - * src/smooth/ftgrays.c [_STANDALONE_]: Define ft_memset, - FT_BEGIN_HEADER, FT_END_HEADER. - (FT_MEM_ZERO): Define. - (TRaster) [GRAYS_USE_GAMMA]: Use `unsigned char' instead of FT_Byte. - (gray_render_span, gray_init_gamma): Don't use `FT_UInt'. - Don't cast with `FT_Byte'. - (grays_init_gamma): Don't use `FT_UInt'. - -2002-09-14 Werner Lemberg <wl@gnu.org> - - * src/base/ftinit.c (FT_Add_Default_Modules): Improve error message. - * src/pcf/pcfdriver.c (PCF_Face_Done): Improve tracing message. - * include/freetype/config/ftoption.h (FT_MAX_MODULES): Increased - to 32. - -2002-09-10 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.ac (version_info): Set to 9:2:3. - * builds/unix/configure: Regenerated. - * docs/VERSION.DLL: Updated. - -2002-09-09 David Turner <david@freetype.org> - - * src/pshinter/pshalgo2.c (psh2_glyph_find_strong_points), - src/pshinter/pshalgo3.c (psh3_glyph_find_strong_points): Adding fix - to prevent seg fault when hints are provided in an empty glyph. - - * src/cache/ftccache.i (GEN_CACHE_LOOKUP) [FT_DEBUG_LEVEL_ERROR]: - Removed conditional code. This fixes a bug that prevented - compilation in debug mode of template instantiation. - - * include/freetype/ftimage.h: Removed incorrect `zft_' definitions - and updated constants documentation comments. - - * src/cff/cffparse.c (cff_parser_run): Fixed the CFF table loader. - It didn't accept empty arrays, and this prevented the loading of - certain fonts. - - * include/freetype/freetype.h (FT_FaceRec): Updating documentation - comment. The `descender' value is always *negative*, not positive. - -2002-09-09 Owen Taylor <owen@redhat.com> - - * src/pcf/pcfdriver.c (PCF_Glyph_Load): Fixing incorrect computation - of bitmap metrics. - -2002-09-08 David Turner <david@freetype.org> - - Various updates to correctly support sub-pixel rendering. - - * include/freetype/config/ftmodule.h: Add two renderers for LCD. - - * src/base/ftobjs.c (FT_Load_Glyph): Updated. - - * src/smooth/ftsmooth.c (ft_smooth_render_lcd, - ft_smooth_render_lcd_v): Set FT_PIXEL_MODE_LCD and - FT_PIXEL_MODE_LCD_V, respectively. - - * include/freetype/cache/ftcimage.h (FTC_ImageTypeRec): New - structure. - Updated all users. - (FTC_ImageDesc): Removed. - (FTC_ImageCache_Lookup): Second parameter is now of type - `FTC_ImageType'. - Updated all users. - (FTC_IMAGE_DESC_COMPARE): Updated and renamed to... - (FTC_IMAGE_TYPE_COMPARE): This. - (FTC_IMAGE_DESC_HASH): Updated and renamed to... - (FTC_IMAGE_TYPE_HASH): This. - - * include/freetype/cache/ftcsbits.h (FTC_SBitRec): Field `num_grays' - replaced with `max_grays'. - `pitch' is now FT_Short. - (FTC_SBitCache_Lookup): Second parameter is now of type - `FTC_ImageType'. - Updated all users. - - * src/cache/ftcimage.c (FTC_ImageQueryRec, FTC_ImageFamilyRec): - Updated. - (ftc_image_node_init): Updated. - Moved code to convert type flags to load flags to... - (FTC_Image_Cache_Lookup): This function. - (ftc_image_family_init): Updated. - - * src/cache/ftcsbit.c (FTC_SBitQueryRec, FTC_SBitFamilyRec): - Updated. - (ftc_sbit_node_load): Updated. - Moved code to convert type flags to load flags to... - (FTC_SBitCache_Lookup): This function. - - * src/autohint/ahtypes.h (AH_HinterRec): Replace `no_*_hints' with - `do_*_snapping'. - Update all users (with negation). - * src/autohint/ahhint.c (ah_compute_stem_width): Fix threshold for - `dist' for `delta' < 40. - - * src/pshinter/pshalgo3.h (PSH3_GlyphRec): Replace `no_*_hints' with - `do_*_snapping'. - Update all users (with negation). - * src/pshinter/pshalgo3.c (psh3_dimension_quantize_len): New - function. - (psh3_hint_align): Use it. - Improve hinting code. - [STRONGER]: Removed. - (STRONGER): Removed. - - * include/freetype/freetype.h (FT_Set_Hint_Flags, FT_HINT_*): - Removed. - -2002-09-05 Werner Lemberg <wl@gnu.org> - - * src/cid/cidobjs.c (CID_Size_Init): Renamed to... - (cid_size_init): This. - * src/psaux/psobjs.c (T1_Builder_Add_Point1): Renamed to... - (t1_builder_add_point1): This. - - Updated all affected code. - - * src/pshinter/pshalgo3.c (psh3_hint_align): Fix compiler warnings. - * src/type1/t1gload.c (T1_Compute_Max_Advance): Ditto. - -2002-09-04 David Turner <david@freetype.org> - - * include/freetype/freetype.h: Corrected the definition of - ft_encoding_symbol to be FT_ENCODING_MS_SYMBOL (instead of - the erroneous FT_ENCODING_SYMBOL). - - * builds/unix/unix-def.in (datadir): Initialize it (thanks to - Anthony Fok). - -2002-08-29 David Turner <david@freetype.org> - - Slight modification to the Postscript hinter to slightly increase - the contrast of smooth hinting. This is very similar to what the - auto-hinter does when it comes to stem width computations. However, - it produces better results with well-hinted fonts. - - * include/freetype/internal/psaux.h (T1_Decoder_FuncsRec): Add hint - mode to `init' member function. - (T1_DecoderRec): Add hint mode. - * include/freetype/internal/pshints (T1_Hints_ApplyFunc, - T2_Hints_ApplyFunc): Pass `hint_mode', not `hint_flags'. - * src/psaux/t1decode.c (t1_decoder_init): Add hint mode argument. - * src/pshinter/pshalgo1.c (ps1_hints_apply): Pass hint mode, not - hint flags. - * src/pshinter/pshalgo2.c (ps2_hints_apply): Ditto. - * src/pshinter/pshalgo3.c (ps3_hints_apply): Ditto. - (STRONGER): New macro. - (psh3_hint_align, psh3_hint_table_align_hints): Pass `glyph' instead - of `hint_flags'. - Implement announced changes. - * src/pshinter/pshalgo3.h (PSH3_GlyphRec): Add flags to control - vertical and horizontal hints and snapping. - - * README, docs/CHANGES: Updating for the 2.1.3 release. - -2002-08-27 David Turner <david@freetype.org> - - * Massive re-formatting changes to many, many source files. I don't - want to list them all here. The operations performed were all - logical transformations of the sources: - - - trying to convert all enums and constants to CAPITALIZED_STYLE, - #with define definitions like - - #define my_old_constants MY_NEW_CONSTANT - - - big, big update of the documentation comments - - * include/freetype/freetype.h, src/base/ftobjs.c, - src/smooth/ftsmooth.c, include/freetype/ftimage.h: Adding support - for LCD-optimized rendering though the new constants/enums: - - FT_RENDER_MODE_LCD, FT_RENDER_MODE_LCD_V - FT_PIXEL_MODE_LCD, FT_PIXEL_MODE_LCD_V - - This is still work in progress, don't expect everything to work - correctly though most of the features have been implemented. - - * Adding new FT_LOAD_XXX flags, used to specify both hinting and - rendering targets: - - FT_LOAD_TARGET_NORMAL :: anti-aliased hinting & rendering - FT_LOAD_TARGET_MONO :: monochrome bitmaps - FT_LOAD_TARGET_LCD :: horizontal RGB/BGR decimated - hinting & rendering - FT_LOAD_TARGET_LCD_V :: vertical RGB/BGR decimated - hinting & rendering - - Note that FT_LOAD_TARGET_NORMAL is 0, which means that the default - behaviour of the font engine is _unchanged_. - - * include/freetype/ftimage.h - (FT_Outline_{Move,Line,Conic,Cubic}To_Func): Renamed to... - (FT_Outline_{Move,Line,Conic,Cubic}ToFunc): This. - (FT_Raster_Span_Func): Renamed to ... - (FT_SpanFunc): This. - (FT_Raster_{New,Done,Reset,Set_Mode,Render}_Func): Renamed to ... - (FT_Raster_{New,Done,Reset,SetMode,Render}Func}: This. - - Updated all affected code. - - * include/freetype/ftrender.h - (FT_Glyph_{Init,Done,Transform,BBox,Copy,Prepare}_Func): Renamed - to ... - (FT_Glyph_{Init,Done,Transform,GetBBox,Copy,Prepare}Func): This. - (FTRenderer_{render,transform,getCBox,setMode}): Renamed to ... - (FT_Renderer_{RenderFunc,TransformFunc,GetCBoxFunc,SeteModeFunc}): - This. - - Updated all affected code. - - * src/autohint/ahtypes.h (AH_Point, AH_Segment, AH_Edge, AH_Globals, - AH_Face_Globals, AH_Outline, AH_Hinter): These typedefs are now - pointers to the corresponding `*Rec' structures. All source files - have been updated accordingly. - - * src/cff/cffgload.c (cff_decoder_init): Add hint mode as parameter. - * src/cff/cffgload.h (CFF_Decoder): Add `hint_mode' element. - - * src/cid/cidgload.c (CID_Compute_Max_Advance): Renamed to... - (cid_face_compute_max_advance): This. - (CID_Load_Glyph): Renamed to... - (cid_slot_load_glyph): This. - * src/cid/cidload.c (CID_Open_Face): Renamed to... - (cid_face_open): This. - * src/cid/cidobjs.c (CID_GlyphSlot_{Done,Init}): Renamed to... - (cid_slot_{done,init}): This. - (CID_Size_{Get_Globals_Funcs,Done,Reset): Renamed to... - (cid_size_{get_globals_funcs,done,reset): This. - (CID_Face_{Done,Init}): Renamed to... - (cid_face_{done,init}): This. - (CID_Driver_{Done,Init}: Renamed to... - (cid_driver_{done,init}: This. - * src/cid/cidparse.c (CID_{New,Done}_Parser): Renamed to... - (cid_parser_{new,done}): This. - * src/cid/cidparse.h (CID_Skip_{Spaces,Alpha}): Renamed to... - (cid_parser_skip_{spaces,alpha}): This. - (CID_To{Int,Fixed,CoordArray,FixedArray,Token,TokenArray}): Renamed - to... - (cid_parser_to_{int,fixed,coord_array,fixed_array,token,token_array}): - This. - (CID_Load_{Field,Field_Table): Renamed to... - (cid_parser_load_{field,field_table}): This. - * src/cid/cidriver.c (CID_Get_Interface): Renamed to... - (cid_get_interface): This. - - Updated all affected code. - - * src/psaux/psobjs.c (PS_Table_*): Renamed to... - (ps_table_*): This. - (T1_Builder_*): Renamed to... - (t1_builder_*): This. - * src/psaux/t1decode.c (T1_Decoder_*): Renamed to... - (t1_decoder_*): This. - - * src/psnames/psmodule.c (PS_*): Renamed to... - (ps_*): This. - - Updated all affected code. - - * src/sfnt/sfdriver (SFNT_Get_Interface): Renamed to... - (sfnt_get_interface): This. - * src/sfnt/sfobjs.c (SFNT_*): Renamed to... - (sfnt_*): This. - * src/sfnt/ttcmap.c (TT_CharMap_{Load,Free}): Renamed to... - (tt_face_{load,free}_charmap): This. - * src/sfnt/ttcmap0.c (TT_Build_CMaps): Renamed to... - (tt_face_build_cmaps): This. - * src/sfnt/ttload.c (TT_*): Renamed to... - (tt_face_*): This. - * src/sfnt/ttpost.c (TT_Post_Default_Names): Renamed to... - (tt_post_default_names): This. - (Load_*): Renamed to... - (load_*): This. - (TT_*): Renamed to... - (tt_face_*): This. - * src/sfnt/ttsbit.c (TT_*): Renamed to... - (tt_face_*): This. - ({Find,Load,Crop}_*): Renamed to... - ({find,load,crop}_*): This. - - Updated all affected code. - - * src/smooth/ftsmooth.c (ft_smooth_render): Renamed to... - (ft_smooth_render_generic): This. - Make function more generic by adding vertical and horizontal scaling - factors. - (ft_smooth_render, ft_smooth_render_lcd, ft_smooth_render_lcd_v): - New functions. - - (ft_smooth_locd_renderer_class, ft_smooth_lcdv_renderer_class): New - classes. - - * src/truetype/ttobjs.c (TT_{Done,New}_GlyphZone): Renamed to... - (tt_glyphzone_{done,new}): This. - (TT_{Face,Size,Driver}_*): Renamed to... - (tt_{face,size,driver}_*): This. - * src/truetype/ttpload.c (TT_Load_Locations): Renamed to... - (tt_face_load_loca): This. - (TT_Load_Programs): Renamed to... - (tt_face_load_fpgm): This. - (TT_*): Renamed to... - (tt_face_*): This. - -2002-08-27 Werner Lemberg <wl@gnu.org> - - * docs/VERSION.DLL: New file. - -2002-08-23 Graham Asher <graham.asher@btinternet.com> - - * src/cff/cffgload.c (cff_operator_seac) - [FT_CONFIG_OPTION_INCREMENTAL]: Incremental fonts (actually not - incremental in the case of CFF but just using callbacks to get glyph - recipes) pass the character code, not the glyph index, to the - get_glyph_data function; they have no valid charset table. - - * src/cff/cffload.c (cff_font_load): Removed special cases for - FT_CONFIG_OPTION_INCREMENTAL, which are no longer necessary; CFF - fonts provided via the incremental interface now have to conform - more closely to the CFF font format. - - * src/cff/cffload.h (cff_font_load): Removed argument now unneeded. - - * src/cff/cffobjs.c (cff_face_init): Changed call to cff_font_load - to conform with new signature. - -2002-08-22 David Turner <david@freetype.org> - - * src/base/ftobject.c, src/base/ftsynth.c, src/base/ftstroker.c, - src/bdf/bdfdrivr.c: Removed compiler warnings. - -2002-08-21 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshalgo3.c (psh3_glyph_compute_inflections, - psh3_glyph_compute_extrema, psh3_hint_table_find_strong_point): Fix - compiler warnings and resolve shadowing of local variables. - -2002-08-21 David Turner <david@freetype.org> - - The automatic and Postscript hinter now automatically detect - inflection points in glyph outlines and treats them specially. This - is very useful to prevent nasty effect like the disappearing - diagonals of `S' and `s' in many, many fonts. - - * src/autohint/ahtypes.h (ah_flag_inflection): New macro. - * src/autohint/ahangles.c (ah_angle_diff): New function. - * src/autohint/ahangles.h: Updated. - * src/autohint/ahglyph.c (ah_outline_compute_inflections): New - function. - (ah_outline_detect_features): Use it. - * src/autohint/ahhint.c (ah_hinter_align_strong_points) - [!AH_OPTION_NO_WEAK_INTERPOLATION]: Handle inflection. - - * src/tools/docmaker/docmaker.py, src/tools/docmaker/utils.py, - src/tools/docmaker/tohtml.py: Updating the DocMaker tool. - - * include/freetype/freetype.h: Changing the type of the `load_flags' - parameter from `FT_Int' to `FT_Int32', this in order to support more - options. This should only break binary and/or source compatibility - on 16-bit platforms (Atari?). - (FT_LOAD_NO_AUTOHINT): New macro. - - * src/base/ftobjs.c (FT_Load_Glyph): Updated. - Handle FT_LOAD_NO_AUTOHINT. - (FT_Load_Char): Updated. - - * src/pshinter/pshalgo3.c, src/base/ftobjs.c, src/base/ftobject.c, - src/autohint/ahglyph.c, include/freetype/freetype.h: Fixing typos - and removing compiler warnings. - -2002-08-20 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (TT_Get_Metrics): Add guard for k = 0. - -2002-08-20 David Turner <david@freetype.org> - - * src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.c, - src/pshinter/pshglob.c, src/pshinter/pshrec.c, - src/autohint/ahmodule.c [DEBUG_HINTER]: Removing compiler warnings - (only used in development builds anyway). - - Improve support of local extrema and stem edge points. - - * src/pshinter/pshalgo3.h (PSH3_Hint_TableRec): Use PSH3_ZoneRec - for `zones'. - (PSH3_DIR_UP, PSH3_DIR_DOWN): Exchange values. - (PSH3_DIR_HORIZONTAL, PSH3_DIR_VERTICAL): New macros. - (PSH3_DIR_COMPARE, PSH3_DIR_IS_HORIZONTAL, PSH3_IS_VERTICAL): New - macros. - (PSH3_POINT_INFLEX): New enum. - (psh3_point_{is,set}_{off,inflex}): New macros. - (PSH3_POINT_{EXTREMUM,POSITIVE,NEGATIVE,EDGE_MIN,EDGE_MAX): New - enum values. - (psh3_point_{is,set}_{extremum,positive,negative,edge_min,edge_max}): - New macros. - (PSH3_PointRec): New members `flags2' and `org_v'. - (PSH3_POINT_EQUAL_ARG, PSH3_POINT_ANGLE): New macros. - - * src/pshinter/pshalgo3.c [DEBUG_HINTER]: Removing compiler - warnings. - (COMPUTE_INFLEXS): New macro. - (psh3_hint_align): Simplify some basic arithmetic computations. - (psh3_point_is_extremum): Removed. - (psh3_glyph_compute_inflections) [COMPUTE_INFLEXS]: New function. - (psh3_glyph_init) [COMPUTE_INFLEXS]: Use it. - (psh3_glyph_compute_extrema): New function. - (PSH3_STRONG_THRESHOLD): Increased to 30. - (psh3_hint_table_find_strong_point): Improved. - (psh3_glyph_find_strong_points, - psh3_glyph_interpolate_strong_points): Updated. - (psh3_hints_apply): Use psh3_glyph_compute_extrema. - - * test/gview.c (draw_ps3_hint, ps3_draw_control_points): New - functions. - Other small updates. - - * Jamfile: Small updates. - -2002-08-18 Arkadiusz Miskiewicz <misiek@pld.ORG.PL> - - * builds/unix/install.mk (install, uninstall): Add $(DESTDIR) to - make life easier for package maintainers. - -2002-08-18 Werner Lemberg <wl@gnu.org> - - * src/pcf/pcfdriver.c (PCF_Glyph_Load): Fix computation of - horiBearingX. - * src/bdf/bdfdrivr.c (BDF_GlyphLoad): Fix computation of - horiBearingY. - -2002-08-16 George Williams <gww@silcom.com> - - Add support for Apple composite glyphs. - - * include/freetype/config/ftoption.h - (TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED): New macro. - - * src/truetype/ttgload.c (OVERLAP_COMPOUND, SCALED_COMPONENT_OFFSET, - UNSCALED_COMPONENT_OFFSET): New macros for additional OpenType - glyph loading flags. - (load_truetype_glyph): Implement it. - -2002-08-16 Werner Lemberg <wl@gnu.org> - - * src/cff/cffgload.c (cff_free_glyph_data), - src/cff/cffload.c (cff_font_load): Use FT_UNUSED. - -2002-08-15 Werner Lemberg <wl@gnu.org> - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Initialize `error'. - * src/sfnt/sfobjs.c (SFNT_Load_Face): Fix compiler warning. - -2002-08-15 Graham Asher <graham.asher@btinternet.com> - - Implemented the incremental font loading system for the CFF driver. - Tested using the GhostScript-to-FreeType bridge (under development). - - * src/cff/cffgload.c (cff_get_glyph_data, cff_free_glyph_data): New - functions. - (cff_operator_seac, cff_compute_max_advance, cff_slot_load): Use - them. - * src/cff/cffload.c (cff_font_load): Add `face' parameter. - Load charset and encoding only if there are glyphs. - [FT_CONFIG_OPTION_INCREMENTAL]: Incremental fonts don't need - character recipes. - * src/cff/cffload.h, src/cff/cffobjs.c: Updated. - - * src/cid/cidgload.c (cid_load_glyph) - [FT_CONFIG_OPTION_INCREMENTAL]: Corrected the incremental font - loading implementation to use the new system introduced on - 2002-08-01. - -2002-08-06 Werner Lemberg <wl@gnu.org> - - * src/cff/cffcmap.c: Remove compiler warnings. - * src/cache/ftccache.c, src/cache/ftccache.i, - src/pfr/pfrload.c, src/pfr/pfrgload.c: s/index/idx/. - * src/cff/cffload.c: s/select/fdselect/. - * src/raster/ftraster.c: s/wait/waiting/. - -2002-08-01 Graham Asher <graham.asher@btinternet.com> - - * src/type1/t1load.c (T1_Open_Face): Tolerate a face with no - charstrings if there is an incremental loading interface. Type 1 - faces supplied by PostScript interpreters like GhostScript will - typically not provide any charstrings at load time, so this is - essential if they are to work. - -2002-08-01 Graham Asher <graham.asher@btinternet.com> - - Modified incremental loading interface to be closer to David's - preferences. The header freetype.h is not now affected, the - interface is specified via an FT_Parameter, the pointer to the - interface is hidden in an internal part of the face record, and all - the definitions are in ftincrem.h. - - * include/freetype/freetype.h [FT_CONFIG_OPTION_INCREMENTAL]: - Removed. - * include/freetype/internal/ftobjs.h [FT_CONFIG_OPTION_INCREMENTAL]: - Include FT_INCREMENTAL_H. - (FT_Face_InternalRec) [FT_CONFIG_OPTION_INCREMENTAL]: Add - `incremental_interface'. - - * src/base/ftobjs.c (open_face, FT_Open_Face) - [FT_CONFIG_OPTION_INCREMENTAL]: Updated. - * src/sfnt/sfobjs.c (SFNT_Load_Face) [FT_CONFIG_OPTION_INCREMENTAL]: - Updated. - - * src/truetype/ttgload.c (load_truetype_glyph) - [FT_CONFIG_OPTION_INCREMENTAL]: Updated. - Free loaded glyph data properly. - (compute_glyph_metrics, TT_Load_Glyph) - [FT_CONFIG_OPTION_INCREMENTAL]: Updated. - * src/truetype/ttobjs.c (TT_Face_Init) - [FT_CONFIG_OPTION_INCREMENTAL]: Updated. - - * src/type1/t1gload.c (T1_Parse_Glyph_And_Get_Char_String) - [FT_CONFIG_OPTION_INCREMENTAL]: Updated. - (T1_Parse_Glyph) [FT_CONFIG_OPTION_INCREMENTAL]: Updated. - Free loaded glyph data properly. - (T1_Load_Glyph): Updated. - [FT_CONFIG_OPTION_INCREMENTAL]: Free loaded glyph data properly. - -2002-07-30 David Turner <david@freetype.org> - - * include/freetype/ftincrem.h: Adding new experimental header file - to demonstrate a `cleaner' API to support incremental font loading. - - * include/freetype/config/ftheader.h (FT_INCREMENTAL_H): New macro. - - * src/tools/docmaker/*: Adding new (more advanced) version of - the DocMaker tool, using Python's sophisticated regexps. - -2002-07-28 Werner Lemberg <wl@gnu.org> - - s/ft_memset/FT_MEM_SET/. - s/FT_MEM_SET/FT_MEM_ZERO/ where appropriate. - -2002-07-27 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttload.c (sfnt_dir_check): Make it work with TTCs. - -2002-07-26 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (load_truetype_glyph) - [FT_CONFIG_OPTION_INCREMENTAL]: s/memset/ft_memset/. - - * src/autohint/ahhint.c (ah_hint_edges_3): Fix compiler warning. - * src/cff/cffload.c (cff_encoding_load): Remove `memory' variable. - * src/cff/cffcmap.c (cff_cmap_encoding_init): Remove `psnames' - variable. - * src/truetype/ttgload.c (load_truetype_glyph): Remove statement - without effect. - * src/truetype/ttdriver (Get_Char_Index, Get_Next_Char): Removed. - - * src/pshinter/pshalgo3.c (psh3_hint_table_record, - psh3_hint_table_init, psh3_hint_table_activate_mask): Fix error - message. - -2002-07-24 Graham Asher <graham.asher@btinternet.com> - - * src/truetype/ttobjs.c: Fix for bug reported by Sven Neumann - [sven@gimp.org] on the FreeType development forum: `If - FT_CONFIG_OPTION_INCREMENTAL is undefined (this is the default), the - TrueType loader crashes in line 852 of src/truetype/ttgload.c when - it tries to access face->glyph_locations.' - -2002-07-18 Graham Asher <graham.asher@btinternet.com> - - Added types and structures to support incremental typeface loading. - The FT_Incremental_Interface structure, defined in freetype.h, is - designed to be passed to FT_Open_Face to provide callback functions - to obtain glyph recipes and metrics, for fonts like those passed - from PostScript that do not necessarily provide all, or any, glyph - information, when first opened. - - * include/freetype/config/ftoption.h (FT_CONFIG_OPTION_INCREMENTAL): - New configuration macro to enable incremental face loading. By - default it is not defined. - - * include/freetype/freetype.h (FT_Basic_Glyph_Metrics, - FT_Get_Glyph_Data_Func, FT_Get_Glyph_Metrics_Func, - FT_Incremental_Interface_Funcs, FT_Incremental_Interface) - [FT_CONFIG_OPTION_INCREMENTAL]: New. - (FT_Open_Args, FT_FaceRec) [FT_CONFIG_OPTION_INCREMENTAL]: New field - `incremental_interface'. - (FT_Open_Flags) [FT_CONFIG_OPTION_INCREMENTAL]: New enum - `ft_open_incremental'. - - * include/freetype/fttypes.h: Include FT_CONFIG_CONFIG_H. - (FT_Data): New structure to represent binary data. - - * src/base/ftobjs.c (open_face) [FT_CONFIG_OPTION_INCREMENTAL]: - Add parameter for incremental loading. - (FT_Open_Face) [FT_CONFIG_OPTION_INCREMENTAL]: Use incremental - interface. - - * src/truetype/ttgload.c (load_truetype_glyph) - [FT_CONFIG_OPTION_INCREMENTAL]: Added the incremental loading system - for the TrueType driver. - (compute_glyph_metrics): Return FT_Error. - [FT_CONFIG_OPTION_INCREMENTAL]: Check for overriding metrics. - (TT_Load_Glyph) [FT_CONFIG_OPTION_INCREMENTAL]: Don't look for - the glyph table while handling an incremental font. - Get glyph offset. - - * src/truetype/ttobjs.c (TT_Face_Init) - [FT_CONFIG_OPTION_INCOREMENTAL]: Added the incremental loading - system for the TrueType driver. - - * src/cid/cidgload.c (cid_load_glyph) - [FT_CONFIG_OPTION_INCREMENTAL]: Added the incremental loading system - for the CID driver. - - * src/sfnt/sfobjs.c (SFNT_Load_Face) [FT_CONFIG_OPTION_INCREMENTAL]: - Changes to support incremental Type 42 fonts: Assume a font has - glyphs if it has an incremental interface object. - - * src/type1/t1gload.c (T1_Parse_Glyph): Renamed to... - (T1_Parse_Glyph_And_Get_Char_String): This. - [FT_CONFIG_OPTION_INCREMENTAL]: Added support for incrementally - loaded Type 1 faces. - (T1_Parse_Glyph): New function. - (T1_Load_Glyph): Updated. - -2002-07-17 David Turner <david@freetype.org> - - Cleaning up the cache sub-system code; linear hashing is now the - default. - - * include/freetype/cache/ftccache.h, src/cache/ftccache.i, - src/cache/ftccache.c [!FTC_CACHE_USE_LINEAR_HASHING]: Removed. - (FTC_CACHE_USE_LINEAR_HASHING: Removed also. - - FT_CONFIG_OPTION_USE_CMAPS is now the default. - - * include/freetype/internal/ftdriver.h (FT_Driver_ClassRec): Remove - `get_char_index' and `get_next_char'. - - * include/freetype/config/ftoption.h, - include/freetype/internal/tttypes.h, src/base/ftobjs.c, - src/bdf/bdfdrivr.c, src/cff/cffobjs.c, src/pcf/pcfdrivr.c, - src/pfr/pfrdrivr.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c, - src/sfnt/ttcmap0.h, src/sfnt/ttload.c, src/type1/t1objs.c, - src/type42/t42objs.c, src/winfonts/winfnt.c - [!FT_CONFIG_OPTION_USE_CMAPS]: Removed. The new cmap code is now - the default. - - * src/type42/t42objs.c (T42_CMap_CharIndex, T42_CMap_CharNext): - Removed. - * src/type42/t42objs.h: Updated. - - * src/cid/cidriver.c (Cid_Get_Char_Index, Cid_Get_Next_Char): - Removed. - (t1_cid_driver_class): Updated. - * src/truetype/ttdriver.c (tt_driver_class): Updated. - * src/type1/t1driver.c (Get_Char_Index, Get_Next_Char): Removed - (t1_driver_class): Updated. - * src/type42/t42drivr.c (t42_driver_class): Updated. - - * src/base/ftobjs.c (open_face): Select Unicode cmap by default. - - * src/sfnt/ttload.c (TT_Load_SFNT_Header): Fixed a recent bug that - prevented OpenType fonts to be recognized by FreeType. - -2002-07-11 David Turner <david@freetype.org> - - Changing the SFNT loader to check for SFNT-based font files - differently. We now ignore the range `helper' fields and check the - `head' table's magic number instead. - - * include/freetype/internal/tttypes.h (SFNT_HeaderRec): Add `offset' - field. - - * src/sfnt/ttload.c (sfnt_dir_check): New function. - (TT_Load_SFNT_HeaderRec): Renamed to... - (TT_Load_SFNT_Header): This. - Implement new functionality. - * src/sfnt/ttload.h: Updated. - * src/sfnt/sfdriver.c (sfnt_interface): Updated. - - * src/base/ftobject.c, src/base/fthash.c: Updated object sub-system - and dynamic hash table implementation (still experimental, don't - use). - * include/freetype/internal/fthash.h: Updated. - * include/freetype/internal/ftobjs.h (FT_LibraryRec): New member - `meta_class'. - - Fixing a bug in the Type 1 loader that prevented valid font bounding - boxes to be loaded from multiple master fonts. - - * include/freetype/t1tables.h (PS_BlendRec): Add `bboxes' field. - - * include/freetype/internal/psaux.h (T1_FieldType): Add - `T1_FIELD_TYPE_BBOX'. - (T1_FieldLocation): Add `T1_FIELD_LOCATION_BBOX'. - (T1_FIELD_BBOX): New macro. - - * src/psaux/psobjs.c (PS_Parser_LoadField): Handle T1_FIELD_TYPE_BBOX. - * src/type1/t1load.c (t1_allocate_blend): Create blend->bboxes. - (T1_Done_Blend): Free blend->bboxes. - (t1_load_keyword): Handle T1_FIELD_LOCATION_BBOX. - (parse_font_bbox): Commented out. - (t1_keywords): Comment out `parse_font_bbox'. - * src/type1/t1tokens.h: Define `FontBBox' field. - -2002-07-10 David Turner <david@freetype.org> - - * src/cff/cffobjs.c: Small fix to select the Unicode charmap by - default when needed. - Small fix to allow OpenType fonts to support Adobe charmaps when - needed. - - * src/cff/cffcmap.c, src/cff/cffcmap.h: New files to support - charmaps for CFF fonts. - - * src/cff/cff.c, src/cff/Jamfile, src/cff/rules.mk: Updated. - - * include/freetype/internal/cfftypes.h (CFF_EncodingRec): Use - fixed-length arrays for `sids' and `codes'. Add `count' member. - (CFF_FontRec): Add `psnames' member. - - * src/cff/cffdrivr.c, src/cff/cffload.c, src/cff/cffload.h, - src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c, - src/cffparse.h, src/cff/cffgload.c, src/cff/cffgload.h: Adding - support for CFF charmaps, reformatting the sources, and removing - some bugs in the Encoding and Charset loaders. - Many fonts renamed to use lowercase only: - - CFF_Builder_Init -> cff_builder_init - CFF_Builder_Done -> cff_builder_done - CFF_Init_Decoder -> cff_decoder_init - CFF_Parse_CharStrings -> cff_decoder_parse_charstrings - CFF_Load_Glyph -> cff_slot_load - CFF_Init_Decoder -> cff_decoder_init - CFF_Prepare_Decoder -> cff_decoder_prepare - CFF_Get_Standard_Encoding -> cff_get_standard_encoding - CFF_Access_Element -> cff_index_access_element - CFF_Forget_Element -> cff_index_forget_element - CFF_Get_Name -> cff_index_get_name - CFF_Get_String -> cff_index_get_sid_string - CFF_Get_FD -> cff_fd_select_get - CFF_Done_Charset -> cff_charset_done - CFF_Load_Charset -> cff_charset_load - CFF_Done_Encoding -> cff_encoding_done - CFF_Load_Encoding -> cff_encoding_load - CFF_Done_SubFont -> cff_subfont_done - CFF_Load_Font -> cff_font_load - CFF_Done_Font -> cff_font_done - CFF_Size_Get_Global_Funcs -> cff_size_get_global_funcs - CFF_Size_Done -> cff_size_done - CFF_Size_Init -> cff_size_init - CFF_Size_Reset -> cff_size_reset - CFF_GlyphSlot_Done -> cff_slot_done - CFF_GlyphSlot_Init -> cff_slot_init - CFF_StrCopy -> cff_strcpy - CFF_Face_Init -> cff_face_init - CFF_Face_Done -> cff_face_done - CFF_Driver_Init -> cff_driver_init - CFF_Driver_Done -> cff_driver_done - CFF_Parser_Init -> cff_parser_init - CFF_Parser_Run -> cff_parser_run - - add_point -> cff_builder_add_point - add_point1 -> cff_builder_add_point1 - add_contour -> cff_builder_add_contour - close_contour -> cff_builder_close_contour - cff_explicit_index -> cff_index_get_pointers - -2002-07-09 Owen Taylor <owen@redhat.com> - - * src/pshinter/pshglob.c (psh_globals_new): Fixed a bug that - prevented the hinter from using correct standard width and height - values, resulting in hinting bugs with certain fonts (e.g. Utopia). - -2002-07-07 David Turner <david@freetype.org> - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Added code to return - successfully when the function is called with a bitmap glyph (the - previous code simply returned with an error). - - * docs/DEBUG.TXT: Adding debugging support documentation. - - * src/base/ftdebug.c (ft_debug_init), builds/win32/ftdebug.c - (ft_debug_init), builds/amiga/src/ftdebug.c (ft_debug_init): Changed - the syntax of the FT2_DEBUG environment variable used to control - debugging output (i.e. logging and error messages). It must now - look like: - - any:6 memory:4 io:3 or - any:6,memory:4,io:3 or - any:6;memory:4;io:3 - -2002-07-07 Owen Taylor <owen@redhat.com> - - * src/pshinter/pshglob.c (psh_blues_snap_stem): Adding support for - blue fuzz. - * src/pshinter/pshglob.h (PSH_BluesRec): Add `blue_fuzz' field. - * src/type1/t1load.c (T1_Open_Face): Initialize `blue_fuzz'. - - Adding support for hinter-specific bit flags, and the new - FT_Set_Hint_Flags high-level API. - - * include/freetype/freetype.h (FT_Set_Hint_Flags): New function. - (FT_HINT_NO_INTEGER_STEM, FT_HINT_NO_HSTEM_ALIGN, - FT_HINT_NO_VSTEM_ALIGN): New macros. - - * include/freetype/internal/ftobjs.h (FT_Face_InternalRec): Add - `hint_flags' member. - - * src/base/ftobjs.c (FT_Set_Hint_Flags): New function. - - * include/freetype/internal/psaux.h (T1_DecoderRec): Add `hint_flags' - member. - - * include/freetype/internal/pshints.h (T1_Hints_ApplyFunc, - T2_Hints_ApplyFunc): Add parameter to pass hint flags. - - * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings, - T1_Decoder_Init): Use decoder->hint_flags. - * src/cff/cffgload.h (CFF_Builder): Add `hint_flags' field. - * src/cff/cffgload.c (CFF_Builder_Init): Set builder->hint_flags. - (CFF_Parse_CharStrings): Updated. - * src/pshinter/pshalgo1.c (ps1_hints_apply): Add parameter to handle - hint flags (unused). - * src/pshinter/pshalgo1.h: Updated. - * src/pshinter/pshalgo2.c (ps2_hints_apply): Add parameter to handle - hint flags (unused). - * src/pshinter/pshalgo2.h: Updated. - * src/pshinter/pshalgo3.c (ps3_hints_apply): Add parameter to handle - hint flags. - * src/pshinter/pshalgo3.h: Updated. - -2002-07-04 David Turner <david@freetype.org> - - * src/pfr/pfrobjs.c (pfr_slot_load): Fixed a small bug that returned - incorrect advances when the outline resolution was different from - the metrics resolution. - - * src/autohint/ahhint.c: Removing compiler warnings. - - * src/autohint/ahglyph.c: s/FT_MEM_SET/FT_ZERO/ where appropriate. - (ah_outline_link_segments): Slight improvements to the serif - detection code. More work is needed though. - -2002-07-03 David Turner <david@freetype.org> - - Small improvements to the automatic hinter. Uneven stem-widths have - now disappeared and everything looks much better, even if there are - still issues with serifed fonts. - - * src/autohint/ahtypes.h (AH_Globals): Added `stds' array. - * src/autohint/ahhint.c (OPTIM_STEM_SNAP): New #define. - (ah_snap_width): Commented out. - (ah_align_linked_edge): Renamed to... - (ah_compute_stem_width): This. - Don't allow uneven stem-widths. - (ah_align_linked_edge): New function. - (ah_align_serifed_edge): Don't strengthen serifs. - (ah_hint_edges_3, ah_hinter_scale_globals): Updated. - -2002-07-03 Owen Taylor <owen@redhat.com> - - Adding new algorithm based on Owen Taylor's recent work. - - * src/pshinter/pshalgo3.c, src/pshinter/pshalgo3.h: New files. - * src/pshinter/pshalgo.h: Updated. - Use pshalgo3 by default. - * src/pshinter/pshinter.c: Include pshalgo3.c. - - * src/pshinter/Jamfile, src/pshinter/rules.mk: Updated. - -2002-07-01 Owen Taylor <owen@redhat.com> - - * src/pshinter/pshalgo2.c (psh2_glyph_find_strong_points): Fix a bug - where, if a glyph has more than hint mask, the second mask gets - applied to points that should have been covered by the first mask. - -2002-07-01 Keith Packard <keithp@keithp.com> - - * src/sfnt/ttcmap0.c (tt_cmap8_char_next, tt_cmap12_char_next): - Fixing the cmap 8 and 12 parsing routines. - -2002-07-01 David Turner <david@freetype.org> - - * src/base/ftsynth.c: Include FT_TRIGONOMETRY_H. - (FT_Outline_Embolden): Renamed to... - (FT_GlyphSlot_Embolden): This. - Updated to new trigonometric functions. - (FT_Outline_Oblique): Renamed to... - (FT_GlyphSlot_Oblique): This. - (ft_norm): Removed. - * include/freetype/ftsynth.h: Updated. - -2002-06-26 David Turner <david@freetype.org> - - * include/freetype/internal/ftobject.h: Updating the object - sub-system definitions (still experimental). - - * src/base/fthash.c (ft_hash_remove): Fixing a small reallocation - bug. - - * src/base/fttrigon.c (FT_Vector_From_Polar, FT_Angle_Diff): New - functions. - * include/freetype/fttrigon.h: Updated. - - - Adding path stroker component (work in progress). - - * include/freetype/ftstroker.h, src/base/ftstroker.c: New files. - * src/base/Jamfile: Updated. - - * include/freetype/config/ftheader.h (FT_STROKER_H): New macro. - - - * src/truetype/ttgload.c (TT_Load_Composite_Glyph), - src/base/ftoutln.c (FT_Vector_Transform): Fixed Werner's latest fix. - FT_Vector_Transform wasn't buggy, the TrueType composite loader was. - -2002-06-24 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h (FREETYPE_PATCH): Set to 3. - -2002-06-21 David Turner <david@freetype.org> - - - * Version 2.1.2 released. - ========================= - - -2002-06-21 Roberto Alameda <ojancano@geekmail.de>. - - * include/freetype/internal/t42types.h (T42_Font): Removed since - it is already in t42objs.h. - (T42_Face): Use T1_FontRec. - - * src/base/fttype1.c (FT_Get_PS_Font_Info): Updated. - (FT_Has_PS_Glyph_Names): Check for type42 driver name also. - * src/type42/t42objs.h: Include FT_INTERNAL_TYPE42_TYPES_H. - (T42_Face): Removed since it is already in t42types.h. - -2002-06-21 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/pfrgload.c (pfr_glyph_load_compound): Fix loading of composite - glyphs. - -2002-06-21 Sven Neumann <sven@convergence.de> - - * src/prf/pfrtypes.h (PFR_KernPair): New structure. - (PFR_PhyFont): Use it. - (PFR_KernFlags): New enumeration. - * src/pfr/pfrload.c (pfr_extra_item_load_kerning_pairs): New - function. - (pfr_phy_font_extra_items): Use it. - (pfr_phy_font_done): Updated. - * src/pfr/pfrobjs.c (pfr_face_init): Set kerning flag conditionally. - (pfr_face_get_kerning): New function. - * src/pfr/pfrobjs.h: Updated. - * src/pfr/pfrdrivr.c (pfr_driver_class): Updated. - -2002-06-21 David Turner <david@freetype.org> - - * README, docs/CHANGES: Preparing the 2.1.2 release. - -2002-06-19 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/base/fttype1.c: Include FT_INTERNAL_TYPE42_TYPES_H. - (t1_face_check_cast): Removed. - (FT_Get_PS_Font_Info): Make it work with CID and Type 42 drivers - also. - -2002-06-19 Sebastien BARRE <http://barre.nom.fr/contact.html#email> - - * src/type42/t42parse.c (t42_parse_sfnts): Fix compiler warning. - -2002-06-19 Werner Lemberg <wl@gnu.org> - - * src/base/ftoutln.c (FT_Vector_Transform): Fix serious typo - (xy <-> yx). - * src/truetype/ttgload.c (load_truetype_glyph): Replace `|' with - `||' to make code easier to read. - -2002-06-18 Roberto Alameda <ojancano@geekmail.de>. - - * src/type42/t42objs.c (t42_check_size_change): Removed. - (T42_Size_SetChars, T42_Size_SetPixels): Use FT_Activate_Size - instead. - (T42_GlyphSlot_Load): Remove call to t42_check_size_change. - -2002-06-18 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/psaux/t1cmap.c (t1_cmap_custom_char_index, - t1_cmap_custom_char_next): Fix index computation -- indices start - with 0 and not with cmap->first. - - Provide default charmaps. - - * src/bdf/bdfdrivr.c (BDF_Face_Init), src/pcf/pcfdriver.c - (PCF_Face_Init), src/pfr/pfrobjs.c (pfr_face_init), - src/type1/t1objs (T1_Face_Init), src/winfonts/winfnt.c - (FNT_Face_Init): Implement it. - -2002-06-17 Sven Neumann <sven@gimp.org> - - * src/pfr/pfrobjs.c (pfr_face_init): Fix typo. - -2002-06-16 Leonard Rosenthol <leonardr@lazerware.com> - - Updated Win32/VC++ projects to include the new PFR driver. - - * builds/win32/visualc/freetype.dsp: Updated. - -2002-06-16 Anthony Fok <fok@debian.org> - - Install freetype2.m4. - - * builds/unix/install.mk (install, uninstall): Handle it. - -2002-06-16 Detlef W�rkner <TetiSoft@apg.lahn.de> - - Same fix for PFR driver. - - * src/pfr/pfrcmap.c (pfr_cmap_char_index, pfr_cmap_char_next): - Increase return value by 1. - * src/pfr/pfrobjs.c (pfr_slot_load): Decrease index by 1. - -2002-06-15 Detlef W�rkner <TetiSoft@apg.lahn.de> - - Fix glyph indices to make index zero always the undefined glyph. - - * src/bdf/bdfdrivr.c (bdf_cmap_init): Don't decrease - cmap->num_encodings. - (bdf_cmap_char_index, bdf_cmap_char_next, BDF_Get_Char_Index): - Increase result by 1 for normal cases. - (BDF_Glyph_Load): Decrease index by 1. - - * src/pcf/pcfdriver.c (pcf_cmap_char_index, pcf_cmap_char_next, - PCF_Char_Get_Index): Increase result by 1 for normal cases. - (PCF_Glyph_Load): Decrease index by 1. - * src/pcf/pcfread.c (pcf_get_encodings): Don't decrease j for - allocating `encoding'. - - * src/base/ftobjs.c (FT_Load_Glyph, FT_Get_Glyph_Name): Fix - bounding tests. - -2002-06-14 Detlef W�rkner <TetiSoft@apg.lahn.de> - - Add new cmap support to BDF driver. - - * src/bdf/bdfdrivr.c (BDF_CMapRec) [FT_CONFIG_OPTION_USE_CMAPS]: - New structure. - (bdf_cmap_init, bdf_cmap_done, bdf_cmap_char_index, - bdf_cmap_char_next) [FT_CONFIG_OPTION_USE_CMAPS]: New functions. - (BDF_Get_Char_Index) [!FT_CONFIG_OPTION_USE_CMAPS]: Use only - conditionally. - (BDF_Face_Init): Handle `AVERAGE_WIDTH' and `POINT_SIZE' keywords. - Implement new cmap handling. - (bdf_driver_class): Updated. - -2002-06-14 Werner Lemberg <wl@gnu.org> - - * Makefile, configure, */*.mk, builds/unix/unix-def.in, - docs/CHANGES, docs/INSTALL: s/TOP/TOP_DIR/. - -2002-06-12 Werner Lemberg <wl@gnu.org> - - * src/bdf/bdflib.c: s/FT_Short/short/ for consistency. - -2002-06-11 David Turner <david@freetype.org> - - * builds/win32/ftdebug.c: Added a missing #endif. - - * src/sfnt/ttload.c, src/bdf/bdflib.c: Removing compiler warnings. - - Removed the bug in Type 42 driver that prevented un-hinted outlines - to be loaded. - - * src/type42/t42objs.c (T42_Face_Init): Call FT_Done_Size. - (T42_Size_Init): Call FT_Activate_Size. - (t42_check_size_change): New function. - (T42_Size_SetChars, T42_Size_SetPixels): Use it. - (ft_glyphslot_clear): Replace FT_MEM_SET with FT_ZERO. - (T42_GlyphSlot_Load): Use t42_check_size_change. - Initialize more fields of `glyph'. - - * builds/win32/visualc/freetype.dsp: Updated. - -2002-06-09 David Turner <david@freetype.org> - - - * Version 2.1.1 released. - ========================= - - -2002-06-08 Juliusz Chroboczek <jch@pps.jussieu.fr> - - * include/freetype/internal/ftobjs.h, src/autohint/ahglyph.c, - src/base/ftobjs.c, src/sfnt/ttcmap0.c, src/smooth/ftgrays.c: Don't - use `setjmp', `longjmp', and `jmp_buf' but `ft_setjmp', `ft_longjmp', - and `ft_jmp_buf'. - Removed direct references to <stdio.h> and <setjmp.h> when - appropriate, to eventually replace them with a - FT_CONFIG_STANDARD_LIBRARY_H. Useful for the XFree86 Font Server - backend based on FT2. - - * src/base/fttype1.c (FT_Has_PS_Glyph_Names): Fix return value. - -2002-06-08 David Turner <david@freetype.org> - - * src/pcf/pcfdriver.c (pcf_cmap_char_next): Fixed a bug that caused - the function to return invalid values. - - * src/cache/ftccache.i: Removing a typo that prevented - the source's compilation. - - * src/cache/ftccache.c (ftc_node_hash_unlink): Fixed a - bug that caused nasty memory overwrites. The hash table's - buckets array wasn't correctly resized when shrinked. - -2002-06-08 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * builds/amiga/smakefile, builds/amiga/makefile: Updated. - -2002-06-08 Werner Lemberg <wl@gnu.org> - - * src/cache/ftccache.c (ftc_node_hash_unlink, ftc_node_hash_link) - [FTC_CACHE_USE_LINEAR_HASHING]: Fix returned error code. - Fix debugging messages. - * src/cache/ftccache.i (GEN_CACHE_LOOKUP): Move declaration of - `family' and `hash' up to make it compilable with g++. - - * src/type42/t42error.h: New file. - * src/type42/t42drivr.c, src/type42/t42objs.c, - src/type42/t42parse.c: Use t42 error codes. - * src/type42/rules.mk: Updated. - - * src/base/ftnames.c: Include FT_INTERNAL_STREAM_H. - -2002-06-08 David Turner <david@freetype.org> - - * src/cache/ftccmap.c: GEN_CACHE_FAMILY_COMPARE, - GEN_CACHE_NODE_COMPARE, GEN_CACHE_LOOKUP) [FTC_CACHE_USE_INLINE]: - New macros. - (ftc_cmap_cache_lookup) [!FTC_CACHE_USE_INLINE]: Typedef to - ftc_cache_lookup. - (FTC_CMapCache_Lookup): Updated. - - Adding various experimental optimizations to the cache manager. - - * include/freetype/cache/ftccache.h (FTC_CACHE_USE_INLINE, - FTC_CACHE_USE_LINEAR_HASHING): New options. - (FTC_CacheRec) [FTC_CACHE_USE_LINEAR_HASHING]: New elements `p', - `mask', and `slack'. - - * src/cache/ftccache.c (FTC_HASH_MAX_LOAD, FTC_HASH_MIN_LOAD, - FTC_HASH_SUB_LOAD) [FTC_CACHE_USE_LINEAR_HASHING, - FTC_HASH_INITIAL_SIZE]: New macros. - (ftc_node_mru_link, ftc_node_mru_up): Optimized. - (ftc_node_hash_unlink, ftc_node_hash_link) - [FTC_CACHE_USE_LINEAR_HASHING]: New variants. - (FTC_PRIMES_MIN, FTC_PRIMES_MAX, ftc_primes, ftc_prime_closest, - FTC_CACHE_RESIZE_TEST, ftc_cache_resize) - [!FTC_CACHE_USE_LINEAR_HASHING]: Define it conditionally. - (ftc_cache_init, ftc_cache_clear) [FTC_CACHE_USE_LINEAR_HASHING]: - Updated. - (ftc_cache_lookup) [FTC_CACHE_USE_LINEAR_HASHING]: Implement it. - - * src/cache/ftccache.i: New file. - - * src/cache/ftcsbits.c (GEN_CACHE_FAMILY_COMPARE, - GEN_CACHE_NODE_COMPARE, GEN_CACHE_LOOKUP) [FTC_CACHE_USE_INLINE]: - New macros. - (ftc_sbit_cache_lookup) [!FTC_CACHE_USE_INLINE]: Typedef to - ftc_cache_lookup. - (FTC_SBitCache_Lookup): Updated. - - * src/type42/t42parse.c: Removing duplicate function. - -2002-06-07 Graham Asher <graham.asher@btinternet.com> - - * src/base/ftobjs.c (FT_Render_Glyph_Internal): Changed definition - from FT_EXPORT_DEF to FT_BASE_DEF. - -2002-06-07 David Turner <david@freetype.org> - - Fixed the bug that prevented the correct display of fonts with - `ftview'. - - * src/type42/t42drivr.c: Split into... - * src/type42/t42drivr.h, src/type42/t42parse.c, - src/type42/t42parse.h, src/type42/t42objs.h, src/type42/t42objs.c, - src/type42/type42.c: New files. - - (t42_get_glyph_name, t42_get_ps_name, t42_get_name_index): Use - `face->type1'. - - (Get_Interface): Renamed to... - (T42_Get_Interface): This. - Updated. - (T42_Open_Face, T42_Face_Done): Updated. - (T42_Face_Init): Add new cmap support. - Updated. - (T42_Driver_Init, T42_Driver_Done, T42_Size_Init, T42_Size_Done, - T42_GlyphSlot_Init, T42_GlyphSlot_Done): Updated. - (Get_Char_Index, Get_Next_Char): Renamed to... - (T42_CMap_CharIndex, T42_CMap_CharNext): This. - Updated. - (T42_Char_Size, T42_Pixel_Size): Renamed to... - (T42_Size_SetChars, T42_Size_SetPixels): This. - (T42_Load_Glyph): Renamed to... - (T42_GlyphSlot_Load): This. - - (t42_init_loader, t42_done_loader): Renamed to... - (t42_loader_init, t42_loader_done): This. - (T42_New_Parser, T42_Finalize_Parser): Renamed to... - (t42_parser_init, t42_parser_done): This. - (parse_dict): Renamed to... - (t42_parse_dict): This. - (is_alpha, is_space, hexval): Renamed to... - (t42_is_alpha, t42_is_space, t42_hexval): This. - (parse_font_name, parse_font_bbox, parse_font_matrix, - parse_encoding, parse_sfnts, parse_charstrings, parse_dict): - Renamed to... - (t42_parse_font_name, t42_parse_font_bbox, t42_parse_font_matrix, - t42_parse_encoding, t42_parse_sfnts, t42_parse_charstrings, - t42_parse_dict): This. - Updated. - - (t42_keywords): Updated. - - * src/type42/Jamfile, src/type42/descrip.mms: Updated. - -2002-06-03 Werner Lemberg <wl@gnu.org> - - Add 8bpp support to BDF driver. - - * src/bdf/bdflib.c (_bdf_parse_start): Handle 8bpp. - * src/bdf/bdfdrivr.c (BDF_Glyph_Load): Ditto. - * src/bdf/README: Updated. - -2002-06-02 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/pfr/pfrload.c (pfr_phy_font_done): Free `blue_values' array. - -2002-05-29 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/bdf/bdflib.c (_bdf_readstream): Allocate `buf' dynamically. - (_bdf_parse_glyphs): Use correct size for allocating - `font->unencoded'. - (bdf_load_font): Free array conditionally. - Return proper error code in case of failure. - * src/bdf/bdfdrivr.c (BDF_Face_Init): Make it more robust against - unusual fonts. - -2002-05-29 Werner Lemberg <wl@gnu.org> - - * src/bdf/descrip.mms, src/type42/descrip.mms: New files. - * descrip.mms (all): Updated. - - * src/bdf/bdflib.c (_bdf_parse_glyphs): Fix typo which prevented - compilation. - * src/pshglob.c (psh_blues_scale_zones): Fix compiler warning. - -2002-05-28 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * builds/amiga/makefile, builds/amiga/smakefile, - amiga/include/freetype/config/ftmodule.h: Updated to include - support for BDF and Type42 drivers. - - * docs/modules.txt: Updated. - -2005-05-28 David Turner <david@freetype.org> - - * docs/CHANGES: Updating file for next release (2.1.1). - - * src/bdf/bdflib.c: Removing compiler warnings. - - * include/freetype/ftxf86.h, src/base/ftxf86.c: New files. - They provide a new API (FT_Get_X11_Font_Format) to retrieve an - X11-compatible string describing the font format of a given face. - This was put in a new optional base source file, corresponding to a - new public header (named FT_XFREE86_H since this function should - only be used within the XFree86 font server IMO). - - * include/freetype/config/ftheader.h (FT_XFREE86_H): New macro (not - documented yet). - - * src/base/fttype1.c: New file, provoding two new API functions - (FT_Get_PS_Font_Info and FT_Has_PS_Glyph_Names). - * include/freetype/t1tables.h: Updated. - - * src/base/Jamfile, src/base/rules.mk, src/base/descrip.mms: - Updating build control files for the new files `ftxf86.c' and - `fttype1.c' in src/base. - - * src/pshinter/pshglob.c (psh_blues_scale_zones): Fixed a bug that - prevented family blue zones substitution from hapenning correctly. - - * include/freetype/ftbdf.h FT_Get_BDF_Charset_ID): Adding - documentation comment. - -2002-05-28 Werner Lemberg <wl@gnu.org> - - * src/base/ftnames.c (FT_Get_Sfnt_Name): Don't use FT_STREAM_READ_AT - but FT_STREAM_READ. - Declare `stream' variable. - - * src/bdf/bdflib.c (_bdf_parse_glyphs): Replace floating point math - with calls to `FT_MulDiv'. - -2002-05-28 David Turner <david@freetype.org> - - Fixing the SFNT name table loader to support various buggy fonts. - It now ignores empty name entries, entries with invalid pointer - Offsets and certain fonts containing tables with broken - `storageOffset' fields. - - Name strings are now loaded on demand, which reduces the memory - requirements for a given FT_Face tremendously (for example, the name - table of Arial.ttf is about 10Kb and contains 70 names). - - This is a temporary fix. The whole name table loader and interface - will be rewritten in a much more cleanly way shortly, once CSEH have - been introduced in the sources. - - * include/freetype/internal/tttypes.h (TT_NameEntryRec): Change - type of `stringOffset' to FT_ULong. - (TT_NameTableRec): Change type of `numNameRecords' and - `storageOffset' to FT_UInt. - Replace `storage' with `stream'. - * src/base/ftnames.c (FT_Get_Sfnt_Name): Load name on demand. - * src/sfnt/sfdriver.c (get_sfnt_postscript_name): Ditto. - Make code more robust. - * src/sfnt/sfobjs.c (TT_NameEntry_ConvertFunc): New typedef. - (tt_face_get_name): Use it. - Make code more robust. - * src/sfnt/ttload.c (TT_Load_Names): Use `static' for arrays. - Handle invalid `storageOffset' data better. - Set length fields to zero for invalid or ignored data. - Remove code within FT_DEBUG_LEVEL_TRACE. - (TT_Free_Names): Updated. - -2002-05-24 Tim Mooney <enchanter@users.sourceforge.net> - - * builds/unix/ft-munmap.m4: New file, extracted FT_MUNMAP_DECL and - FT_MUNMAP_PARAM from aclocal.m4 into here, so aclocal.m4 can be - rebuilt from sources. Set macro serial to 1, and use third argument - to AC_DEFINE for our two custom symbols, so ftconfig.in could one day - be rebuilt with autoheader (not recommended now, ftconfig.in is a - custom source file) - -2002-05-22 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ftheader.h (FT_BEZIER_H): Removed. - (FT_BDF_H): New macro for accessing `ftbdf.h'. - - * src/type42/t42drivr.c (hexval): Fix typo. - -2002-05-21 Martin Muskens <mmuskens@aurelon.com> - - * src/psaux/psobjs.c (T1Radix): New function. - (t1_toint): Use it to handle numbers in radix format. - - * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Add dummy - for undocumented, obsolete opcode 15. - -2002-05-21 David Turner <david@freetype.org> - - * src/bdf/bdflib.c: Removed compiler warning, and changed all tables - to the `static const' storage specifier (instead of simply - `static'). - - * src/type42/t42drivr.c (hexval): Use more efficient code. - Removing compiler warnings. - * src/bdf/bdfdrivr.c: Removing compiler warnings. - - * include/freetype/internal/ftbdf.h, src/base/ftbdf.c, - src/base/descrip.mms, src/base/Jamfile, src/base/rules.mk - (FT_Get_BDF_Charset_ID): New API to retrieve BDF-specific strings - from a face. This is much cleaner than accessing the internal types - `BDF_Public_Face' defined in FT_INTERNAL_BDF_TYPES_H. - -2002-05-21 Werner Lemberg <wl@gnu.org> - - * src/bdf/README: Mention Microsoft's SBIT tool. - - * src/cff/cffdrivr.c, src/cid/cidriver.c, src/pcf/pcfdriver.c, - src/truetype/ttdriver.c, src/type1/t1driver.c, - src/winfonts/winfnt.c, src/type42/t42drivr.c, src/bdf/bdfdrivr.c - [FT_CONFIG_OPTION_DYNAMIC_DRIVERS]: Completely removed. It has - been never used. - -2002-05-21 Roberto Alameda <ojancano@geekmail.de>. - - * src/type42/t42drivr.c: s/T42_ENCODING_TYPE_/T1_ENCODING_TYPE_/. - (parse_font_matrix): Remove unnecessary code. - (parse_sfnts): Initialize some variables. - (t42_driver_class) [TT_CONFIG_OPTION_BYTECODE_INTERPRETER]: Use - ft_module_driver_has_hinter conditionally. - Moved some type 42 specific structure definitions to... - * include/freetype/internal/t42types.h: New file. - * include/freetype/internal/internal.h (FT_INTERNAL_T42_TYPES_H): - New macro. - -2002-05-20 Werner Lemberg <wl@gnu.org> - - * include/freetype/cache/ftcsbits.h (FTC_SBit): Added a new field - `num_grays' for specifying the number of used gray levels. - * src/cache/ftcsbits.c (ftc_sbit_node_load): Initialize it. - -2002-05-19 Werner Lemberg <wl@gnu.org> - - Adding a driver for BDF fonts written by Francesco Zappa Nardelli - <Francesco.Zappa.Nardelli@ens.fr>. Heavily modified by me to - better adapt it to FreeType, removing unneeded stuff. Additionally, - it now supports Mark Leisher's BDF extension for anti-aliased - bitmap glyphs with 2 and 4 bpp. - - * src/bdf/*: New driver. - * include/freetype/internal/bdftypes.h: New file. - * include/freetype/internal/fttrace.h: Added BDF driver components. - * include/freetype/fterrdef.h: Added error codes for BDF driver. - * include/freetype/config/ftmodule.h, src/Jamfile: Updated. - * include/freetype/internal/internal.h (FT_INTERNAL_BDF_TYPES_H): - New macro. - - * include/freetype/config/ftstdlib.h (ft_sprintf): New alias for - sprintf. - -2002-05-18 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/fttrace.h: Added Type 42 driver - component. - * src/type42/t42drivr.c: Use it. - - * include/freetype/internal/internal.h (FT_INTERNAL_PCF_TYPES_H): - New macro. - -2002-05-17 Werner Lemberg <wl@gnu.org> - - * src/type42/Jamfile: New file. - -2002-05-14 Werner Lemberg <wl@gnu.org> - - Adding a driver for Type42 fonts written by Roberto Alameda - <ojancano@geekmail.de>. - - * src/type42/*: New driver. - * include/freetype/config/ftmodule.h, src/Jamfile: Updated. - * include/freetype/config/ftstdlib.h (ft_xdigit, ft_memcmp, - ft_atoi): New aliases for xdigit, memcmp, and atoi, respectively. - -2002-05-12 Owen Taylor <otaylor@redhat.com> - - * src/sfnt/ttload.c (TT_LookUp_Table): Protect against tables - with a zero length value. - -2002-05-12 Michael Pfeiffer <michael.pfeiffer@utanet.at> - - * builds/beos/beos.mk: Include `link-std.mk'. - -2002-05-12 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.h (T1_Loader): Renamed to... - (T1_LoaderRec): This. - (T1_Loader): Now pointer to T1_LoaderRec. - * src/type1/t1load.c: Updated. - - * include/freetype/internal/t1types.h, src/type1/t1load.c, - src/type1/t1objs.c: - s/T1_ENCODING_TYPE_EXPORT/T1_ENCODING_TYPE_EXPERT/. - -2002-05-06 Werner Lemberg <wl@gnu.org> - - * README: Add a note regarding libttf vs. libfreetype. - -2002-05-05 Werner Lemberg <wl@gnu.org> - - FreeType 2 can now be built in an external directory with the - configure script also. - - * builds/freetype.mk (INCLUDES): Add `OBJ_DIR'. - - * builds/unix/detect.mk (have_mk): New variable to test for - external build. - (unix-def.mk): Defined according to value of `have_mk'. - * builds/unix/unix.mk (have_mk): New variable to test for - external build. - Select include paths for unix-def.mk and unix-cc.mk according - to value of `have_mk'. - * builds/unix/unix-def.in (OBJ_BUILD): New variable. - (DISTCLEAN): Use it. - * builds/unix/unix-cc.in (LIBTOOL): Define default value only - if not yet defined. - * builds/unix/install.mk (install): Use `OBJ_BUILD' for installing - freetype-config. - - * configure: Don't depend on bash features. - (ft2_dir, abs_curr_dir, abs_ft2_dir): New variables (code - partially taken from Autoconf). - Build a dummy Makefile if not building in source tree. - - * docs/INSTALL: Document it. - -2002-05-04 David Turner <david@freetype.org> - - * src/truetype/ttgload.c (TT_Load_Glyph): Finally fixing the last - bug that prevented FreeType 2.x and FreeType 1.x to produce - bit-by-bit identical monochrome glyph bitmaps with native TrueType - hinting. The culprit was a single-bit flag that wasn't set - correctly by the TrueType glyph loader. - - * src/otlayout/otlayout.h, src/otlayout/otlbase.c, - src/otlayout/otlbase.h, src/otlayout/otlconf.h, - src/otlayout/otlgdef.c, src/otlayout/otlgdef.h, - src/otlayout/otlgpos.c, src/otlayout/otlgpos.h, - src/otlayout/otlgsub.c, src/otlayout/otlgsub.h, - src/otlayout/otljstf.c, src/otlayout/otljstf.h, - src/otlayout/otltable.c, src/otlayout/otltable.h, - src/otlayout/otltags.h: New OpenType Layout source files. The - module is still incomplete. - -2002-05-02 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttcmap0.c (tt_cmap4_char_index): Fix serious typo - (0xFFFU -> 0xFFFFU). - -2002-05-01 Werner Lemberg <wl@gnu.org> - - * docs/INSTALL: Fix URL of makepp. - -2002-05-01 David Turner <david@freetype.org> - - * src/sfnt/sfobjs.c (tt_face_get_name): Fixing a bug that caused - FreeType to crash when certain broken fonts (e.g. `hya6gb.ttf') - were opened. - - * src/sfnt/ttload.c (TT_Load_Names): Applied a small work-around to - manage fonts containing a broken name table (e.g. `hya6gb.ttf'). - - * src/sfnt/ttcmap0.c (tt_cmap4_validate): Fixed over-restrictive - validation test. The charmap validator now accepts overlapping - ranges in format 4 charmaps. - - * src/sfnt/ttcmap0.c (tt_cmap4_char_index): Switched to a binary - search algorithm. Certain fonts contain more than 170 distinct - segments! - - * include/freetype/config/ftstdlib.h: Adding an alias for the `exit' - function. This will be used in the near future to panic in case of - unexpected exception (which shouldn't happen in theory). - - * include/freetype/internal/fthash.h, src/base/fthash.c: New files. - This is generic implementation of dynamic hash tables using a linear - algorithm (to get rid of `stalls' during resizes). In the future - this will be used in at least three parts of the library: the cache - sub-system, the object sub-system, and the memory debugger. - - * src/base/Jamfile: Updated. - - * include/freetype/internal/internal.h (FT_INTERNAL_HASH_H, - FT_INTERNAL_OBJECT_H): New macros. - - * include/freetype/internal/ftcore.h: New file to group all new - definitions related to exception handling and memory management. It - is very likely that this file will disappear or be renamed in the - future. - - * include/freetype/internal/ftobject.h, include/freetype/ftsysmem.h: - Adding comments to better explain the object sub-system as well as - the new memory manager interface. - -2002-04-30 Wenlin Institute (Tom Bishop) <wenlin@wenlin.com> - - * src/base/ftmac.c (p2c_str): Removed. - (file_spec_from_path) [TARGET_API_MAC_CARBON]: Added support for - OS X. - (is_dfont) [TARGET_API_MAC_CARBON]: Define only for OS X. - Handle `nameLen' <= 6 also. - (parse_fond): Remove unused variable `name_table'. - Use functionality of old p2c_str directly. - Add safety checks. - (read_lwfn): Initialize `size_p'. - Check for size_p == NULL. - (new_memory_stream, open_face_from_buffer): Updated to FreeType 2.1. - (FT_New_Face_From_LWFN): Remove unused variable `memory'. - Remove some dead code. - (FT_New_Face_From_SFNT): Remove unused variable `stream'. - (FT_New_Face_From_dfont) [TARGET_API_MAC_CARBON]: Define only for - OS X. - (FT_New_Face_From_FOND): Remove unused variable `error'. - (ResourceForkSize): New function. - (FT_New_Face): Use it. - Handle empty resource forks. - Conditionalize some code for OS X. - Add code to call normal loader as a fallback. - -2002-04-30 Werner Lemberg <wl@gnu.org> - - `interface' is reserved on the Mac. - - * include/freetype/ftoutln.h, include/freetype/internal/sfnt.h, - src/base/ftoutln.c: s/interface/func_interface/. - * src/base/ftbbox.c (FT_Outline_Get_BBox): - s/interface/bbox_interface/. - * src/cff/cffdrivr.c: s/interface/module_interface/. - * src/cff/cffload.c, src/cff/cffload.h: - s/interface/psnames_interface/. - * src/cid/cidriver.c: s/interface/cid_interface/. - * src/sfnt/sfdriver.c: s/interface/module_interface/. - * src/smooth/ftgrays.c: s/interface/func_interface/. - * src/truetype/ttdriver.c: s/interface/tt_interface/. - * src/type1/t1driver.c: s/interface/t1_interface/. - - Some more variable renames to avoid troubles on the Mac. - - * src/raster/ftraster.c: - s/Unknown|Ascending|Descending|Flat/\1_State/. - * src/smooth/ftgrays.c: s/TScan/TCoord/. - - Other changes for the Mac. - - * include/freetype/config/ftconfig.h: Define FT_MACINTOSH for - Mac platforms. - * src/base/ftobjs.c: s/macintosh/FT_MACINTOSH/. - - * src/raster/ftrend1.c (ft_raster1_render): Make `pitch' always - an even number. - -2002-04-29 Jouk Jansen <joukj@hrem.stm.tudelft.nl> - - * descrip.mms (all): Add pfr driver. - -2002-04-28 Werner Lemberg <wl@gnu.org> - - * src/pfr/pfrerror.h: New file. - * include/freetype/ftmoderr.h: Add PFR error codes. - * src/pfr/pfrgload.c: Include pfrerror.h. - Use PCF error codes. - (pfr_extra_item_load_stem_snaps): Fix debug message. - * src/pfr/pfrgload.c: Include pfrerror.h. - Use PCF error codes. - (pfr_extra_item_load_bitmap_info, pfr_glyph_load_simple, - pfr_glyph_load_compound): Fix debug message. - * src/pfr/pfrobjs.c: Include pfrerror.h. - Use PCF error codes. - (pfr_face_init): Return PFR_Err_Unknown_File_Format. - * src/pfr/rules.mk (PFR_DRV_H): Include pfrerror.h. - - * src/pcf/pcfdriver.c (PCF_Face_Init) [!FT_CONFIG_OPTION_USE_CMAPS]: - `root' -> `face->root'. - * src/sfnt/ttcmap0.c (TT_Build_CMaps) [!FT_CONFIG_OPTION_USE_CMAPS]: - Removed. - * src/sfnt/ttcmap0.c: Declare TT_Build_CMaps only for - FT_CONFIG_OPTION_USE_CMAPS. - -2002-04-27 Werner Lemberg <wl@gnu.org> - - * src/cache/ftccache.c (ftc_cache_lookup), - src/cache/ftccmap.c (ftc_cmap_family_init), - src/cache/ftcmanag.c (ftc_family_table_alloc), - src/cache/ftcsbits.c (FTC_SBit_Cache_Lookup): Use FTC_Err_*. - src/cache/ftcimage.c (FTC_Image_Cache_Lookup): Use FTC_Err_*. - (FTC_ImageCache_Lookup): Fix handling of invalid arguments. - -2002-04-22 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.ac: Set `version_info' to 9:1:3 (FT2 - version 2.0.9 has 9:0:3). - * builds/unix/configure: Regenerated (using autoconf 2.53). - -2002-04-19 Werner Lemberg <wl@gnu.org> - - * src/pfr/pfrload.c (pfr_extra_items_farse): Fix debug message. - (pfr_phy_font_load): s/size/Size/ for local variable to avoid - compiler warning. - * src/pfr/pfrobjs.c (pfr_face_init): Fix debug message. - (pfr_slot_load): Remove redundant local variable. - -2002-04-19 David Turner <david@freetype.org> - - Adding a PFR font driver to the FreeType sources. Note that it - doesn't support embedded bitmaps or kerning tables yet. - - src/pfr/*: New files. - - * include/freetype/config/ftmodule.h, - include/freetype/internal/fttrace.h, src/Jamefile: Updated. - - * src/type1/t1gload.h (T1_Load_Glyph), src/type1/t1gload.c - (T1_Load_Glyph): Fixed incorrect parameter sign-ness in callback - function. - - * include/freetype/internal/ftmemory.h (FT_MEM_ZERO, FT_ZERO): New - macros. - - * include/freetype/internal/ftstream.h (FT_NEXT_OFF3, FT_NEXT_UOFF3, - FT_NEXT_OFF3_LE, FT_NEXT_UOFF3_LE): New macros to parse in-memory - 24-bit integers. - -2002-04-18 David Turner <david@freetype.org> - - * src/base/ftobjs.c, builds/win32/ftdebug.c, - builds/amiga/src/base/ftdebug.c: Version 2.1.0 couldn't be linked - against applications in Win32 and Amiga builds due to changes to - `src/base/ftdebug.c' that were not properly propagated to - `builds/win32' and `builds/amiga'. This has been fixed. - - * include/freetype/internal/ftobject.h, - include/freetype/internal/ftexcept.h, include/freetype/ftsysmem.h, - include/freetype/ftsysio.h, src/base/ftsysmem.c, src/base/ftsysio.c: - New experimental files. - -2002-04-17 David Turner <david@freetype.org> - - - * Version 2.1.0 released. - ========================= - - -2002-04-17 Michael Jansson <mjan@em2-solutions.com> - - * src/type1/t1gload.c (T1_Compute_Max_Advance): Fixed a small bug - that prevented the function to return the correct value. - -2002-04-16 Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr> - - * src/pcf/pcfread (pcf_get_accell): Fix parsing of accelerator - tables. - -2002-04-15 David Turner <david@freetype.org> - - * docs/FTL.txt: Formatting. - - * include/freetype/config/ftoption.h: Reduce the size of the - render pool from 32kByte to 16kByte. - - * src/pcf/pcfread.c (pcf_seek_to_table_type): Remove compiler - warning. - - * include/freetype/config/ftoption.h (FT_MAX_EXTENSIONS): Removed. - - * docs/CHANGES: Preparing 2.1.0 release. - -2002-04-13 Werner LEMBERG <wl@gnu.org> - - * src/cff/cffgload.c (CFF_Parse_CharStrings): s/rand/Rand/ to avoid - compiler warning. - -2002-04-12 David Turner <david@freetype.org> - - * README.UNX: Updated the Unix-specific quick-compilation guide to - warn about the GNU Make requirement at compile time. - - * include/freetype/config/ftstdlib.h, - include/freetype/config/ftconfig.h, - include/freetype/config/ftheader.h, - include/freetype/internal/ftmemory.h, - include/freetype/internal/ftobjs.h, - - src/autohint/ahoptim.c, - - src/base/ftdbgmem.c, src/base/ftdebug.c, src/base/ftmac.c, - src/base/ftobjs.c, src/base/ftsystem.c, - - src/cache/ftcimage.c, src/cache/ftcsbits.c, - - src/cff/cffdriver.c, src/cff/cffload.c, src/cff/cffobjs.c, - - src/cid/cidload.c, src/cid/cidparse.c, src/cid/cidriver.c, - - src/pcf/pcfdriver.c, src/pcf/pcfread.c, - - src/psaux/t1cmap.c, src/psaux/t1decode.c, - - src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.c, - src/pshinter/pshrec.c, - - src/psnames/psmodule.c, - - src/raster/ftraster.c, - - src/sfnt/sfdriver.c, src/sfnt/ttload.c, - - src/smooth/ftgrays.c, - - src/type1/t1afm.c, src/type1/t1driver.c, src/type1/t1gload.c, - src/type1/t1load.c, src/type1/t1objs.c, src/type1/t1parse.c, - - builds/unix/ftconfig.in, builds/vms/ftconfig.h, - - builds/amiga/src/base/ftdebug.c: - - Added the new configuration file `ftstdlib.h' used to define - aliases for all ISO C library functions used by the engine - (e.g. strlen, qsort, setjmp, etc.). - - This eases the porting of FreeType 2 to environments like - XFree86 modules/extensions. - - Also removed many #include <string.h>, #include <stdlib.h>, etc. - from the engine's sources where they are not needed. - - * src/sfnt/ttpost.c: Use macro name for psnames.h. - -2002-04-12 Vincent Caron <v.caron@zerodeux.net> - - * configure, builds/detect.mk: Updated the build system to print - a warning message in case GNU Make isn't used to build the library. - -2002-04-11 David Turner <david@freetype.org> - - * README, docs/CHANGES, Jamfile.in: Updates for the 2.1.0 release. - - * docs/FTL.txt: Updated license text to provide a preferred - disclaimer and adjust copyright dates/extents. - - * include/freetype/cache/ftcglyph.h: Removing obsolete (and - confusing) comment. - - * Jamfile.in: New file. - -2002-04-11 Maxim Shemanarev <mcseemagg@yahoo.com> - - * src/smooth/ftgrays.c (gray_hline): Minor optimization. - -2002-04-02 Werner Lemberg <wl@gnu.org> - - Fixes from the stable branch: - - * include/freetype/config/ftoption.h (FT_CONFIG_OPTION_OLD_CALCS): - Removed. - [FT_CONFIG_OPTION_OLD_CALCS]: Removed. - * include/freetype/internal/ftcalc.h, src/base/ftcalc.c - [FT_CONFIG_OPTION_OLD_CALCS]: Removed. - - * src/base/fttrigon.c (FT_Vector_Length): Change algorithm to match - output of FreeType 1. - - * src/pshinter/pshglob.c (psh_globals_scale_widths): Fixed a small - bug that created un-even stem widths when hinting Postscript fonts. - - * src/type1/t1driver.c, src/type1/t1parse.c: 16bit fixes. - -2002-04-01 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c: 16bit fixes. - (TT_Load_Simple_Glyph): Improve debug messages. - (load_truetype_glyph): Remove dead code. - * src/truetype/ttinterp.c: 16bit fixes. - * src/truetype/ttobjs.c: Ditto. - - * include/freetype/ftsnames.h, include/freetype/internal/sfnt.h, - src/cff/cffload.h, src/psaux/psobjs.h, src/truetype/ttinterp.[ch], - src/sfnt/ttpost.h: s/index/idx/. - -2002-03-31 Yao Zhang <yaoz@vidar.niaaa.nih.gov> - - * src/truetype/ttobjs.c (TT_Size_Init): Fix typo. - -2002-03-31 Werner Lemberg <wl@gnu.org> - - * src/otlayout/otlcommn.c, src/otlayout/otlcommn.h: s/index/idx/. - * src/psaux/t1cmap.c: Ditto. - * src/sfnt/ttcmap0.c: Ditto. - - * include/freetype/internal/tttypes.h, - include/freetype/internal/sfnt.h (TT_Goto_Table_Func): Renamed to ... - (TT_Loader_GotoTableFunc): This. - * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix debug - messages. - * src/psnames/psmodule.c (psnames_interface) - [!FT_CONFIG_OPTION_ADOBE_GLYPH_LIST]: Fix typo. - * src/sfnt/sfdriver.c (get_sfnt_table): 16bit fix. - * src/sfnt/ttcmap.c: 16bit fixes (0xFFFF -> 0xFFFFU). - * src/sfnt/ttcmap0.c: 16bit fixes. - (TT_Build_CMaps): Simplify debug messages. - (tt_cmap12_char_next): Fix offset. - * src/sfnt/ttload.c (TT_Load_Names, TT_Load_CMap): Fix debug - messages. - (TT_Load_OS2): 16bit fix. - -2002-03-30 David Turner <david@freetype.org> - - * include/freetype/internal/tttypes.h: Adding comments to some of - the TT_FaceRec fields. - - * src/sfnt/ttcmap0.c (TT_Build_CMaps): Removed compiler warnings. - - * src/sfnt/sfobjs.c (tt_name_entry_ascii_from_{utf16,ucs4,other}: - New functions. - (tt_face_get_name): Use them to properly extract an ascii font name. - -2002-03-30 Werner Lemberg <wl@gnu.org> - - * include/freetype/t1tables.h (t1_blend_max): Fix typo. - * src/base/ftstream.c: Simplify FT_ERROR calls. - * src/cff/cffdrivr.c (cff_get_glyph_name): Fix debug message. - - * src/cff/cffobjs.c (CFF_Driver_Init, CFF_Driver_Done) - [TT_CONFIG_OPTION_EXTEND_ENGINE]: Removed. - * src/cff/sfobjs.c (SFNT_Load_Face) - [TT_CONFIG_OPTION_EXTEND_ENGINE]: Ditto. - * src/truetype/ttobjs.c (TT_Init_Driver, TT_Done_Driver) - [TT_CONFIG_OPTION_EXTEND_ENGINE]: Ditto. - - * src/truetype/ttdriver.c, src/truetype/ttobjs.c, - src/truetype/ttobjs.h: Renaming driver functions to the - FT_<Subject>_<Action> scheme: - - TT_Init_Driver => TT_Driver_Init - TT_Done_Driver => TT_Driver_Done - TT_Init_Face => TT_Face_Init - TT_Done_Face => TT_Face_Done - TT_Init_Size => TT_Size_Init - TT_Done_Size => TT_Size_Done - TT_Reset_Size => TT_Size_Reset - -2002-03-29 Werner Lemberg <wl@gnu.org> - - * builds/vms/ftconfig.h: Rename LOCAL_DEF and LOCAL_FUNC to - FT_LOCAL and FT_LOCAL_DEF, respectively, as with other ftconfig.h - files. - * builds/unix/ftconfig.in: Add argument to FT_LOCAL and - FT_LOCAL_DEF. - * src/truetype/ttinterp.c: s/FT_Assert/FT_ASSERT/. - * builds/unix/configure.ac: Temporarily deactivate creation of - ../../Jamfile. - * builds/unix/configure: Updated. - -2002-03-28 KUSANO Takayuki <AE5T-KSN@asahi-net.or.jp> - - * src/sfnt/sfdriver.c (get_sfnt_postscript_name): Fix serious typos. - -2002-03-28 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/psaux.h (PSAux_ServiceRec): Fix - compiler warnings. - * include/freetype/internal/t1types.h (T1_FaceRec): Use `const' for - some members. - * src/base/ftapi.c (FT_New_Memory_Stream): Fix typos. - * src/psaux/t1cmap.c (t1_cmap_std_init, t1_cmap_unicode_init): Add - cast. - (t1_cmap_{standard,expert,custom,unicode}_class_rec): Use - `FT_CALLBACK_TABLE_DEF'. - * src/psaux/t1cmap.h: Updated. - * src/sfnt/ttcmap0.c (TT_Build_CMaps): Use `ft_encoding_none' - instead of zero. - * src/type1/t1objs.c (T1_Face_Init): Use casts. - -2002-03-26 David Turner <david@freetype.org> - - * src/sfnt/sfdriver.c, src/sfnt/sfobjs.c, src/sfnt/ttcmap0.c: - Fixed a small bug in the FT_CMaps support code. - -2002-03-25 David Turner <david@freetype.org> - - * src/truetype/ttinterp.c (Norm): Replaced with... - (TT_VecLen): This. - (TT_MulFix14, TT_DotFix14): New functions. - (Project, Dual_Project, Free_Project, Compute_Point_Displacement, - Ins_SHPIX, Ins_MIAP, Ins_MIRP): Use them. - [FT_CONFIG_OPTION_OLD_CALCS]: Removed all code. - -2002-03-22 David Turner <david@freetype.org> - - * src/base/ftobjs.c, src/sfnt/ttcmap0.c, src/type1/t1objs.c: - Various fixes to make the FT_CMaps support work correctly (more - tests are still needed). - - * include/freetype/internal/ftobjs.h, src/sfnt/Jamfile, - src/sfnt/rules.mk, src/sfnt/sfnt.c, src/sfnt/sfobjs.c, - src/sfnt/ttload.c, src/sfnt/ttcmap0.c, src/sfnt/ttcmap0.h: Updated - the SFNT charmap support to use FT_CMaps. - - * include/freetype/fterrdef.h: New file. - * include/freetype/fterrors.h: Include it. It contains all error - codes. - * include/freetype/config/ftheader.h (FT_ERROR_DEFINITIONS_H): New - macro. - - * include/freetype/internal/ftmemory.h, and a lot of other files: - Changed the names of memory macros. Examples: - - MEM_Set => FT_MEM_SET - MEM_Copy => FT_MEM_COPY - MEM_Move => FT_MEM_MOVE - - ALLOC => FT_ALLOC - FREE => FT_FREE - REALLOC = >FT_REALLOC - - FT_NEW was introduced to allocate a new object from a _typed_ - pointer. - - Note that ALLOC_ARRAY and REALLOC_ARRAY have been replaced by - FT_NEW_ARRAY and FT_RENEW_ARRAY which take _typed_ pointer - arguments. - - This results in _lots_ of sources being changed, but makes the code - more generic and less error-prone. - - * include/freetype/internal/ftstream.h, src/base/ftstream.c, - src/cff/cffload.c, src/pcf/pcfread.c, src/sfnt/ttcmap.c, - src/sfnt/ttcmap0.c, src/sfnt/ttload.c, src/sfnt/ttpost.c, - src/sfnt/ttsbit.c, src/truetype/ttgload.c, src/truetype/ttpload.c, - src/winfonts/winfnt.c: Changed the definitions of stream macros. - Examples: - - NEXT_Byte => FT_NEXT_BYTE - NEXT_Short => FT_NEXT_SHORT - NEXT_UShortLE => FT_NEXT_USHORT_LE - READ_Short => FT_READ_SHORT - GET_Long => FT_GET_LONG - etc. - - Also introduced the FT_PEEK_XXXX functions. - - * src/cff/cffobjs.c (CFF_Build_Unicode_Charmap): Removed commented - out function. - (find_encoding): Removed. - (CFF_Face_Init): Remove charmap support. - - * include/freetype/config/ftoption.h (FT_CONFIG_OPTION_USE_CMAPS, - TT_CONFIG_CMAP_FORMAT{0,2,4,6,8,10,12}): New macros to fine-tune - support of cmaps. - -2002-03-21 David Turner <david@freetype.org> - - * src/base/ftobjs.c, src/pcf/pcfdriver.c, src/pcf/pcfread.c: Updated - to new FT_CMap definitions. - - * src/psaux/t1cmap.h, src/psaux/t1cmap.c, src/type1/t1cmap.h, - src/type1/t1cmap.c: Updating and moving the Type 1 FT_CMap support - from `src/type1' to `src/psaux' since it is going to be shared by - the Type 1 and CID font drivers. - - * src/psaux/Jamfile, src/psaux/psaux.c, src/psaux/psauxmod.c, - src/psaux/rules.mk, include/freetype/internal/psaux.h: Added support - for Type 1 FT_CMaps. - -2002-03-20 David Turner <david@freetype.org> - - * src/base/ftgloadr.c (FT_GlyphLoader_CheckSubGlyphs): Fixed a - memory allocation bug that was due to un-careful renaming of the - FT_SubGlyph type. - - * src/base/ftdbgmem.c (ft_mem_table_destroy): Fixed a small bug that - caused the library to crash with Electric Fence when memory - debugging is used. - - * Renaming stream macros. Examples: - - FILE_Skip => FT_STREAM_SKIP - FILE_Read => FT_STREAM_READ - ACCESS_Frame => FT_FRAME_ENTER - FORGET_Frame => FT_FRAME_EXIT - etc. - - * src/sfnt/sfdriver.c (get_sfnt_postscript_name): Fixed memory leak. - - * include/freetype/internal/ftobjs.h: Changing the definition of - FT_CMap_CharNextFunc slightly. - - * src/cff/*.c: Updating CFF type definitions. - -2002-03-14 David Turner <david@freetype.org> - - * include/freetype/internal/autohint.h, src/autohint/ahmodule.c, - src/base/ftapi.c, src/base/ftobjs.c: Updating the type definitions - for the auto-hinter module. - - FT_AutoHinter_Interface => FT_AutoHinter_ServiceRec - FT_AutoHinter_Interface* => FT_AutoHinter_Service - etc. - - FT_AutoHinter_Get_Global_Func => FT_AutoHinter_GlobalGetFunc - FT_AutoHinter_Done_Global_Func => FT_AutoHinter_GlobalDoneFunc - etc. - - * ahloader.h [_STANDALONE_]: Removed all conditional code. - - * include/freetype/internal/cfftypes.h, src/cff/*.c: Updating the - type definitions of the CFF font driver. - - CFF_Font => CFF_FontRec - CFF_Font* => CFF_Font - etc. - - * include/freetype/internal/fnttypes.h, src/winfonts/*.c: Updating - type definitions of the Windows FNT font driver. - - * include/freetype/internal/ftdriver.h, - include/freetype/internal/ftobjs.h, src/base/ftapi.c, - src/base/ftobjs.c, src/cff/cffdrivr.c, src/cff/cffdrivr.h, - src/cid/cidriver.c, src/cid/cidriver.h, src/pcf/pcfdriver.c, - src/pcf/pcfdriver.h, src/truetype/ttdriver.c, - src/truetype/ttdriver.h, src/type1/t1driver.c, src/type1/t1driver.h, - src/winfonts/winfnt.c, src/winfonts/winfnt.h: Updating type - definitions for font drivers. - - FTDriver_initFace => FT_Face_InitFunc - FTDriver_initGlyphSlot => FT_Slot_InitFunc - etc. - - * src/cid/cidobjs.c (CID_Face_Init): Remove dead code. - - * include/freetype/internal/ftobjs.h, src/base/ftobjs.c: Updated a - few face method definitions: - - FT_PSName_Requester => FT_Face_GetPostscriptNameFunc - FT_Glyph_Name_Requester => FT_Face_GetGlyphNameFunc - FT_Name_Index_Requester => FT_Face_GetGlyphNameIndexFunc - - * src/base/ftapi.c: New file. It contains backwards compatibility - functions. - - * include/freetype/internal/psaux.h, src/cid/cidload.c, - src/cidtoken.h, src/psaux/psobjs.c, src/psaux/psobjs.h, - src/psaux/t1decode.c, stc/type1/t1load.c, src/type1/t1tokens.h: - Updated common PostScript type definitions. - Renamed all enumeration values like to uppercase variants: - - t1_token_any => T1_TOKEN_TYPE_ANY - t1_field_cid_info => T1_FIELD_LOCATION_CID_INFO - etc. - - * include/freetype/internal/psglobals.h: Removed. - * include/freetype/internal/pshints.h, src/pshinter/pshglob.h: - Updated. - - * include/freetype/internal/tttypes.h, - include/freetype/internal/sfnt.h, src/base/ftnames.c, - src/cff/cffdrivr.c, src/sfnt/*.c, src/truetype/*.c: Updated - SFNT/TrueType type definitions. - - * include/freetype/freetype.h, include/freetype/internal/ftgloadr.h: - Updating type defintiions for the glyph loader. - -2002-03-13 Antoine Leca <antoine@oriolnet.com> - - * include/freetype/config/ftoption.h: Changed the automatic - detection of Microsoft C compilers to automatically support 64-bit - integers only since revision 9.00 (i.e. >= Visual C++ 2.0). - -2002-03-08 Werner Lemberg <wl@gnu.org> - - * src/base/ftutil.c (FT_Realloc): Use MEM_Set instead of memset. - -2002-03-07 Werner Lemberg <wl@gnu.org> - - * src/base/ftdbgmem.c (ft_mem_table_resize, ft_mem_table_new, - ft_mem_table_set, ft_mem_debug_alloc, ft_mem_debug_free, - ft_mem_debug_realloc, ft_mem_debug_done, FT_Alloc_Debug, - FT_Realloc_Debug, FT_Free_Debug): Fix compiler warnings. - * src/base/ftcalc.c (FT_MulFix): Ditto. - * src/cff/cffdrivr.c (cff_get_name_index): Ditto. - * src/cff/cffobjs.c (CFF_Size_Get_Global_Funcs, CFF_Size_Init, - CFF_GlyphSlot_Init): Ditto. - * src/cid/cidobjs.c (CID_GlyphSlot_Init, - CID_Size_Get_Globals_Funcs): Ditto. - * src/type1/t1objs.c (T1_Size_Get_Globals_Funcs, T1_GlyphSlot_Init): - Ditto. - * src/pshinter/pshmod.c (pshinter_interface): Use `static const'. - * src/winfonts/winfnt.c (FNT_Get_Next_Char): Remove unused - variables. - - * include/freetype/internal/psaux.h (T1_Builder_Funcs): Renamed - to... - (T1_Builder_FuncsRec): This. - (T1_Builder_Funcs): New typedef. - (PSAux_Interface): Remove compiler warnings. - * src/psaux/psauxmod.c (t1_builder_funcs), src/psaux/psobjs.h - (t1_builder_funcs): Updated. - - * src/pshinter/pshglob.h (PSH_Blue_Align): Replaced with ... - (PSH_BLUE_ALIGN_{NONE,TOP,BOT}): New defines. - (PSH_AlignmentRec): Updated. - - * include/freetype/internal/ftstream.h (GET_Char, GET_Byte): Fix - typo. - * include/freetype/internal/ftgloadr.h (FT_SubGlyph): Ditto. - * src/base/ftstream (FT_Get_Char): Rename to... - (FT_Stream_Get_Char): This. - - * src/base/ftnames.c (FT_Get_Sfnt_Name): s/index/idx/ -- `index' is - a built-in function in gcc, causing warning messages with gcc 3.0. - * src/autohint/ahglyph.c (ah_outline_load): Ditto. - * src/autohint/ahglobal.c (ah_hinter_compute_blues): Ditto. - * src/cache/ftcmanag.c (ftc_family_table_alloc, - ftc_family_table_free, FTC_Manager_Done, FTC_Manager_Register_Cache): - Ditto. - * src/cff/cffload.c (cff_new_index, cff_done_index, - cff_explicit_index, CFF_Access_Element, CFF_Forget_Element, - CFF_Get_Name, CFF_Get_String, CFF_Load_SubFont, CFF_Load_Font, - CFF_Done_Font): Ditto. - * src/psaux/psobjs.c (PS_Table_Add, PS_Parser_LoadField): Ditto. - * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Ditto. - * src/pshinter/pshrec.c (ps_mask_test_bit, ps_mask_clear_bit, - ps_mask_set_bit, ps_dimension_add_t1stem, ps_hints_t1stem3, - * src/pshinter/pshalgo1.c (psh1_hint_table_record, - psh1_hint_table_record_mask, psh1_hint_table_activate_mask): Ditto. - * src/pshinter/pshalgo2.c (psh2_hint_table_record, - psh2_hint_table_record_mask, psh2_hint_table_activate_mask): Ditto. - * src/sfnt/ttpost.c (Load_Format_20, Load_Format_25, - TT_Get_PS_Name): Ditto. - * src/truetype/ttgload.c (TT_Get_Metrics, Get_HMetrics, - load_truetype_glyph): Ditto. - * src/type1/t1load.c (parse_subrs, T1_Open_Face): Ditto. - * src/type1/t1afm.c (T1_Get_Kerning): Ditto. - * include/freetype/cache/ftcmanag.h (ftc_family_table_free): Ditto. - -2002-03-06 David Turner <david@freetype.org> - - * src/type1/t1objs.c (T1_Face_Init), src/cid/cidobjs.c - (CID_Face_Init): Fixed another bug related to the - ascender/descender/text height of Postscript fonts. - - * src/pshinter/pshalgo2.c (print_zone): Renamed to ... - (psh2_print_zone): This. - * src/pshinter/pshalgo1.c (print_zone): Renamed to ... - (psh1_print_zone): This. - - * include/freetype/freetype.h, include/freetype/internal/ftobjs.h, - src/base/ftobjs.c: Adding the new FT_Library_Version API to return - the library's current version in dynamic links. - * src/base/ftinit.c (FT_Init_FreeType): Updated. - -2002-03-06 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshglob.h (PSH_DimensionRec): s/std/stdw/. - * src/pshinter/pshglob.c (psh_global_scale_widths, - psh_dimension_snap_width, psh_globals_destroy, psh_globals_new): - Ditto. - -2002-03-05 David Turner <david@freetype.org> - - * src/type1/t1objs.c (T1_Face_Init), src/cff/cffobjs.c - (CFF_Face_Init), src/cid/cidobjs.c (CID_Face_Init): Removing the bug - that returned global BBox values in 16.16 fixed format (instead of - integer font units). - - * src/cid/cidriver.c (cid_get_postscript_name): Fixed a bug that - caused the CID driver to return Postscript font names with a leading - slash (`/') as in `/MOEKai-Regular'. - - * src/sfnt/ttload.c (TT_Load_Names), src/sfnt/sfobjs.c (Get_Name), - src/sfnt/sfdriver.c (get_sfnt_postscript_name): Fixed the loader so - that it accepts broken fonts like `foxjump.ttf', which made FreeType - crash when trying to load them. - - Also improved the name table parser to be able to load - Windows-encoded entries before Macintosh or Unicode ones, since it - seems some fonts don't have reliable values here anyway. - - * include/freetype/internal/psnames.h: Add typedef for - `PSNames_Service'. - -2002-03-05 Werner Lemberg <wl@gnu.org> - - * builds/unix/aclocal.m4, builds/unix/ltmain.sh: Update to libtool - 1.4.2. - Apply a small patch for AIX to make shared libraries work (this - patch is already in the CVS version of libtool). - - * builds/unix/config.sub, builds/unix/config.guess: Updated to - recent versions. - - * builds/unix/configure.ac: Fix typo - (AC_CONFIG_FILE->AC_CONFIG_FILES). - - * builds/unix/configure: Regenerated. - -2002-02-28 David Turner <david@freetype.org> - - * include/freetype/ftconfig.h: Changed `FT_LOCAL xxxx' to - `FT_LOCAL( xxxx )' everywhere in the source. The same goes for - `FT_LOCAL_DEF xxxx' which is translated to `FT_LOCAL_DEF( xxxxx )'. - - * include/freetype/freetype.h (FREETYPE_MINOR, FREETYPE_PATCH): - Changing version to 2.1.0 to indicate an unstable branch. - Added the declarations of FT_Get_First_Char and FT_Get_Next_Char. - - * src/base/ftobjs.c: Implement FT_Get_First_Char and - FT_Get_Next_Char. - - * include/freetype/t1tables.h: Renaming structure types. This - - typedef T1_Struct_ - { - } T1_Struct; - - becomes - - typedef PS_StructRec_ - { - } PS_StructRec, *PS_Struct; - - typedef PS_StructRec T1_Struct; /* backwards-compatibility */ - - Hence, we increase the coherency of the source code by effectively - using the `Rec' prefix for structure types. - -2002-02-27 David Turner <david@freetype.org> - - * src/sfnt/ttload.c (TT_Load_Names): Simplifying and securing the - names table loader. Invalid individual name entries are now handled - correctly. This allows the loading of very buggy fonts like - `foxjump.ttf' without allocating tons of memory and causing crashes. - - * src/otlayout/otlcommon.h, src/otlayout/otlcommon.c: Adding (still - experimental) code for OpenType Layout tables validation and - parsing. - - * src/type1/t1cmap.h, src/type1/t1cmap.c: Adding (still - experimental) code for Type 1 charmap processing. - - * src/sfnt/ttcmap0.c: New file. It contains a new, still - experimental SFNT charmap processing support. - - * include/freetype/internal/ftobjs.h: Adding validation support as - well as internal charmap object definitions (FT_CMap != FT_CharMap). - -2002-02-24 David Turner <david@freetype.org> - - * Renaming stream functions to the FT_<Subject>_<Action> scheme: - - FT_Seek_Stream => FT_Stream_Seek - FT_Skip_Stream => FT_Stream_Skip - FT_Read_Stream => FT_Stream_Read - FT_Read_Stream_At => FT_Stream_Read_At - FT_Access_Frame => FT_Stream_Enter_Frame - FT_Forget_Frame => FT_Stream_Exit_Frame - FT_Extract_Frame => FT_Stream_Extract_Frame - FT_Release_Frame => FT_Stream_Release_Frame - FT_Get_XXXX => FT_Stream_Get_XXXX - FT_Read_XXXX => FT_Stream_Read_XXXX - - FT_New_Stream( filename, stream ) => - FT_Stream_Open( stream, filename ) - - (The function doesn't create the FT_Stream structure, it simply - initializes it for reading.) - - FT_New_Memory_Stream( library, FT_Byte* base, size, stream ) => - FT_Stream_Open_Memory( stream, const FT_Byte* base, size ) - - FT_Done_Stream => FT_Stream_Close - FT_Stream_IO => FT_Stream_IOFunc - FT_Stream_Close => FT_Stream_CloseFunc - - ft_close_stream => ft_ansi_stream_close (in base/ftsystem.c only) - ft_io_stream => ft_ansi_stream_io (in base/ftsystem.c only) - - * src/base/ftutil.c: New file. Contains all memory and list - management code (previously in `ftobjs.c' and `ftlist.c', - respectively). - - * include/freetype/internal/ftobjs.h: Moving all code related to - glyph loaders to ... - * include/freetype/internal/ftgloadr.h: This new file. - `FT_GlyphLoader' is now a pointer to the structure - `FT_GlyphLoaderRec'. - (ft_glyph_own_bitmap): Renamed to ... - (FT_GLYPH_OWN_BITMAP): This. - * src/base/ftobjs.c: Moving all code related to glyph loaders - to ... - * src/base/ftgloadr.c: This new file. - -2002-02-22 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/ftdebug.h (FT_Trace): Remove comma in - enum to avoid compiler warnings. - -2002-02-21 David Turner <david@freetype.org> - - Modified the debug sub-system initialization. Trace levels can now - be specified within the `FT2_DEBUG' environment variable. See the - comments within `ftdebug.c' for more details. - - * src/base/ftdebug.c: (FT_SetTraceLevel): Removed. - (ft_debug_init): New function. - (ft_debug_dummy): Removed. - Updated to changes in ftdebug.h - - * include/freetype/internal/ftdebug.h: Always define - FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE is defined. - (FT_Assert): Renamed to ... - (FT_ASSERT): This. - Some stuff from ftdebug.h has been moved to ... - - * include/freetype/internal/fttrace.h: New file, to define the trace - levels used for debugging. It is used both to define enums and - toggle names for FT2_DEBUG. - - * include/freetype/internal/internal.h: Updated. - - * src/base/ftobjs.c, src/base/ftstream.c: Updated. - - * include/freetype/internal/ftextend.h, src/base/ftextend.c: - Removed. Both files are now completely obsolete. - * src/base/Jamfile, src/base/rules.mk: Updated. - - * include/freetype/fterrors.h: Adding `#undef FT_ERR_CAT' and - `#undef FT_ERR_XCAT' to avoid warnings with certain compilers (like - LCC). - - * src/pshinter/pshalgo2.c (print_zone): Renamed to ... - (psh2_print_zone): This to avoid errors during compilation of debug - library. - - * src/smooth/ftgrays.c (FT_COMPONENT): Change definition to as - `trace_smooth'. - -2002-02-20 David Turner <david@freetype.org> - - * README: Adding `devel@freetype.org' address for bug reports. - -2002-02-20 Werner Lemberg <wl@gnu.org> - - * builds/unix/install.mk (check): New dummy target. - (.PHONY): Add it. - -2002-02-19 Werner Lemberg <wl@gnu.org> - - * builds/freetype.mk (FT_CFLAGS): Use $(INCLUDE_FLAGS) first. - - * src/cache/ftccache.c (ftc_cache_resize): Mark `error' as unused - to avoid compiler warning. - * src/cff/cffload.c (CFF_Get_String): Ditto. - * src/cff/cffobjs.c (CFF_StrCopy): Ditto. - * src/psaux/psobjs.c (PS_Table_Done): Ditto. - * src/pcf/pcfread.c (pcf_seek_to_table_type): Ditto. - * src/sfnt/sfdriver.c (get_sfnt_postscript_name): Ditto. - (pcf_get_bitmaps): The same for `sizebitmaps'. - * src/psaux/t1decode.c (T1_Decode_Parse_Charstrings): The same for - `orig_y'. - (t1operator_seac): Comment out more dead code. - * src/pshinter/pshalgo2.c (ps2_hints_apply): Add `DEBUG_HINTER' - conditional. - * src/truetype/ttgload.c (TT_Process_Simple_Glyph, - load_truetype_glyph): Add `TT_CONFIG_OPTION_BYTECODE_INTERPRETER' - conditional. - -2002-02-18 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahglyph.c (ah_outline_link_segments): Remove unused - variables. - * src/autohint/ahhint.c (ah_align_serif_edge): Use FT_UNUSED instead - of UNUSED. - * src/autohint/ahmodule.c (ft_autohinter_reset): Ditto. - * src/pshinter/pshrec.c (ps_mask_table_merge): Fix typo in variable - swapping code. - * src/pshinter/pshglob.h (PSH_Blue_Align): Add PSH_BLUE_ALIGN_NONE. - * src/pshinter/pshglob.c (psh_blues_snap_stem): Use it. - * src/pshinter/pshalgo1.c (psh1_hint_table_optimize): Ditto. - * src/pshinter/pshalgo2.c (psh2_hint_align): Ditto. - * include/freetype/internal/ftobjs.h (UNUSED): Removed. - -2002-02-10 Roberto Alameda <ojancano@geekmail.de> - - Add support for ISOLatin1 PS encoding. - - * include/freetype/freetype.h (ft_encoding_latin_1): New tag - (`lat1'). - * include/freetype/internal/t1types.h (T1_Encoding_Type): Add - `t1_encoding_isolatin1'. - * src/type1/t1driver.c (Get_Char_Index, Get_Next_Char): Handle - ft_encoding_latin_1. - * src/type1/t1load.c (parse_encoding): Handle `ISOLatin1Encoding'. - * src/type1/t1objs.c (T1_Face_Init): Handle `t1_encoding_isolatin1'. - -2002-02-09 Werner Lemberg <wl@gnu.org> - - * README: Fix typo. - * docs/CHANGES: Minor fixes. - - - * Version 2.0.8 released. - ========================= - - -2002-02-08 David Turner <david@freetype.org> - - * docs/CHANGES: Updating for 2.0.8. - - * include/freetype/freetype.h: Setting `PATCH_LEVEL' to 8 and - removing `FT_Get_Next_Char' from the API (temporarily). - - * include/freetype/freetype.h: Adding comments to FT_Get_Next_Char; - note that this function might temporarily be removed for the 2.0.8 - release. - -2002-02-07 David Turner <david@freetype.org> - - * src/pcf/pcfread.c (pcf_load_font): Removed immature support of - the AVERAGE_WIDTH property. - -2002-02-06 David Turner <david@freetype.org> - - * src/sfnt/sfobjs.c (SFNT_Load_Face): Since many fonts embedded in - PDF documents do not include 'cmap', 'post' and 'name' tables, the - SFNT face loader has been changed to not immediately report an - error if these are not present. - - Note that the specification _requires_ these tables, but Adobe - seems to ignore it completely. - - * src/sfnt/ttcmap.c: Removing compiler warnings. - - * src/pcf/pcfread.c (pcf_read_TOC): Use FT_UInt. - (pcf_parse_metric, pcf_parse_compressed_metric): Removed. Code - is now in ... - (pcf_get_metric): Here. - (pcfSeekToType): Renamed to ... - (pcf_seek_to_table_type): This. - Use FT_Int. - (pcfHasType): Renamed to ... - (pcf_has_table_type): This. - Use FT_Int. - (find_property): Renamed to ... - (pcf_find_property): This. - Use FT_Int. - (pcf_get_bitmaps, pcf_get_encodings): Handle invalid PCF fonts - better (delaying format checks out of FT_Access_Frame .. - FT_Forget_Frame blocks to avoid leaving the stream in an incorrect - state when encountering an invalid PCF font). - - * src/pcf/pcfdriver.c (PCF_Done_Face): Renamed to ... - (PCF_Face_Done): This. - (PCF_Init_Face): Renamed to ... - (PCF_Face_Init): This. - (PCF_Get_Char_Index): Renamed to ... - (PCF_Char_Get_Index): This. - (PCF_Get_Next_Char): Renamed to ... - (PCF_Char_Get_Next): This. - (pcf_driver_class): Updated. - - * src/pcf/pcf.h (PCF_Done_Face): Removed. - -2002-02-06 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/pcf/pcfdriver.c (FT_Done_Face): Fixed small memory leak. - - * src/pcf/pcfread.c (pcf_load_font): Now handles the `AVERAGE_WIDTH' - property to return correct character pixel (width/height) pairs for - embedded bitmaps. - -2002-02-04 Keith Packard <keithp@keithp.com> - - Adding the function `FT_Get_Next_Char', doing the obvious thing - w.r.t. the selected charmap. - - * include/freetype/freetype.h: Add prototype. - * include/freetype/internal/ftdriver.h: Add `FTDriver_getNextChar' - typedef. - (FT_Driver_Class): Use it. - * include/freetype/internal/psnames.h: Add `PS_Next_Unicode_Func' - typedef. - (PSNames_Interface): Use it. - * include/freetype/internal/tttypes.h: Add `TT_CharNext_Func' - typedef. - (TT_CMapTable): Use it. - - * src/base/ftobjs.c (FT_Get_Next_Char): New function, implementing - high-level API. - * src/cff/cffdrivr.c (cff_get_next_char): New function. - (cff_driver_class): Add it. - * src/cid/cidriver.c (Cid_Get_Next_Char): New function. - (t1cid_driver_class): Add it. - * src/pcf/pcfdriver.c (PCF_Get_Next_Char): New function. - (pcf_driver_class): Add it. - * src/psnames/psmodule.c (PS_Next_Unicode): New function. - (psnames_interface): Add it. - * src/sfnt/ttcmap.c (code_to_next0, code_to_next2, code_to_next4, - code_to_next6, code_to_next_8_12, code_to_next_10): New auxiliary - functions. - (TT_CharMap_Load): Use them. - * src/truetype/ttdriver.c (Get_Next_Char): New function. - (tt_driver_class): Add it. - * src/type1/t1driver.c (Get_Next_Char): New function. - (t1_driver_class): Add it. - * src/winfonts/winfnt.c (FNT_Get_Next_Char): New function. - (winfnt_driver_class): Add it. - - * src/pcf/pcfread.c (pcf_load_font): For now, report Unicode for - Unicode and Latin 1 encodings. - -2002-02-02 Keith Packard <keithp@keithp.com> - - * builds/unix/freetype-config.in: Add missing `fi'. - - - * Version 2.0.7 released. - ========================= - - -2002-02-01 David Turner <david@freetype.org> - - * include/freetype/freetype.h: Increasing FREETYPE_PATCH to 7 - for the new release. - -2002-01-31 David Turner <david@freetype.org> - - * README, README.UNX, docs/CHANGES: Updating documentation for the - 2.0.7 release. - -2002-01-30 David Turner <david@freetype.org> - - * INSTALL: Moved to ... - * docs/INSTALL: Here to avoid conflicts with the `install' script on - Windows, where the filesystem doesn't preserve case. - -2002-01-29 David Turner <david@freetype.org> - - * configure: Fixed the script. It previously didn't accept more - than one argument correctly. For example, when typing: - - ./configure --disable-shared --disable-nls - - the `--disable-nls' was incorrectly sent to the `make' program. - -2002-01-29 Werner Lemberg <wl@gnu.org> - - * README.UNX: Fix typo. - * builds/unix/install.mk (uninstall): Fix library name for libtool. - -2002-01-28 Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr> - - * src/pcf/pcfdriver.c (PCF_Done_Face): Fix incorrect destruction of - the face object (face->toc.tables, face->root.family_name, - face->root.available_size, face->charset_encoding, - face->charset_registry are now freed). Thanks to Niels Moseley. - -2002-01-28 Roberto Alameda <ojancano@geekmail.de> - - * src/type1/t1load.c (parse_encoding): Set `loader->num_chars'. - -2002-01-28 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_subrs, parse_charstrings): Use copy - of `base' string for decrypting to not modify the original data. - Based on a patch by Jakub Bogusz <qboosh@pld.org.pl>. - -2002-01-27 Giuliano Pochini <pochini@shiny.it> - - * src/smooth/ftgrays.c (gray_render_scanline): Fix bug which caused - bad rendering of thin lines (less than one pixel thick). - -2002-01-25 Werner Lemberg <wl@gnu.org> - - * src/cff/cffdrivr.c (cff_get_name_index): Make last patch work - actually. - -2002-01-25 Martin Zinser <zinser@decus.de> - - * src/cache/ftccache.c (ftc_node_done, ftc_node_destroy): Fix - compilation warnings. - * src/base/descrip.mms (OBJS): Add `ftmm.obj'. - * src/cache/descrip.mms (ftcache.obj): Dependencies added. - -2002-01-25 WANG Yi <wangyi@founder.com.cn> - - * src/cff/cffdrivr.c (cff_get_name_index): Fix deallocation bug. - -2002-01-21 Antoine Leca <Antoine-Freetype@Leca-Marti.org> - - * docs/PATENTS: Typo fixed (thanks to Detlef `Hawkeye' W�rkner) in - the URL for the online resource. - -2002-01-18 Ian Brown <ian.brown@printsoft.de> - - * builds/win32/ftdebug.c: New file. - * builds/win32/visualc/freetype.dsp: Updated. - -2002-01-18 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * builds/amiga/src/base/ftsystem.c: Updated for AmigaOS 3.9. - * builds/amiga/README: Updated. - -2002-01-18 Ian Brown <ian.brown@printsoft.de> - - * builds/win32/visualc/freetype.dsp: Updated. - -2002-01-13 Werner Lemberg <wl@gnu.org> - - * builds/unix/freetype2.a4: The script was still buggy. - * builds/unix/freetype-config.in: Make it really work for any install - prefix. - -2002-01-10 Werner Lemberg <wl@gnu.org> - - * builds/unix/freetype2.a4: Fix some serious bugs. - -2002-01-09 David Turner <david@freetype.org> - - * builds/unix/configure.ac: Build top-level Jamfile. - -2002-01-09 Maxim Shemanarev <mcseemagg@yahoo.com> - - * src/smooth/ftgrays.c (gray_render_line): Small optimization to - the smooth anti-aliased renderer that deals with vertical segments. - This results in a 5-7% speedup in rendering speed. - -2002-01-08 David Turner <david@freetype.org> - - Added some wrapper scripts to make the installation more - Unix-friendly. - - * configure, install: New files. - - * INSTALL, README.UNX: Updated installation documentation to use the - new 'configure' and 'install' scripts. - -2002-01-07 David Turner <david@freetype.org> - - - * Version 2.0.6 released. - ========================= - - - * docs/BUGS, docs/CHANGES: Updating documentation for 2.0.6 release. - - * src/tools/docmaker.py: Fixed HTML quoting in sources. - (html_format): Replaced with ... - (html_quote): New function. - (html_quote0): New function. - (DocCode::dump_html): Small improvement. - (DocParagraph::dump, DocBlock::html): Use html_quote0 and html_quote. - - * include/freetype/config/ftoption.h: Setting default options for - a release build (debugging off, bytecode interpreter off). - - * src/base/ftobjs.c, src/base/ftoutln.c, src/cache/ftccmap.c, - src/cff/cffload.c, src/cff/cffobjs.c, src/pshinter/pshalgo2.c, - src/sfnt/ttload.c, src/sfnt/ttsbit.c: Removing small compiler - warnings (in pedantic compilation modes). - -2002-01-05 David Turner <david@freetype.org> - - * src/autohint/ahhint.c (ah_align_linked_edge): Modified computation - of auto-hinted stem widths; this avoids color fringes in - `ClearType-like' rendering. - - * src/truetype/ttgload.c (TT_Load_Glyph_Header, - TT_Load_Simple_Glyph, TT_Load_Composite_Glyph, load_truetype_glyph): - Modified the TrueType loader to make it more paranoid; this avoids - nasty buffer overflows in the case of invalid glyph data (as - encountered in the output of some buggy font converters). - -2002-01-04 David Turner <david@freetype.org> - - * README.UNX: Added special README file for Unix users. - - * builds/unix/ftsystem.c (FT_New_Stream): Fixed typo. - - * src/base/ftobjs.c: Added #include FT_OUTLINE_H to get rid - of compiler warnings. - - * src/base/ftoutln.c (FT_Outline_Check): Remove compiler warning. - -2002-01-03 Werner Lemberg <wl@gnu.org> - - * src/type1/t1objs.c (T1_Face_Init): Add cast to avoid compiler - warning. - -2002-01-03 Keith Packard <keithp@keithp.com> - - * builds/unix/ftsystem.c (FT_New_Stream): Added a fix to ensure that - all FreeType input streams are closed in child processes of a `fork' - on Unix systems. This is important to avoid (potential) access - control issues. - -2002-01-03 David Turner <david@freetype.org> - - * src/type1/t1objs.c (T1_Face_Init): Fixed a bug that crashed the - library when dealing with certain weird fonts like `Stalingrad', in - `sadn.pfb' (this font has no full font name entry). - - * src/base/ftoutln.c, include/freetype/ftoutln.h (FT_Outline_Check): - New function to check the consistency of outline data. - - * src/base/ftobjs.c (FT_Load_Glyph): Use `FT_Outline_Check' to - ensure that loaded glyphs are valid. This allows certain fonts like - `tt1095m_.ttf' to be loaded even though it appears they contain - really funky glyphs. - - There still is a bug there, though. - - * src/truetype/ttgload.c (load_truetype_glyph): Fix error condition. - -2001-12-30 David Turner <david@freetype.org> - - * src/autohint/ahhint.c (ah_hinter_load): Fix advance width - computation of auto-hinted glyphs. This noticeably improves the - spacing of letters in KDE and Gnome. - -2001-12-25 Antoine Leca <Antoine-Freetype@Leca-Marti.org> - - * builds/dos/detect.mk: Correcting the order for Borland compilers: - 16-bit bcc was never selected, always overridden by 32-bit bcc32. - -2001-12-22 Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr> - - * src/pfc/pcfread.c (pcf_load_font): Handle property `POINT_SIZE' - and fix incorrect computation of `available_sizes'. - -2001-12-22 David Turner <david@freetype.org> - - * src/autohint/ahhint.c (ah_hinter_load): Auto-hinted glyphs had an - incorrect glyph advance in the case of mono-width fonts (like - Courier, Andale Mono, and others). - -2001-12-22 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * builds/amiga/*: Adaptations to latest changes. - Support added for MorphOS. - -2001-12-22 Werner Lemberg <wl@gnu.org> - - * src/pshinter/pshrec.c (FT_COMPONENT): Redefine to `trace_pshrec'. - (ps_mask_table_merge, ps_hints_open, ps_hints_stem, - ps_hints_t1stem3, ps_hints_t2mask, ps_hints_t2counter): Fix - FT_ERROR messages. - * src/pshinter/pshalgo1.c (FT_COMPONENT): Define as - `trace_pshalgo1'. - * src/pshinter/pshalgo2.c (FT_COMPONENT): Define as - `trace_pshalgo2'. - * include/freetype/internal/ftdebug.h (FT_Trace): Updated. - - * docs/modules.txt: New file. - -2001-12-21 David Turner <david@freetype.org> - - * src/pshinter/pshrec.c (ps_hints_t2mask, ps_hints_t2counter): - Ignore invalid `hintmask' and `cntrmask' operators (instead of - returning an error). Glyph 2028 of the CFF font `MSung-Light-Acro' - couldn't be rendered otherwise (it seems its charstring is buggy, - though this requires more analysis). - (FT_COMPONENT): Define. - - * src/cff/cffgload.c (CFF_Parse_CharStrings), src/psaux/t1decode.c - (T1_Decoder_Parse_Charstrings), src/pshinter/pshalgo2.c (*), Fixed a - bug where the X and Y axis where inversed in the postscript hinter. - This caused problem when displaying on non-square surfaces. - - * src/pshinter/pshalgo2.c: s/vertical/dimension/. - - * src/pshinter/pshglob.c (psh_globals_new): Replaced a floating - point constant with a fixed-float equivalent. For some reasons not - all compilers are capable of directly computing a floating pointer - constant casted to FT_Fixed, and will link a math library instead. - -2001-12-20 Werner Lemberg <wl@gnu.org> - - * src/cache/ftccache.c (ftc_node_destroy, ftc_cache_lookup): Fix - tracing strings. - * src/cache/ftccmap.c (ftc_cmap_family_init): Ditto. - * src/cache/ftcmanag.c (ftc_family_table_alloc, - ftc_family_table_free, FTC_Manager_Check): Ditto. - * src/cache/ftcsbits.c (ftc_sbit_node_load): Ditto. - - * src/base/ftobjs.c (FT_Done_Library): Remove compiler warning. - -2001-12-20 David Turner <david@freetype.org> - - Added PostScript hinter support to the CFF and CID drivers. - - * include/freetype/internal/cfftypes.h (CFF_Font): New member - `pshinter'. - * src/cff/cffload.c (CFF_Get_Standard_Encoding): New function. - * src/cff/cffload.h: Updated. - * src/cff/cffgload.c (CFF_Init_Builder): Renamed to ... - (CFF_Builder_Init): This. - Added new argument `hinting'. - (CFF_Done_Builder): Renamed to ... - (CFF_Builder_Done): This. - (CFF_Init_Decoder): Added new argument `hinting'. - (CFF_Parse_CharStrings): Implement vstem support. - (CFF_Load_Glyph): Updated. - Add hinting support. - (cff_lookup_glyph_by_stdcharcode): Use CFF_Get_Standard_Encoding(). - (cff_argument_counts): Updated. - * src/cff/cffgload.h: Updated. - * src/cff/cffobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. - (CFF_Size_Get_Globals_Funcs, CFF_Size_Done, CFF_Size_Init, - CFF_Size_Reset, CFF_GlyphSlot_Done, CFF_GLyphSlot_Init): New - functions. - (CFF_Init_Face): Renamed to ... - (CFF_Face_Init): This. - Add hinter support. - (CFF_Done_Face): Renamed to ... - (CFF_Face_Done): This. - (CFF_Init_Driver): Renamed to ... - (CFF_Driver_Init): This. - (CFF_Done_Driver): Renamed to ... - (CFF_Driver_Done): This. - * src/cff/cffobjs.h: Updated. - * src/cff/cffdrivr.c (cff_driver_class): Updated. - - * include/freetype/internal/t1types.h (CID_FaceRec): New member - `pshinter'. - * src/cid/cidgload.c (CID_Load_Glyph): Add hinter support. - * src/cid/cidobjs.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. - (CID_GlyphSlot_Done, CID_GlyphSlot_Init, CID_Size_Get_Globals_Funcs, - CID_Size_Done, CID_Size_Init, CID_Size_Reset): New functions. - (CID_Done_Face): Renamed to ... - (CID_Face_Done): This. - (CID_Init_Face): Renamed to ... - (CID_Face_Init): This. - Add hinting support. - (CID_Init_Driver): Renamed to ... - (CID_Driver_Init): This. - (CID_Done_Driver): Renamed to ... - (CID_Driver_Done): This. - * src/cid/cidobjs.h: Updated. - * src/cidriver.c: Updated. - - * src/pshinter/pshrec.c (t2_hint_stems): Fixed. - - * src/base/ftobjs.c (FT_Done_Library): Fixed a stupid bug that - crashed the library on exit. - - * src/type1/t1gload.c (T1_Load_Glyph): Enable font matrix - transformation of hinted glyphs. - - * src/cid/cidload.c (cid_read_subrs): Fix error condition. - - * src/cid/cidobjs.c (CID_Face_Done): Fixed a memory leak; the subrs - routines were never released when CID faces were destroyed. - - * src/cff/cffload.h, src/cff/cffload.c, src/cff/cffgload.c: Updated - to move the definition of encoding tables back within `cffload.c' - instead of making them part of a shared header (causing problems in - `multi' builds). This reverts change 2001-08-08. - - * docs/CHANGES: Updated for 2.0.6 release. - * docs/TODO: Added `stem3 and counter hints support' to the TODO - list for the Postscript hinter. - * docs/BUGS: Closed the AUTOHINT-NO-SBITS bug. - -2001-12-19 David Turner <david@freetype.org> - - * include/freetype/cache/ftcache.h: Added comments to indicate that - some of the exported functions should only be used by applications - that need to implement custom cache types. - - * src/truetype/ttgload.c (cur_to_org, org_to_cur): Fixed a nasty bug - that prevented composites from loading correctly, due to missing - parentheses around macro parameters. - - * src/sfnt/sfobjs.c (SFNT_Load_Face): Make the `post' and `name' - tables optional to load PCL fonts properly. - - * src/truetype/ttgload.c (TT_Load_Glyph), src/base/ftobjs.c - (FT_Load_Glyph), include/freetype/freetype.h (FT_LOAD_SBITS_ONLY): - `Fixed' the bug that prevented embedded bitmaps to be loaded when - the auto-hinter is used. This actually is a hack but will be enough - until the internal re-design scheduled for FreeType 2.1. - - * src/raster/ftrend1.c (ft_raster1_render): Fixed a nasty outline - shifting bug in the monochrome renderer. - - * README: Updated version numbers to 2.0.6. - -2001-12-17 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttgload.c (load_truetype_glyph): Fix test for invalid - glyph header. - -2001-12-15 Werner Lemberg <wl@gnu.org> - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Remove compiler warning. - * include/freetype/ftcache.h (FTC_Node_Unref): Removed. It is - already in ftcmanag.h. - * src/cache/ftcsbits.c (ftc_sbit_node_load): Remove unused variable - `gfam'. - * src/cache/ftcmanag.c (ftc_family_table_alloc, - * ftc_family_table_free): Use FT_EXPORT_DEF. - * include/freetype/cache/ftcmanag.h: Updated. - * src/cache/ftccache.c (ftc_node_destroy): Use FT_EXPORT_DEF. - * src/cache/ftccmap.c (ftc_cmap_node_init): Remove unused variable - `cfam'. - Remove compiler warning. - (FTC_CMapCache_Lookup): Remove compiler warnings. - (ftc_cmap_family_init): Ditto. - (FTC_CMapCache_Lookup): Ditto. - - * builds/unix/configure.ac: Increase `version_info' to 8:0:2. - * builds/unix/configure: Regenerated. - -2001-12-14 Werner Lemberg <wl@gnu.org> - - * builds/mac/README: Updated. - -2001-12-14 Scott Long <scott@swiftview.com> - - * src/truetype/ttgload.c (load_truetype_glyph): Fixing crash when - dealing with invalid fonts (i.e. glyph size < 10 bytes). - -2001-12-14 Sam Latinga <slouken@devolution.com> - - * builds/mac/freetype.make: A new Makefile to build with MPW on - MacOS classic. - -2001-12-14 David Turner <david@freetype.org> - - * src/truetype/ttgload.c (TT_Load_Glyph), src/type1/t1gload.c - (T1_Load_Glyph), src/cid/cidgload.c (CID_Load_Glyph), - src/cff/cffgload.c (CFF_Load_Glyph): Fixed a serious bug common to - all font drivers (the advance width was never hinted when it - should). - - * include/freetype/freetype.h (FREETYPE_PATCH): New macro. - * src/base/ftdbgmem.c (debug_mem_dummy) [!FT_DEBUG_MEMORY]: Don't - use `extern' keyword. - -2001-12-12 David Turner <david@freetype.org> - - * src/pshinter/pshglob.c (psh_blues_scale_zones, psh_blues_snap_stem - psh_globals_new): Adding correct BlueScale/BlueShift support, plus - family blues processing. - * src/pshinter/pshglob.h (PSH_BluesRec): Updated. - - Started adding support for the Postscript hinter in the CFF module. - - * src/cff/cffgload.c: Include FT_INTERNAL_POSTSCRIPT_HINTS_H. - (CFF_Parse_CharStrings): Implement it. - * src/cff/cffgload.h: Updated. - -2001-12-12 Werner Lemberg <wl@gnu.org> - - * builds/unix/freetype2.m4: Some portability fixes. - -2001-12-11 Jouk Jansen <joukj@hrem.stm.tudelft.nl> - - * src/base/descrip.mms (OBJS): Add ftdebug.obj. - -2001-12-11 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttload.c (TT_Load_Generic_Header): Typos. - -2001-12-11 David Turner <david@freetype.org> - - * builds/unix/freetype-config.in: Modified the script to prevent - passing `-L/usr/lib' to gcc. - - * docs/FTL.TXT: Simple fix (change `LICENSE.TXT' to `FTL.TXT'). - - * builds/unix/freetype2.m4: New file for checking configure paths. - We need to install it in $(prefix)/share/aclocal/freetype2.m4 but I - didn't modify builds/unix/install.mk yet. - - * INSTALL: Updated the instructions to build shared libraries with - Jam. They were simply wrong. - - * src/base/fttrigon.c (FT_Cos): Fixed a small bug that caused - slightly improper results for `FT_Cos' and `FT_Sin' (example: - FT_Sin(0) == -1!). - -2001-12-11 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * include/freetype/internal/ftstream.h (GET_LongLE, GET_ULongLE): - Fixed incorrect argument types. - -2001-12-10 Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr> - - * src/pcf/pcfdriver.c (PCF_Init_Face): Allow Xft to use PCF fonts - by setting the `face->metrics.max_advance' correctly. - -2001-12-07 David Turner <david@freetype.org> - - * include/freetype/cache/ftccmap.h, src/cache/ftccmap.c: Added new - charmap cache. - * src/cache/ftcache.c: Updated. - - * src/autohint/ahhint.c (ah_hinter_hint_edges): s/UNUSED/FT_UNUSED/. - -2001-12-06 Leonard Rosenthol <leonardr@lazerware.com> - - Added support for reading .dfont files on Mac OS X. Also added a - new routine which looks up a given font by name in the Mac OS and - returns the disk file where it resides. - - * src/base/ftmac.c: Include <Files.h> and <TextUtils.h>. - (is_dfont): New auxiliary function. - (FT_New_Face_From_dfont): New function. - (FT_GetFile_From_Mac_Name): New exported function. - (FT_New_Face): Updated. - * include/freetype/ftmac.h: Updated. - -2001-12-06 David Turner <david@freetype.org> - - * src/cache/Jamfile, src/cache/rules.mk: Updated. - -2001-12-06 Werner Lemberg <wl@gnu.org> - - * INSTALL: Small update. - -2001-12-05 David Turner <david@freetype.org> - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Re-ordered code for - debugging purposes. - Comment out use of `origin'. - - * src/smooth/ftsmooth.c (ft_smooth_render): Fixed a nasty hidden bug - where outline shifting wasn't correctly undone after bitmap - rasterization. This created problems with certain glyphs (like '"' - of certain fonts) and the cache system. - - * src/pshinter/pshalgo1.c (psh1_hint_table_init): Fix typo. - * src/pshinter/pshalgo2.c (psh2_hint_table_init): Fix typo. - (ps2_hints_apply): Small fix. - -2001-12-05 David Turner <david@freetype.org> - - * src/pshinter/pshalgo2.c (psh2_hint_table_init), - src/pshinter/pshalgo1.c (psh1_hint_table_init): Removed compiler - warnings. - - * include/freetype/ftcache.h, include/freetype/cache/*, src/cache/*: - Yet another massive rewrite of the caching sub-system in order to - both increase performance and allow simpler cache sub-classing. As - an example, the code for the image and sbit caches is now much - simpler. - - I still need to update the documentation in - www/freetype2/docs/cache.html to reflect the new design though. - - * include/freetype/config/ftheader.h (FT_CACHE_CHARMAP_H): New - macro. - (FT_CACHE_INTERNAL_CACHE_H): Updated. - -2001-12-05 David Krause <freetype@davidkrause.com> - - * docs/license.txt: s/X Windows/X Window System/. - -2001-12-04 Werner Lemberg <wl@gnu.org> - - * src/raster/ftraster.c: Fix definition condition of MEM_Set(). - * src/smooth/ftgrays.c (M_Y): Change value to 192. - * src/base/ftdbgmem.c (ft_mem_table_destroy): Fix printf() parameter. - Remove unused variable. - * src/cache/ftcimage.c (ftc_image_node_init, - ftc_image_node_compare): Remove unused variables. - * src/cache/ftcsbits.c (ftc_sbit_node_weight): Remove unused - variable. - * src/raster/ftraster.c (MEM_Set): Move definition down to avoid - compiler warning. - * src/autohint/ahhint.c (ah_hinter_hint_edges): Use UNUSED() to - avoid compiler warnings. - * src/pcf/pcfread.c (tableNames): Use `const'. - (pcf_read_TOC): Change counter name to avoid compiler warning. - Use `const'. - * src/pshinter/pshrec.c (ps_hints_close): Remove redundant - declaration. - * src/pshinter/pshalgo1.c (psh1_hint_table_init): Rename variables - to avoid shadowing. - * src/pshinter/pshalgo2.c (psh2_hint_table_activate_mask): Ditto. - * src/type1/t1objs.h: Remove double declarations of `T1_Size_Init()' - and `T1_Size_Done()'. - -2001-11-20 Antoine Leca <antoineleca@multimania.com> - - * include/freetype/ttnameid.h: Added some new Microsoft language - codes and LCIDs as found in MSDN (Passport SDK). Also added - comments about the meaning of bit 57 of the `OS/2' table - (TT_UCR_SURROGATES) which (with OpenType v.1.3) now means `there is - a character beyond 0xFFFF in this font'. Thanks to Detlef W�rkner - <TetiSoft@apg.lahn.de> for noticing this. - -2001-11-20 David Turner <david@freetype.org> - - * src/pshinter/{pshalgo2.c, pshalgo1.c}: Fixed stupid bug in sorting - routine that created nasty alignment artefacts. - - * src/pshinter/pshrec.c, tests/gview.c: Debugging updates. - - * src/smooth/ftgrays.c: De-activated experimental gamma support. - Apparently, `optimal' gamma tables depend on the monitor type, - resolution and general karma, so it's better to compute them outside - of the rasterizer itself. - (gray_convert_glyph): Use `volatile' keyword. - -2001-10-29 David Turner <david@freetype.org> - - Adding experimental `gamma' support. This produces smoother glyphs - at small sizes for very little cost. - - * src/smooth/ftgrays.c (grays_init_gamma): New function. - (gray_raster_new): Use it. - - Various fixes to the auto-hinter. They merely improve the output of - sans-serif fonts. Note that there are still problems with serifed - fonts and composites (accented characters). - - * src/autohint/ahglyph.c (ah_outline_load, - ah_outline_link_segments): Implement it. - Fix typos. - (ah_outline_save, ah_outline_compute_segments): Fix typos. - * src/autohint/ahhint.c (ah_align_serif_edge): New argument - `vertical'. Implement improvement. - (ah_hint_edges_3, ah_hinter_hint_edges): Implement it. - Fix typos. - (ah_hinter_align_strong_points, ah_hinter_align_weak_points): Fix - typos. - (ah_hinter_load): Set `ah_debug_hinter' if DEBUG_HINTER is defined. - * src/autohint/ahmodule.c: Implement support for DEBUG_HINTER macro. - * src/autohint/ahtypes.h: Ditto. - (AH_Hinter): Remove `disable_horz_edges' and `disable_vert_edges' - (making them global as `ah_debug_disable_horz' and - `ah_debug_disable_vert'). - Fix typos. - - * tests/gview.c: Updated the debugging glyph viewer to show the - hints generated by the `autohint' module. - -2001-10-27 David Turner <david@freetype.org> - - * src/cache/ftcchunk.c (ftc_chunk_cache_lookup): Fixed a bug that - considerably lowered the performance of the abstract chunk cache. - -2001-10-26 David Turner <david@freetype.org> - - * include/freetype/ftcache.h, include/freetype/cache/*.h, - src/cache/*.c: Major re-design of the cache sub-system to provide - better performance as well as an `Acquire'/`Release' API. Seems to - work well here, but probably needs a bit more testing. - -2001-10-26 Leonard Rosenthol <leonardr@lazerware.com> - - * builds/mac/README: Updated to reflect my taking over the project - and that is now being actively maintained. - - * src/base/ftmac.c (parse_fond): Applied patches from Paul Miller - <paulm@profoundeffects.com> to support loading a face other than the - first from a FOND resource. - (FT_New_Face_From_FOND): Updated. - -2001-10-25 Leonard Rosenthol <leonardr@lazerware.com> - - * builds/mac/ftlib.prj: Update of CodeWarrior project file for Mac - OS for latest version (7) of CWPro and for recent changes to the FT - source tree. - -2001-10-25 David Turner <david@freetype.org> - - * include/freetype/config/ftoption.h: Updated comments to explain - precisely how to use project-specific macro definitions without - modifying this file manually. - - (FT_CONFIG_FORCE_INT64): Define. - - (FT_DEBUG_MEMORY): New macro. - -2001-10-24 Tom Kacvinsky <tkacvins@freetype.org> - - * builds/unix/ftsystem.c (FT_New_Memory): Added a missing `{'. - -2001-10-23 David Turner <david@freetype.org> - - * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: - Improvements to the memory debugger to report more information in - case of errors. Also, some allocations that occurred through REALLOC - couldn't be previously catched correctly. - - * src/autohint/ahglyph.c (ah_outline_compute_segments, - ah_outline_compute_edges), src/raster/ftraster.c (ft_black_new), - src/smooth/ftgrays.c (gray_render_span, gray_raster_new): Replaced - liberal uses of memset() by the MEM_Set() macro. - -2001-10-23 David Turner <david@freetype.org> - - * src/raster/ftraster.c (Update): Removed to be inlined in ... - (Sort): Updated. - -2001-10-22 David Turner <david@freetype.org> - - * builds/unix/ftsystem.c (FT_New_Memory, FT_Done_Memory), - builds/vms/ftsystem.c (FT_New_Memory, FT_Done_Memory), - builds/amiga/ftsystem.c (FT_New_Memory, FT_Done_Memory), - src/base/ftdbgmem.c: Updated the memory debugger and - platform-specific implementations of `ftsystem' in order to be able - to debug memory allocations on Unix, VMS and Amiga too! - - * src/pshinter/pshalgo2.c (psh2_hint_table_record_mask): Removed - some bogus warnings. - - * include/freetype/internal/ftmemory.h, src/base/ftdbgmem.c: - Modified the debugging memory manager to report the location (source - file name + line number) where leaked memory blocks are allocated in - the source file. - - * src/base/ftdbgmem.c: New debugging memory manager. You must - define the FT_DEBUG_MEMORY macro in `ftoption.h' to enable it. It - will record every memory block allocated and report simple errors - like memory leaks and double deletes. - - * src/base/Jamfile: Include ftdbgmem. - * src/base/rules.mk: Ditto. - * src/base/ftbase.c: Include ftdbgmem.c. - - * include/freetype/config/ftoption.h: Added the FT_DEBUG_MEMORY - macro definition. - - * src/base/ftsystem.c (FT_New_Memory, FT_Done_Memory): Modified the - base component to use the debugging memory manager when the macro - FT_DEBUG_MEMORY is defined. - -2001-10-21 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/cffload.c (CFF_Done_Font): Free subfonts array only if - we are working with a CID keyed CFF font. Otherwise, a variable - that was never allocated memory might freed. This is a correction - to the previous patch for freeing subfonts. - -2001-10-21 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/cffload.c (CFF_Done_Font): Free the subfonts array to - avoid a memory leak. - -2001-10-21 David Turner <david@freetype.org> - - * src/pshinter/pshalgo2.c, src/pshinter/pshalgo1.c, - src/pshinter/pshglob.c: Removing compiler warnings in pedantic modes - (in multi-object compilation mode, mainly). - -2001-10-20 Tom Kacvinsky <tkacvins@freetype.org> - - * src/type1/t1load.c (parse_encoding): Add a test to make sure - that custom encodings (i.e., neither StandardEncoding nor - ExpertEncoding) are not loaded twice when the Type 1 font is - synthetic. - - * src/type1/t1load.c (parse_font_name, parse_subrs): Added a test - for when loading synthetic fonts to make sure that the font name - and subrotuines are not loaded twice. This is to remove a memory - leak that occurred because the original memory blocks for these - objects were not deallocated when the objects were parsed the - second time. - -2001-10-19 David Turner <david@freetype.org> - - * src/smooth/ftgrays.c, src/pshinter/pshglob.h, - src/pshinter/pshrec.c, src/pshinter/pshalgo2.c: Getting rid of - compiler warnings. - - * src/pshinter/module.mk, src/pshinter/rules.mk: Adding control - files to build the PostScript hinter with the `old' build system. - -2001-10-19 Jacob Jansen <joukj@hrem.stm.tudelft.nl> - - * descrip.mms, src/pshinter/descrip.mms: Updates to the VMS build - files. - -2001-10-18 David Turner <david@freetype.org> - - * src/psnames/pstables.h, src/tools/glnames.py: Rewrote the - `glnames.py' script used to generate the `pstables.h' header file. - The old one contained a serious bug that made FreeType return - incorrect glyph names for certain glyphs. - - * src/truetype/ttdriver.c (Set_Char_Sizes): Changing computation of - pixel size from character size to use rounding. This is an - experiment to see whether this gives values similar to Windows for - scaled ascent/descent/etc. - - * src/base/ftcalc.c (FT_Div64by32): Changed the implementation - slightly since the original code was mis-compiled on Mac machines - using the MPW C compiler. - - * src/base/ftobjs.c (FT_Realloc): When a memory block was grown - through FT_Realloc(), the new bytes were not set to 0, which created - some strange bugs in the PostScript hinter. - (destroy_face): Don't deallocate unconditionally. - - * src/cid/cidgload.c (CID_Compute_Max_Advance, CID_Load_Glyph): - Adding support to new PostScript hinter. - - * include/freetype/internal/psglobal.h, - include/freetype/internal/pshints.h, - include/freetype/config/ftmodule.h, src/pshinter/Jamfile, - src/pshinter/pshalgo.h, src/pshinter/pshalgo1.h, - src/pshinter/pshalgo1.c, src/pshinter/pshalgo2.h, - src/pshinter/pshalgo2.c, src/pshinter/pshglob.h, - src/pshinter/pshglob.c, src/pshinter/pshinter.c, - src/pshinter/pshmod.c, src/pshinter/pshmod.h, src/pshinter/pshrec.c, - src/pshinter/pshrec.h: Adding new PostScript hinter module. - - * include/freetype/internal/ftobjs.h, - include/freetype/internal/internal.h, - include/freetype/internal/psaux.h, - include/freetype/internal/t1types.h, src/psaux/psobjs.c, - src/psaux/psobjs.h, src/psaux/t1decode.h, src/psaux/t1decode.c, - src/type1/t1driver.c, src/type1/t1gload.c, src/type1/t1objs.c, - src/type1/t1objs.h: Updates to use the new PostScript hinter. - - * tests/Jamfile, tests/gview.c: Adding a new glyph hinting - viewer/debugger to the source tree. Note that you will _not_ be - able to compile it since it depends on an unavailable graphics - library named `Nirvana' to render vector images. - -2001-10-17 David Turner <david@freetype.org> - - - * Version 2.0.5 released. - ========================= - - - * include/freetype/freetype.h, include/internal/ftobjs.h, - src/base/ftobjs.c, src/type1/t1driver.c: Adding a new function named - 'FT_Get_Postscript_Name' to retrieve the PostScript name of a given - font. Should work with all formats except pure CFF/CEF fonts (this - will be added soon). - - * src/cid/cidriver (cid_get_postscript_name): New function. - (CID_Get_Interface): Handle `postscript_name' interface. - - * src/sfnt/sfdriver.c (get_sfnt_postscript_name): New function. - (SFNT_Get_Interface): Handle `postscript_name' interface. - - * src/type1/t1driver.c (t1_get_ps_name): New function. - (Get_Interface): Handle `postscript_name' interface. - - * README, docs/CHANGES: Updated for 2.0.5 release. - -2001-10-08 David Turner <david@freetype.org> - - Fixed a bug in `glnames.py' that prevented it from generating - correct glyph names tables. This resulted in the unavailability of - certain glyphs like `Cacute', `cacute' and `lslash' in Unicode - charmaps, even if these were present in the font (causing problems - for Polish users). - - * src/tools/glnames.py (mac_standard_names): Fixed. - (t1_standard_strings): Some fixes and renamed to ... - (sid_standard_names): This. - (t1_expert_encoding): Fixed. - (the_adobe_glyph_list): Renamed to ... - (adobe_glyph_names): This. - (the_adobe_glyphs): Renamed to ... - (adobe_glyph_values): This. - (dump_mac_indices, dump_glyph_list, dump_unicode_values, main): - Updated. - * src/psnames/pstables.h: Regenerated. - * src/psnames/psmodule.c (PS_Unicode_Value): Fix offset. - Fix return value. - Use `sid_standard_table' and `ps_names_to_unicode' instead of - `t1_standard_glyphs' and `names_to_unicode'. - (PS_Macintosh_Name): Use `ps_glyph_names' instead of - `standard_glyph_names'. - (PS_Standard_Strings): Use `sid_standard_names' instead of - `t1_standard_glyphs'. - - * doc/BUGS, doc/TODO: New documents. - -2001-10-07 Richard Barber <rich@solutionuk.com> - - * src/cache/ftlru.c (FT_Lru_Lookup_Node): Fixed a bug that prevented - correct LRU behaviour. - -2001-10-07 David Turner <david@freetype.org> - - setjmp() and longjmp() are now used for rollback (i.e. when memory - pool overflow occurs). - - Function names are now all uniformly prefixed with `gray_'. - - * src/smooth/ftgrays.c: Include <setjmp.h>. - (ErrRaster_MemoryOverflow): New macro. - (TArea): New type to store area values in each cell (using `int' was - too small on 16-bit systems). <limits.h> is included to properly - get the needed data type. - (TCell, TRaster): Use it. - (TRaster): New element `jump_buffer'. - (gray_compute_cbox): Use `RAS_ARG' as the only parameter and get - `outline' from it. - (gray_record_cell): Use longjmp(). - (gray_set_cell): Use gray_record_cell() for error handling. - (gray_render_line, gray_render_conic, gray_render_cubic): Simplify. - (gray_convert_glyph_inner): New function, using setjmp(). - (gray_convert_glyph): Use it. - -2001-10-07 David Turner <david@freetype.org> - - Provide a public API to manage multiple size objects for a given - FT_Face in the new header file `ftsizes.h'. - - * include/freetype/ftsizes.h: New header file, - * include/freetype/internal/ftobjs.h: Use it. - Remove declarations of FT_New_Size and FT_Done_Size (moved to - ftsizes.h). - * include/freetype/config/ftheader.h (FT_SIZES_H): New macro. - * src/base/ftobjs.c (FT_Activate_Size): New function. - * src/cache/ftcmanag.c: Include ftsizes.h. - (ftc_manager_init_size, ftc_manager_flush_size): Use - FT_Activate_Size. - -2001-09-20 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * builds/amiga/*: Added port to Amiga with the SAS/C compiler. - -2001-09-15 Detlef W�rkner <TetiSoft@apg.lahn.de> - - * src/type1/t1afm.c (T1_Done_AFM): Free `afm'. - -2001-09-10 Yao Zhang <yzhang@sharemedia.com> - - * src/sfnt/ttcmap.c (code_to_index2): Handle code values with - hi-byte == 0 correctly. - -2001-09-10 Werner Lemberg <wl@gnu.org> - - * builds/link-std.mk ($(PROJECT_LIBRARY)): Fix typo. - -2001-08-30 Martin Muskens <mmuskens@aurelon.com> - - * src/type1/t1load.c (parse_font_matrix): A new way to compute the - units per EM with greater accuracy (important for embedded T1 fonts - in PDF documents that were automatically generated from TrueType - ones). - - * src/type1/t1load.c (is_alpha): Now supports `+' in font names; - this is used in embedded fonts. - - * src/psaux/psobjs.c (PS_Table_Add): Fixed a reallocation bug that - generated a dangling pointer reference. - -2001-08-30 Anthony Feik <afeick@hotmail.com> - - * src/type1/t1afm.c (T1_Read_Afm): Now correctly sets the flag - FT_FACE_FLAG_KERNING when appropriate for Type1 + AFM files. - -2001-08-25 Werner Lemberg <wl@gnu.org> - - * src/sfnt/ttload.c (TT_Load_CMap): Fix frame length of - `cmap_rec_fields'. - - * include/freetype/fterrors.h [!FT_CONFIG_OPTION_USE_MODULE_ERRORS]: - Undefine FT_ERR_BASE before defining again. - -2001-08-22 Werner Lemberg <wl@gnu.org> - - * src/truetype/ttinterp.h: Fix prototype of TT_Move_Func. - -2001-08-21 Werner Lemberg <wl@gnu.org> - - * builds/dos/dos-def.mk (NO_OUTPUT): Don't use `&>' but `>'. - -2001-08-21 David Turner <david@freetype.org> - - * include/freetype/config/ftoption.h: Changed the default setting - for FT_CONFIG_OPTION_USE_MODULE_ERRORS to undefined, since it breaks - source compatibility in a few cases. Updated the comment to explain - that too. - -2001-08-17 Martin Muskens <mmuskens@aurelon.com> - - * src/base/ftcalc.c (FT_MulDiv): Fixed serious typo. - -2001-08-12 Werner Lemberg <wl@gnu.org> - - Updating to OpenType 1.3. - - * include/freetype/internal/tttypes.h (TT_CMap0, TT_CMap2, TT_CMap4, - TT_CMap6): Adding field `language'. - (TT_CMapTable): Removing field `language'. - Type of `length' field changed to FT_ULong. - Adding fields for cmaps format 8, 10, and 12. - (TT_CMapGroup): New auxiliary structure. - (TT_CMap8_12, TT_CMap10): New structures. - * include/freetype/tttables.h (TT_HoriHeader, TT_VertHeader): - Removed last element of `Reserved' array. - * include/freetype/ttnameid.h (TT_PLATFORM_CUSTOM, TT_MS_ID_UCS_4, - TT_NAME_ID_CID_FINDFONT_NAME): New macros. - - * src/sfnt/ttcmap.c (TT_CharMap_Load): Updated loading of `language' - field to the new structures. - Fixed freeing of arrays in case of unsuccessful loads. - Added support for loading format 8, 10, and 12 cmaps. - (TT_CharMap_Free): Added support for freeing format 8, 10, and 12 - cmaps. - (code_to_index4): Small improvement. - (code_to_index6): Ditto. - (code_to_index8_12, code_to_index10): New functions. - * src/sfnt/ttload.c (TT_Load_Metrics_Header): Updated to new - structure. - (TT_Load_CMap): Ditto. - - * src/sfnt/sfobjs.c (tt_encodings): Add MS UCS4 table (before MS - Unicode). - -2001-08-11 Werner Lemberg <wl@gnu.org> - - * src/type1/t1driver.c (t1_get_name_index): Fix compiler warning. - -2001-08-09 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/cffdrivr.c (get_cff_glyph_name): Renamed to - cff_get_glyph_name for consistency. - - (cff_get_glyph_index): Minor documentation change. - - * src/type1/t1driver.c (t1_get_name_index): New function used in - Get_Interface as the function returned when the `name_index' - function is requested. - - (get_t1_glyph_name): Renamed to t1_get_glyph_name for consistency. - -2001-08-08 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/cffload.c: Removed definitions of cff_isoadobe_charset, - cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, - and cff_expert_encoding arrays to cffload.h. - - * src/cff/cffload.h: Added definitions of cff_isoadobe_charset, - cff_expert_charset, cff_expertsubset_charset, cff_standard_encoding, - and cff_expert_encoding arrays. - - * src/cff/cffdrivr.c (cff_get_name_index): New function, returned - when `cff_get_interface' is called with a request for the - `name_index' function. - - (cff_get_interface): Modified so that it returns the function - `cff_get_name_index' when the `name_index' function is requested. - - * src/base/ftobjs.c (FT_Get_Name_Index): New function, used to - return a glyph index for a given glyph name only if the driver - supports glyph names. - - * include/freetype/internal/ftobjs.h (FT_Name_Index_Requester): - New function pointer type defintion used in the function - FT_Get_Name_Index. - - * include/freetype/freetype.h (FT_Get_Name_Index): Added - documentation and prototype. - -2001-07-26 Werner Lemberg <wl@gnu.org> - - * builds/cygwin/*: Removed. Use the unix stuff instead. - -2001-07-26 Jouk Jansen <joukj@hrem.stm.tudelft.nl> - - * builds/vms/ftconfig.h (FT_CALLBACK_DEF): Updated to change dated - 2001-06-27. - -2001-07-17 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/psaux.h (PS_Table): Use FT_Offset for - `cursor' and `capacity'. - * src/psaux/psobjc.c (reallocate_t1_table): Use FT_Long for second - parameter. - (PS_Table_Add): Use FT_Offset for `new_size'. - - Add support for version 0.5 maxp tables. - - * src/sfnt/ttload.c (TT_Load_MaxProfile): Implement it. - (TT_Load_OS2): Initialize some values. - -2001-07-13 Werner Lemberg <wl@gnu.org> - - * src/base/ftsynth.c: Include ftcalc.h unconditionally. - -2001-07-07 David Turner <david@freetype.org> - - * src/truetype/ttgload.c, src/truetype/ttinterp.c, src/pcf/pcfread: - Removed pedantic compiler warnings when the bytecode interpreter is - compiled in. - -2001-07-03 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahhint.c (ah_hinter_align_weak_points): Remove - unused variable `edges'. - (ah_hinter_load): Remove unused variables `old_width' and - `new_width'. - * src/cid/cidload.c (cid_decrypt): Use `U' for constant (again). - * src/psaux/psobjs.c (T1_Decrypt): Ditto. - * src/type1/t1parse.c (T1_Get_Private_Dict): Ditto. - -2001-06-28 David Turner <david@freetype.org> - - * include/internal/ftstream.h: Modified the definitions - of the FT_GET_XXXX and NEXT_XXXX macros for 16-bit correctness. - -2001-06-26 Werner Lemberg <wl@gnu.org> - - * src/cid/cidload.c, src/cid/cidload.h (cid_decrypt): Use FT_Offset - instead of FT_Int as type for `length' parameter. - * include/freetype/internal/psaux.h (PSAux_Interface): Updated. - -2001-06-27 Wolfgang Domr�se <porthos.domroese@harz.de> - - * src/psaux/psobjs.c, src/psaux/psobjs.h (T1_Decrypt): Use FT_Offset - instead of FT_Int as type for `length' parameter. - - - * Version 2.0.4 released. - ========================= - - -2001-06-27 David Turner <david@freetype.org> - - * builds/unix/ftconfig.in: Changed the definition of the - FT_CALLBACK_DEF macro. - - * include/freetype/ftconfig.h, src/*/*.c: Changed the definition and - use of the FT_CALLBACK_DEF macro in order to support 16-bit - compilers. - - * builds/unix/ftconfig.in: Changed the definition of the - FT_CALLBACK_DEF macro. - - * src/sfnt/ttload.c (TT_Load_Kern): The kern table loader now ensures - that the kerning table is correctly sorted (some problem fonts don't - have a correct kern table). - -2001-06-26 Wolfgang Domr�se <porthos.domroese@harz.de> - - * include/freetype/internal/ftstream.h (FT_GET_OFF3_LE): Fix typo. - -2001-06-24 David Turner <david@freetype.org> - - * src/base/ftcalc.c (ft_div64by32): Fixed the source to work - correctly on 16-bit systems. - -2001-06-23 Anthony Fok <fok@debian.org> - - * debian/*: Added Debian package build directory for 2.0.4. - -2001-06-22 David Turner <david@freetype.org> - - * docs/PATENTS: Added patents disclaimer. This one was missing! - - * docs/CHANGES, docs/todo: Updated for the upcoming 2.0.4 release. - -2001-06-20 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ftconfig.h: Add two more `L's to - constants. - Add missing semicolons. - - * builds/toplevel.mk: Do similar change as for - builds/unix/detect.mk. - - * include/freetype/freetype.h (FT_ENC_TAG): New version to make it - easier to redefine. - * include/freetype/ftimage.h (FT_IMAGE_TAG): Ditto. - - * src/pcf/pcfread.c (pcf_get_encodings): Add cast. - -2001-06-19 David Turner <david@freetype.org> - - * builds/win32/visualc/freetype.dsp, builds/win32/visualc/index.html: - Updated the Visual C++ project (for the 2.0.4 release). - - * builds/unix/detect.mk: Added rule for AIX detection (which uses - /usr/sbin/init instead of /sbin/init). - - * include/freetype/fterrors.h, src/*/*err*.h: Updated some of the - error macros to simplify handling of new error scheme. - -2001-06-19 Werner Lemberg <wl@gnu.org> - - * include/freetype/fttypes.h (FT_ERROR_MODULE): New macro. - -2001-06-19 David Turner <david@freetype.org> - - Removing _lots_ of compiler warnings when the most pedantic warning - levels of Visual C++ and Borland C++ are used. Too many files to be - listed here, but FT2 now compiles without warnings with VC++ and the - `/W4' warning level (lint-style). - - * include/freetype/freetype.h (FT_New_Memory_Face): Updated - documentation. - * include/freetype/fttypes.h (FT_BOOL): New macro. - * include/freetype/internal/ftdebug.h: Add #pragma for Visual C++ - to suppress warning. - * include/freetype/internal/ftstream.h (FT_GET_SHORT_{BE,LE}, - FT_GET_OFF3_{BE,LE}, FT_GET_LONG_{BE,LE}): New macros. - (NEXT_*): Use them. - * src/autohint/ahglobal.c: Include FT_INTERNAL_DEBUG_H. - (FT_New_Memory_Face): Add `const' to function declaration. - -2001-06-18 Werner Lemberg <wl@gnu.org> - - Minor cleanups to remove compiler warnings. - - * include/freetype/cache/ftcmanag.h (FTC_MAX_BYTES_DEFAULT): Use - `L' for constant. - * include/freetype/config/ftoption.h (FT_RENDER_POOL_SIZE): Ditto. - * src/base/ftcalc.c (FT_MulDiv): Use `L' for constant. - * src/base/ftglyph.c (FT_Glyph_Get_CBox): Remove `error' variable. - * src/base/fttrigon.c (ft_trig_arctan_table): Use `L' for constants. - * src/base/ftobjs.c (FT_Done_Size): Fix return value. - (FT_Set_Char_Size, FT_Set_Pixel_Sizes, FT_Get_Kerning): Remove - unused `memory' variable. - * src/autohint/ahglyph.c (ah_get_orientation): Use `L' for constant. - * src/autohint/ahhint.c (ah_hint_edges_3, - ah_hinter_align_edge_points): Remove unused `before' and `after' - variables. - (ah_hinter_align_weak_points): Remove unused `edge_limit' variable. - (ah_hinter_load): Remove unused `new_advance', `start_contour', - and `metrics' variables. - * src/cff/cffload.c (CFF_Load_Encoding): Remove dead code to avoid - compiler warning. - * src/cff/cffobjs.c (CFF_Init_Face): Remove unused `base_offset' - variable. - * src/cff/cffgload.c (CFF_Parse_CharStrings): Remove unused - `outline' variable. - (cff_compute_bias): Use `U' for constant. - * src/cid/cidload.c (cid_decrypt): Ditto. - * src/psaux/psobjs.c (T1_Decrypt): Ditto. - * src/psaux/t1decode.c (T1_Decoder_Parse_CharStrings): Ditto. - * src/sfnt/ttload.c (TT_Load_Kern): Remove unused `version' - variable. - * src/sfnt/ttsbit.c (TT_Load_SBit_Image): Remove unused `top' - variable. - * src/truetype/ttgload.c (load_truetype_glyph): Remove unused - `num_contours' and `ins_offset' variables. - (compute_glyph_metrics): Remove unused `Top' and `x_scale' - variables. - (TT_Load_Glyph): Remove unused `memory' variable. - * src/smooth/ftgrays.c (grays_raster_render): Use `L' for constants. - -2001-06-18 Werner Lemberg <wl@gnu.org> - - Make the new error scheme source compatible with older FT versions - by introducing another layer. - - * include/freetype/fterrors.h (FT_ERRORDEF_, FT_NOERRORDEF_): New - macros. - (FT_NOERRORDEF): Removed. - * include/*/*err*.h: Use FT_ERRORDEF_ and FT_NOERRORDEF_. - -2001-06-16 Werner Lemberg <wl@gnu.org> - - * include/freetype/freetype.h (FT_ENC_TAG): New macro. - (FT_Encoding_): Use it. - * include/freetype/ftimage.h (FT_IMAGE_TAG): Define it - conditionally. - -2001-06-14 David Turner <david@freetype.org> - - Modified the TrueType interpreter to let it use the new - trigonometric functions provided in `fttrigon.h'. This gets rid of - some old 64-bit computation routines, as well as many warnings when - compiling the library with the `long long' 64-bit integer type. - - * include/freetype/config/ftoption.h: Undefine - FT_CONFIG_OPTION_OLD_CALCS. - * include/freetype/internal/ftcalc.h: Rearrange use of - FT_CONFIG_OPTION_OLD_CALCS. - * src/base/ftcalc.c: Add declaration of FT_Int64 if - FT_CONFIG_OPTION_OLD_CALCS isn't defined. - * src/truetype/ttinterp.c: Use FT_TRIGONOMETRY_H. - (Norm): Add a special version if FT_CONFIG_OPTION_OLD_CALCS isn't - defined. - (Current_Ratio, Normalize): Simplify code. - -2001-06-11 Mike Owens <MOwens@amtdatasouth.com> - - * src/base/ftcalc.c (FT_MulDiv, FT_DivFix, FT_Sqrt64): Remove - compiler warnings. - -2001-06-08 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.in: Renamed to ... - * builds/unix/configure.ac: This to make sure that autoconf 2.50 is - needed. - Run `autoupdate' on it. - Increase `version_info' to 7:0:1. - * builds/unix/configure: Regenerated. - -2001-06-08 David Turner <david@freetype.org> - - * src/autohint/ahhint.c (ah_hinter_load_glyph): Fixed a bug that - corrupted transformed glyphs that were auto-hinted (the transform - was applied twice). - - Fixed a bug that returned an invalid linear width for composite - TrueType glyphs. - - * include/internal/tttypes.h (TT_Loader_): Two new elements `linear' - and `linear_def'. - * src/truetype/ttgload.c (load_truetype_glyph, - compute_glyph_metrics): Use it. - - * include/fttypes.h (FT_ERROR_BASE): New macro. - * src/base/ftobjs.c (FT_Open_Face, FT_Render_Glyph_Internal): Use it - to make source code work with the new error scheme implemented by - Werner. - * src/base/ftoutln.c (FT_Outline_Render): Ditto. - -2001-06-07 Werner Lemberg <wl@gnu.org> - - Updating to libtool 1.4.0 and autoconf 2.50. - - * builds/unix/ltconfig: Removed. - * builds/unix/ltmain.sh, builds/unix/configure.in, - builds/unix/aclocal.m4: Updated. - * builds/unix/configure: Regenerated. - -2001-06-06 Werner Lemberg <wl@gnu.org> - - Complete redesign of error codes. Please check ftmoderr.h for more - details. - - * include/freetype/internal/cfferrs.h, - include/freetype/internal/tterrors.h, - include/freetype/internal/t1errors.h: Removed. Replaced with files - local to the module. All extra error codes have been moved to - `fterrors.h'. - - * src/sfnt/ttpost.h: Move error codes to `fterrors.h'. - - * src/autohint/aherrors.h, src/cache/ftcerror.h, src/cff/cfferrs.h, - src/cid/ciderrs.h, src/pcf/pcferror.h, src/psaux/psauxerr.h, - src/psnames/psnamerr.h, src/raster/rasterrs.h, src/sfnt/sferrors.h, - src/smooth/ftsmerrs.h, src/truetype/tterrors.h, - src/type1/t1errors.h, src/winfonts/fnterrs.h: New files defining the - error names for the module it belongs to. - - * include/freetype/ftmoderr.h: New file, defining the module error - offsets. Its structure is similar to `fterrors.h'. - - * include/freetype/fterrors.h (FT_NOERRORDEF): New macro. - (FT_ERRORDEF): Redefined to use module error offsets. - All internal error codes are now public; unused error codes have - been removed, some are new. - - * include/freetype/config/ftheader.h (FT_MODULE_ERRORS_H): New - macro. - * include/freetype/config/ftoption.h - (FT_CONFIG_OPTION_USE_MODULE_ERRORS): New macro. - - All other source files have been updated to use the new error codes; - some already existing (internal) error codes local to a module have - been renamed to give them the same name as in the base module. - - All make files have been updated to include the local error files. - -2001-06-06 Werner Lemberg <wl@gnu.org> - - * src/cid/cidtokens.h: Replaced with... - * src/cid/cidtoken.h: This file for 8+3 consistency. - - * src/raster/ftraster.c: Use macros for header file names. - - * src/include/freetype/tttables.h (TT_HoriHeader_, TT_VertHeader_): - Fix length of `Reserved' array. Note that this isn't the real fix - since recent OpenType specs have introduced a `CaretOffset' field - instead of the first reserved byte. - -2001-05-29 Werner Lemberg <wl@gnu.org> - - * INSTALL: Minor fixes. - - - * Version 2.0.3 released. - ========================= - - -2001-05-29 David Turner <david@freetype.org> - - * INSTALL, docs/CHANGES: Updated. - -2001-05-25 David Turner <david@freetype.org> - - Moved several documents from the top-level to the `docs' directory. - - * src/base/ftcalc.c (FT_DivFix): Small fix to return value. - -2001-05-16 David Turner <david@freetype.org> - - * src/truetype/ttgload.c (load_truetype_glyph): Fixed a bug in the - composite loader. Spotted by Keith Packard. - * src/base/ftobjs.c (FT_GlyphLoader_Check_Points, - FT_GlyphLoader_Check_Subglyphs): Ditto. - -2001-05-14 David Turner <david@freetype.org> - - Fixed the incorrect blue zone computations, and improved the - composite support. Note that these changes result in improved - rendering, while sometimes introducing their own artefacts. This is - probably the last big change to the autohinter before the - introduction of a complete replacement. - - * src/autohint/ahglobal.c (sort_values): Fix loop. - * src/autohint/ahglyph.c: Removed some obsolete code. - (ah_outline_compute_edges): Modify code to set the ah_edge_round - flag. - (ah_outline_compute_blue_edges): Add code to compute active blue - zones. - * src/autohint/ahhint.c (ah_hinter_glyph_load): Change load_flags - value. - - * src/base/ftcalc.c (FT_DivFix): Fixed a bug in the 64-bit code that - created incorrect scale factors! - (FT_Round_Fix, FT_CeilFix, FT_FloorFix): Minor improvements. - -2001-05-12 Werner Lemberg <wl@gnu.org> - - * include/freetype/ftbbox.h: FTBBOX_H -> __FTBBOX_H__. - * include/freetype/fttrigon.h: __FT_TRIGONOMETRY_H__ -> - __FTTRIGON_H__. - Include FT_FREETYPE_H. - Beautified; added copyright. - * src/base/fttrigon.c: Beautified; added copyright. - -2001-05-11 David Turner <david@freetype.org> - - * src/cff/cffparse.c (cff_parse_font_matrix), src/cid/cidload.c - (parse_font_matrix), src/type1/t1load.c (parse_font_matrix): Fixed - the incorrect EM size computation. - - * include/freetype/fttrigon.h, src/base/fttrigon.c: New files, - adding trigonometric functions to the core API (using Cordic - algorithms). - * src/base/ftbase.c, src/base/Jamfile, src/base/rules.mk: Use them. - - * builds/newline: New file. - * builds/top_level.mk, builds/detect.mk: Use it. This fixes - problems with Make on Windows 2000, as well as problems when `make - distclean' is invoked on a non-Unix platform when there is no - `config.mk' in the current directory. - - * builds/freetype.mk: Fixed a problem with object deletions under - Dos/Windows/OS/2 systems. - - Added new directory to hold tools and test programs. - - * docs/docmaker.py, docs/glnames.py: Moved to... - * src/tools/docmaker.py, src/tools/glnames.py: This place. - * src/tools/cordic.py: New file used to compute arctangent table - needed by fttrigon.c. - * src/tools/test_bbox.c, src/tools/test_trig.c: New test files. - - * src/tools/docmaker.py: Improved the script to add the current date - at the footer of each web page (useful to distinguish between - versions). - - * Jamfile: Fixed incorrect HDRMACRO argument. - - * TODO: Removed the cubic arc bbox computation note, since it has been - fixed recently. - * src/base/ftbbox.c (test_cubic_zero): Renamed to... - (test_cubic_extrema): This function. Use `UL' for unsigned long - constants. - - * include/freetype/t1tables.h, include/freetype/config/ftoption.h: - Formatting. - -2001-05-10 David Turner <david@freetype.org> - - * src/base/ftobjs.c (FT_Open_Face): Fixed a small memory leak - which happened when trying to open 0-size font files! - -2001-05-09 Werner Lemberg <wl@gnu.org> - - * include/freetype/internal/ftcalc.h: Move declaration of - FT_SqrtFixed() out of `#ifdef FT_LONG64'. - -2001-05-08 Francesco Zappa Nardelli <Francesco.Zappa.Nardelli@ens.fr> - - * src/pcfdriver.c (PCF_Load_Glyph): Fixed incorrect bitmap width - computation. - -2001-05-08 David Turner <david@freetype.org> - - * docs/docmaker.py: Updated the DocMaker script in order to add - command line options (--output,--prefix,--title), fix the erroneous - line numbers reported during errors and warnings, and other - formatting issues. - - * src/base/ftcalc.c (FT_MulDiv, FT_MulFix, FT_DivFix): Various tiny - fixes related to rounding in 64-bits routines and - pseudo-`optimizations'. - -2001-04-27 David Turner <david@freetype.org> - - * src/base/ftbbox.c (BBox_Cubic_Check): Fixed the coefficient - normalization algorithm (invalid final bit position, and invalid - shift computation). - -2001-04-26 Werner Lemberg <wl@gnu.org> - - * builds/unix/config.guess, builds/unix/config.sub: Updated to - latest versions from gnu.org. - - * builds/compiler/gcc-dev.mk: Add `-Wno-long-long' flag. - - * include/freetype/internal/ftcalc.h: Define FT_SqrtFixed() - uncoditionally. - * src/base/ftbbox.c: Include FT_INTERNAL_CALC_H. - Fix compiler warnings. - * src/base/ftcalc.c: Fix (potential) compiler warnings. - -2001-04-26 David Turner <david@freetype.org> - - * src/base/ftcalc.c (FT_SqrtFixed): Corrected/optimized the 32-bit - fixed-point square root computation. It is now used even with - 64-bits integers, as it is _much_ faster than calling FT_Sqrt64 :-) - - * src/base/ftbbox.c: Removed invalid `#include FT_BEZIER_H' line. - -2001-04-25 David Turner <david@freetype.org> - - * src/base/ftbbox.c (BBox_Cubic_Check): Rewrote function to use - direct computations with 16.16 values instead of sub-divisions. It - is now slower, but proves a point :-) - - * src/raster/ftraster.c, src/smooth/ftgrays.c, src/base/ftbbox.c: - Fixed the bezier stack depths. - - * src/base/ftcalc.c (FT_MulFix): Minor rounding fix. - - * builds/beos: Added BeOS-specific files to the old build system - (no changes were necessary to support BeOS in the Jamfile though). - -2001-04-20 David Turner <david@freetype.org> - - * ftconfig.h, ftoption.h: Updated `ftconfig.h' to detect 64-bit int - types on platforms where Autoconf is not available). Also removed - FTCALC_USE_LONG_LONG and replaced it with - FT_CONFIG_OPTION_FORCE_INT64. - - * builds/win32/freetype.dsp: Updated the Visual C++ project file. - Doesn't create a DLL yet. - - * cffgload.c: Removed a compilation warning. - -2001-04-10 Tom Kacvinsky <tkacvins@freetype.org> - - * t1load.c (parse_charstrings): Changed code for placing .notdef - glyph into slot 0 so that we no longer have a memory access - violation. - - * t1load.h: In structure T1_Loader, added swap_table (of type - PS_Table) to facilitate placing the .notdef glyph into slot 0. - -2001-04-10 Francesco Zappa Nardelli <francesco.zappa.nardelli@ens.fr> - - * src/pcf/pcfdriver.c (PCF_Get_Char_Index): Fix return value. - -2001-04-09 Laurence Withers <lwithers@lwithers.demon.co.uk> - - * builds/dos/detect.mk: Add support for bash. - -2001-04-05 Werner Lemberg <wl@gnu.org> - - * builds/os2/*.mk: These files have been forgotten to update to - the structure of similar makefiles. - * builds/dos/*.mk: Ditto. - * builds/ansi/*.mk: Ditto. - - * builds/win32/win32-def.mk (BUILD): Fix typo. - - * builds/compiler/*.mk (CLEAN_LIBRARY): Don't use NO_OUTPUT. - This is already used in the link_*.mk files. - -2001-04-03 Werner Lemberg <wl@gnu.org> - - * src/*/Jamfile: Slight changes to make files more cryptic. - -2001-04-03 Werner Lemberg <wl@gnu.org> - - * Jamfile, src/Jamfile, src/*/Jamfile: Formatted. Slight changes - to give files identical structure. - -2001-04-02 Werner Lemberg <wl@gnu.org> - - * CHANGES: Reformatted, minor fixes. - * TODO: Updated. - * README: Formatting. - * include/freetype/freetype.h: Formatting. - - * Jamfile: Fix typo. - - * src/cff/cffparse.c: Move error code #defines to... - * include/freetype/internal/cfferrs.h: This file. - * src/cff/cffdrivr.c, src/cff/cffobjs.c, src/cff/cffload.c: Replaced - `FT_Err_*' with `CFF_Err_*'. - * src/cid/cidparse.c: Replaced `FT_Err_*' with `T1_Err_*'. - * src/psaux/psobjs.c, src/psaux/t1decode.c: Ditto. - * src/sfnt/sfobcs.c, src/sfnt/ttload.c: Replaced `FT_Err_*' with - `TT_Err_*'. - * src/truetype/ttgload.c, src/truetype/ttobjs.c: Ditto. - * src/type1/t1gload.c, src/type1/t1load.c, src/type1/t1objs.c, - src/type1/t1parse.c: Replaced `FT_Err_*' with `T1_Err_*'. - - * include/freetype/internal/cfferrs.h: Add - `CFF_Err_Unknown_File_Format'. - * include/freetype/internal/t1errors.h: Add - `T1_Err_Unknown_File_Format'. - * include/freetype/internal/tterrors.h: Add - `TT_Err_Unknown_File_Format'. - - * src/cff/cffload.h: Add `cff_*_encoding' and `cff_*_charset' - references. - * src/psaux/psobjs.c: Include `FT_INTERNAL_TYPE1_ERRORS_H'. - - * src/cff/cffobjs.c (CFF_Init_Face, CFF_Done_Face): Use - FT_LOCAL_DEF. - * src/cid/cidobjs.c (CID_Done_Driver): Ditto. - * src/trutype/ttobjs.c (TT_Init_Face, TT_Done_Face, TT_Init_Size): - Ditto. - * src/type1/t1objs.c (T1_Done_Driver): Ditto. - * src/pcf/pcfdriver.c (PCF_Done_Face): Ditto. - * src/pcf/pcf.h: Use FT_LOCAL for `PCF_Done_Face'. - -2001-04-02 Tom Kacvinsky <tkacvins@freetype.org> - - * src/sfnt/ttload.c (TT_Load_Metrics): Fix an improper pointer - dereference. Submitted by Herbert Duerr <duerr@sun.com>. - -2001-03-26 Tom Kacvinsky <tkacvins@freetype.org> - - * include/freetype/config/ftconfig.h: Changed hexadecimal - constants to use suffix U to avoid problems with HP-UX's c89 - compiler. Submitted by G.W. Lucas <glucas@sonalysts.com>. - -2001-03-24 David Turner <david.turner@freetype.org> - - * Jamrules, Jamfile, src/Jamfile, src/*/Jamfile: Adding jamfiles to - the source tree. See www.freetype.org/jam/index.html for details. - - - * Version 2.0.2 released. - ========================= - - -2001-03-20 Werner Lemberg <wl@gnu.org> - - * builds/win32/detekt.mk: Fix .PHONY target for Intel compiler. - -2001-03-20 David Turner <david.turner@freetype.org> - - * include/freetype/config/ftheader.h, include/freetype/ftsnames.h: - Renamed `ftnames.h' to `ftsnames.h', and FT_NAMES_H to - FT_SFNT_NAMES_H. - - * docs/docmaker.py: Added generation of INDEX link in table of - contents. - - * INSTALL, docs/BUILD: Updated documentation to indicate that the - compilation process has changed slightly (no more `src' required in - the include path). - - * builds/*/*-def.mk: Changed the objects directory from `obj' to - `objs'. - - * include/freetype/config/ftheader.h: Removed obsolete macros like - FT_SOURCE_FILE, etc. and added cache-specific macro definitions that - were previously defined in <freetype/ftcache.h>. Added comments to - be included in a new API Reference section. - - * src/*/*: Removed the use of FT_SOURCE_FILE, etc. Now, each - component needs to add its own directory to the include path at - compile time. Modified all `rules.mk' and `descrip.mms' - accordingly. - -2001-03-20 Werner Lemberg <wl@gnu.org> - - * builds/unix/configure.in: Add $ft_version. - * builds/unix/freetype-config.in: Use it. - * builds/unix/configure: Updated. - -2001-03-19 Tom Kacvinsky <tkacvins@freetype.org> - - * src/type1/t1load.c (parse_font_matrix): Assign the units per em - value an unsigned short value, first by shifting right 16 bits, - then by casting the results to FT_UShort. - - * src/cff/cffparse.c (cff_parse_font_bbox): Assign the units per em - value an unsigned short value, first by shifting right 16 bits, - then by casting the results to FT_UShort. - -2001-03-17 David Turner <david.turner@freetype.org> - - * src/cid/cidobjs.c, src/cid/cidload.c, src/pcf/pcfread.c, - src/type1/t1load.c, src/type1/t1objs.c: Added a few casts to remove - compiler warnings in pedantic modes. - - * include/config/ft2build.h, include/config/ftheader.h: The file - `ft2build.h' was renamed to `ftheader.h' to avoid conflicts with the - top-level <ft2build.h>. - - * include/config/ftheader.h: Added new section describing the #include - macros. - -2001-03-17 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/cffparse.c (cff_parse_font_bbox): Obtain rounded FT_Fixed - values for the bounding box numbers. - - * src/cff/cffobjs.c (CFF_Init_Face): When processing a CFF/CEF font, - set `root->ascender' (`root->descender') to the integer part of - `root->bbox.yMax' (`root->bbox.yMin', respectively). - -2001-03-16 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/cffdrivr.c (get_cff_glyph_name): New function. Used in - cff_get_interface to facilitate getting a glyph name for glyph index - via FT_Get_Glyph_Name(). - - (cff_get_interface): Added support for getting a glyph name via the - `glyph_name' module interface. Uses the new function - get_cff_glyph_name(). - Submitted by Sander van der Wal <svdwal@xs4all.nl>. - - * src/cff/cffobjs.c (CFF_Init_Face): Logical or the face flags with - FT_FACE_FLAG_GLYPH_NAMES only if FT_CONFIG_OPTION_NO_GLYPH_NAMES is - not defined. This is to add support for getting a glyph name from a - glyph index via FT_Get_Glyph_Name(). - Submitted by Sander van der Wal <svdwal@xs4all.nl>. - - * src/cff/cffgload.c (CFF_Parse_CharStrings): Added support for - deprecated operator `dotsection'. - Submitted by Sander van der Wal <svdwal@xs4all.nl>. - -2001-03-12 Werner Lemberg <wl@gnu.org> - - * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Fix error - messages. - - * INSTALL, docs/BUILD: We need GNU make 3.78.1 or newer. - -2001-03-12 Tom Kacvinsky <tkacvins@freetype.org> - - * include/freetype/internal/psaux.h: Changed the lenIV member of - the T1_Decoder_ struct to be an FT_Int instead of an FT_UInt. - - * src/psaux/t1decode.c (T1_Decoder_Parse_Charstrings): Adjust - for lenIV seed bytes at the start of a decrypted subroutine. - - * src/cid/cidload.c (cid_read_subrs): Decrypt subroutines only - if lenIV >= 0. - - * src/cid/cidgload.c (cid_load_glyph): Decrypt charstrings only - if lenIV >= 0. - -2001-03-11 Werner Lemberg <wl@gnu.org> - - * TODO: Updated. - - * src/pcf/pcfread.c: Put READ_Fields() always in a conditional to - avoid compiler warnings. - -2001-03-10 Tom Kacvinsky <tkacvins@freetype.org> - - * TODO: New file. - - * include/freetype/freetype.h: Added prototypes and notes for - three new functions: FT_RoundFix, FT_CeilFix, and FT_FloorFix. - * src/base/ftcalc.c (FT_RoundFix, FT_CeilFix, FT_FloorFix): Added - implementation code. - - * src/cid/cidobjs.c (CID_Init_Face): Use calculated units_per_EM, - and if that is not available, default to 1000 units per EM. Changed - assignment code for ascender and descender values. - * src/cid/cidload.c (parse_font_matrix): Added units_per_EM - processing. - (parse_font_bbox): Changed to use FT_Fixed number handling. - - * src/type1/t1objs.c (T1_Init_Face): Changed the assignment code - for ascender, descender, and max_advance_width. - * src/type1/t1load.c (parse_font_bbox): Changed to use FT_Fixed - number handling. - -2001-03-10 Henrik Grubbstr�m <grubba@roxen.com> - - * src/*/*.c: Added many casts to make code more 64bit-safe. - -2001-03-07 Werner Lemberg <wl@gnu.org> - - * INSTALL, docs/BUILD: We need GNU make 3.78 or newer. - -2001-03-07 Tom Kacvinsky <tkacvins@freetype.org> - - * src/type1/t1objs.c (T1_Init_Face): Minor correction: We must wait - until parse_font_bbox is changed before we use logical shift rights - in the assignments of `root->ascender', `root->descender', and - `root->max_advance_width'. - - (T1_Done_Face): Free `char_name' table to avoid a memory leak. - Submitted by Sander van der Wal <svdwal@xs4all.nl>. - -2001-03-05 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/cffgload.c (CFF_Load_Glyph): Set glyph control data to the - the Type 2 glyph charstring (used by conversion programs). - Submitted by Ha Shao <hashao@chinese.com>. - -2001-03-04 Antoine Leca <Antoine.Leca@renault.fr> - - * include/freetype/ttnameid.h: Correct a stupid typo which prevented - correct compilation (TT_MS_LANGID_TIGRIGNA_ETHIOPIA appeared twice). - -2001-03-04 Werner Lemberg <wl@gnu.org> - - * src/autohint/ahtypes.h (AH_Hinter): Add elements - `disable_horz_edges', `disable_vert_edges'. - * src/autohint/ahhint.c (ah_hint_edges_3, ah_hinter_hint_edges): Use - them (and remove static variables with the same names). - * src/pcf/pcfutil.c (BitOrderInvert): Add `const'. - * docs/glnames.py: Updated to latest pstables.h changes. - - * builds/unix/detect.mk: Add test for Hurd. - * builds/hurd/detect.mk: Removed. - -2001-03-04 Sander van der Wal <svdwal@xs4all.nl> - - * src/psnames/pstables.h: Add more `const'. - * src/pcf/pcfutil.c: Ditto. - -2001-03-04 Werner Lemberg <wl@gnu.org> - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixing typo - (FT_Glyph_Done -> FT_Done_Glyph). - -2001-03-01 Antoine Leca <Antoine.Leca@renault.fr> - - * include/freetype/ttnameid.h: Added some new Microsoft language - codes and LCIDs as found in Office Xp. - -2001-02-28 David Turner <david.turner@freetype.org> - - * builds/hurd/detect.mk: New file. Added support to detect the GNU - Hurd operating system as Unix-like. Fix submitted by Anthony Fok - <foka@debian.org>. - - * src/type1/t1gload.c (T1_Load_Glyph): Set glyph control data to the - the Type 1 glyph charstring (used by conversion programs). - Submitted by Ha Shao <hashao@chinese.com>. - -2001-02-22 David Turner <david.turner@freetype.org> - - * src/base/ftgrays.c (grays_sweep): The function didn't exit - immediately if `num_cells' was 0 as it should. Thanks to Boris for - finding this out. - - * src/base/ftglyph.c (FT_Glyph_To_Bitmap): Fixed memory leak when - bitmap rendering fails (thanks to Graham Asher). - -2001-02-13 Werner Lemberg <wl@gnu.org> - - * docs/docmaker.py (DocSection::add_element): Use - `self.print_error()'. - - * builds/unix/config.{guess,sub}: Updated (from ftp.gnu.org). - -2001-02-13 David Turner <david.turner@freetype.org> - - * docs/docmaker.py, include/freetype/*.h: Updated the DocMaker - script to support chapters and section block ordering. Updated the - public header files accordingly. - - * src/base/ftglyph.c (FT_Glyph_Copy): Advance width and glyph format - were not correctly copied. - -2001-02-08 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/cffparse.c (cff_parse_font_matrix): Removed an - unnecessary fprintf( stderr, ... ). - -2001-02-07 Tom Kacvinsky <tkacvins@freetype.org> - - * src/type1/t1objs.c (T1_Init_Face): Added code to get the - units_per_EM from the value assigned in parse_font_matrix, if - available. Default to 1000 if not available. - - * src/cff/cffparse.c (cff_parse_font_matrix): Added logic to get - the units_per_EM from the FontMatrix. - - (cff_parse_fixed_thousand): New function. Gets a real number from - the CFF font, but multiplies by 1000 (this is to avoid rounding - errors when placing this real number into a 16.16 fixed number). - - (cff_parse_real): Added code so that the integer part is moved - into the high sixteen bits of the 16.16 fixed number. - - * src/cff/cffobjs.c (CFF_Init_Face): Added logic to get the units - per EM from the CFF dictionary, if available. - - * include/freetype/internal/cfftypes.h: In struct CFF_Font_Dict_, - added a units_per_em member to facilitate passing of units_per_em - from function cff_parse_font_matrix. - - * src/type1/t1load.c (is_alpha): Make `-' a legal alphanumeric - character. This is so that font names with `-' are fully parsed, - etc... - -2001-02-02 Werner Lemberg <wl@gnu.org> - - * src/psaux/psobjs.c (shift_elements): Remove if clause (which is - obsolete now). - - (reallocate_t1_table, PS_Table_Done): Replace REALLOC() with ALLOC() - + MEM_Copy() to avoid a memory bug. - -2001-02-01 David Turner <david.turner@freetype.org> - - * docs/docmaker.py: Improved the index sorting routine to place - capital letters before small ones. Added the `<order>' marker to - section blocks in order to give the order of blocks. - -2001-01-30 Antoine Leca <Antoine.Leca@renault.fr> - - * include/freetype/ttnameid.h: Latest updates to Microsoft language - ID codes. - -2001-01-24 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/t1load.c (parse_font_matrix): Added heuristic to get - units_per_EM from the font matrix. - - (parse_dict): Deleted test to see whether the FontInfo keyword has - been seen. Deletion of this test allows fonts without FontInfo - dictionaries to be parsed by the Type 1 driver. - - (T1_Open_Face): Deleted empty subroutines array test to make sure - fonts with no subroutines still are parsed. - -2001-01-17 Francesco Zappa Nardelli <francesco.zappa.nardelli@ens.fr> - - * src/pcfread.c (pcf_get_properties, pcf_get_metrics, - pcf_get_bitmaps): Fix compiler errors. - -2001-01-11 David Turner <david.turner@freetype.org> - - * src/pcf/pcfread.c: Removed some compilation warnings related - to comparison of signed vs. unsigned integers. - - * include/freetype/internal/ftdebug.h: Changed the debug trace - constants from trace_t2xxxx to trace_cffxxxx to be able to compile - the CFF driver in debug mode. - -2001-01-11 Matthew Crosby <mcrosby@marthon.org> - - * builds/unix/freetype-config.in: Fix problems with separate - --prefix and --exec-prefix. - -2001-01-11 David Turner <david.turner@freetype.org> - - * docs/docmaker.py: Added cross-references generation as well as - more robust handling of pathname wildcard matching. - -2001-01-10 Werner Lemberg <wl@gnu.org> - - * docs/docmaker.py: Minor improvements to reduce unwanted spaces - and empty lines in output. - -2001-01-09 David Turner <david.turner@freetype.org> - - * docs/docmaker.py: Improved script to generate table of contents - and index pages. It also supports wildcards on non Unix systems. - - * include/freetype/*.h, include/freetype/cache/*.h: Updated comments - to include section definitions/delimitations for the API Reference - generator. - - * include/freetype/freetype.h: Moved declaration of - `FT_Generic_Finalizer' and the `FT_Generic' structure to... - * include/freetype/fttypes.h: here. - -2001-01-04 Werner Lemberg <wl@gnu.org> - - * include/freetype/ttnameid.h: Updated Unicode code range comments. - -2001-01-03 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/rules.mk: Use cffgload.{c,h} instead of t2gload.{c,h}. - - * include/freetype/internal/internal.h: Changed to use cfftypes.h - (cfferrs.h) instead of t2types.h (t2errors.h, respectively). - - * include/freetype/internal/cfftypes.h: Merged in changes from - t2types.h and made this the canonical `types' header for the CFF - driver. - - * include/freetype/internal/t2types.h: This file was merged with - cfftypes.h and is no longer necessary. - - * include/freetype/internal/t2errors.h: Renamed to cfferrs.h. - - * src/cff/cffobjs.c, src/cff/cffobjs.h, src/cff/cffparse.c, - src/cff/cffdrivr.c, src/cff/cff.c, src/cff/cffload.c, - src/cff/cffgload.c, src/cff/cffgload.h: Changed to use - cffgload.{c,h} instead of t2gload.{c,h}. All occurrences of t2_ - (T2_) were replaced with cff_ (CFF_, respectively). - - * src/cff/t2gload.h: Renamed cffgload.h. - - * src/cff/t2gload.c: Renamed cffgload.c - -2000-01-02 Jouk Jansen <joukj@hrem.stm.tudelft.nl> - - * builds/vms: Support files for VMS architecture added. - * descrip.mms, src/*/descrip.mms: VMS makefiles added. - * README.VMS: New file. - -2000-01-01 Werner Lemberg <wl@gnu.org> - - * LICENSE.TXT: Added info about PCF driver license. - -2001-01-01 Francesco Zappa Nardelli <francesco.zappa.nardelli@ens.fr> - - * src/pcf/*: New driver module for PCF font format (used in - X Window System). - * include/freetype/internal/ftdebug.h (FT_Trace): Added values for - PCF driver. - * include/freetype/internal/pcftypes.h: New file. - * include/freetype/config/ftmodule.h: Added PCF driver module. - -2001-01-01 Werner Lemberg <wl@gnu.org> - - * src/winfonts/winfnt.c (FNT_Get_Char_Index): Fix parameter type. - -2000-12-31 Werner Lemberg <wl@gnu.org> - - * builds/modules.mk (clean_module_list): Fixed deletion of module - file in case `make make_module_list' is called before `make setup'. - -2000-12-30 Werner Lemberg <wl@gnu.org> - - * src/cff/cffload.c (CFF_Load_Charset): Improved error messages. - (CFF_Load_Charset, CFF_Load_Encoding): Remove unnecessary variable - definition. - -2000-12-30 Tom Kacvinsky <tkacvins@freetype.org> - - * include/freetype/internal/t2types.h, - include/freetype/internal/cfftypes.h: Changed the structures for - CFF_Encoding and CFF_Encoding for the new implementations of the - charset and encoding parsers in the CFF driver. - - * src/cff/t2gload.c (t2_lookup_glyph_by_stdcharcode, - t2_operator_seac): Added these functions for use in implementing the - seac emulation provided by the Type 2 endchar operator. - (T2_Parse_CharStrings): Added seac emulation for the endchar - operator. - - * src/cff/cffload.c (CFF_Load_Encoding, CFF_Load_Charset, - CFF_Done_Encoding, CFF_Done_Charset): Extended to load and parse the - charset/encoding tables, and free the memory used by them when the - CFF driver is finished with them. Added tables - - cff_isoadobe_charset - cff_expert_charset - cff_expertsubset_charset - cff_standard_encoding - cff_expert_encoding - - so that the encoding/charset parser can handle predefined encodings and - charsets. - -2000-12-24 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/t2gload.c (T2_Load_Glyph): Added code so that the font - transform is applied. - - * src/cff/cffparse.c (cff_parse_font_matrix): Added code so that - the font matrix numbers are scaled by 1/(matrix->yy). Also, the - offset vector now contains integer values instead of 16.16 fixed - numbers. - -2000-12-22 Tom Kacvinsky <tkacvins@freetype.org> - - * src/autohint/ahhint.c (ah_hinter_load_glyph): - Removed unnecessary comments and commented-out code. - -2000-12-21 David Turner <david.turner@freetype.org> - - * src/cid/cidafm.c, src/cid/cidafm.h: removed un-needed files, - we'll work on supporting CID AFM files later I guess :-) - -2000-12-21 Tom Kacvinsky <tkacvins@freetype.org> - - * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): - Changed so that fonts with a non-standard FontMatrix render - correctly. Previously, the first glyph rendered from such a - font did not have the tranformation matrix applied. - -2000-12-17 Werner Lemberg <wl@gnu.org> - - * *.mk: Added lots of `.PHONY' targets. - -2000-12-17 Karsten Fleischer <kfleisc1@ford.com> - - * *.mk: Implemented `platform' target to disable auto-detection. - -2000-12-14 Werner Lemberg <wl@gnu.org> - - * docs/design/modules.html: Removed. Covered by design-*.html. - - * INSTALL: Added info about makepp. - -2000-12-14 David Turner <david.turner@freetype.org> - - Added support for clipped direct rendering in the smooth renderer. - This should not break binary compatibility of existing applications. - - * include/freetype/fttypes.h, include/freetype/ftimage.h: Move - definition of the FT_BBox structure from the former to the latter. - * include/freetype/ftimage.h: Add `ft_raster_flag_clip' value to - FT_Raster_Flag enumeration. - Add `clip_box' element to FT_Raster_Params structure. - * src/smooth/ftgrays.c (grays_convert_glyph): Implement it. - - * INSTALL: Updated installation instructions on Win32, listing the - new `make setup list' target used to list supported - compilers/targets. - - * src/raster/ftraster.c (ft_black_render): Test for unsupported - direct rendering before testing arguments. - -2000-12-13 David Turner <david.turner@freetype.org> - - * include/freetype/config/ft2build.h, - include/freetype/internal/internal.h: Fixed header inclusion macros - to use direct definitions. This is the only way to do these things - in a portable way :-( The rest of the code should follow shortly - though everything compiles now. - - * builds/compiler/intelc.mk, builds/compiler/watcom.mk: New files. - - * builds/win32/detect.mk: Added support for the Intel C/C++ - compiler, as well as _preliminary_ (read: doesn't work!) support for - Watcom. Also added a new setup target. Type `make setup list' for - a list of supported command-line compilers on Win32. - - * src/base/ftdebug.c: Added dummy symbol to avoid empty file if - conditionals are off. - -2000-12-13 Werner Lemberg <wl@gnu.org> - - * builds/unix/ftsystem.c: Fixed typos. Fixed inclusion of wrong - ftconfig.h file. - -2000-12-12 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ft2build.h (FT2_ROOT, FT2_CONFIG_ROOT): - Removed. ANSI C doesn't (explicitly) allow macro expansion in - arguments using `##'. - (FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE): Use directory - names directly. Make them configurable. Use `##' to strip leading - and trailing spaces from arguments. - - * builds/unix/ft2unix.h: Adapted. - - * src/base/ftsystem.c (ft_alloc, ft_realloc, ft_free, ft_io_stream, - ft_close_stream): Use FT_CALLBACK_DEF. - - * builds/unix/ftsystem.c: Use new header scheme. - (FT_Done_Memory): Use free() from FT_Memory structure. - - * src/base/ftinit.c, src/base/ftmac.c: Header scheme fixes. - -2000-12-11 Werner Lemberg <wl@gnu.org> - - * include/freetype/config/ft2build.h (FT2_CONFIG_ROOT, - FT2_PUBLIC_FILE, FT2_CONFIG_FILE, FT2_INTERNAL_FILE, - FT_SOURCE_FILE): Use `##' operator to be really ANSI C compliant. - -2000-12-09 Werner Lemberg <wl@gnu.org> - - * builds/unix/detect.mk: Remove unused USE_CFLAGS variable. - -2000-12-08 Werner Lemberg <wl@gnu.org> - - * */*.h: Changed body inclusion macro names to start and end with - `__' (those which haven't converted yet). Fixed minor conversion - issues. - - * src/winfonts/winfnt.c: Updated to new header inclusion scheme. - - * src/truetype/ttinterp.c: Remove unused CALC_Length() macro. - -2000-12-07 David Turner <david.turner@freetype.org> - - * */*.[ch]: Changed source files to adhere to the new - header inclusion scheme. Not completely tested but works for now - here. - - * src/cff/t2driver.c: Renamed and updated to... - * src/cff/cffdrivr.c: New file. - * src/cff/t2driver.h: Renamed and updated to... - * src/cff/cffdrivr.h: New file. - * src/cff/t2load.c: Renamed and updated to... - * src/cff/cffload.c: New file. - * src/cff/t2load.h: Renamed and updated to... - * src/cff/cffload.h: New file. - * src/cff/t2objs.c: Renamed and updated to... - * src/cff/cffobjs.c: New file. - * src/cff/t2objs.h: Renamed and updated to... - * src/cff/cffobjs.h: New file. - * src/cff/t2parse.c: Renamed and updated to... - * src/cff/cffparse.c: New file. - * src/cff/t2parse.h: Renamed and updated to... - * src/cff/cffparse.h: New file. - * src/cff/t2tokens.h: Renamed and updated to... - * src/cff/cfftoken.h: New file. - - * src/cff/cff.c, src/cff/rules.mk: Updated. - -2000-12-06 David Turner <david.turner@freetype.org> - - * src/cache/ftlru.c (FT_Lru_Done): Fixed memory leak. - -2000-12-06 Werner Lemberg <wl@gnu.org> - - * builds/module.mk: Replaced `xxx #' with `xxx$(space). - * builds/os2/detekt.mk, builds/win32/detekt.mk: Moved comment to - avoid trailing spaces in variable. - * builds/freetype.mk: Use $(D) instead of $D to make statement more - readable. - - * docs/docmaker.py: Formatting. - -2000-12-05 David Turner <david.turner@freetype.org> - - * src/psaux/psauxmod.c: Fixed a broken inclusion of component - header files (an FT_FLAT_COMPILE test was missing). - - * src/cache/ftcmanag.c (FTC_Manager_Done): Fixed a bug that caused - an occasional crash when the function was called (due to a dangling - pointer). - - * src/base/ftsystem.c (FT_Done_Memory): Fixed an obvious bug: - The ANSI `free()' function was called instead of `memory->free()'. - - * docs/docmaker.py: Added section filtering, multi-page generation - (index page generation is still missing though). - -2000-12-04 David Turner <david.turner@freetype.org> - - * builds/unix/install.mk, builds/unix/ft2unix.h: The file `ft2unix.h' - is now installed as <ft2build.h> for Unix systems. Note that we - still use the `freetype2/freetype' installation path for now. - - * */*.[ch]: Now using <ft2build.h> as the default build and setup - configuration file in all public headers. Internal source files - still need some changes though. - - * builds/devel/ft2build.h, builds/devel/ftoption.h: Created a new - directory to hold all development options for both the Unix and - Win32 developer builds. - - * builds/win32/detect.mk, builds/win32/w32-bccd.mk, - builds/win32/w32-dev.mk: Changed the developer build targets to - `devel-gcc' and `devel-bcc' in order to be able to develop with the - Borland C++ compiler. - -2000-12-01 David Turner <david.turner@freetype.org> - - - * Version 2.0.1 released. - ========================= - - - * builds/unix/configure.in, builds/unix/configure, - builds/cygwin/configure.in, builds/cygwin/configure: Setting - `version_info' to 6:1:0 for the 2.0.1 release. - - * CHANGES: Added a summary of changes between 2.0.1 and 2.0. - - * builds/unix/ftconfig.in, builds/cygwin/ftconfig.in: Changes - to allow compilation under Unix with the Unix-specific config - files. - -2000-12-01 Werner Lemberg <wl@gnu.org> - - * INSTALL: Revised. - * builds/compiler/bcc-dev.mk, builds/compiler/visualage.mk, - builds/compiler/bcc.mk, builds/win32/w32-bcc.mk, - builds/win32/w32-bccd.mk: Revised. - * include/freetype/config/ftbuild.h, - include/freetype/internal/internal.h: Revised. - * include/freetype/ftimage.h: Updated to new header inclusion scheme. - -2000-11-30 Werner Lemberg <wl@gnu.org> - - * builds/toplevel.mk (.PHONY): Adding `distclean'. - * builds/unix/detect.mk (.PHONY): Adding `devel', `unix', `lcc', - `setup'. - -2000-11-30 David Turner <david.turner@freetype.ogr> - - * INSTALL: Slightly updated the quick starter documentation to - include IDE compilation, prevent against BSD Make, and specify `make - setup' instead of a single `make' for build configuration. - - * include/config/ftbuild.h, include/internal/internal.h: Added new - configuration files used to determine the location of all public, - configuration, and internal header files for FreeType 2. Modified - all headers under `include/freetype' to reflect this change. Note - that we still need to change the library source files themselves - though. - - * builds/compiler/bcc.mk, builds/compiler/bcc-dev.mk, - builds/win32/w32-bcc.mk, builds/win32/w32-bccd.mk, - builds/win32/detect.mk: Added new files to support compilation with - the free Borland C++ command-line compiler. Modified the detection - rules to recognize the new `bcc32' target in `make setup bcc32'. - - * src/sfnt/ttcmap.c, src/sfnt/ttpost.c, src/sfnt/ttsbit.c, - src/truetype/ttobjs.c, src/truetype/ttgload.c, - src/truetype/ttinterp.c: Fixed a few comparisons that Borland C++ - didn't really like. Basically, this compiler complains when FT_UInt - is compared to FT_UShort (apparently, it promotes `UShort' to `Int' - in these cases). - -2000-11-30 Tom Kacvinsky <tkacvins@freetype.org> - - * t2objs.c (T2_Init_Face): Added calculation of `face->height' for - pure CFF fonts. - - * t1objs.c (T1_Init_Face): Fixed computation of `face->height'. - -2000-11-29 David Turner <david.turner@freetype.org> - - * src/base/ftbbox.c (BBox_Conic_Check): Fixed a really stupid - bug in the formula used to compute the conic B�zier extrema - of non-monotonous arcs. - -2000-11-29 Werner Lemberg <wl@gnu.org> - - * src/base/ftcalc.c (FT_SqrtFixed), src/base/ftobjs.c - (FT_Set_Renderer): Use FT_EXPORT_DEF. - * src/cache/ftcimage.c (FTC_Image_Cache_Lookup), - src/cache/ftcmanag.c (FTC_Manager_Done, FTC_Manager_Reset, - FTC_Manager_Lookup_Face, FTC_Manager_Lookup_Size, - FTC_Manager_Register_Cache), src/cache/ftcsbits.c - (FTC_SBit_Cache_Lookup): Ditto. - - * src/include/freetype/cache/ftcglyph.h (FTC_GlyphNode_Init), - src/include/freetype/ftmac.h (FT_New_Face_From_FOND): Use FT_EXPORT. - -2000-11-29 Werner Lemberg <wl@gnu.org> - - * src/sfnt/sfdriver.c: Include ttsbit.h and ttpost.h only - conditionally. - - * src/truetype/ttdriver.c (Set_Char_Sizes, Set_Pixel_Sizes): Set - `size->strike_index' only conditionally. - - * src/type1/t1driver.c, src/type1/t1objs.c: Include t1afm.h only - conditionally. - - * src/winfonts/winfnt.h: Move all type definitions to... - * src/include/freetype/internal/fnttypes.h: New file. - * src/winfonts/winfnt.c: Use it. - -2000-11-29 ??? ??? <darin@eazel.com> - - * include/freetype/internal/ftdebug.h: Replaced FT_CAT and FT_XCAT - with a direct solution (which also satifies picky compilers). - -2000-11-28 YAMANO-UCHI Hidetoshi <mer@din.or.jp> - - * src/truetype/ttobjs.c (TT_Init_Size): Fix #ifdef's to work with - disabled interpreter also. - - * src/base/ftnames.c (FT_Get_Sfnt_Name_Count): Fix incorrect - parentheses. - -2000-11-26 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/t2gload.c (T2_Parse_CharStrings): Added logic to glyph - width setting code to take into account even/odd argument counts - and glyph width operand before endchar/hmoveto/vmoveto. - -2000-11-26 Werner Lemberg <wl@gnu.org> - - * builds/ansi/ansi.mk: Fix inclusion order of files. - -2000-11-26 Keith Packard <keithp@keithp.com> - - * src/type1/t1objs.c (T1_Init_Face): Compute style flags. - -2000-11-26 Werner Lemberg <wl@gnu.org> - - * builds/compiler/ansi-cc.mk (CLEAN_LIBRARY): Fix rule and - conditional. - -2000-11-23 Werner Lemberg <wl@gnu.org> - - * src/type1/t1load.c (parse_subrs, parse_charstrings): Use decrypt - function from PSAux module. - - * src/type1/t1parse.c (T1_Done_Parse): Renamed to... - (T1_Finalize_Parser): New function (to avoid name clash with a - function in the PSAux module). - (T1_Decrypt): Removed since it is duplicated in the PSAux module. - (T1_Get_Private_Dict): Added `psaux' as new parameter; use decrypt - function from PSAux module. - - * src/type1/t1parse.h: Adapted. - -2000-11-22 Tom Kacvinsky <tkacvins@freetype.org> - - * src/cff/t2objs.c (T2_Init_Face): For pure CFF fonts, set - `root->num_faces' to `cff->num_faces' and set `units_per_EM' - to 1000. - - * src/cff/t2parse.c (parse_t2_real): Fixed real number parsing - loop. - - * src/cff/t2load.c (T2_Get_String): Called T2_Get_Name with a - sid that was off by one. - -2000-11-16 David Turner <david@freetype.org> - - * src/autohint/ahtypes.h (AH_Hinter): Added new fields to control - auto-hinting of synthetic Type 1 fonts. - - * src/autohint/ahhint.c (ah_hinter_load, ah_hinter_load_glyph): - Added auto-hinting support of synthetic Type 1 fonts. - -2000-11-12 Tom Kacvinsky <tkacvins@freetype.org> - - * src/sfnt/ttload.c (TT_LookUp_Table, TT_Load_Generic_Table): Change - tracing output. - - * src/sfnt/sfobjs.c (SFNT_Load_Face): Set boolean variable - `has-outline' to true only if the font has a `glyf' or `CFF ' table. - -2000-11-11 Werner Lemberg <wl@gnu.org> - - * builds/win32/visualc/freetype.dsp: Fix raster1->raster and - type1z->type1. - -2000-11-11 Tom Kacvinsky <tkacvins@freetype.org> - - * builds/unix/freetype-config.in, builds/cygwin/freetype-config.in: - Added a --libtool option. When freetype-config --libtool is - invoked, the absolute path to the libtool convenience library - is returned. - -2000-11-11 Werner Lemberg <wl@gnu.org> - - * builds/cygwin/cygwin-def.in: Same fix as previous. - -2000-11-10 Tom Kacvinsky <tkacvins@freetype.org> - - * builds/unix/unix-def.in: Add - - INSTALL_PROGRAM := @INSTALL_PROGRAM@ - INSTALL_SCRIPT := @INSTALL_SCRIPT@ - - so that installation of freetype-config does not fail. - -2000-11-10 Werner Lemberg <wl@gnu.org> - - * builds/cygwin/freetype-config.in, builds/unix/freetype-config.in: - Move test down for empty --exec-prefix. - Fix --version. - - * builds/cygwin/install.mk, builds/unix/install.mk: Use - $(INSTALL_SCRIPT) for installation of freetype-config. - - * builds/cygwin/install.mk: Fix clean target names. - -2000-11-09 David Turner <david@freetype.org> - - - * Version 2.0 released. - ======================= - - -Local Variables: -version-control: never -coding: latin-1 -End: diff --git a/nx-X11/extras/freetype2/Jamfile b/nx-X11/extras/freetype2/Jamfile deleted file mode 100644 index 54fe154e8..000000000 --- a/nx-X11/extras/freetype2/Jamfile +++ /dev/null @@ -1,157 +0,0 @@ -# FreeType 2 top Jamfile (c) 2001, 2002, 2003, 2004 David Turner -# - -# The HDRMACRO is already defined in FTJam and is used to add -# the content of certain macros to the list of included header -# files. -# -# We can compile FreeType 2 with classic Jam however thanks to -# the following code -# -if ! $(JAM_TOOLSET) -{ - rule HDRMACRO - { - # nothing - } -} - - -# We need to invoke a SubDir rule if the FT2 source directory top is not the -# current directory. This allows us to build FreeType 2 as part of a larger -# project easily. -# -if $(FT2_TOP) != $(DOT) -{ - SubDir FT2_TOP ; -} - - -# The following macros define the include directory, the source directory, -# and the final library name (without library extensions). They can be -# replaced by other definitions when the library is compiled as part of -# a larger project. -# - -# Name of FreeType include directory during compilation. -# This is relative to FT2_TOP. -# -FT2_INCLUDE_DIR ?= include ; - -# Name of FreeType source directory during compilation. -# This is relative to FT2_TOP. -# -FT2_SRC_DIR ?= src ; - -# Name of final library, without extension. -# -FT2_LIB ?= $(LIBPREFIX)freetype ; - - -# Define FT2_BUILD_INCLUDE to point to your build-specific directory. -# This is prepended to FT2_INCLUDE_DIR. It can be used to specify -# the location of a custom <ft2build.h> which will point to custom -# versions of "ftmodule.h" and "ftoption.h", for example. -# -FT2_BUILD_INCLUDE ?= ; - -# The list of modules to compile on any given build of the library. -# By default, this will contain _all_ modules defined in FT2_SRC_DIR. -# -# IMPORTANT: You'll need to change the content of "ftmodule.h" as well -# if you modify this list or provide your own. -# -FT2_COMPONENTS ?= autofit # auto-fitter - autohint # auto-hinter - base # base component (public APIs) - bdf # BDF font driver - cache # cache sub-system - cff # CFF/CEF font driver - cid # PostScript CID-keyed font driver - gzip # support for gzip-compressed files - lzw # support for LZW-compressed files - pcf # PCF font driver - pfr # PFR/TrueDoc font driver - psaux # common PostScript routines module - pshinter # PostScript hinter module - psnames # PostScript names handling - raster # monochrome rasterizer - smooth # anti-aliased rasterizer - sfnt # SFNT-based format support routines - truetype # TrueType font driver - type1 # PostScript Type 1 font driver - type42 # PostScript Type 42 (embedded TrueType) driver - winfonts # Windows FON/FNT font driver - ; - - -# Don't touch. -# -FT2_INCLUDE = $(FT2_BUILD_INCLUDE) - [ FT2_SubDir $(FT2_INCLUDE_DIR) ] ; - -FT2_SRC = [ FT2_SubDir $(FT2_SRC_DIR) ] ; - -# Location of API Reference Documentation -# -if $(DOC_DIR) -{ - DOC_DIR = $(DOCDIR:T) ; -} -else -{ - DOC_DIR = docs/reference ; -} - - -# Only used by FreeType developers. -# -if $(DEBUG_HINTER) -{ - CCFLAGS += -DDEBUG_HINTER ; -} - - -# We need "freetype2/include" in the current include path in order to -# compile any part of FreeType 2. -# -HDRS += $(FT2_INCLUDE) ; - - -# Uncomment the following line if you want to build individual source files -# for each FreeType 2 module. This is only useful during development, and -# is better defined as an environment variable anyway! -# -# FT2_MULTI = true ; - - -# The file <freetype/config/ftheader.h> is used to define macros that are -# later used in #include statements. It needs to be parsed in order to -# record these definitions. -# -HDRMACRO [ FT2_SubDir include freetype config ftheader.h ] ; -HDRMACRO [ FT2_SubDir include freetype internal internal.h ] ; - - -# Now include the Jamfile in "freetype2/src", used to drive the compilation -# of each FreeType 2 component and/or module. -# -SubInclude FT2_TOP $(FT2_SRC_DIR) ; - - -# Test files (hinter debugging). Only used by FreeType developers. -# -if $(DEBUG_HINTER) -{ - SubInclude FT2_TOP tests ; -} - -actions RefDoc -{ - python $(FT2_SRC)/tools/docmaker/docmaker.py --prefix=ft2 --title=FreeType-2.1.9 --output=$(DOC_DIR) $(FT2_INCLUDE)/freetype/*.h $(FT2_INCLUDE)/freetype/config/*.h $(FT2_INCLUDE)/freetype/cache/*.h -} - -RefDoc refdoc ; - - -# end of top Jamfile diff --git a/nx-X11/extras/freetype2/Jamrules b/nx-X11/extras/freetype2/Jamrules deleted file mode 100644 index 0b68597d0..000000000 --- a/nx-X11/extras/freetype2/Jamrules +++ /dev/null @@ -1,61 +0,0 @@ -# FreeType 2 JamRules (c) 2001, 2002, 2003 David Turner -# -# This file contains the Jam rules needed to build the FreeType 2 library. -# It is shared by all Jamfiles and is included only once in the build -# process. -# - - -# Call SubDirHdrs on a list of directories. -# -rule AddSubDirHdrs -{ - local x ; - - for x in $(<) - { - SubDirHdrs $(x) ; - } -} - - -# Determine prefix of library file. We must use "libxxxxx" on Unix systems, -# while all other simply use the real name. -# -if $(UNIX) -{ - LIBPREFIX ?= lib ; -} -else -{ - LIBPREFIX ?= "" ; -} - -# FT2_TOP contains the location of the FreeType source directory. You can -# set it to a specific value if you want to compile the library as part of a -# larger project. -# -FT2_TOP ?= $(DOT) ; - -# Define a new rule used to declare a sub directory of the Nirvana source -# tree. -# -rule FT2_SubDir -{ - if $(FT2_TOP) = $(DOT) - { - return [ FDirName $(<) ] ; - } - else - { - return [ FDirName $(FT2_TOP) $(<) ] ; - } -} - -# We also set ALL_LOCATE_TARGET in order to place all object and library -# files in "objs". -# -ALL_LOCATE_TARGET ?= [ FT2_SubDir objs ] ; - - -# end of Jamrules diff --git a/nx-X11/extras/freetype2/Makefile b/nx-X11/extras/freetype2/Makefile deleted file mode 100644 index e1fbdf2ed..000000000 --- a/nx-X11/extras/freetype2/Makefile +++ /dev/null @@ -1,32 +0,0 @@ -# -# FreeType 2 build system -- top-level Makefile -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Project names -# -PROJECT := freetype -PROJECT_TITLE := FreeType - -USE_MODULES := 1 - -# The variable TOP_DIR holds the path to the topmost directory in the project -# engine source hierarchy. If it is not defined, default it to `.'. -# -ifndef TOP_DIR - TOP_DIR := . -endif - -include $(TOP_DIR)/builds/toplevel.mk - -# EOF diff --git a/nx-X11/extras/freetype2/README b/nx-X11/extras/freetype2/README deleted file mode 100644 index 354d67d1c..000000000 --- a/nx-X11/extras/freetype2/README +++ /dev/null @@ -1,39 +0,0 @@ - Special notes to Unix users - =========================== - - Please read the file "docs/UPGRADE.UNX". It contains important - information regarding the installation of FreeType on Unix systems, - especially GNU based operating systems like GNU/Linux. - - FreeType 2's library is called `libfreetype', FreeType 1's library - is called `libttf'. They are *not* compatible! - - - FreeType 2.1.9 - ============== - - Please read the docs/CHANGES file, it contains IMPORTANT INFORMATION. - - Read the files "docs/INSTALL" for installation instructions. - - Note that the FreeType 2 documentation is now available as a - separate package from our sites. See: - - ftp://ftp.freetype.org/freetype/freetype2/ftdocs-2.1.9.tar.bz2 - ftp://ftp.freetype.org/freetype/freetype2/ftdocs-2.1.9.tar.gz - ftp://ftp.freetype.org/freetype/freetype2/ftdoc219.zip - - - Bugs - ==== - - Please report bugs by e-mail to `devel@freetype.org'. Don't forget - to send a detailed explanation of the problem -- there is nothing - worse than receiving a terse message that only says "it doesn't - work". - - - Enjoy! - - - The FreeType Team diff --git a/nx-X11/extras/freetype2/builds/amiga/README b/nx-X11/extras/freetype2/builds/amiga/README deleted file mode 100644 index 161166676..000000000 --- a/nx-X11/extras/freetype2/builds/amiga/README +++ /dev/null @@ -1,90 +0,0 @@ -The makefile is for ppc-morphos-gcc-2.95.3-bin.tgz (gcc 2.95.3 hosted -on 68k-Amiga producing MorphOS-PPC-binaries from -http://www.morphos.de). To use it, type "make assign", then "make"; -it produces a link library libft2_ppc.a. - -The smakefile is a makefile for Amiga SAS/C 6.58 (no longer available, -latest sold version was 6.50, updates can be found in Aminet). It is -based on the version found in the sourcecode of ttf.library 0.83b for -FreeType 1.3.1 from Richard Griffith (ragriffi@sprynet.com, -http://ragriffi.home.sprynet.com). - -You will also need the latest include files and amiga.lib from the -Amiga web site (http://www.amiga.com/3.9/download/NDK3.9.lha) for -AmigaOS 3.9; the generated code should work under AmigaOS 2.04 and up. - -To use it, call "smake assign" and then "smake" from the builds/amiga -directory. The results are: - -- A link library "ft2_680x0.lib" (where x depends on the setting of - the CPU entry in the smakefile) containing all FreeType2 parts - except of the init code, debugging code, and the system interface - code. - -- ftsystem.o, an object module containing the standard version of the - system interface code which uses fopen() fclose() fread() fseek() - ftell() malloc() realloc() and free() from lib:sc.lib (not pure). - -- ftsystempure.o, an object module containing the pure version of the - system interface code which uses Open() Close() Read() Seek() - ExamineFH() AsmAllocPooled() AsmFreePooled() etc. This version can - be used in both normal programs and in Amiga run-time shared system - librarys (can be linked with lib:libinit.o, no copying of DATA and - BSS hunks for each OpenLibrary() necessary). Source code is in - src/base/ftsystem.c. - -- ftdebug.o, an object module containing the standard version of the - debugging code which uses vprintf() and exit() (not pure). - Debugging can be turned on in FT:include/freetype/config/ftoption.h - and with FT_SetTraceLevel(). - -- ftdebugpure.o, an object module containing the pure version of the - debugging code which uses KVPrintf() from lib:debug.lib and no - exit(). For debugging of Amiga run-time shared system libraries. - Source code is in src/base/ftdebug.c. - -- NO ftinit.o. Since linking with a link library should result in - linking only the needed object modules in it, but standard - ftsystem.o would force ALL FreeType2 modules to be linked to your - program, I decided to use a different scheme: You must #include - FT:src/base/ftinit.c in your sourcecode and specify with #define - statements which modules you need. See - include/freetype/config/ftmodule.h. - - -To use in your own programs: - -- Insert the #define and #include statements from top of - include/freetype/config/ftmodule.h in your source code and uncomment - the #define statements for the FreeType2 modules you need. - -- You can use either PARAMETERS=REGISTER or PARAMETERS=STACK for - calling the FreeType2 functions, since the link library and the - object files are compiled with PARAMETERS=BOTH. - -- "smake assign" (assign "FT:" to the FreeType2 main directory). - -- Compile your program. - -- Link with either ftsystem.o or ftsystempure.o, if debugging enabled - with either ftdebug.o or (ftdebugpure.o and lib:debug.lib), and with - ft2_680x0.lib as link library. - - -To adapt to other compilers: - -- The standard ANSI C maximum length of 31 significant characters in - identifiers is not enough for FreeType2. Check if your compiler has - a minimum length of 40 significant characters or can be switched to - it. "idlen=40" is the option for SAS/C. Setting #define - HAVE_LIMIT_ON_IDENTS in an include file may also work (not tested). - -- Make sure that the include directory in builds/amiga is searched - before the normal FreeType2 include directory, so you are able to - replace problematic include files with your own version (same may be - useful for the src directory). - -- An example of how to replace/workaround a problematic include file - is include/config/ftconfig.h; it changes a #define that would - prevent SAS/C from generating XDEF's where it should do that and - then includes the standard FreeType2 include file. diff --git a/nx-X11/extras/freetype2/builds/amiga/include/freetype/config/ftconfig.h b/nx-X11/extras/freetype2/builds/amiga/include/freetype/config/ftconfig.h deleted file mode 100644 index 9c6ff45f5..000000000 --- a/nx-X11/extras/freetype2/builds/amiga/include/freetype/config/ftconfig.h +++ /dev/null @@ -1,20 +0,0 @@ -// TetiSoft: We must change FT_BASE_DEF and FT_EXPORT_DEF - -//#define FT_BASE_DEF( x ) extern x // SAS/C wouldn't generate an XDEF -//#define FT_EXPORT_DEF( x ) extern x // SAS/C wouldn't generate an XDEF -#undef FT_BASE_DEF -#define FT_BASE_DEF( x ) x -#undef FT_EXPORT_DEF -#define FT_EXPORT_DEF( x ) x - -// TetiSoft: now include original file -#ifndef __MORPHOS__ -#include "FT:include/freetype/config/ftconfig.h" -#else -// We must define that, it seems that -// lib/gcc-lib/ppc-morphos/2.95.3/include/syslimits.h is missing in -// ppc-morphos-gcc-2.95.3-bin.tgz (gcc for 68k producing MorphOS PPC elf -// binaries from http://www.morphos.de) -#define _LIBC_LIMITS_H_ -#include "/FT/include/freetype/config/ftconfig.h" -#endif diff --git a/nx-X11/extras/freetype2/builds/amiga/include/freetype/config/ftmodule.h b/nx-X11/extras/freetype2/builds/amiga/include/freetype/config/ftmodule.h deleted file mode 100644 index d7bc9cbd4..000000000 --- a/nx-X11/extras/freetype2/builds/amiga/include/freetype/config/ftmodule.h +++ /dev/null @@ -1,123 +0,0 @@ -// TetiSoft: To specify which modules you need, -// insert the following in your source file and uncomment as needed: - -/* -//#define FT_USE_AUTOHINT // autohinter -//#define FT_USE_RASTER // monochrome rasterizer -//#define FT_USE_SMOOTH // anti-aliasing rasterizer -//#define FT_USE_TT // truetype font driver -//#define FT_USE_T1 // type1 font driver -//#define FT_USE_T42 // type42 font driver -//#define FT_USE_T1CID // cid-keyed type1 font driver // no cmap support -//#define FT_USE_CFF // opentype font driver -//#define FT_USE_BDF // bdf bitmap font driver -//#define FT_USE_PCF // pcf bitmap font driver -//#define FT_USE_PFR // pfr font driver -//#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver -#include "FT:src/base/ftinit.c" -*/ - -// TetiSoft: make sure that needed support modules are built in. -// Dependencies can be found by searching for FT_Get_Module. - -#ifdef FT_USE_T42 -#define FT_USE_TT -#endif - -#ifdef FT_USE_TT -#define FT_USE_SFNT -#endif - -#ifdef FT_USE_CFF -#define FT_USE_SFNT -#define FT_USE_PSHINT -#define FT_USE_PSNAMES -#endif - -#ifdef FT_USE_T1 -#define FT_USE_PSAUX -#define FT_USE_PSHINT -#define FT_USE_PSNAMES -#endif - -#ifdef FT_USE_T1CID -#define FT_USE_PSAUX -#define FT_USE_PSHINT -#define FT_USE_PSNAMES -#endif - -#ifdef FT_USE_PSAUX -#define FT_USE_PSNAMES -#endif - -#ifdef FT_USE_SFNT -#define FT_USE_PSNAMES -#endif - -// TetiSoft: Now include the modules - -#ifdef FT_USE_AUTOHINT -FT_USE_MODULE(autohint_module_class) -#endif - -#ifdef FT_USE_PSHINT -FT_USE_MODULE(pshinter_module_class) -#endif - -#ifdef FT_USE_CFF -FT_USE_MODULE(cff_driver_class) -#endif - -#ifdef FT_USE_T1CID -FT_USE_MODULE(t1cid_driver_class) -#endif - -#ifdef FT_USE_BDF -FT_USE_MODULE(bdf_driver_class) -#endif - -#ifdef FT_USE_PCF -FT_USE_MODULE(pcf_driver_class) -#endif - -#ifdef FT_USE_PFR -FT_USE_MODULE(pfr_driver_class) -#endif - -#ifdef FT_USE_PSAUX -FT_USE_MODULE(psaux_module_class) -#endif - -#ifdef FT_USE_PSNAMES -FT_USE_MODULE(psnames_module_class) -#endif - -#ifdef FT_USE_RASTER -FT_USE_MODULE(ft_raster1_renderer_class) -#endif - -#ifdef FT_USE_SFNT -FT_USE_MODULE(sfnt_module_class) -#endif - -#ifdef FT_USE_SMOOTH -FT_USE_MODULE(ft_smooth_renderer_class) -FT_USE_MODULE(ft_smooth_lcd_renderer_class) -FT_USE_MODULE(ft_smooth_lcdv_renderer_class) -#endif - -#ifdef FT_USE_TT -FT_USE_MODULE(tt_driver_class) -#endif - -#ifdef FT_USE_T1 -FT_USE_MODULE(t1_driver_class) -#endif - -#ifdef FT_USE_T42 -FT_USE_MODULE(t42_driver_class) -#endif - -#ifdef FT_USE_WINFNT -FT_USE_MODULE(winfnt_driver_class) -#endif diff --git a/nx-X11/extras/freetype2/builds/amiga/makefile b/nx-X11/extras/freetype2/builds/amiga/makefile deleted file mode 100644 index db773302c..000000000 --- a/nx-X11/extras/freetype2/builds/amiga/makefile +++ /dev/null @@ -1,207 +0,0 @@ -# -# Makefile for FreeType2 link library using ppc-morphos-gcc-2.95.3-bin.tgz -# (gcc 2.95.3 hosted on 68k-Amiga producing MorphOS-PPC-binaries from -# http://www.morphos.de) -# -# to build from the builds/amiga directory call -# -# make assign -# make -# -# Your programs source code should start with this -# (uncomment the parts you do not need to keep the program small): -# ---8<--- -#define FT_USE_AUTOHINT // autohinter -#define FT_USE_RASTER // monochrome rasterizer -#define FT_USE_SMOOTH // anti-aliasing rasterizer -#define FT_USE_TT // truetype font driver -#define FT_USE_T1 // type1 font driver -#define FT_USE_T42 // type42 font driver -#define FT_USE_T1CID // cid-keyed type1 font driver -#define FT_USE_CFF // opentype font driver -#define FT_USE_BDF // bdf bitmap font driver -#define FT_USE_PCF // pcf bitmap font driver -#define FT_USE_PFR // pfr font driver -#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver -#include "FT:src/base/ftinit.c" -# ---8<--- -# -# link your programs with libft2_ppc.a and either ftsystem.ppc.o or ftsystempure.ppc.o -# (and either ftdebug.ppc.o or ftdebugpure.ppc.o if you enabled FT_DEBUG_LEVEL_ERROR or -# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). - -all: libft2_ppc.a ftsystem.ppc.o ftsystempure.ppc.o - -assign: - assign FT: // - -FTSRC = /FT/src - -CC = ppc-morphos-gcc -AR = ppc-morphos-ar rc -RANLIB = ppc-morphos-ranlib -LD = ppc-morphos-ld -CFLAGS = -O2 -I/emu/emulinclude/includegcc -I/emu/include -Iinclude -I$(FTSRC) -I/FT/include - -# -# FreeType2 library base -# -ftbase.ppc.o: $(FTSRC)/base/ftbase.c - $(CC) -c $(CFLAGS) -o $@ $< - -ftinit.ppc.o: $(FTSRC)/base/ftinit.c - $(CC) -c $(CFLAGS) -o $@ $< - -ftsystem.ppc.o: $(FTSRC)/base/ftsystem.c - $(CC) -c $(CFLAGS) -o $@ $< - -# pure version for use in run-time library etc -ftsystempure.ppc.o: src/base/ftsystem.c - $(CC) -c $(CFLAGS) -o $@ $< - -ftdebug.ppc.o: $(FTSRC)/base/ftdebug.c - $(CC) -c $(CFLAGS) -o $@ $< - -# pure version for use in run-time library etc -ftdebugpure.ppc.o: src/base/ftdebug.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library base extensions -# -ftglyph.ppc.o: $(FTSRC)/base/ftglyph.c - $(CC) -c $(CFLAGS) -o $@ $< - -ftbbox.ppc.o: $(FTSRC)/base/ftbbox.c - $(CC) -c $(CFLAGS) -o $@ $< - -ftmm.ppc.o: $(FTSRC)/base/ftmm.c - $(CC) -c $(CFLAGS) -o $@ $< - -ftsynth.ppc.o: $(FTSRC)/base/ftsynth.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library autohinting module -# -autohint.ppc.o: $(FTSRC)/autohint/autohint.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library autohinting module extensions -# -ahoptim.ppc.o: $(FTSRC)/autohint/ahoptim.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library postscript hinting module -# -pshinter.ppc.o: $(FTSRC)/pshinter/pshinter.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library PS support module -# -psaux.ppc.o: $(FTSRC)/psaux/psaux.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library PS glyph names module -# -psnames.ppc.o: $(FTSRC)/psnames/psnames.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library monochrome raster module -# -raster.ppc.o: $(FTSRC)/raster/raster.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library anti-aliasing raster module -# -smooth.ppc.o: $(FTSRC)/smooth/smooth.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library 'sfnt' module -# -sfnt.ppc.o: $(FTSRC)/sfnt/sfnt.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library glyph and image caching system (still experimental) -# -ftcache.ppc.o: $(FTSRC)/cache/ftcache.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library OpenType font driver -# -cff.ppc.o: $(FTSRC)/cff/cff.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library TrueType font driver -# -truetype.ppc.o: $(FTSRC)/truetype/truetype.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library Type1 font driver -# -type1.ppc.o: $(FTSRC)/type1/type1.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library Type42 font driver -# -type42.ppc.o: $(FTSRC)/type42/type42.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library CID-keyed Type1 font driver -# -type1cid.ppc.o: $(FTSRC)/cid/type1cid.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library BDF bitmap font driver -# -bdf.ppc.o: $(FTSRC)/bdf/bdf.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library PCF bitmap font driver -# -pcf.ppc.o: $(FTSRC)/pcf/pcf.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library PFR font driver -# -pfr.ppc.o: $(FTSRC)/pfr/pfr.c - $(CC) -c $(CFLAGS) -o $@ $< - -# -# FreeType2 library Windows FNT/FON bitmap font driver -# -winfnt.ppc.o: $(FTSRC)/winfonts/winfnt.c - $(CC) -c $(CFLAGS) -o $@ $< - -BASEPPC = ftbase.ppc.o ftglyph.ppc.o ftbbox.ppc.o ftmm.ppc.o ftsynth.ppc.o - -DEBUGPPC = ftdebug.ppc.o ftdebugpure.ppc.o - -AHINTPPC = autohint.ppc.o ahoptim.ppc.o - -PSPPC = psaux.ppc.o psnames.ppc.o pshinter.ppc.o - -RASTERPPC = raster.ppc.o smooth.ppc.o - -FONTDPPC = cff.ppc.o type1.ppc.o type42.ppc.o type1cid.ppc.o truetype.ppc.o\ - bdf.ppc.o pcf.ppc.o pfr.ppc.o winfnt.ppc.o - -libft2_ppc.a: $(BASEPPC) $(AHINTPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) - $(AR) $@ $(BASEPPC) $(AHINTPPC) $(PSPPC) $(RASTERPPC) sfnt.ppc.o ftcache.ppc.o $(FONTDPPC) - -@ ($(RANLIB) $@ || true) >/dev/null 2>&1 diff --git a/nx-X11/extras/freetype2/builds/amiga/smakefile b/nx-X11/extras/freetype2/builds/amiga/smakefile deleted file mode 100644 index c8b3e6cd5..000000000 --- a/nx-X11/extras/freetype2/builds/amiga/smakefile +++ /dev/null @@ -1,236 +0,0 @@ -# -# Makefile for FreeType2 link library using Amiga SAS/C 6.58 -# -# to build from the builds/amiga directory call -# -# smake assign -# smake -# -# Your programs source code should start with this -# (uncomment the parts you do not need to keep the program small): -# ---8<--- -#define FT_USE_AUTOHINT // autohinter -#define FT_USE_RASTER // monochrome rasterizer -#define FT_USE_SMOOTH // anti-aliasing rasterizer -#define FT_USE_TT // truetype font driver -#define FT_USE_T1 // type1 font driver -#define FT_USE_T42 // type42 font driver -#define FT_USE_T1CID // cid-keyed type1 font driver -#define FT_USE_CFF // opentype font driver -#define FT_USE_BDF // bdf bitmap font driver -#define FT_USE_PCF // pcf bitmap font driver -#define FT_USE_PFR // pfr font driver -#define FT_USE_WINFNT // windows .fnt|.fon bitmap font driver -#include "FT:src/base/ftinit.c" -# ---8<--- -# -# link your programs with ft2_680x0.lib and either ftsystem.o or ftsystempure.o -# (and either ftdebug.o or ftdebugpure.o if you enabled FT_DEBUG_LEVEL_ERROR or -# FT_DEBUG_LEVEL_TRACE in include/freetype/config/ftoption.h). - -OBJBASE = ftbase.o ftglyph.o ftbbox.o ftmm.o ftsynth.o - -OBJSYSTEM = ftsystem.o ftsystempure.o - -OBJDEBUG = ftdebug.o ftdebugpure.o - -OBJAHINT = autohint.o ahoptim.o - -OBJPSHINT = pshinter.o - -OBJPSAUX = psaux.o - -OBJPSNAM = psnames.o - -OBJRAST = raster.o - -OBJSMOOTH = smooth.o - -OBJSFNT = sfnt.o - -OBJCACHE = ftcache.o - -OBJPS = $(OBJPSAUX) $(OBJPSNAM) $(OBJPSHINT) - -OBJRASTER = $(OBJRAST) $(OBJSMOOTH) - -OBJFONTD = cff.o type1.o type42.o type1cid.o\ - truetype.o winfnt.o bdf.o pcf.o pfr.o - -CORE = FT:src/ - -CPU = 68000 -#CPU = 68020 -#CPU = 68030 -#CPU = 68040 -#CPU = 68060 - -OPTIMIZER = optinlocal - -SCFLAGS = optimize opttime optsched strmerge strsect=near idlen=40 cpu=$(CPU)\ - idir=include/ idir=$(CORE) idir=FT:include/ nostackcheck nochkabort\ - noicons ignore=79,85,110,306 parameters=both - -LIB = ft2_$(CPU).lib - -# sample linker options -OPTS = link lib=$(LIB),lib:sc.lib,lib:amiga.lib,lib:debug.lib\ - smallcode smalldata noicons utillib - -# sample program entry -#myprog: myprog.c ftsystem.o $(LIB) -# sc $< programname=$@ ftsystem.o $(SCFLAGS) $(OPTS) - -all: $(LIB) $(OBJSYSTEM) $(OBJDEBUG) - -assign: - assign FT: // - -# uses separate object modules in lib to make for easier debugging -# also, can make smaller programs if entire engine is not used -ft2_$(CPU).lib: $(OBJBASE) $(OBJAHINT) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) - oml $@ r $(OBJBASE) $(OBJAHINT) $(OBJPS) $(OBJRASTER) $(OBJSFNT) $(OBJCACHE) $(OBJFONTD) - -clean: - -delete \#?.o - -realclean: clean - -delete ft2$(CPU).lib - -# -# freetype library base -# -ftbase.o: $(CORE)base/ftbase.c - sc $(SCFLAGS) objname=$@ $< -ftinit.o: $(CORE)base/ftinit.c - sc $(SCFLAGS) objname=$@ $< -ftsystem.o: $(CORE)base/ftsystem.c - sc $(SCFLAGS) objname=$@ $< -ftsystempure.o: src/base/ftsystem.c ## pure version for use in run-time library etc - sc $(SCFLAGS) objname=$@ $< -ftdebug.o: $(CORE)base/ftdebug.c - sc $(SCFLAGS) objname=$@ $< -ftdebugpure.o: src/base/ftdebug.c ## pure version for use in run-time library etc - sc $(SCFLAGS) objname=$@ $< -# -# freetype library base extensions -# -ftglyph.o: $(CORE)base/ftglyph.c - sc $(SCFLAGS) objname=$@ $< -ftbbox.o: $(CORE)base/ftbbox.c - sc $(SCFLAGS) objname=$@ $< -ftmm.o: $(CORE)base/ftmm.c - sc $(SCFLAGS) objname=$@ $< -ftsynth.o: $(CORE)base/ftsynth.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library autohinting module -# -autohint.o: $(CORE)autohint/autohint.c - sc $(SCFLAGS) objname=$@ $< -# -# freetype library autohinting module extensions -# -ahoptim.o: $(CORE)autohint/ahoptim.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library PS hinting module -# -pshinter.o: $(CORE)pshinter/pshinter.c - sc $(SCFLAGS) objname=$@ $< -# -# freetype library PS support module -# -psaux.o: $(CORE)psaux/psaux.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library PS glyph names module -# -psnames.o: $(CORE)psnames/psnames.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library monochrome raster module -# -raster.o: $(CORE)raster/raster.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library anti-aliasing raster module -# -smooth.o: $(CORE)smooth/smooth.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library 'sfnt' module -# -sfnt.o: $(CORE)sfnt/sfnt.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library glyph and image caching system (still experimental) -# -ftcache.o: $(CORE)cache/ftcache.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library OpenType font driver -# -cff.o: $(CORE)cff/cff.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library TrueType font driver -# -truetype.o: $(CORE)truetype/truetype.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library Type1 font driver -# -type1.o: $(CORE)type1/type1.c - sc $(SCFLAGS) objname=$@ $< - -# -# FreeType2 library Type42 font driver -# -type42.o: $(CORE)type42/type42.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library CID-keyed Type1 font driver -# -type1cid.o: $(CORE)cid/type1cid.c - sc $(SCFLAGS) objname=$@ $< -# -# freetype library CID-keyed Type1 font driver extensions -# -#cidafm.o: $(CORE)cid/cidafm.c -# sc $(SCFLAGS) objname=$@ $< - -# -# freetype library BDF bitmap font driver -# -bdf.o: $(CORE)bdf/bdf.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library PCF bitmap font driver -# -pcf.o: $(CORE)pcf/pcf.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library PFR font driver -# -pfr.o: $(CORE)pfr/pfr.c - sc $(SCFLAGS) objname=$@ $< - -# -# freetype library Windows FNT/FON bitmap font driver -# -winfnt.o: $(CORE)winfonts/winfnt.c - sc $(SCFLAGS) objname=$@ $< diff --git a/nx-X11/extras/freetype2/builds/amiga/src/base/ftdebug.c b/nx-X11/extras/freetype2/builds/amiga/src/base/ftdebug.c deleted file mode 100644 index a61868746..000000000 --- a/nx-X11/extras/freetype2/builds/amiga/src/base/ftdebug.c +++ /dev/null @@ -1,185 +0,0 @@ -// TetiSoft: replaced vprintf() with KVPrintF() and commented out exit() -extern void __stdargs KVPrintF( const char *formatString, const void *values ); - -/***************************************************************************/ -/* */ -/* ftdebug.c */ -/* */ -/* Debugging and logging component (body). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This component contains various macros and functions used to ease the */ - /* debugging of the FreeType engine. Its main purpose is in assertion */ - /* checking, tracing, and error detection. */ - /* */ - /* There are now three debugging modes: */ - /* */ - /* - trace mode */ - /* */ - /* Error and trace messages are sent to the log file (which can be the */ - /* standard error output). */ - /* */ - /* - error mode */ - /* */ - /* Only error messages are generated. */ - /* */ - /* - release mode: */ - /* */ - /* No error message is sent or generated. The code is free from any */ - /* debugging parts. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H - - -#ifdef FT_DEBUG_LEVEL_TRACE - char ft_trace_levels[trace_max]; -#endif - - -#if defined( FT_DEBUG_LEVEL_ERROR ) || defined( FT_DEBUG_LEVEL_TRACE ) - - -#include <stdarg.h> -#include <stdlib.h> - - - FT_EXPORT_DEF( void ) - FT_Message( const char* fmt, ... ) - { - va_list ap; - - - va_start( ap, fmt ); -// vprintf( fmt, ap ); - KVPrintF( fmt, ap ); - va_end( ap ); - } - - - FT_EXPORT_DEF( void ) - FT_Panic( const char* fmt, ... ) - { - va_list ap; - - - va_start( ap, fmt ); -// vprintf( fmt, ap ); - KVPrintF( fmt, ap ); - va_end( ap ); - -// exit( EXIT_FAILURE ); - } - - - - /* since I don't know wether "getenv" is available on the Amiga */ - /* I prefer to simply disable this code for now in all builds */ - /* */ - -/* #ifdef FT_DEBUG_LEVEL_TRACE */ -#if 0 - - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - const char* ft2_debug = getenv( "FT2_DEBUG" ); - - - if ( ft2_debug ) - { - const char* p = ft2_debug; - const char* q; - - - for ( ; *p; p++ ) - { - /* skip leading whitespace and separators */ - if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) - continue; - - /* read toggle name, followed by '=' */ - q = p; - while ( *p && *p != ':' ) - p++; - - if ( *p == ':' && p > q ) - { - int n, i, len = p - q; - int level = -1, found = -1; - - - for ( n = 0; n < trace_count; n++ ) - { - const char* toggle = ft_trace_toggles[n]; - - - for ( i = 0; i < len; i++ ) - { - if ( toggle[i] != q[i] ) - break; - } - - if ( i == len && toggle[i] == 0 ) - { - found = n; - break; - } - } - - /* read level */ - p++; - if ( *p ) - { - level = *p++ - '0'; - if ( level < 0 || level > 6 ) - level = -1; - } - - if ( found >= 0 && level >= 0 ) - { - if ( found == trace_any ) - { - /* special case for "any" */ - for ( n = 0; n < trace_count; n++ ) - ft_trace_levels[n] = level; - } - else - ft_trace_levels[found] = level; - } - } - } - } - } - - -#else /* !FT_DEBUG_LEVEL_TRACE */ - - - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - /* nothing */ - } - - -#endif /* !FT_DEBUG_LEVEL_TRACE */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/builds/amiga/src/base/ftsystem.c b/nx-X11/extras/freetype2/builds/amiga/src/base/ftsystem.c deleted file mode 100644 index e76d4161e..000000000 --- a/nx-X11/extras/freetype2/builds/amiga/src/base/ftsystem.c +++ /dev/null @@ -1,450 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.c */ -/* */ -/* Amiga-specific FreeType low-level system interface (body). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* This file contains the Amiga interface used by FreeType to access */ - /* low-level, i.e. memory management, i/o access as well as thread */ - /* synchronisation. */ - /* */ - /*************************************************************************/ - - -// Maintained by Detlef W�rkner <TetiSoft@apg.lahn.de> - -// TetiSoft: Modified to avoid fopen() fclose() fread() fseek() ftell() -// malloc() realloc() and free() which can't be used in an amiga -// shared run-time library linked with libinit.o - -#include <exec/memory.h> - -#ifdef __GNUC__ -// Avoid warnings "struct X declared inside parameter list" -#include <exec/devices.h> -#include <exec/io.h> -#include <exec/semaphores.h> -#include <dos/exall.h> -#endif - -// Necessary with OS3.9 includes -#define __USE_SYSBASE - -#include <proto/exec.h> -#include <proto/dos.h> - -#ifndef __GNUC__ -/* TetiSoft: Missing in alib_protos.h, see amiga.lib autodoc - * (These amiga.lib functions work under AmigaOS V33 and up) - */ -extern APTR __asm -AsmCreatePool( register __d0 ULONG memFlags, - register __d1 ULONG puddleSize, - register __d2 ULONG threshSize, - register __a6 struct ExecBase* SysBase ); - -extern VOID __asm -AsmDeletePool( register __a0 APTR poolHeader, - register __a6 struct ExecBase* SysBase ); - -extern APTR __asm -AsmAllocPooled( register __a0 APTR poolHeader, - register __d0 ULONG memSize, - register __a6 struct ExecBase* SysBase ); - -extern VOID __asm -AsmFreePooled( register __a0 APTR poolHeader, - register __a1 APTR memory, - register __d0 ULONG memSize, - register __a6 struct ExecBase* SysBase); -#endif - - -// TetiSoft: C implementation of AllocVecPooled (see autodoc exec/AllocPooled) -APTR -AllocVecPooled( APTR poolHeader, - ULONG memSize ) -{ - ULONG newSize = memSize + sizeof ( ULONG ); -#ifdef __GNUC__ - ULONG *mem = AllocPooled( poolHeader, newSize ); -#else - ULONG *mem = AsmAllocPooled( poolHeader, newSize, SysBase ); -#endif - - if ( !mem ) - return NULL; - *mem = newSize; - return mem + 1; -} - - -// TetiSoft: C implementation of FreeVecPooled (see autodoc exec/AllocPooled) -void -FreeVecPooled( APTR poolHeader, - APTR memory ) -{ - ULONG *realmem = (ULONG *)memory - 1; - -#ifdef __GNUC__ - FreePooled( poolHeader, realmem, *realmem ); -#else - AsmFreePooled( poolHeader, realmem, *realmem, SysBase ); -#endif -} - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_DEBUG_H -#include FT_SYSTEM_H -#include FT_ERRORS_H -#include FT_TYPES_H - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - - /*************************************************************************/ - /* */ - /* MEMORY MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* It is not necessary to do any error checking for the */ - /* allocation-related functions. This will be done by the higher level */ - /* routines like FT_Alloc() or FT_Realloc(). */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_alloc */ - /* */ - /* <Description> */ - /* The memory allocation function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* size :: The requested size in bytes. */ - /* */ - /* <Return> */ - /* The address of newly allocated block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_alloc( FT_Memory memory, - long size ) - { -// FT_UNUSED( memory ); - -// return malloc( size ); - return AllocVecPooled( memory->user, size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_realloc */ - /* */ - /* <Description> */ - /* The memory reallocation function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* cur_size :: The current size of the allocated memory block. */ - /* */ - /* new_size :: The newly requested size in bytes. */ - /* */ - /* block :: The current address of the block in memory. */ - /* */ - /* <Return> */ - /* The address of the reallocated memory block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) - { -// FT_UNUSED( memory ); -// FT_UNUSED( cur_size ); - -// return realloc( block, new_size ); - - void* new_block; - - new_block = AllocVecPooled ( memory->user, new_size ); - if ( new_block != NULL ) - { - CopyMem ( block, new_block, - ( new_size > cur_size ) ? cur_size : new_size ); - FreeVecPooled ( memory->user, block ); - } - return new_block; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_free */ - /* */ - /* <Description> */ - /* The memory release function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* block :: The address of block in memory to be freed. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_free( FT_Memory memory, - void* block ) - { -// FT_UNUSED( memory ); - -// free( block ); - - FreeVecPooled( memory->user, block ); - } - - - /*************************************************************************/ - /* */ - /* RESOURCE MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_io - - /* We use the macro STREAM_FILE for convenience to extract the */ - /* system-specific stream handle from a given FreeType stream object */ -// #define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) -#define STREAM_FILE( stream ) ( (BPTR)stream->descriptor.pointer ) // TetiSoft - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_close_stream */ - /* */ - /* <Description> */ - /* The function to close a stream. */ - /* */ - /* <Input> */ - /* stream :: A pointer to the stream object. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_close_stream( FT_Stream stream ) - { -// fclose( STREAM_FILE( stream ) ); - Close( STREAM_FILE( stream ) ); // TetiSoft - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_io_stream */ - /* */ - /* <Description> */ - /* The function to open a stream. */ - /* */ - /* <Input> */ - /* stream :: A pointer to the stream object. */ - /* */ - /* offset :: The position in the data stream to start reading. */ - /* */ - /* buffer :: The address of buffer to store the read data. */ - /* */ - /* count :: The number of bytes to read from the stream. */ - /* */ - /* <Return> */ - /* The number of bytes actually read. */ - /* */ - FT_CALLBACK_DEF( unsigned long ) - ft_io_stream( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ) - { -// FILE* file; - BPTR file; // TetiSoft - - - file = STREAM_FILE( stream ); - -// fseek( file, offset, SEEK_SET ); - Seek( file, offset, OFFSET_BEGINNING ); // TetiSoft - -// return (unsigned long)fread( buffer, 1, count, file ); - return (unsigned long)FRead( file, buffer, 1, count); - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Stream_Open( FT_Stream stream, - const char* filepathname ) - { -// FILE* file; - BPTR file; // TetiSoft - struct FileInfoBlock* fib; // TetiSoft - - - if ( !stream ) - return FT_Err_Invalid_Stream_Handle; - -// file = fopen( filepathname, "rb" ); - file = Open( filepathname, MODE_OLDFILE ); // TetiSoft - if ( !file ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - - return FT_Err_Cannot_Open_Resource; - } - -// fseek( file, 0, SEEK_END ); -// astream->size = ftell( file ); -// fseek( file, 0, SEEK_SET ); - fib = AllocDosObject( DOS_FIB, NULL ); - if ( !fib ) - { - Close ( file ); - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - - return FT_Err_Cannot_Open_Resource; - } - if ( !( ExamineFH( file, fib ) ) ) - { - FreeDosObject( DOS_FIB, fib ); - Close ( file ); - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - - return FT_Err_Cannot_Open_Resource; - } - stream->size = fib->fib_Size; - FreeDosObject( DOS_FIB, fib ); - -// stream->descriptor.pointer = file; - stream->descriptor.pointer = (void *)file; - - stream->pathname.pointer = (char*)filepathname; - stream->pos = 0; - - stream->read = ft_io_stream; - stream->close = ft_close_stream; - - FT_TRACE1(( "FT_Stream_Open:" )); - FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", - filepathname, stream->size )); - - return FT_Err_Ok; - } - - -#ifdef FT_DEBUG_MEMORY - - extern FT_Int - ft_mem_debug_init( FT_Memory memory ); - - extern void - ft_mem_debug_done( FT_Memory memory ); - -#endif - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Memory ) - FT_New_Memory( void ) - { - FT_Memory memory; - - -// memory = (FT_Memory)malloc( sizeof ( *memory ) ); - memory = (FT_Memory)AllocVec( sizeof ( *memory ), MEMF_PUBLIC ); - if ( memory ) - { -// memory->user = 0; -#ifdef __GNUC__ - memory->user = CreatePool( MEMF_PUBLIC, 2048, 2048 ); -#else - memory->user = AsmCreatePool( MEMF_PUBLIC, 2048, 2048, SysBase ); -#endif - if ( memory->user == NULL ) - { - FreeVec( memory ); - memory = NULL; - } - else - { - memory->alloc = ft_alloc; - memory->realloc = ft_realloc; - memory->free = ft_free; -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_init( memory ); -#endif - } - } - - return memory; - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( void ) - FT_Done_Memory( FT_Memory memory ) - { -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_done( memory ); -#endif - -#ifdef __GNUC__ - DeletePool( memory->user ); -#else - AsmDeletePool( memory->user, SysBase ); -#endif - FreeVec( memory ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/builds/ansi/ansi-def.mk b/nx-X11/extras/freetype2/builds/ansi/ansi-def.mk deleted file mode 100644 index bf2aa36f1..000000000 --- a/nx-X11/extras/freetype2/builds/ansi/ansi-def.mk +++ /dev/null @@ -1,93 +0,0 @@ -# -# FreeType 2 configuration rules for a `normal' ANSI system -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifndef TOP_DIR - TOP_DIR := . -endif - -DELETE := rm -f -SEP := / -BUILD_DIR := $(TOP_DIR)/builds/ansi -PLATFORM := ansi - - -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP_DIR=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f $TOP_DIR/Makefile setup [options] -# make -f $TOP_DIR/Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(TOP_DIR)/objs -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/ansi/ansi.mk b/nx-X11/extras/freetype2/builds/ansi/ansi.mk deleted file mode 100644 index 32b3bac3e..000000000 --- a/nx-X11/extras/freetype2/builds/ansi/ansi.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# FreeType 2 configuration rules for a `normal' pseudo ANSI compiler/system -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/ansi/ansi-def.mk -include $(TOP_DIR)/builds/compiler/ansi-cc.mk -include $(TOP_DIR)/builds/link_std.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/atari/ATARI.H b/nx-X11/extras/freetype2/builds/atari/ATARI.H deleted file mode 100644 index 28a5575da..000000000 --- a/nx-X11/extras/freetype2/builds/atari/ATARI.H +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef ATARI_H -#define ATARI_H - -#pragma warn -stu - -/* PureC doesn't like 32bit enumerations */ - -#ifndef FT_IMAGE_TAG -#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value -#endif /* FT_IMAGE_TAG */ - -#ifndef FT_ENC_TAG -#define FT_ENC_TAG( value, a, b, c, d ) value -#endif /* FT_ENC_TAG */ - -#endif /* ATARI_H */ diff --git a/nx-X11/extras/freetype2/builds/atari/FNames.SIC b/nx-X11/extras/freetype2/builds/atari/FNames.SIC deleted file mode 100644 index 497f00218..000000000 --- a/nx-X11/extras/freetype2/builds/atari/FNames.SIC +++ /dev/null @@ -1,37 +0,0 @@ -/* the following changes file names for PureC projects */ - -if (argc > 0) -{ - ordner = argv[0]; - if (basename(ordner) == "") /* ist Ordner */ - { - ChangeFilenames(ordner); - } -} - -proc ChangeFilenames(folder) -local i,entries,directory,file; -{ - entries = filelist(directory,folder); - for (i = 0; i < entries; ++i) - { - file = directory[i,0]; - if ((directory[i,3]&16) > 0) /* subdirectory */ - { - ChangeFilenames(folder+file+"\\"); - } - else - { - if ((stricmp(suffix(file),".h")==0)|(stricmp(suffix(file),".c")==0)) - ChangeFilename(folder,file); - } - } -} - -proc ChangeFilename(path,datei) -local newfile,err; -{ - newfile=datei; - newfile[0]=(newfile[0] | 32) ^ 32; - err=files.rename("-q",path+datei,newfile); -} diff --git a/nx-X11/extras/freetype2/builds/atari/FREETYPE.PRJ b/nx-X11/extras/freetype2/builds/atari/FREETYPE.PRJ deleted file mode 100644 index a4c0914da..000000000 --- a/nx-X11/extras/freetype2/builds/atari/FREETYPE.PRJ +++ /dev/null @@ -1,33 +0,0 @@ -;FreeType project file - -FREETYPE.LIB - -.C [-K -P -R -A] -.L [-J -V] -.S - -= - -..\..\src\base\ftsystem.c -..\..\src\base\ftdebug.c - -..\..\src\base\ftinit.c -..\..\src\base\ftglyph.c -..\..\src\base\ftmm -..\..\src\base\ftbbox - -..\..\src\base\ftbase.c -..\..\src\autohint\autohint.c -;..\..\src\cache\ftcache.c -..\..\src\cff\cff.c -..\..\src\cid\type1cid.c -..\..\src\psaux\psaux.c -..\..\src\pshinter\pshinter.c -..\..\src\psnames\psnames.c -..\..\src\raster\raster.c -..\..\src\sfnt\sfnt.c -..\..\src\smooth\smooth.c -..\..\src\truetype\truetype.c -..\..\src\type1\type1.c -..\..\src\type42\type42.c - diff --git a/nx-X11/extras/freetype2/builds/atari/README.TXT b/nx-X11/extras/freetype2/builds/atari/README.TXT deleted file mode 100644 index a905c27bc..000000000 --- a/nx-X11/extras/freetype2/builds/atari/README.TXT +++ /dev/null @@ -1,51 +0,0 @@ -Compiling FreeType 2 with PureC compiler -======================================== - -[See below for a German version.] - -To compile FreeType 2 as a library the following changes must be applied: - -- All *.c files must start with an uppercase letter. - (In case GEMSCRIPT is available: - Simply drag the whole FreeType 2 directory to the file `FNames.SIC'.) - -- You have to change the INCLUDE directory in PureC's compiler options - to contain both the `INCLUDE' and `freetype2\include' directory. - Example: - - INCLUDE;E:\freetype2\include - -- The file `freetype2/include/Ft2build.h' must be patched as follows to - include ATARI.H: - - #ifndef __FT2_BUILD_GENERIC_H__ - #define __FT2_BUILD_GENERIC_H__ - - #include "ATARI.H" - - - -Compilieren von FreeType 2 mit PureC -==================================== - -Um FreeType 2 als eine Bibliothek (library) zu compilieren, muss folgendes -ge�ndert werden: - -- Alle *.c-files m�ssen mit einem GROSSBUCHSTABEN beginnen. - (Falls GEMSCRIPT zur Verf�gung steht: - Den kompletten Ordner freetype2 auf die Datei `FNames.SIC' draggen.) - -- In den Compiler-Optionen von PureC muss das INCLUDE directory auf INCLUDE - und freetype2\include verweisen. Z.B.: - - INCLUDE;E:\freetype2\include - -- In der Datei freetype2/include/Ft2build.h muss zu Beginn - ein #include "ATARI.H" wie folgt eingef�gt werden: - - #ifndef __FT2_BUILD_GENERIC_H__ - #define __FT2_BUILD_GENERIC_H__ - - #include "ATARI.H" - ---- end of README.TXT --- diff --git a/nx-X11/extras/freetype2/builds/beos/beos-def.mk b/nx-X11/extras/freetype2/builds/beos/beos-def.mk deleted file mode 100644 index b569fe62c..000000000 --- a/nx-X11/extras/freetype2/builds/beos/beos-def.mk +++ /dev/null @@ -1,95 +0,0 @@ -# -# FreeType 2 configuration rules for a BeOS system -# -# this is similar to the "ansi-def.mk" file, except for BUILD and PLATFORM -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifndef TOP_DIR - TOP_DIR := . -endif - -DELETE := rm -f -SEP := / -BUILD_DIR := $(TOP_DIR)/builds/beos -PLATFORM := beos - - -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP_DIR=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f $TOP_DIR/Makefile setup [options] -# make -f $TOP_DIR/Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(TOP_DIR)/objs -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/beos/beos.mk b/nx-X11/extras/freetype2/builds/beos/beos.mk deleted file mode 100644 index 1bc8e3ae3..000000000 --- a/nx-X11/extras/freetype2/builds/beos/beos.mk +++ /dev/null @@ -1,19 +0,0 @@ -# -# FreeType 2 configuration rules for a BeOS system -# - -# Copyright 1996-2000, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -include $(TOP_DIR)/builds/compiler/ansi-cc.mk -include $(TOP_DIR)/builds/beos/beos-def.mk -include $(TOP_DIR)/builds/link_std.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/beos/detect.mk b/nx-X11/extras/freetype2/builds/beos/detect.mk deleted file mode 100644 index 8333aba4f..000000000 --- a/nx-X11/extras/freetype2/builds/beos/detect.mk +++ /dev/null @@ -1,40 +0,0 @@ -# -# FreeType 2 configuration file to detect an BeOS host platform. -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -.PHONY: setup - - -ifeq ($(PLATFORM),ansi) - - ifdef BE_HOST_CPU - - PLATFORM := beos - - endif # test MACHTYPE beos -endif - -ifeq ($(PLATFORM),beos) - - DELETE := rm -f - SEP := / - BUILD_DIR := $(TOP_DIR)/builds/beos - CONFIG_FILE := beos.mk - - setup: std_setup - -endif # test PLATFORM beos - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/ansi-cc.mk b/nx-X11/extras/freetype2/builds/compiler/ansi-cc.mk deleted file mode 100644 index c52c12fcc..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/ansi-cc.mk +++ /dev/null @@ -1,84 +0,0 @@ -# -# FreeType 2 generic pseudo ANSI compiler -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := cc -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -# we assume the compiler is already strictly ANSI -# -ANSIFLAGS := - - -# Library linking -# -ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -endif -LINK_LIBRARY = $(AR) -r $@ $(subst /,$(COMPILER_SEP),$(OBJECTS_LIST)) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/bcc-dev.mk b/nx-X11/extras/freetype2/builds/compiler/bcc-dev.mk deleted file mode 100644 index 446fd4e62..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/bcc-dev.mk +++ /dev/null @@ -1,82 +0,0 @@ -# -# FreeType 2 Borland C++-specific with NO OPTIMIZATIONS + DEBUGGING -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := bcc32 -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := - - -# Target flag -- no trailing space. -# -T := -o - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -q -c -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := -A - - -# Library linking -# -ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -endif -LINK_LIBRARY = tlib /u $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/bcc.mk b/nx-X11/extras/freetype2/builds/compiler/bcc.mk deleted file mode 100644 index eedfa10fb..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/bcc.mk +++ /dev/null @@ -1,82 +0,0 @@ -# -# FreeType 2 Borland C++-specific rules -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := bcc32 -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := - - -# Target flag -- no trailing space. -# -T := -o - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -q -y -d -v -Od -w-par -w-ccc -w-rch -w-pro -w-aus -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := -A - - -# Library linking -# -ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -endif -LINK_LIBRARY = tlib /u $(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST:%=+%)) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/emx.mk b/nx-X11/extras/freetype2/builds/compiler/emx.mk deleted file mode 100644 index f2be13ca6..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/emx.mk +++ /dev/null @@ -1,81 +0,0 @@ -# -# FreeType 2 emx-specific definitions -# - - -# Copyright 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := set GCCOPT="-ansi -pedantic"; gcc -COMPILER_SEP := / - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -g -O6 -Wall -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := - - -# Library linking -# -ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -endif -LINK_LIBRARY = $(foreach m,$(OBJECTS_LIST),$(AR) -r $@ $(m);) echo > nul - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/gcc-dev.mk b/nx-X11/extras/freetype2/builds/compiler/gcc-dev.mk deleted file mode 100644 index 15879f85b..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/gcc-dev.mk +++ /dev/null @@ -1,93 +0,0 @@ -# -# FreeType 2 gcc-specific with NO OPTIMIZATIONS + DEBUGGING -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := gcc -COMPILER_SEP := / - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -g -O0 \ - -fno-strict-aliasing \ - -Wall \ - -W \ - -Wundef \ - -Wshadow \ - -Wpointer-arith \ - -Wwrite-strings \ - -Wstrict-prototypes \ - -Wredundant-decls \ - -Wnested-externs \ - -Wno-long-long -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := -ansi -pedantic - - -# Library linking -# -ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -endif -LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/gcc.mk b/nx-X11/extras/freetype2/builds/compiler/gcc.mk deleted file mode 100644 index d51f642d0..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/gcc.mk +++ /dev/null @@ -1,81 +0,0 @@ -# -# FreeType 2 gcc-specific definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := gcc -COMPILER_SEP := / - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -g -O6 -Wall -fno-strict-aliasing -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := -ansi -pedantic - - -# Library linking -# -ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -endif -LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/intelc.mk b/nx-X11/extras/freetype2/builds/compiler/intelc.mk deleted file mode 100644 index 954dcf64c..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/intelc.mk +++ /dev/null @@ -1,86 +0,0 @@ -# -# FreeType 2 Intel C/C++ definitions (VC++ compatibility mode) -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# compiler command line name -# -CC := icl -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := /I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := /D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := /Fl - - -# Target flag. -# -T := /Fo - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -# Note that the Intel C/C++ compiler version 4.5 complains about -# the use of FT_FIELD_OFFSET with "value must be arithmetic type"! -# This really looks like a bug in the compiler because the macro -# _does_ compute an arithmetic value, so we disable this warning -# with "/Qwd32". -# -ifndef CFLAGS - CFLAGS := /nologo /c /Ox /G5 /W3 /Qwd32 -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := /Qansi /Za - -# Library linking -# -#CLEAN_LIBRARY = -LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/unix-lcc.mk b/nx-X11/extras/freetype2/builds/compiler/unix-lcc.mk deleted file mode 100644 index cf4ef5a00..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/unix-lcc.mk +++ /dev/null @@ -1,87 +0,0 @@ -# -# FreeType 2 Unix LCC specific definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Command line name -# -CC := lcc -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := o -SO := o - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := a -SA := a - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -g -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -# LCC is pure ANSI anyway! -# -# the "-A" flag simply increments verbosity about non ANSI code -# -ANSIFLAGS := -A - - -# library linking -# -ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(PROJECT_LIBRARY) -endif -LINK_LIBRARY = $(AR) -r $@ $(OBJECTS_LIST) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/visualage.mk b/nx-X11/extras/freetype2/builds/compiler/visualage.mk deleted file mode 100644 index 21ef12b27..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/visualage.mk +++ /dev/null @@ -1,78 +0,0 @@ -# -# FreeType 2 Visual Age C++ specific definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# command line compiler name -# -CC := icc -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := /I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := /D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := /Fl - - -# Target flag. -# -T := /Fo - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -ifndef CFLAGS - CFLAGS := /Q- /Gd+ /O2 /G5 /W3 /C -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSI_FLAGS := /Sa - - -# Library linking -# -#CLEAN_LIBRARY := -LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/visualc.mk b/nx-X11/extras/freetype2/builds/compiler/visualc.mk deleted file mode 100644 index 92d71a974..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/visualc.mk +++ /dev/null @@ -1,81 +0,0 @@ -# -# FreeType 2 Visual C++ definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# compiler command line name -# -CC := cl -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := /I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := /D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := /Fl - - -# Target flag. -# -T := /Fo - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := /nologo /c /Ox /G5 /W3 /WX -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := /Za - - -# Library linking -# -#CLEAN_LIBRARY = -LINK_LIBRARY = lib /nologo /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/watcom.mk b/nx-X11/extras/freetype2/builds/compiler/watcom.mk deleted file mode 100644 index 12394be4b..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/watcom.mk +++ /dev/null @@ -1,85 +0,0 @@ -# -# FreeType 2 Watcom-specific definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Compiler command line name -# -CC := wcc386 -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I= - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -FO= - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -zq -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := -za - - -# Library linking -# -ifndef CLEAN_LIBRARY - CLEAN_LIBRARY = $(DELETE) $(subst /,$(SEP),$(PROJECT_LIBRARY)) -endif -LINK_LIBRARY = $(subst /,$(COMPILER_SEP), \ - wlib -q -n $@; \ - $(foreach m, $(OBJECTS_LIST), wlib -q $@ +$(m);) \ - echo > nul) - -# EOF diff --git a/nx-X11/extras/freetype2/builds/compiler/win-lcc.mk b/nx-X11/extras/freetype2/builds/compiler/win-lcc.mk deleted file mode 100644 index c500d82cf..000000000 --- a/nx-X11/extras/freetype2/builds/compiler/win-lcc.mk +++ /dev/null @@ -1,83 +0,0 @@ -# -# FreeType 2 Win32-LCC specific definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Command line name -# -CC := lcc -COMPILER_SEP := $(SEP) - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := obj -SO := obj - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := lib -SA := lib - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -Fl - - -# Target flag. -# -T := -Fo - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -ifndef CFLAGS - CFLAGS := -c -g2 -O -endif - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -# LCC is pure ANSI anyway! -# -ANSIFLAGS := - - -# library linking -# -#CLEAN_LIBRARY := -LINK_LIBRARY = lcclib /out:$(subst /,$(COMPILER_SEP),$@ $(OBJECTS_LIST)) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/detect.mk b/nx-X11/extras/freetype2/builds/detect.mk deleted file mode 100644 index eeb1300bc..000000000 --- a/nx-X11/extras/freetype2/builds/detect.mk +++ /dev/null @@ -1,159 +0,0 @@ -# -# FreeType 2 host platform detection rules -# - - -# Copyright 1996-2000, 2001, 2002, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# This sub-Makefile is in charge of detecting the current platform. It sets -# the following variables: -# -# BUILD_DIR The configuration and system-specific directory. Usually -# `freetype/builds/$(PLATFORM)' but can be different for -# custom builds of the library. -# -# The following variables must be defined in system specific `detect.mk' -# files: -# -# PLATFORM The detected platform. This will default to `ansi' if -# auto-detection fails. -# CONFIG_FILE The configuration sub-makefile to use. This usually depends -# on the compiler defined in the `CC' environment variable. -# DELETE The shell command used to remove a given file. -# COPY The shell command used to copy one file. -# SEP The platform-specific directory separator. -# COMPILER_SEP The separator used in arguments of the compilation tools. -# CC The compiler to use. -# -# You need to set the following variable(s) before calling it: -# -# TOP_DIR The top-most directory in the FreeType library source -# hierarchy. If not defined, it will default to `.'. - -# If TOP_DIR is not defined, default it to `.' -# -ifndef TOP_DIR - TOP_DIR := . -endif - -# Set auto-detection default to `ansi' resp. UNIX-like operating systems. -# -PLATFORM := ansi -DELETE := $(RM) -COPY := cp -SEP := / - -BUILD_CONFIG := $(TOP_DIR)/builds - -# These two assignments must be delayed. -BUILD_DIR = $(BUILD_CONFIG)/$(PLATFORM) -CONFIG_RULES = $(BUILD_DIR)/$(CONFIG_FILE) - -# We define the BACKSLASH variable to hold a single back-slash character. -# This is needed because a line like -# -# SEP := \ -# -# does not work with GNU Make (the backslash is interpreted as a line -# continuation). While a line like -# -# SEP := \\ -# -# really defines $(SEP) as `\' on Unix, and `\\' on Dos and Windows! -# -BACKSLASH := $(strip \ ) - -# Find all auto-detectable platforms. -# -PLATFORMS := $(notdir $(subst /detect.mk,,$(wildcard $(BUILD_CONFIG)/*/detect.mk))) -.PHONY: $(PLATFORMS) ansi - -# Filter out platform specified as setup target. -# -PLATFORM := $(firstword $(filter $(MAKECMDGOALS),$(PLATFORMS))) - -# If no setup target platform was specified, enable auto-detection/ -# default platform. -# -ifeq ($(PLATFORM),) - PLATFORM := ansi -endif - -# If the user has explicitly asked for `ansi' on the command line, -# disable auto-detection. -# -ifeq ($(findstring ansi,$(MAKECMDGOALS)),) - # Now, include all detection rule files found in the `builds/<system>' - # directories. Note that the calling order of the various `detect.mk' - # files isn't predictable. - # - include $(wildcard $(BUILD_CONFIG)/*/detect.mk) -endif - -# In case no detection rule file was successful, use the default. -# -ifndef CONFIG_FILE - CONFIG_FILE := ansi.mk - setup: std_setup - .PHONY: setup -endif - -# The following targets are equivalent, with the exception that they use -# a slightly different syntax for the `echo' command. -# -# std_setup: defined for most (i.e. Unix-like) platforms -# dos_setup: defined for Dos-ish platforms like Dos, Windows & OS/2 -# -.PHONY: std_setup dos_setup - -std_setup: - @echo "" - @echo "$(PROJECT_TITLE) build system -- automatic system detection" - @echo "" - @echo "The following settings are used:" - @echo "" - @echo " platform $(PLATFORM)" - @echo " compiler $(CC)" - @echo " configuration directory $(BUILD_DIR)" - @echo " configuration rules $(CONFIG_RULES)" - @echo "" - @echo "If this does not correspond to your system or settings please remove the file" - @echo "\`$(CONFIG_MK)' from this directory then read the INSTALL file for help." - @echo "" - @echo "Otherwise, simply type \`$(MAKE)' again to build the library," - @echo "or \`$(MAKE) refdoc' to build the API reference (the latter needs python)." - @echo "" - @$(COPY) $(CONFIG_RULES) $(CONFIG_MK) - - -# Special case for Dos, Windows, OS/2, where echo "" doesn't work correctly! -# -dos_setup: - @type builds\newline - @echo $(PROJECT_TITLE) build system -- automatic system detection - @type builds\newline - @echo The following settings are used: - @type builds\newline - @echo platform���������������������$(PLATFORM) - @echo compiler���������������������$(CC) - @echo configuration directory������$(subst /,\,$(BUILD_DIR)) - @echo configuration rules����������$(subst /,\,$(CONFIG_RULES)) - @type builds\newline - @echo If this does not correspond to your system or settings please remove the file - @echo '$(CONFIG_MK)' from this directory then read the INSTALL file for help. - @type builds\newline - @echo Otherwise, simply type 'make' again to build the library. - @echo or 'make refdoc' to build the API reference (the latter needs python). - @type builds\newline - @$(COPY) $(subst /,\,$(CONFIG_RULES) $(CONFIG_MK)) > nul - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/dos/detect.mk b/nx-X11/extras/freetype2/builds/dos/detect.mk deleted file mode 100644 index b80686ce5..000000000 --- a/nx-X11/extras/freetype2/builds/dos/detect.mk +++ /dev/null @@ -1,117 +0,0 @@ -# -# FreeType 2 configuration file to detect a DOS host platform. -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -.PHONY: setup - - -ifeq ($(PLATFORM),ansi) - - # Test for DJGPP by checking the DJGPP environment variable, which must be - # set in order to use the system (ie. it will always be present when the - # `make' utility is run). - # - # We test for the COMSPEC environment variable, then run the `ver' - # command-line program to see if its output contains the word `Dos' or - # `DOS'. - # - # If this is true, we are running a Dos-ish platform (or an emulation). - # - ifdef DJGPP - PLATFORM := dos - else - ifdef COMSPEC - is_dos := $(findstring DOS,$(subst Dos,DOS,$(shell ver))) - - # We try to recognize a Dos session under OS/2. The `ver' command - # returns `Operating System/2 ...' there, so `is_dos' should be empty. - # - # To recognize a Dos session under OS/2, we check COMSPEC for the - # substring `MDOS\COMMAND' - # - ifeq ($(is_dos),) - is_dos := $(findstring MDOS\COMMAND,$(COMSPEC)) - endif - endif # test COMSPEC - - ifneq ($(is_dos),) - - PLATFORM := dos - - endif # test Dos - endif # test DJGPP -endif # test PLATFORM ansi - -ifeq ($(PLATFORM),dos) - - # Use DJGPP (i.e. gcc) by default. - # - CONFIG_FILE := dos-gcc.mk - ifndef CC - CC := gcc - endif - - # additionally, we provide hooks for various other compilers - # - ifneq ($(findstring emx,$(MAKECMDGOALS)),) # EMX gcc - CONFIG_FILE := dos-emx.mk - CC := gcc - emx: setup - .PHONY: emx - endif - - ifneq ($(findstring turboc,$(MAKECMDGOALS)),) # Turbo C - CONFIG_FILE := dos-tcc.mk - CC := tcc - turboc: setup - .PHONY: turboc - endif - - ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ - CONFIG_FILE := dos-wat.mk - CC := wcc386 - watcom: setup - .PHONY: watcom - endif - - ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C/C++ 32-bit - CONFIG_FILE := dos-bcc.mk - CC := bcc32 - borlandc: setup - .PHONY: borlandc - endif - - ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),) # Borland C/C++ 16-bit - CONFIG_FILE := dos-bcc.mk - CC := bcc - borlandc16: setup - .PHONY: borlandc16 - endif - - ifneq ($(findstring bash,$(SHELL)),) # check for bash - SEP := / - DELETE := rm - COPY := cp - setup: std_setup - else - SEP := $(BACKSLASH) - DELETE := del - COPY := copy - setup: dos_setup - endif - -endif # test PLATFORM dos - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/dos/dos-def.mk b/nx-X11/extras/freetype2/builds/dos/dos-def.mk deleted file mode 100644 index d6bc72e7b..000000000 --- a/nx-X11/extras/freetype2/builds/dos/dos-def.mk +++ /dev/null @@ -1,54 +0,0 @@ -# -# FreeType 2 DOS specific definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DELETE := del -SEP := $(strip \ ) -BUILD_DIR := $(TOP_DIR)/builds/dos -PLATFORM := dos - - -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP_DIR=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f %TOP_DIR%/Makefile setup [options] -# make -f %TOP_DIR%/Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(TOP_DIR)/objs -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := $(PROJECT) - - -# The NO_OUTPUT macro is used to ignore the output of commands. -# -NO_OUTPUT = > nul - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/dos/dos-emx.mk b/nx-X11/extras/freetype2/builds/dos/dos-emx.mk deleted file mode 100644 index 6ea8f6d87..000000000 --- a/nx-X11/extras/freetype2/builds/dos/dos-emx.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# FreeType 2 configuration rules for the EMX gcc compiler -# - - -# Copyright 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/dos/dos-def.mk -include $(TOP_DIR)/builds/compiler/emx.mk -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/dos/dos-gcc.mk b/nx-X11/extras/freetype2/builds/dos/dos-gcc.mk deleted file mode 100644 index e14255c1f..000000000 --- a/nx-X11/extras/freetype2/builds/dos/dos-gcc.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# FreeType 2 configuration rules for the DJGPP compiler -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/dos/dos-def.mk -include $(TOP_DIR)/builds/compiler/gcc.mk -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/dos/dos-wat.mk b/nx-X11/extras/freetype2/builds/dos/dos-wat.mk deleted file mode 100644 index 0c39e4979..000000000 --- a/nx-X11/extras/freetype2/builds/dos/dos-wat.mk +++ /dev/null @@ -1,17 +0,0 @@ -# -# FreeType 2 configuration rules for the Watcom C/C++ compiler -# - - -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -include $(TOP_DIR)/builds/dos/dos-def.mk -include $(TOP_DIR)/builds/compiler/watcom.mk -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/freetype.mk b/nx-X11/extras/freetype2/builds/freetype.mk deleted file mode 100644 index 00325d6fc..000000000 --- a/nx-X11/extras/freetype2/builds/freetype.mk +++ /dev/null @@ -1,312 +0,0 @@ -# -# FreeType 2 library sub-Makefile -# - - -# Copyright 1996-2000, 2001, 2002, 2003, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY -# OTHER MAKEFILES. - - -# The following variables (set by other Makefile components, in the -# environment, or on the command line) are used: -# -# BUILD_DIR The architecture dependent directory, -# e.g. `$(TOP_DIR)/builds/unix'. -# -# OBJ_DIR The directory in which object files are created. -# -# LIB_DIR The directory in which the library is created. -# -# DOC_DIR The directory in which the API reference is created. -# -# INCLUDES A list of directories to be included additionally. -# Usually empty. -# -# CFLAGS Compilation flags. This overrides the default settings -# in the platform-specific configuration files. -# -# FTSYS_SRC If set, its value is used as the name of a replacement -# file for `src/base/ftsystem.c'. -# -# FTDEBUG_SRC If set, its value is used as the name of a replacement -# file for `src/base/ftdebug.c'. [For a normal build, this -# file does nothing.] -# -# FT_MODULE_LIST The file which contains the list of modules for the -# current build. Usually, this is automatically created by -# `modules.mk'. -# -# BASE_OBJ_S -# BASE_OBJ_M A list of base objects (for single object and multiple -# object builds, respectively). Set up in -# `src/base/rules.mk'. -# -# BASE_EXT_OBJ A list of base extension objects. Set up in -# `src/base/rules.mk'. -# -# DRV_OBJ_S -# DRV_OBJ_M A list of driver objects (for single object and multiple -# object builds, respectively). Set up cumulatively in -# `src/<driver>/rules.mk'. -# -# CLEAN -# DISTCLEAN The sub-makefiles can append additional stuff to these two -# variables which is to be removed for the `clean' resp. -# `distclean' target. -# -# TOP_DIR, SEP, -# COMPILER_SEP, -# LIBRARY, CC, -# A, I, O, T Check `config.mk' for details. - - -# The targets `objects' and `library' are defined at the end of this -# Makefile after all other rules have been included. -# -.PHONY: single multi objects library refdoc - -# default target -- build single objects and library -# -single: objects library - -# `multi' target -- build multiple objects and library -# -multi: objects library - - -# The FreeType source directory, usually `./src'. -# -SRC_DIR := $(TOP_DIR)/src - -# The directory where the base layer components are placed, usually -# `./src/base'. -# -BASE_DIR := $(SRC_DIR)/base - -# Other derived directories. -# -PUBLIC_DIR := $(TOP_DIR)/include/freetype -INTERNAL_DIR := $(PUBLIC_DIR)/internal -SERVICES_DIR := $(INTERNAL_DIR)/services -CONFIG_DIR := $(PUBLIC_DIR)/config -CACHE_DIR := $(PUBLIC_DIR)/cache - -# The documentation directory. -# -ifndef DOC_DIR - DOC_DIR := $(TOP_DIR)/docs/reference -endif - -# The final name of the library file. -# -PROJECT_LIBRARY := $(LIB_DIR)/$(LIBRARY).$A - - -# include paths -# -# IMPORTANT NOTE: The architecture-dependent directory must ALWAYS be placed -# in front of the include list. Porters are then able to -# put their own version of some of the FreeType components -# in the `freetype/builds/<system>' directory, as these -# files will override the default sources. -# -INCLUDES := $(subst /,$(COMPILER_SEP),$(OBJ_DIR) $(BUILD_DIR) \ - $(TOP_DIR)/include) - -INCLUDE_FLAGS = $(INCLUDES:%=$I%) - - -# C flags used for the compilation of an object file. This must include at -# least the paths for the `base' and `builds/<system>' directories; -# debug/optimization/warning flags + ansi compliance if needed. -# -# $(INCLUDE_FLAGS) should come before $(CFLAGS) to avoid problems with -# old FreeType versions. -# -FT_CFLAGS = $(INCLUDE_FLAGS) $(CFLAGS) -FT_CC = $(CC) $(FT_CFLAGS) -FT_COMPILE = $(CC) $(ANSIFLAGS) $(FT_CFLAGS) - - -# Include the `modules' rules file. -# -include $(TOP_DIR)/builds/modules.mk - - -# Initialize the list of objects. -# -OBJECTS_LIST := - - -# Define $(PUBLIC_H) as the list of all public header files located in -# `$(TOP_DIR)/include/freetype'. $(BASE_H), $(CACHE_H), and $(CONFIG_H) are -# defined similarly. -# -# This is used to simplify the dependency rules -- if one of these files -# changes, the whole library is recompiled. -# -PUBLIC_H := $(wildcard $(PUBLIC_DIR)/*.h) -BASE_H := $(wildcard $(INTERNAL_DIR)/*.h) \ - $(wildcard $(SERVICES_DIR)/*.h) -CONFIG_H := $(wildcard $(CONFIG_DIR)/*.h) \ - $(wildcard $(BUILD_DIR)/freetype/config/*.h) -CACHE_H := $(wildcard $(CACHE_DIR)/*.h) -DEVEL_H := $(wildcard $(TOP_DIR)/devel/*.h) - -FREETYPE_H := $(PUBLIC_H) $(BASE_H) $(CONFIG_H) $(CACHE_H) $(DEVEL_H) - - -# ftsystem component -# -ifndef FTSYS_SRC - FTSYS_SRC = $(BASE_DIR)/ftsystem.c -endif - -FTSYS_OBJ = $(OBJ_DIR)/ftsystem.$O - -OBJECTS_LIST += $(FTSYS_OBJ) - -$(FTSYS_OBJ): $(FTSYS_SRC) $(FREETYPE_H) - $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# ftdebug component -# -ifndef FTDEBUG_SRC - FTDEBUG_SRC = $(BASE_DIR)/ftdebug.c -endif - -FTDEBUG_OBJ = $(OBJ_DIR)/ftdebug.$O - -OBJECTS_LIST += $(FTDEBUG_OBJ) - -$(FTDEBUG_OBJ): $(FTDEBUG_SRC) $(FREETYPE_H) - $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# Include all rule files from FreeType components. -# -include $(wildcard $(SRC_DIR)/*/rules.mk) - - -# ftinit component -# -# The C source `ftinit.c' contains the FreeType initialization routines. -# It is able to automatically register one or more drivers when the API -# function FT_Init_FreeType() is called. -# -# The set of initial drivers is determined by the driver Makefiles -# includes above. Each driver Makefile updates the FTINIT_xxx lists -# which contain additional include paths and macros used to compile the -# single `ftinit.c' source. -# -FTINIT_SRC := $(BASE_DIR)/ftinit.c -FTINIT_OBJ := $(OBJ_DIR)/ftinit.$O - -OBJECTS_LIST += $(FTINIT_OBJ) - -$(FTINIT_OBJ): $(FTINIT_SRC) $(FREETYPE_H) $(FT_MODULE_LIST) - $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# All FreeType library objects -# -# By default, we include the base layer extensions. These could be -# omitted on builds which do not want them. -# -OBJ_M = $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) -OBJ_S = $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) - - -# The target `multi' on the Make command line indicates that we want to -# compile each source file independently. -# -# Otherwise, each module/driver is compiled in a single object file through -# source file inclusion (see `src/base/ftbase.c' or -# `src/truetype/truetype.c' for examples). -# -BASE_OBJECTS := $(OBJECTS_LIST) - -ifneq ($(findstring multi,$(MAKECMDGOALS)),) - OBJECTS_LIST += $(OBJ_M) -else - OBJECTS_LIST += $(OBJ_S) -endif - -objects: $(OBJECTS_LIST) - -library: $(PROJECT_LIBRARY) - -.c.$O: - $(FT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -refdoc: - python $(SRC_DIR)/tools/docmaker/docmaker.py \ - --prefix=ft2 \ - --title=FreeType-2.1.9 \ - --output=$(DOC_DIR) \ - $(PUBLIC_DIR)/*.h \ - $(PUBLIC_DIR)/config/*.h \ - $(PUBLIC_DIR)/cache/*.h - - -.PHONY: clean_project_std distclean_project_std - -# Standard cleaning and distclean rules. These are not accepted -# on all systems though. -# -clean_project_std: - -$(DELETE) $(BASE_OBJECTS) $(OBJ_M) $(OBJ_S) $(CLEAN) - -distclean_project_std: clean_project_std - -$(DELETE) $(PROJECT_LIBRARY) - -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) - - -.PHONY: clean_project_dos distclean_project_dos - -# The Dos command shell does not support very long list of arguments, so -# we are stuck with wildcards. -# -# Don't break the command lines with \; this prevents the "del" command from -# working correctly on Win9x. -# -clean_project_dos: - -$(DELETE) $(subst /,\,$(OBJ)/*.$O $(CLEAN) $(NO_OUTPUT)) - -distclean_project_dos: clean_project_dos - -$(DELETE) $(subst /,\,$(PROJECT_LIBRARY) $(DISTCLEAN) $(NO_OUTPUT)) - - -.PHONY: remove_config_mk - -# Remove configuration file (used for distclean). -# -remove_config_mk: - -$(DELETE) $(subst /,$(SEP),$(CONFIG_MK) $(NO_OUTPUT)) - - -.PHONY: clean distclean - -# The `config.mk' file must define `clean_freetype' and -# `distclean_freetype'. Implementations may use to relay these to either -# the `std' or `dos' versions from above, or simply provide their own -# implementation. -# -clean: clean_project -distclean: distclean_project remove_config_mk - -$(DELETE) $(subst /,$(SEP),$(DOC_DIR)/*.html $(NO_OUTPUT)) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/link_dos.mk b/nx-X11/extras/freetype2/builds/link_dos.mk deleted file mode 100644 index c37ac7e52..000000000 --- a/nx-X11/extras/freetype2/builds/link_dos.mk +++ /dev/null @@ -1,42 +0,0 @@ -# -# Link instructions for Dos-like systems (Dos, Win32, OS/2) -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifdef BUILD_PROJECT - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP_DIR)/builds/$(PROJECT).mk - - # The cleanup targets. - # - clean_project: clean_project_dos - distclean_project: distclean_project_dos - - # This final rule is used to link all object files into a single library. - # this is compiler-specific - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - ifdef CLEAN_LIBRARY - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - endif - $(LINK_LIBRARY) - -endif - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/link_std.mk b/nx-X11/extras/freetype2/builds/link_std.mk deleted file mode 100644 index 0bd2163bb..000000000 --- a/nx-X11/extras/freetype2/builds/link_std.mk +++ /dev/null @@ -1,42 +0,0 @@ -# -# Link instructions for standard systems -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifdef BUILD_PROJECT - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP_DIR)/builds/$(PROJECT).mk - - # The cleanup targets. - # - clean_project: clean_project_std - distclean_project: distclean_project_std - - # This final rule is used to link all object files into a single library. - # this is compiler-specific - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) - ifdef CLEAN_LIBRARY - -$(CLEAN_LIBRARY) $(NO_OUTPUT) - endif - $(LINK_LIBRARY) - -endif - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/mac/README b/nx-X11/extras/freetype2/builds/mac/README deleted file mode 100644 index f933c56cc..000000000 --- a/nx-X11/extras/freetype2/builds/mac/README +++ /dev/null @@ -1,14 +0,0 @@ -This folder contains - - . a Makefile for Apple MPW build environment (currently PPC only) - - . supporting code and CodeWarrior Pro 7 project files to build the - FreeType library. - -Notes: -The library will be built as a static lib in the obj/ folder. - -Current maintainer: Leonard Rosenthol, <leonardr@lazerware.com> -Originally prepared by Just van Rossum, <just@letterror.com> - -This directory is now actively maintained as part of the FreeType Project. diff --git a/nx-X11/extras/freetype2/builds/mac/freetype.make b/nx-X11/extras/freetype2/builds/mac/freetype.make deleted file mode 100644 index 085c2600f..000000000 --- a/nx-X11/extras/freetype2/builds/mac/freetype.make +++ /dev/null @@ -1,109 +0,0 @@ -# Makefile for Apple MPW build environment (currently PPC only) - -MAKEFILE = Makefile -�MondoBuild� = #{MAKEFILE} # Make blank to avoid rebuilds when makefile is modified -Sym�PPC = #-sym on -ObjDir�PPC = :obj: - -CFLAGS = -i :include -i :src -includes unix {Sym�PPC} - -OBJS = � - "{ObjDir�PPC}ftsystem.c.x" � - "{ObjDir�PPC}ftdebug.c.x" � - "{ObjDir�PPC}ftinit.c.x" � - "{ObjDir�PPC}ftbase.c.x" � - "{ObjDir�PPC}ftglyph.c.x" � - "{ObjDir�PPC}ftmm.c.x" � - "{ObjDir�PPC}ftbbox.c.x" � - "{ObjDir�PPC}autohint.c.x" � - "{ObjDir�PPC}ftcache.c.x" � - "{ObjDir�PPC}cff.c.x" � - "{ObjDir�PPC}type1cid.c.x" � - "{ObjDir�PPC}pcf.c.x" � - "{ObjDir�PPC}psaux.c.x" � - "{ObjDir�PPC}psmodule.c.x" � - "{ObjDir�PPC}raster.c.x" � - "{ObjDir�PPC}sfnt.c.x" � - "{ObjDir�PPC}smooth.c.x" � - "{ObjDir�PPC}truetype.c.x" � - "{ObjDir�PPC}type1.c.x" � - "{ObjDir�PPC}winfnt.c.x" � - "{ObjDir�PPC}ftmac.c.x" � - -# Main target - build a library -freetype �� {�MondoBuild�} directories freetype.o - -# This is used to build the library -freetype.o �� {�MondoBuild�} {OBJS} - PPCLink � - -o :lib:{Targ} {Sym�PPC} � - {OBJS} -c '????' -xm l - -# This is used to create the directories needed for build -directories � - if !`Exists obj` ; NewFolder obj ; end - if !`Exists lib` ; NewFolder lib ; end - - -"{ObjDir�PPC}ftsystem.c.x" � {�MondoBuild�} ":src:base:ftsystem.c" - {PPCC} ":src:base:ftsystem.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}ftdebug.c.x" � {�MondoBuild�} ":src:base:ftdebug.c" - {PPCC} ":src:base:ftdebug.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}ftinit.c.x" � {�MondoBuild�} ":src:base:ftinit.c" - {PPCC} ":src:base:ftinit.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}ftbase.c.x" � {�MondoBuild�} ":src:base:ftbase.c" - {PPCC} ":src:base:ftbase.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}ftglyph.c.x" � {�MondoBuild�} ":src:base:ftglyph.c" - {PPCC} ":src:base:ftglyph.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}ftmm.c.x" � {�MondoBuild�} ":src:base:ftmm.c" - {PPCC} ":src:base:ftmm.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}ftbbox.c.x" � {�MondoBuild�} ":src:base:ftbbox.c" - {PPCC} ":src:base:ftbbox.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}autohint.c.x" � {�MondoBuild�} ":src:autohint:autohint.c" - {PPCC} ":src:autohint:autohint.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}ftcache.c.x" � {�MondoBuild�} ":src:cache:ftcache.c" - {PPCC} ":src:cache:ftcache.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}cff.c.x" � {�MondoBuild�} ":src:cff:cff.c" - {PPCC} ":src:cff:cff.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}type1cid.c.x" � {�MondoBuild�} ":src:cid:type1cid.c" - {PPCC} ":src:cid:type1cid.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}pcf.c.x" � {�MondoBuild�} ":src:pcf:pcf.c" - {PPCC} ":src:pcf:pcf.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}psaux.c.x" � {�MondoBuild�} ":src:psaux:psaux.c" - {PPCC} ":src:psaux:psaux.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}psmodule.c.x" � {�MondoBuild�} ":src:psnames:psmodule.c" - {PPCC} ":src:psnames:psmodule.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}raster.c.x" � {�MondoBuild�} ":src:raster:raster.c" - {PPCC} ":src:raster:raster.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}sfnt.c.x" � {�MondoBuild�} ":src:sfnt:sfnt.c" - {PPCC} ":src:sfnt:sfnt.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}smooth.c.x" � {�MondoBuild�} ":src:smooth:smooth.c" - {PPCC} ":src:smooth:smooth.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}truetype.c.x" � {�MondoBuild�} ":src:truetype:truetype.c" - {PPCC} ":src:truetype:truetype.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}type1.c.x" � {�MondoBuild�} ":src:type1:type1.c" - {PPCC} ":src:type1:type1.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}winfnt.c.x" � {�MondoBuild�} ":src:winfonts:winfnt.c" - {PPCC} ":src:winfonts:winfnt.c" -o {Targ} {CFLAGS} - -"{ObjDir�PPC}ftmac.c.x" � {�MondoBuild�} ":src:base:ftmac.c" - {PPCC} ":src:base:ftmac.c" -o {Targ} {CFLAGS} \ No newline at end of file diff --git a/nx-X11/extras/freetype2/builds/mac/ftlib.prj b/nx-X11/extras/freetype2/builds/mac/ftlib.prj deleted file mode 100644 index df8bd2b91..000000000 Binary files a/nx-X11/extras/freetype2/builds/mac/ftlib.prj and /dev/null differ diff --git a/nx-X11/extras/freetype2/builds/modules.mk b/nx-X11/extras/freetype2/builds/modules.mk deleted file mode 100644 index 5102dc060..000000000 --- a/nx-X11/extras/freetype2/builds/modules.mk +++ /dev/null @@ -1,77 +0,0 @@ -# -# FreeType 2 modules sub-Makefile -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# DO NOT INVOKE THIS MAKEFILE DIRECTLY! IT IS MEANT TO BE INCLUDED BY -# OTHER MAKEFILES. - - -# This file is in charge of handling the generation of the modules list -# file. - -.PHONY: make_module_list clean_module_list - -# MODULE_LIST, as its name suggests, indicates where the modules list -# resides. For now, it is in `include/freetype/config/ftmodule.h'. -# -ifndef MODULE_LIST - MODULE_LIST := $(TOP_DIR)/include/$(PROJECT)/config/ftmodule.h -endif - -# To build the modules list, we invoke the `make_module_list' target. -# -# This rule is commented out by default since FreeType comes already with -# an ftmodule.h file. -# -#$(MODULE_LIST): make_module_list - - -ifneq ($(findstring $(PLATFORM),dos win32 win16 os2),) - OPEN_MODULE := @echo$(space) - CLOSE_MODULE := >> $(subst /,\,$(MODULE_LIST)) - REMOVE_MODULE := @-$(DELETE) $(subst /,\,$(MODULE_LIST)) -else - OPEN_MODULE := @echo " - CLOSE_MODULE := " >> $(MODULE_LIST) - REMOVE_MODULE := @-$(DELETE) $(MODULE_LIST) -endif - - -# Before the modules list file can be generated, we must remove the file in -# order to `clean' the list. -# -clean_module_list: - $(REMOVE_MODULE) - @-echo Regenerating modules list in $(MODULE_LIST)... - -make_module_list: clean_module_list - @echo done. - -# $(OPEN_DRIVER) & $(CLOSE_DRIVER) are used to specify a given font driver -# in the `module.mk' rules file. -# -OPEN_DRIVER := $(OPEN_MODULE)FT_USE_MODULE( -CLOSE_DRIVER := )$(CLOSE_MODULE) - -ECHO_DRIVER := @echo "* module:$(space) -ECHO_DRIVER_DESC := ( -ECHO_DRIVER_DONE := )" - -# Each `module.mk' in the `src' sub-dirs is used to add one rule to the -# target `make_module_list'. -# -include $(wildcard $(TOP_DIR)/src/*/module.mk) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/newline b/nx-X11/extras/freetype2/builds/newline deleted file mode 100644 index 8b1378917..000000000 --- a/nx-X11/extras/freetype2/builds/newline +++ /dev/null @@ -1 +0,0 @@ - diff --git a/nx-X11/extras/freetype2/builds/os2/detect.mk b/nx-X11/extras/freetype2/builds/os2/detect.mk deleted file mode 100644 index 97e4bc972..000000000 --- a/nx-X11/extras/freetype2/builds/os2/detect.mk +++ /dev/null @@ -1,72 +0,0 @@ -# -# FreeType 2 configuration file to detect an OS/2 host platform. -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -.PHONY: setup - - -ifeq ($(PLATFORM),ansi) - - ifdef OS2_SHELL - - PLATFORM := os2 - - endif # test OS2_SHELL -endif - -ifeq ($(PLATFORM),os2) - - COPY := copy - DELETE := del - SEP := $(BACKSLASH) - - # gcc-emx by default - CONFIG_FILE := os2-gcc.mk - - # additionally, we provide hooks for various other compilers - # - ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ - CONFIG_FILE := os2-icc.mk - CC := icc - visualage: setup - .PHONY: visualage - endif - - ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ - CONFIG_FILE := os2-wat.mk - CC := wcc386 - watcom: setup - .PHONY: watcom - endif - - ifneq ($(findstring borlandc,$(MAKECMDGOALS)),) # Borland C++ 32-bit - CONFIG_FILE := os2-bcc.mk - CC := bcc32 - borlandc: setup - .PHONY: borlandc - endif - - ifneq ($(findstring devel,$(MAKECMDGOALS)),) # development target - CONFIG_FILE := os2-dev.mk - CC := gcc - devel: setup - .PHONY: devel - endif - - setup: dos_setup - -endif # test PLATFORM os2 - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/os2/os2-def.mk b/nx-X11/extras/freetype2/builds/os2/os2-def.mk deleted file mode 100644 index 26bf6a913..000000000 --- a/nx-X11/extras/freetype2/builds/os2/os2-def.mk +++ /dev/null @@ -1,54 +0,0 @@ -# -# FreeType 2 OS/2 specific definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DELETE := del -SEP := $(strip \ ) -BUILD_DIR := $(TOP_DIR)/builds/os2 -PLATFORM := os2 - - -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP_DIR=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f %TOP_DIR%/Makefile setup [options] -# make -f %TOP_DIR%/Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(TOP_DIR)/objs -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := $(PROJECT) - - -# The NO_OUTPUT macro is used to ignore the output of commands. -# -NO_OUTPUT = 2> nul - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/os2/os2-dev.mk b/nx-X11/extras/freetype2/builds/os2/os2-dev.mk deleted file mode 100644 index 96890fa0b..000000000 --- a/nx-X11/extras/freetype2/builds/os2/os2-dev.mk +++ /dev/null @@ -1,31 +0,0 @@ -# -# FreeType 2 configuration rules for OS/2 + GCC -# -# Development version without optimizations. -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifndef TOP_DIR - TOP_DIR := . -endif - -include $(TOP_DIR)/builds/os2/os2-def.mk -BUILD_DIR := $(TOP_DIR)/devel - -include $(TOP_DIR)/builds/compiler/gcc-dev.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/os2/os2-gcc.mk b/nx-X11/extras/freetype2/builds/os2/os2-gcc.mk deleted file mode 100644 index 446073e4f..000000000 --- a/nx-X11/extras/freetype2/builds/os2/os2-gcc.mk +++ /dev/null @@ -1,26 +0,0 @@ -# -# FreeType 2 configuration rules for the OS/2 + gcc -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# include OS/2-specific definitions -include $(TOP_DIR)/builds/os2/os2-def.mk - -# include gcc-specific definitions -include $(TOP_DIR)/builds/compiler/gcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/toplevel.mk b/nx-X11/extras/freetype2/builds/toplevel.mk deleted file mode 100644 index 6ee3818df..000000000 --- a/nx-X11/extras/freetype2/builds/toplevel.mk +++ /dev/null @@ -1,139 +0,0 @@ -# -# FreeType build system -- top-level sub-Makefile -# - - -# Copyright 1996-2000, 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# This file is designed for GNU Make, do not use it with another Make tool! -# -# It works as follows: -# -# - When invoked for the first time, this Makefile will include the rules -# found in `PROJECT/builds/detect.mk'. They are in charge of detecting -# the current platform. -# -# A summary of the detection will be displayed, and the file `config.mk' -# will be created in the current directory. -# -# - When invoked later, this Makefile will include the rules found in -# `config.mk'. This sub-Makefile will define some system-specific -# variables (like compiler, compilation flags, object suffix, etc.), then -# include the rules found in `PROJECT/builds/PROJECT.mk', used to build -# the library. -# -# See the comments in `builds/detect.mk' and `builds/PROJECT.mk' for more -# details on host platform detection and library builds. - - -.PHONY: all setup distclean modules - -# The `space' variable is used to avoid trailing spaces in defining the -# `T' variable later. -# -empty := -space := $(empty) $(empty) - - -ifndef CONFIG_MK - CONFIG_MK := config.mk -endif - -# If no configuration sub-makefile is present, or if `setup' is the target -# to be built, run the auto-detection rules to figure out which -# configuration rules file to use. -# -# Note that the configuration file is put in the current directory, which is -# not necessarily $(TOP_DIR). - -# If `config.mk' is not present, set `check_platform'. -# -ifeq ($(wildcard $(CONFIG_MK)),) - check_platform := 1 -endif - -# If `setup' is one of the targets requested, set `check_platform'. -# -ifneq ($(findstring setup,$(MAKECMDGOALS)),) - check_platform := 1 -endif - -# Include the automatic host platform detection rules when we need to -# check the platform. -# -ifdef check_platform - - # This is the first rule `make' sees. - # - all: setup - - ifdef USE_MODULES - # If the module list $(MODULE_LIST) file is not present, generate it. - # - #modules: make_module_list setup - endif - - include $(TOP_DIR)/builds/detect.mk - - ifdef USE_MODULES - include $(TOP_DIR)/builds/modules.mk - - ifeq ($(wildcard $(MODULE_LIST)),) - setup: make_module_list - endif - endif - - # This rule makes sense for Unix only to remove files created by a run - # of the configure script which hasn't been successful (so that no - # `config.mk' has been created). It uses the built-in $(RM) command of - # GNU make. Similarly, `nul' is created if e.g. `make setup win32' has - # been erroneously used. - # - # note: This test is duplicated in "builds/toplevel.mk". - # - is_unix := $(strip $(wildcard /sbin/init) \ - $(wildcard /usr/sbin/init) \ - $(wildcard /hurd/auth)) - ifneq ($(is_unix),) - - distclean: - $(RM) builds/unix/config.cache - $(RM) builds/unix/config.log - $(RM) builds/unix/config.status - $(RM) builds/unix/unix-def.mk - $(RM) builds/unix/unix-cc.mk - $(RM) builds/unix/freetype2.pc - $(RM) nul - - endif # test is_unix - - # IMPORTANT: - # - # `setup' must be defined by the host platform detection rules to create - # the `config.mk' file in the current directory. - -else - - # A configuration sub-Makefile is present -- simply run it. - # - all: single - - ifdef USE_MODULES - modules: make_module_list - endif - - BUILD_PROJECT := yes - include $(CONFIG_MK) - -endif # test check_platform - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/.cvsignore b/nx-X11/extras/freetype2/builds/unix/.cvsignore deleted file mode 100644 index 808b60059..000000000 --- a/nx-X11/extras/freetype2/builds/unix/.cvsignore +++ /dev/null @@ -1,9 +0,0 @@ -unix-def.mk -unix-cc.mk -config.status -config.cache -config.log -libtool -ftconfig.h -freetype-config -freetype2.pc diff --git a/nx-X11/extras/freetype2/builds/unix/aclocal.m4 b/nx-X11/extras/freetype2/builds/unix/aclocal.m4 deleted file mode 100644 index ceda545e2..000000000 --- a/nx-X11/extras/freetype2/builds/unix/aclocal.m4 +++ /dev/null @@ -1,5922 +0,0 @@ -# generated automatically by aclocal 1.8a -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -# 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. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- - -# serial 47 AC_PROG_LIBTOOL - - -# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -# ----------------------------------------------------------- -# If this macro is not defined by Autoconf, define it here. -m4_ifdef([AC_PROVIDE_IFELSE], - [], - [m4_define([AC_PROVIDE_IFELSE], - [m4_ifdef([AC_PROVIDE_$1], - [$2], [$3])])]) - - -# AC_PROG_LIBTOOL -# --------------- -AC_DEFUN([AC_PROG_LIBTOOL], -[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl -dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX -dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. - AC_PROVIDE_IFELSE([AC_PROG_CXX], - [AC_LIBTOOL_CXX], - [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX - ])]) -dnl And a similar setup for Fortran 77 support - AC_PROVIDE_IFELSE([AC_PROG_F77], - [AC_LIBTOOL_F77], - [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 -])]) - -dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. -dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run -dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. - AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], - [AC_LIBTOOL_GCJ], - [ifdef([AC_PROG_GCJ], - [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([A][M_PROG_GCJ], - [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) - ifdef([LT_AC_PROG_GCJ], - [define([LT_AC_PROG_GCJ], - defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) -])])# AC_PROG_LIBTOOL - - -# _AC_PROG_LIBTOOL -# ---------------- -AC_DEFUN([_AC_PROG_LIBTOOL], -[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl -AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl -AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl -AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -# Prevent multiple expansion -define([AC_PROG_LIBTOOL], []) -])# _AC_PROG_LIBTOOL - - -# AC_LIBTOOL_SETUP -# ---------------- -AC_DEFUN([AC_LIBTOOL_SETUP], -[AC_PREREQ(2.50)dnl -AC_REQUIRE([AC_ENABLE_SHARED])dnl -AC_REQUIRE([AC_ENABLE_STATIC])dnl -AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_LD])dnl -AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -AC_REQUIRE([AC_PROG_NM])dnl - -AC_REQUIRE([AC_PROG_LN_S])dnl -AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -AC_REQUIRE([AC_OBJEXT])dnl -AC_REQUIRE([AC_EXEEXT])dnl -dnl - -AC_LIBTOOL_SYS_MAX_CMD_LEN -AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -AC_LIBTOOL_OBJDIR - -AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -_LT_AC_PROG_ECHO_BACKSLASH - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] - -# Same as above, but do not quote variable references. -[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" - -AC_CHECK_TOOL(AR, ar, false) -AC_CHECK_TOOL(RANLIB, ranlib, :) -AC_CHECK_TOOL(STRIP, strip, :) - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$SED" && SED=sed -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - AC_PATH_MAGIC - fi - ;; -esac - -AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -enable_win32_dll=yes, enable_win32_dll=no) - -AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -AC_ARG_WITH([pic], - [AC_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) -test -z "$pic_mode" && pic_mode=default - -# Use C for the default configuration in the libtool script -tagname= -AC_LIBTOOL_LANG_C_CONFIG -_LT_AC_TAGCONFIG -])# AC_LIBTOOL_SETUP - - -# _LT_AC_SYS_COMPILER -# ------------------- -AC_DEFUN([_LT_AC_SYS_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_AC_SYS_COMPILER - - -# _LT_AC_SYS_LIBPATH_AIX -# ---------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], -[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi],[]) -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -])# _LT_AC_SYS_LIBPATH_AIX - - -# _LT_AC_SHELL_INIT(ARG) -# ---------------------- -AC_DEFUN([_LT_AC_SHELL_INIT], -[ifdef([AC_DIVERSION_NOTICE], - [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], - [AC_DIVERT_PUSH(NOTICE)]) -$1 -AC_DIVERT_POP -])# _LT_AC_SHELL_INIT - - -# _LT_AC_PROG_ECHO_BACKSLASH -# -------------------------- -# Add some code to the start of the generated configure script which -# will find an echo command which doesn't interpret backslashes. -AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], -[_LT_AC_SHELL_INIT([ -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` - ;; -esac - -echo=${ECHO-echo} -if test "X[$]1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X[$]1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -fi - -if test "X[$]1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<EOF -[$]* -EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -if test -z "$ECHO"; then -if test "X${echo_test_string+set}" != Xset; then -# find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL [$]0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL [$]0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "[$]0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -fi - -AC_SUBST(ECHO) -])])# _LT_AC_PROG_ECHO_BACKSLASH - - -# _LT_AC_LOCK -# ----------- -AC_DEFUN([_LT_AC_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AC_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line __oline__ "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -[*-*-cygwin* | *-*-mingw* | *-*-pw32*) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; - ]) -esac - -need_locks="$enable_libtool_lock" - -])# _LT_AC_LOCK - - -# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -[AC_REQUIRE([LT_AC_PROG_SED]) -AC_CACHE_CHECK([$1], [$2], - [$2=no - ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - $2=yes - fi - fi - $rm conftest* -]) - -if test x"[$]$2" = xyes; then - ifelse([$5], , :, [$5]) -else - ifelse([$6], , :, [$6]) -fi -])# AC_LIBTOOL_COMPILER_OPTION - - -# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ------------------------------------------------------------ -# Check whether the given compiler option works -AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], -[AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - else - $2=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - ifelse([$4], , :, [$4]) -else - ifelse([$5], , :, [$5]) -fi -])# AC_LIBTOOL_LINKER_OPTION - - -# AC_LIBTOOL_SYS_MAX_CMD_LEN -# -------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], -[# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - *) - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while (test "X"`$CONFIG_SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ - = "XX$teststring") >/dev/null 2>&1 && - new_result=`expr "X$teststring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - teststring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -])# AC_LIBTOOL_SYS_MAX_CMD_LEN - - -# _LT_AC_CHECK_DLFCN -# -------------------- -AC_DEFUN([_LT_AC_CHECK_DLFCN], -[AC_CHECK_HEADERS(dlfcn.h)dnl -])# _LT_AC_CHECK_DLFCN - - -# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ------------------------------------------------------------------ -AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -[#line __oline__ "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -}] -EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_unknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_AC_TRY_DLOPEN_SELF - - -# AC_LIBTOOL_DLOPEN_SELF -# ------------------- -AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_AC_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -])# AC_LIBTOOL_DLOPEN_SELF - - -# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) -# --------------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler -AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s out/conftest.err; then - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* -]) -])# AC_LIBTOOL_PROG_CC_C_O - - -# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) -# ----------------------------------------- -# Check to see if we can do hard links to lock some files if needed -AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], -[AC_REQUIRE([_LT_AC_LOCK])dnl - -hard_links="nottested" -if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS - - -# AC_LIBTOOL_OBJDIR -# ----------------- -AC_DEFUN([AC_LIBTOOL_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -])# AC_LIBTOOL_OBJDIR - - -# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) -# ---------------------------------------------- -# Check hardcoding attributes. -AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_AC_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ - test -n "$_LT_AC_TAGVAR(runpath_var $1)" || \ - test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_AC_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_AC_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_AC_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH - - -# AC_LIBTOOL_SYS_LIB_STRIP -# ------------------------ -AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], -[striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) -fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -])# AC_LIBTOOL_SYS_LIB_STRIP - - -# AC_LIBTOOL_SYS_DYNAMIC_LINKER -# ----------------------------- -# PORTME Fill in your ld.so characteristics -AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], -[AC_MSG_CHECKING([dynamic linker characteristics]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/[:,\t]/ /g;s/=[^=]*$//;s/=[^= ]* / /g' /etc/ld.so.conf | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=yes - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no -])# AC_LIBTOOL_SYS_DYNAMIC_LINKER - - -# _LT_AC_TAGCONFIG -# ---------------- -AC_DEFUN([_LT_AC_TAGCONFIG], -[AC_ARG_WITH([tags], - [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], - [include additional configurations @<:@automatic@:>@])], - [tagnames="$withval"]) - -if test -f "$ltmain" && test -n "$tagnames"; then - if test ! -f "${ofile}"; then - AC_MSG_WARN([output file `$ofile' does not exist]) - fi - - if test -z "$LTCC"; then - eval "`$SHELL ${ofile} --config | grep '^LTCC='`" - if test -z "$LTCC"; then - AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) - else - AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) - fi - fi - - # Extract list of available tagged configurations in $ofile. - # Note that this assumes the entire list is on one line. - available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` - - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for tagname in $tagnames; do - IFS="$lt_save_ifs" - # Check whether tagname contains only valid characters - case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in - "") ;; - *) AC_MSG_ERROR([invalid tag name: $tagname]) - ;; - esac - - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null - then - AC_MSG_ERROR([tag name \"$tagname\" already exists]) - fi - - # Update the list of available tags. - if test -n "$tagname"; then - echo appending configuration tag \"$tagname\" to $ofile - - case $tagname in - CXX) - if test -n "$CXX" && test "X$CXX" != "Xno"; then - AC_LIBTOOL_LANG_CXX_CONFIG - else - tagname="" - fi - ;; - - F77) - if test -n "$F77" && test "X$F77" != "Xno"; then - AC_LIBTOOL_LANG_F77_CONFIG - else - tagname="" - fi - ;; - - GCJ) - if test -n "$GCJ" && test "X$GCJ" != "Xno"; then - AC_LIBTOOL_LANG_GCJ_CONFIG - else - tagname="" - fi - ;; - - RC) - AC_LIBTOOL_LANG_RC_CONFIG - ;; - - *) - AC_MSG_ERROR([Unsupported tag name: $tagname]) - ;; - esac - - # Append the new tag name to the list of available tags. - if test -n "$tagname" ; then - available_tags="$available_tags $tagname" - fi - fi - done - IFS="$lt_save_ifs" - - # Now substitute the updated list of available tags. - if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then - mv "${ofile}T" "$ofile" - chmod +x "$ofile" - else - rm -f "${ofile}T" - AC_MSG_ERROR([unable to update list of available tagged configurations.]) - fi -fi -])# _LT_AC_TAGCONFIG - - -# AC_LIBTOOL_DLOPEN -# ----------------- -# enable checks for dlopen support -AC_DEFUN([AC_LIBTOOL_DLOPEN], - [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_DLOPEN - - -# AC_LIBTOOL_WIN32_DLL -# -------------------- -# declare package support for building win32 dll's -AC_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) -])# AC_LIBTOOL_WIN32_DLL - - -# AC_ENABLE_SHARED([DEFAULT]) -# --------------------------- -# implement the --enable-shared flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_SHARED], -[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([shared], - [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]AC_ENABLE_SHARED_DEFAULT) -])# AC_ENABLE_SHARED - - -# AC_DISABLE_SHARED -# ----------------- -#- set the default shared flag to --disable-shared -AC_DEFUN([AC_DISABLE_SHARED], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_SHARED(no) -])# AC_DISABLE_SHARED - - -# AC_ENABLE_STATIC([DEFAULT]) -# --------------------------- -# implement the --enable-static flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_STATIC], -[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([static], - [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]AC_ENABLE_STATIC_DEFAULT) -])# AC_ENABLE_STATIC - - -# AC_DISABLE_STATIC -# ----------------- -# set the default static flag to --disable-static -AC_DEFUN([AC_DISABLE_STATIC], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_STATIC(no) -])# AC_DISABLE_STATIC - - -# AC_ENABLE_FAST_INSTALL([DEFAULT]) -# --------------------------------- -# implement the --enable-fast-install flag -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -AC_DEFUN([AC_ENABLE_FAST_INSTALL], -[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -AC_ARG_ENABLE([fast-install], - [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) -])# AC_ENABLE_FAST_INSTALL - - -# AC_DISABLE_FAST_INSTALL -# ----------------------- -# set the default to --disable-fast-install -AC_DEFUN([AC_DISABLE_FAST_INSTALL], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -AC_ENABLE_FAST_INSTALL(no) -])# AC_DISABLE_FAST_INSTALL - - -# AC_LIBTOOL_PICMODE([MODE]) -# -------------------------- -# implement the --with-pic flag -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -AC_DEFUN([AC_LIBTOOL_PICMODE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -pic_mode=ifelse($#,1,$1,default) -])# AC_LIBTOOL_PICMODE - - -# AC_PROG_EGREP -# ------------- -# This is predefined starting with Autoconf 2.54, so this conditional -# definition can be removed once we require Autoconf 2.54 or later. -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], - [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi]) - EGREP=$ac_cv_prog_egrep - AC_SUBST([EGREP]) -])]) - - -# AC_PATH_TOOL_PREFIX -# ------------------- -# find a file program which can recognise shared library -AC_DEFUN([AC_PATH_TOOL_PREFIX], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="ifelse([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -])# AC_PATH_TOOL_PREFIX - - -# AC_PATH_MAGIC -# ------------- -# find a file program which can recognise a shared library -AC_DEFUN([AC_PATH_MAGIC], -[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# AC_PATH_MAGIC - - -# AC_PROG_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([AC_PROG_LD], -[AC_ARG_WITH([gnu-ld], - [AC_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no]) -AC_REQUIRE([LT_AC_PROG_SED])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -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(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi]) -LD="$lt_cv_path_LD" -if test -n "$LD"; then - AC_MSG_RESULT($LD) -else - AC_MSG_RESULT(no) -fi -test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -AC_PROG_LD_GNU -])# AC_PROG_LD - - -# AC_PROG_LD_GNU -# -------------- -AC_DEFUN([AC_PROG_LD_GNU], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, -[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac]) -with_gnu_ld=$lt_cv_prog_gnu_ld -])# AC_PROG_LD_GNU - - -# AC_PROG_LD_RELOAD_FLAG -# ---------------------- -# find reload flag for linker -# -- PORTME Some linkers may need a different reload flag. -AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], -[AC_CACHE_CHECK([for $LD option to reload object files], - lt_cv_ld_reload_flag, - [lt_cv_ld_reload_flag='-r']) -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -])# AC_PROG_LD_RELOAD_FLAG - - -# AC_DEPLIBS_CHECK_METHOD -# ----------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], -[AC_CACHE_CHECK([how to recognise dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix4* | aix5*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi4*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump'. - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | kfreebsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux*) - case $host_cpu in - alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx*) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' - else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown -])# AC_DEPLIBS_CHECK_METHOD - - -# AC_PROG_NM -# ---------- -# find the pathname to a BSD-compatible name lister -AC_DEFUN([AC_PROG_NM], -[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - esac - fi - done - IFS="$lt_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi]) -NM="$lt_cv_path_NM" -])# AC_PROG_NM - - -# AC_CHECK_LIBM -# ------------- -# check for math library -AC_DEFUN([AC_CHECK_LIBM], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -])# AC_CHECK_LIBM - - -# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl convenience library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-convenience to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided, it is assumed to be `libltdl'. LIBLTDL will -# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with -# '${top_srcdir}/' (note the single quotes!). If your package is not -# flat and you're not using automake, define top_builddir and -# top_srcdir appropriately in the Makefiles. -AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - case $enable_ltdl_convenience in - no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; - "") enable_ltdl_convenience=yes - ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; - esac - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_CONVENIENCE - - -# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) -# ----------------------------------- -# sets LIBLTDL to the link flags for the libltdl installable library and -# LTDLINCL to the include flags for the libltdl header and adds -# --enable-ltdl-install to the configure arguments. Note that LIBLTDL -# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If -# DIRECTORY is not provided and an installed libltdl is not found, it is -# assumed to be `libltdl'. LIBLTDL will be prefixed with '${top_builddir}/' -# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single -# quotes!). If your package is not flat and you're not using automake, -# define top_builddir and top_srcdir appropriately in the Makefiles. -# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl - AC_CHECK_LIB(ltdl, lt_dlinit, - [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], - [if test x"$enable_ltdl_install" = xno; then - AC_MSG_WARN([libltdl not installed, but installation disabled]) - else - enable_ltdl_install=yes - fi - ]) - if test x"$enable_ltdl_install" = x"yes"; then - ac_configure_args="$ac_configure_args --enable-ltdl-install" - LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la - LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) - else - ac_configure_args="$ac_configure_args --enable-ltdl-install=no" - LIBLTDL="-lltdl" - LTDLINCL= - fi - # For backwards non-gettext consistent compatibility... - INCLTDL="$LTDLINCL" -])# AC_LIBLTDL_INSTALLABLE - - -# AC_LIBTOOL_CXX -# -------------- -# enable support for C++ libraries -AC_DEFUN([AC_LIBTOOL_CXX], -[AC_REQUIRE([_LT_AC_LANG_CXX]) -])# AC_LIBTOOL_CXX - - -# _LT_AC_LANG_CXX -# --------------- -AC_DEFUN([_LT_AC_LANG_CXX], -[AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) -])# _LT_AC_LANG_CXX - - -# AC_LIBTOOL_F77 -# -------------- -# enable support for Fortran 77 libraries -AC_DEFUN([AC_LIBTOOL_F77], -[AC_REQUIRE([_LT_AC_LANG_F77]) -])# AC_LIBTOOL_F77 - - -# _LT_AC_LANG_F77 -# --------------- -AC_DEFUN([_LT_AC_LANG_F77], -[AC_REQUIRE([AC_PROG_F77]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) -])# _LT_AC_LANG_F77 - - -# AC_LIBTOOL_GCJ -# -------------- -# enable support for GCJ libraries -AC_DEFUN([AC_LIBTOOL_GCJ], -[AC_REQUIRE([_LT_AC_LANG_GCJ]) -])# AC_LIBTOOL_GCJ - - -# _LT_AC_LANG_GCJ -# --------------- -AC_DEFUN([_LT_AC_LANG_GCJ], -[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], - [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], - [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], - [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], - [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) -])# _LT_AC_LANG_GCJ - - -# AC_LIBTOOL_RC -# -------------- -# enable support for Windows resource files -AC_DEFUN([AC_LIBTOOL_RC], -[AC_REQUIRE([LT_AC_PROG_RC]) -_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) -])# AC_LIBTOOL_RC - - -# AC_LIBTOOL_LANG_C_CONFIG -# ------------------------ -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) -AC_DEFUN([_LT_AC_LANG_C_CONFIG], -[lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}\n' - -_LT_AC_SYS_COMPILER - -# -# Check for any special shared library compilation flags. -# -_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf' - ;; - esac -fi -if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then - AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries]) - if echo "$old_CC $old_CFLAGS " | grep "[[ ]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ ]]" >/dev/null; then : - else - AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure]) - _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), - $_LT_AC_TAGVAR(lt_prog_compiler_static, $1), - [], - [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) - - -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) - -# Report which librarie types wil actually be built -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4* | aix5*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - darwin* | rhapsody*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - output_verbose_link_cmd='echo' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' - _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_C_CONFIG - - -# AC_LIBTOOL_LANG_CXX_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) -AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], -[AC_LANG_PUSH(C++) -AC_REQUIRE([AC_PROG_CXX]) -AC_REQUIRE([AC_PROG_CXXCPP]) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Dependencies to place before and after the object being linked: -_LT_AC_TAGVAR(predep_objects, $1)= -_LT_AC_TAGVAR(postdep_objects, $1)= -_LT_AC_TAGVAR(predeps, $1)= -_LT_AC_TAGVAR(postdeps, $1)= -_LT_AC_TAGVAR(compiler_lib_search_path, $1)= - -# Source file extension for C++ test sources. -ac_ext=cc - -# Object file extension for compiled C++ test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -# We don't want -fno-exception wen compiling C++ code, so set the -# no_builtin_flag separately -if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -else - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -fi - -if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - AC_PROG_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ - grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - -else - GXX=no - with_gnu_ld=no - wlarc= -fi - -# PORTME: fill in a description of your system's C++ link characteristics -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -_LT_AC_TAGVAR(ld_shlibs, $1)=yes -case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - darwin* | rhapsody*) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - dgux*) - case $cc_basename in - ec++) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before switch to ELF - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - freebsd-elf*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - freebsd* | kfreebsd*-gnu) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - ;; - gnu*) - ;; - hpux9*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - aCC) - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - irix5* | irix6*) - case $cc_basename in - CC) - # SGI C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - linux*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc) - # Intel C++ - with_gnu_ld=yes - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - cxx) - # Compaq C++ - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - m88k*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - mvs*) - case $cc_basename in - cxx) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - osf3*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - cxx) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ - $rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - sco*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - lcc) - # Lucid - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The C++ compiler is used as linker so we must use $wl - # flag to pass the commands to the underlying system - # linker. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | grep -v '^2\.7' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - fi - - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - fi - ;; - esac - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; -esac -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_AC_TAGVAR(GCC, $1)="$GXX" -_LT_AC_TAGVAR(LD, $1)="$LD" - -AC_LIBTOOL_POSTDEP_PREDEP($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -])# AC_LIBTOOL_LANG_CXX_CONFIG - -# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) -# ------------------------ -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -ifelse([$1],[],[cat > conftest.$ac_ext <<EOF -int a; -void foo (void) { a = 0; } -EOF -],[$1],[CXX],[cat > conftest.$ac_ext <<EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -EOF -],[$1],[F77],[cat > conftest.$ac_ext <<EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -EOF -],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -EOF -]) -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - # The `*' in the case matches for architectures that use `case' in - # $output_verbose_cmd can trigger glob expansion during the loop - # eval without this substitution. - output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" - - for p in `eval $output_verbose_link_cmd`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" \ - || test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then - _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then - _LT_AC_TAGVAR(predep_objects, $1)="$p" - else - _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then - _LT_AC_TAGVAR(postdep_objects, $1)="$p" - else - _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$rm -f confest.$objext - -case " $_LT_AC_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac -])# AC_LIBTOOL_POSTDEP_PREDEP - -# AC_LIBTOOL_LANG_F77_CONFIG -# ------------------------ -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) -AC_DEFUN([_LT_AC_LANG_F77_CONFIG], -[AC_REQUIRE([AC_PROG_F77]) -AC_LANG_PUSH(Fortran 77) - -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_AC_TAGVAR(allow_undefined_flag, $1)= -_LT_AC_TAGVAR(always_export_symbols, $1)=no -_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_direct, $1)=no -_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -_LT_AC_TAGVAR(hardcode_automatic, $1)=no -_LT_AC_TAGVAR(module_cmds, $1)= -_LT_AC_TAGVAR(module_expsym_cmds, $1)= -_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_AC_TAGVAR(no_undefined_flag, $1)= -_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code=" subroutine t\n return\n end\n" - -# Code to be used in simple link tests -lt_simple_link_test_code=" program t\n end\n" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${F77-"f77"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -AC_MSG_CHECKING([if libtool supports shared libraries]) -AC_MSG_RESULT([$can_build_shared]) - -AC_MSG_CHECKING([whether to build shared libraries]) -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; -aix4* | aix5*) - test "$enable_shared" = yes && enable_static=no - ;; -esac -AC_MSG_RESULT([$enable_shared]) - -AC_MSG_CHECKING([whether to build static libraries]) -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -AC_MSG_RESULT([$enable_static]) - -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_AC_TAGVAR(GCC, $1)="$G77" -_LT_AC_TAGVAR(LD, $1)="$LD" - -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP - - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_POP -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_F77_CONFIG - - -# AC_LIBTOOL_LANG_GCJ_CONFIG -# -------------------------- -# Ensure that the configuration vars for the C compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) -AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], -[AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${GCJ-"gcj"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - -AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -AC_LIBTOOL_PROG_COMPILER_PIC($1) -AC_LIBTOOL_PROG_CC_C_O($1) -AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -AC_LIBTOOL_PROG_LD_SHLIBS($1) -AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -AC_LIBTOOL_SYS_LIB_STRIP -AC_LIBTOOL_DLOPEN_SELF($1) - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_RESTORE -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_GCJ_CONFIG - - -# AC_LIBTOOL_LANG_RC_CONFIG -# -------------------------- -# Ensure that the configuration vars for the Windows resource compiler are -# suitably defined. Those variables are subsequently used by -# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) -AC_DEFUN([_LT_AC_LANG_RC_CONFIG], -[AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_AC_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_AC_SYS_COMPILER - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${RC-"windres"} -compiler=$CC -_LT_AC_TAGVAR(compiler, $1)=$CC -_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -AC_LIBTOOL_CONFIG($1) - -AC_LANG_RESTORE -CC="$lt_save_CC" -])# AC_LIBTOOL_LANG_RC_CONFIG - - -# AC_LIBTOOL_CONFIG([TAGNAME]) -# ---------------------------- -# If TAGNAME is not passed, then create an initial libtool script -# with a default configuration from the untagged config vars. Otherwise -# add code to config.status for appending the configuration named by -# TAGNAME from the matching tagged config vars. -AC_DEFUN([AC_LIBTOOL_CONFIG], -[# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - _LT_AC_TAGVAR(compiler, $1) \ - _LT_AC_TAGVAR(CC, $1) \ - _LT_AC_TAGVAR(LD, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ - _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ - _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ - _LT_AC_TAGVAR(old_archive_cmds, $1) \ - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ - _LT_AC_TAGVAR(predep_objects, $1) \ - _LT_AC_TAGVAR(postdep_objects, $1) \ - _LT_AC_TAGVAR(predeps, $1) \ - _LT_AC_TAGVAR(postdeps, $1) \ - _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ - _LT_AC_TAGVAR(archive_cmds, $1) \ - _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ - _LT_AC_TAGVAR(postinstall_cmds, $1) \ - _LT_AC_TAGVAR(postuninstall_cmds, $1) \ - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ - _LT_AC_TAGVAR(allow_undefined_flag, $1) \ - _LT_AC_TAGVAR(no_undefined_flag, $1) \ - _LT_AC_TAGVAR(export_symbols_cmds, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ - _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ - _LT_AC_TAGVAR(hardcode_automatic, $1) \ - _LT_AC_TAGVAR(module_cmds, $1) \ - _LT_AC_TAGVAR(module_expsym_cmds, $1) \ - _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ - _LT_AC_TAGVAR(exclude_expsyms, $1) \ - _LT_AC_TAGVAR(include_expsyms, $1); do - - case $var in - _LT_AC_TAGVAR(old_archive_cmds, $1) | \ - _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ - _LT_AC_TAGVAR(archive_cmds, $1) | \ - _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ - _LT_AC_TAGVAR(module_cmds, $1) | \ - _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ - _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\[$]0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` - ;; - esac - -ifelse([$1], [], - [cfgfile="${ofile}T" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - $rm -f "$cfgfile" - AC_MSG_NOTICE([creating $ofile])], - [cfgfile="$ofile"]) - - cat <<__EOF__ >> "$cfgfile" -ifelse([$1], [], -[#! $SHELL - -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -# The names of the tagged configurations supported by this script. -available_tags= - -# ### BEGIN LIBTOOL CONFIG], -[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) - -# Is the compiler the GNU C compiler? -with_gcc=$_LT_AC_TAGVAR(GCC, $1) - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_[]_LT_AC_TAGVAR(LD, $1) - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) - -# Commands used to build and install a shared archive. -archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) -archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) -module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" - -# Set to yes if exported symbols are required. -always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) - -# The commands to list exported symbols. -export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) - -# Symbols that must always be exported. -include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) - -ifelse([$1],[], -[# ### END LIBTOOL CONFIG], -[# ### END LIBTOOL TAG CONFIG: $tagname]) - -__EOF__ - -ifelse([$1],[], [ - case $host_os in - aix3*) - cat <<\EOF >> "$cfgfile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || \ - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -]) -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi -])# AC_LIBTOOL_CONFIG - - -# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], -[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl - -_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - - AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI - - -# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -# --------------------------------- -AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_REQUIRE([AC_PROG_NM]) -AC_REQUIRE([AC_OBJEXT]) -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) # Its linker distinguishes data from code symbols - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris* | sysv5*) - symcode='[[BDRT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if grep ' nm_test_var$' "$nlist" >/dev/null; then - if grep ' nm_test_func$' "$nlist" >/dev/null; then - cat <<EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - - cat <<EOF >> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[[]] = -{ -EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -f conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi -]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE - - -# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) -# --------------------------------------- -AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], -[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= - -AC_MSG_CHECKING([for $compiler option to produce PIC]) - ifelse([$1],[CXX],[ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix4* | aix5*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | kfreebsd*-gnu) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux*) - case $cc_basename in - KCC) - # KAI C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - icpc) - # Intel C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - cxx) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC) - # Rational C++ 2.4.1 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx) - # Digital/Compaq C++ - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - sco*) - case $cc_basename in - CC) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - *) - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx) - # Green Hills C++ Compiler - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc) - # Lucid - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - unixware*) - ;; - vxworks*) - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - newsos6) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - linux*) - case $CC in - icc* | ecc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - ccc*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn' - ;; - - solaris*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sunos4*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - uts4*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then - AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], - _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), - [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" - ;; -esac -]) - - -# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -# ------------------------------------ -# See if the linker supports building shared libraries. -AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -ifelse([$1],[CXX],[ - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix4* | aix5*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw*) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -],[ - runpath_var= - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_AC_TAGVAR(archive_cmds, $1)= - _LT_AC_TAGVAR(archive_expsym_cmds, $1)= - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= - _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown - _LT_AC_TAGVAR(hardcode_automatic, $1)=no - _LT_AC_TAGVAR(module_cmds, $1)= - _LT_AC_TAGVAR(module_expsym_cmds, $1)= - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_AC_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=no - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - _LT_AC_TAGVAR(ld_shlibs, $1)=no - cat <<EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sunos4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_cmds, $1)="$tmp_archive_cmds" - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ [01].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test $supports_anon_versioning = yes; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ -cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -$echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="$tmp_archive_cmds" - fi - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = yes; then - runpath_var=LD_RUN_PATH - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= - fi - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - else - _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_AC_TAGVAR(archive_cmds, $1)='' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - else - # We have old collect2 - _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - _LT_AC_SYS_LIBPATH_AIX - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - _LT_AC_TAGVAR(always_export_symbols, $1)=yes - # Exported symbols can be pulled into shared objects from archives - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' ' - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds it's shared libraries. - _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - # see comment about different semantics on the GNU ld section - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - bsdi4*) - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - darwin* | rhapsody*) - if test "$GXX" = yes ; then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - case "$host_os" in - rhapsody* | darwin1.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[[012]]) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-flat_namespace -undefined suppress' - ;; - 10.*) - _LT_AC_TAGVAR(allow_undefined_flag, $1)='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - _LT_AC_TAGVAR(module_cmds, $1)='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_automatic, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-all_load $convenience' - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - else - _LT_AC_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - dgux*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - ia64*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - *) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - openbsd*) - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - sco3.2v5*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; - esac - _LT_AC_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_AC_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_AC_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4.2uw2*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_direct, $1)=yes - _LT_AC_TAGVAR(hardcode_minus_L, $1)=no - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*) - _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text' - if test "$GCC" = yes; then - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv5*) - _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_AC_TAGVAR(ld_shlibs, $1)=no - ;; - esac - fi -]) -AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_AC_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_MSG_CHECKING([whether -lc should be explicitly linked in]) - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) - _LT_AC_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) - then - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no - else - _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) - ;; - esac - fi - ;; -esac -])# AC_LIBTOOL_PROG_LD_SHLIBS - - -# _LT_AC_FILE_LTDLL_C -# ------------------- -# Be careful that the start marker always follows a newline. -AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ -# /* ltdll.c starts here */ -# #define WIN32_LEAN_AND_MEAN -# #include <windows.h> -# #undef WIN32_LEAN_AND_MEAN -# #include <stdio.h> -# -# #ifndef __CYGWIN__ -# # ifdef __CYGWIN32__ -# # define __CYGWIN__ __CYGWIN32__ -# # endif -# #endif -# -# #ifdef __cplusplus -# extern "C" { -# #endif -# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -# #ifdef __cplusplus -# } -# #endif -# -# #ifdef __CYGWIN__ -# #include <cygwin/cygwin_dll.h> -# DECLARE_CYGWIN_DLL( DllMain ); -# #endif -# HINSTANCE __hDllInstance_base; -# -# BOOL APIENTRY -# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -# { -# __hDllInstance_base = hInst; -# return TRUE; -# } -# /* ltdll.c ends here */ -])# _LT_AC_FILE_LTDLL_C - - -# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) -# --------------------------------- -AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) - - -# old names -AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) -AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) -AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) - -# This is just to silence aclocal about the macro not being used -ifelse([AC_DISABLE_FAST_INSTALL]) - -AC_DEFUN([LT_AC_PROG_GCJ], -[AC_CHECK_TOOL(GCJ, gcj, no) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS) -]) - -AC_DEFUN([LT_AC_PROG_RC], -[AC_CHECK_TOOL(RC, windres, no) -]) - -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -# LT_AC_PROG_SED -# -------------- -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -AC_DEFUN([LT_AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -SED=$lt_cv_path_SED -]) -AC_MSG_RESULT([$SED]) -]) - -m4_include([./ft-munmap.m4]) diff --git a/nx-X11/extras/freetype2/builds/unix/config.guess b/nx-X11/extras/freetype2/builds/unix/config.guess deleted file mode 100644 index 51fab4770..000000000 --- a/nx-X11/extras/freetype2/builds/unix/config.guess +++ /dev/null @@ -1,1459 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2004-03-12' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Per Bothner <per@bothner.com>. -# Please send patches to <config-patches@gnu.org>. Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to <config-patches@gnu.org>." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - amd64:OpenBSD:*:*) - echo x86_64-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - cats:OpenBSD:*:*) - echo arm-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - macppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvmeppc:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pegasos:OpenBSD:*:*) - echo powerpc-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mipseb-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sun3:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit 0 ;; - macppc:MirBSD:*:*) - echo powerppc-unknown-mirbsd${UNAME_RELEASE} - exit 0 ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit 0 ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha*:OpenVMS:*:*) - echo alpha-hp-vms - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit 0 ;; - DRS?6000:UNIX_SV:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7 && exit 0 ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include <stdio.h> /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c \ - && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && exit 0 - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit 0 ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <sys/systemcfg.h> - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include <stdlib.h> - #include <unistd.h> - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - # avoid double evaluation of $set_cc_for_build - test -n "$CC_FOR_BUILD" || eval $set_cc_for_build - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <unistd.h> - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - *:UNICOS/mp:*:*) - echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - # Determine whether the default compiler uses glibc. - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <features.h> - #if __GLIBC__ >= 2 - LIBC=gnu - #else - LIBC= - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - # GNU/KFreeBSD systems have a "k" prefix to indicate we are using - # FreeBSD's kernel, but not the complete OS. - case ${LIBC} in gnu) kernel_only='k' ;; esac - echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - x86:Interix*:[34]*) - echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//' - exit 0 ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit 0 ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=` - test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0 - ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include <features.h> - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #ifdef __INTEL_COMPILER - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` - test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit 0 ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i*86:*:5:[78]*) - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name` - echo ${UNAME_MACHINE}-pc-isc$UNAME_REL - elif /bin/uname -X 2>/dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit 0 ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says <Richard.M.Bartel@ccMail.Census.GOV> - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes <hewes@openmarket.com>. - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - case `uname -p` in - *86) UNAME_PROCESSOR=i686 ;; - powerpc) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit 0 ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit 0 ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit 0 ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit 0 ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit 0 ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit 0 ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit 0 ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include <sys/param.h> -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0 - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 <<EOF -$0: unable to guess system type - -This script, last modified $timestamp, has failed to recognize -the operating system you are using. It is advised that you -download the most up to date version of the config scripts from - - ftp://ftp.gnu.org/pub/gnu/config/ - -If the version you run ($0) is already up to date, please -send the following data and any information you think might be -pertinent to <config-patches@gnu.org> in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/nx-X11/extras/freetype2/builds/unix/config.sub b/nx-X11/extras/freetype2/builds/unix/config.sub deleted file mode 100644 index ba331039b..000000000 --- a/nx-X11/extras/freetype2/builds/unix/config.sub +++ /dev/null @@ -1,1549 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2004-03-12' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Please send patches to <config-patches@gnu.org>. Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to <config-patches@gnu.org>." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ - kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32r | m32rle | m68000 | m68k | m88k | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | msp430 \ - | ns16k | ns32k \ - | openrisc | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | msp430-* \ - | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - cr16c) - basic_machine=cr16c-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nv1) - basic_machine=nv1-cray - os=-unicosmp - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - or32 | or32-*) - basic_machine=or32-unknown - os=-coff - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/nx-X11/extras/freetype2/builds/unix/configure b/nx-X11/extras/freetype2/builds/unix/configure deleted file mode 100644 index d08ac9d6a..000000000 --- a/nx-X11/extras/freetype2/builds/unix/configure +++ /dev/null @@ -1,22250 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59a. -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Find who we are. Look in the path if we contain no path at all -# relative or not. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 - { (exit 1); exit 1; }; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(func_return () { - (exit \$1) -} -func_success () { - func_return 0 -} -func_failure () { - func_return 1 -} -func_ret_success () { - return 0 -} -func_ret_failure () { - return 1 -} - -exitcode=0 -if func_success; then - : -else - exitcode=1 - echo func_failure succeeded. -fi - -if func_failure; then - exitcode=1 - echo func_success failed. -fi - -if func_ret_success; then - : -else - exitcode=1 - echo func_ret_success failed. -fi - -if func_ret_failure; then - exitcode=1 - echo func_ret_failure succeeded. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - as_lineno_3=\`(expr \$as_lineno_1 + 1) 2>/dev/null\` - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\$as_lineno_3\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells="$SHELL" - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done - esac -done - - - for as_shell in $as_candidate_shells; do - if { $as_shell 2> /dev/null <<\_ASEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { $as_shell 2> /dev/null <<\_ASEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - -: -(func_return () { - (exit $1) -} -func_success () { - func_return 0 -} -func_failure () { - func_return 1 -} -func_ret_success () { - return 0 -} -func_ret_failure () { - return 1 -} - -exitcode=0 -if func_success; then - : -else - exitcode=1 - echo func_failure succeeded. -fi - -if func_failure; then - exitcode=1 - echo func_success failed. -fi - -if func_ret_success; then - : -else - exitcode=1 - echo func_ret_success failed. -fi - -if func_ret_failure; then - exitcode=1 - echo func_ret_failure succeeded. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } - $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "func_return () { - (exit \$1) -} -func_success () { - func_return 0 -} -func_failure () { - func_return 1 -} -func_ret_success () { - return 0 -} -func_ret_failure () { - return 1 -} - -exitcode=0 -if func_success; then - : -else - exitcode=1 - echo func_failure succeeded. -fi - -if func_failure; then - exitcode=1 - echo func_success failed. -fi - -if func_ret_success; then - : -else - exitcode=1 - echo func_ret_success failed. -fi - -if func_ret_failure; then - exitcode=1 - echo func_ret_failure succeeded. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s,[$]LINENO.*,&-, - t lineno - b - : lineno - N - : loop - s,[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\),\2\1\2, - t loop - s,-\n.*,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - - - -# Check that we are running under the correct shell. -SHELL=${CONFIG_SHELL-/bin/sh} - -case X$ECHO in -X*--fallback-echo) - # Remove one level of quotation (which was required for Make). - ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` - ;; -esac - -echo=${ECHO-echo} -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then - # Yippee, $echo works! - : -else - # Restart under the correct shell. - exec $SHELL "$0" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<EOF -$* -EOF - exit 0 -fi - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -if test -z "$ECHO"; then -if test "X${echo_test_string+set}" != Xset; then -# find a string as large as possible, as long as the shell can cope with it - for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do - # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... - if (echo_test_string="`eval $cmd`") 2>/dev/null && - echo_test_string="`eval $cmd`" && - (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null - then - break - fi - done -fi - -if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - : -else - # The Solaris, AIX, and Digital Unix default echo programs unquote - # backslashes. This makes it impossible to quote backslashes using - # echo "$something" | sed 's/\\/\\\\/g' - # - # So, first we look for a working echo in the user's PATH. - - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for dir in $PATH /usr/ucb; do - IFS="$lt_save_ifs" - if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && - test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$dir/echo" - break - fi - done - IFS="$lt_save_ifs" - - if test "X$echo" = Xecho; then - # We didn't find a better echo, so look for alternatives. - if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # This shell has a builtin print -r that does the trick. - echo='print -r' - elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && - test "X$CONFIG_SHELL" != X/bin/ksh; then - # If we have ksh, try running configure again with it. - ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} - export ORIGINAL_CONFIG_SHELL - CONFIG_SHELL=/bin/ksh - export CONFIG_SHELL - exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} - else - # Try using printf. - echo='printf %s\n' - if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && - echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - # Cool, printf works - : - elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL - export CONFIG_SHELL - SHELL="$CONFIG_SHELL" - export SHELL - echo="$CONFIG_SHELL $0 --fallback-echo" - elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && - test "X$echo_testing_string" = 'X\t' && - echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && - test "X$echo_testing_string" = "X$echo_test_string"; then - echo="$CONFIG_SHELL $0 --fallback-echo" - else - # maybe with a smaller string... - prev=: - - for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do - if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null - then - break - fi - prev="$cmd" - done - - if test "$prev" != 'sed 50q "$0"'; then - echo_test_string=`eval $prev` - export echo_test_string - exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} - else - # Oops. We lost completely, so just stick with echo. - echo=echo - fi - fi - fi - fi -fi -fi - -# Copy echo and quote the copy suitably for passing to libtool from -# the Makefile, instead of quoting the original, which is used later. -ECHO=$echo -if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then - ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" -fi - - - - -tagnames=${tagnames+${tagnames},}CXX - -tagnames=${tagnames+${tagnames},}F77 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_config_libobj_dir=. -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_unique_file="ftconfig.in" -# Factoring default headers for most tests. -ac_includes_default="\ -#include <stdio.h> -#if HAVE_SYS_TYPES_H -# include <sys/types.h> -#endif -#if HAVE_SYS_STAT_H -# include <sys/stat.h> -#endif -#if STDC_HEADERS -# include <stdlib.h> -# include <stddef.h> -#else -# if HAVE_STDLIB_H -# include <stdlib.h> -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include <memory.h> -# endif -# include <string.h> -#endif -#if HAVE_STRINGS_H -# include <strings.h> -#endif -#if HAVE_INTTYPES_H -# include <inttypes.h> -#endif -#if HAVE_STDINT_H -# include <stdint.h> -#endif -#if HAVE_UNISTD_H -# include <unistd.h> -#endif" - -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS version_info ft_version build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP XX_CFLAGS XX_ANSIFLAGS RMF RMDIR INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA GREP EGREP FTSYS_SRC LIBZ SYSTEM_ZLIB LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP CXX CXXFLAGS ac_ct_CXX CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL enable_shared hardcode_libdir_flag_spec wl LIBOBJS LTLIBOBJS' -ac_subst_files='' - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_confdir=`(dirname "$0") 2>/dev/null || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || - { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 - { (exit 1); exit 1; }; } -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CXX_set=${CXX+set} -ac_env_CXX_value=$CXX -ac_cv_env_CXX_set=${CXX+set} -ac_cv_env_CXX_value=$CXX -ac_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_env_CXXFLAGS_value=$CXXFLAGS -ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_cv_env_CXXFLAGS_value=$CXXFLAGS -ac_env_CXXCPP_set=${CXXCPP+set} -ac_env_CXXCPP_value=$CXXCPP -ac_cv_env_CXXCPP_set=${CXXCPP+set} -ac_cv_env_CXXCPP_value=$CXXCPP -ac_env_F77_set=${F77+set} -ac_env_F77_value=$F77 -ac_cv_env_F77_set=${F77+set} -ac_cv_env_F77_value=$F77 -ac_env_FFLAGS_set=${FFLAGS+set} -ac_env_FFLAGS_value=$FFLAGS -ac_cv_env_FFLAGS_set=${FFLAGS+set} -ac_cv_env_FFLAGS_value=$FFLAGS - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -_ACEOF - - cat <<_ACEOF -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data [PREFIX/share] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --infodir=DIR info documentation [PREFIX/info] - --mandir=DIR man documentation [PREFIX/man] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] - --target=TARGET configure for building compilers for TARGET [HOST] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-shared[=PKGS] - build shared libraries [default=yes] - --enable-static[=PKGS] - build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --without-zlib use internal zlib instead of system-wide - --with-old-mac-fonts allow Mac resource-based fonts to be used - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-tags[=TAGS] - include additional configurations [automatic] - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a - nonstandard directory <lib dir> - CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have - headers in a nonstandard directory <include dir> - CPP C preprocessor - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CXXCPP C++ preprocessor - F77 Fortran 77 compiler command - FFLAGS Fortran 77 compiler flags - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -_ACEOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - cd $ac_dir - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_srcdir/configure.gnu; then - echo - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then - echo - $SHELL $ac_srcdir/configure --help=recursive - elif test -f $ac_srcdir/configure.ac || - test -f $ac_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\_ACEOF - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, -2003, 2004 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit 0 -fi -exec 5>config.log -cat >&5 <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.59a. Invocation command line was - - $ $0 $@ - -_ACEOF -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_sep= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Be sure not to use single quotes in there, as some shells, -# such as our DU 5.0 friend, will then `close' the trap. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------- ## -## Output files. ## -## ------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=$`echo $ac_var` - echo "$ac_var='"'"'$ac_val'"'"'" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - sed "/^$/d" confdefs.h | sort - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -# NextStep 3.3 (patch 3) loses unless the first echo outputs at least 14 bytes. -ac_space=' ' -echo "$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space$ac_space" >confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - - - - - - - - - -# Don't forget to update docs/VERSION.DLL! - -version_info='9:7:3' - -ft_version=`echo $version_info | tr : .` - - - -# checks for system type - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} - { (exit 1); exit 1; }; } -fi -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. - -# Make sure we can run config.sub. -$ac_config_sub sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6 -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6 -build=$ac_cv_build -build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6 -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_host_alias=$host_alias -test -z "$ac_cv_host_alias" && - ac_cv_host_alias=$ac_cv_build_alias -ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6 -host=$ac_cv_host -host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -echo "$as_me:$LINENO: checking target system type" >&5 -echo $ECHO_N "checking target system type... $ECHO_C" >&6 -if test "${ac_cv_target+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_target_alias=$target_alias -test "x$ac_cv_target_alias" = "x" && - ac_cv_target_alias=$ac_cv_host_alias -ac_cv_target=`$ac_config_sub $ac_cv_target_alias` || - { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_target_alias failed" >&5 -echo "$as_me: error: $ac_config_sub $ac_cv_target_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:$LINENO: result: $ac_cv_target" >&5 -echo "${ECHO_T}$ac_cv_target" >&6 -target=$ac_cv_target -target_cpu=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - - -# checks for programs - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Find the output, starting from the most likely. This scheme is -# not robust to junk in `.', hence go to wildcards (a.*) only as a last -# resort. - -# Be careful to initialize this variable, since it used to be cached. -# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -ac_cv_exeext= -# b.out is created by i960 compilers. -for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) - ;; - conftest.$ac_ext ) - # This is the source file. - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool, - # but it would be cool to find out if it's true. Does anybody - # maintain Libtool? --akim. - export ac_cv_exeext - break;; - * ) - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6 - -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6 - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -CFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cc_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -if test "${ac_cv_prog_cc_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix, OSF/1, Tru64 -std -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -# get compiler flags right - -if test "x$CC" = xgcc; then - XX_CFLAGS="-Wall" - XX_ANSIFLAGS="-pedantic -ansi" -else - case "$host" in - *-dec-osf*) - CFLAGS= - XX_CFLAGS="-std1 -g3" - XX_ANSIFLAGS= - ;; - *) - XX_CFLAGS= - XX_ANSIFLAGS= - ;; - esac -fi - - - - -# auxiliary programs - -# Extract the first word of "rm", so it can be a program name with args. -set dummy rm; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RMF+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RMF"; then - ac_cv_prog_RMF="$RMF" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RMF="rm -f" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RMF=$ac_cv_prog_RMF -if test -n "$RMF"; then - echo "$as_me:$LINENO: result: $RMF" >&5 -echo "${ECHO_T}$RMF" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -# Extract the first word of "rmdir", so it can be a program name with args. -set dummy rmdir; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RMDIR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RMDIR"; then - ac_cv_prog_RMDIR="$RMDIR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RMDIR="rmdir" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RMDIR=$ac_cv_prog_RMDIR -if test -n "$RMDIR"; then - echo "$as_me:$LINENO: result: $RMDIR" >&5 -echo "${ECHO_T}$RMDIR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - - -# Since this file will be finally moved to another directory we make -# the path of the install script absolute. This small code snippet has -# been taken from automake's `ylwrap' script. - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -case "$INSTALL" in -/*) - ;; -*/*) - INSTALL="`pwd`/$INSTALL" ;; -esac - - -# checks for header files - - - -echo "$as_me:$LINENO: checking for grep that handles long lines" >&5 -echo $ECHO_N "checking for grep that handles long lines... $ECHO_C" >&6 -if test "${oc_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -f -r $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/GREPXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/GREP$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - test -f "$ac_path_GREP" || continue - if $as_executable_p "$ac_path_GREP"; then - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -if "$ac_path_GREP" --version 2>&1 < /dev/null | grep 'GNU' >/dev/null; then - ac_cv_path_GREP="$ac_path_GREP" - break 2 - -fi - - - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"$tmp/conftest.in" - while : - do - cat "$tmp/conftest.in" "$tmp/conftest.in" >"$tmp/conftest.tmp" - mv "$tmp/conftest.tmp" "$tmp/conftest.in" - cp "$tmp/conftest.in" "$tmp/conftest.nl" - echo 'GREP' >> "$tmp/conftest.nl" - "$ac_path_GREP" 'GREP$' < "$tmp/conftest.nl" >"$tmp/conftest.out" || break - diff "$tmp/conftest.out" "$tmp/conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done -fi - - done -done -done - -rm -rf "$tmp" - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -fi - -fi - - -fi -echo "$as_me:$LINENO: result: $oc_cv_path_GREP" >&5 -echo "${ECHO_T}$oc_cv_path_GREP" >&6 - GREP="$ac_cv_path_GREP" - - -echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -f -r $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/EGREPXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/EGREP$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - test -f "$ac_path_EGREP" || continue - if $as_executable_p "$ac_path_EGREP"; then - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -if "$ac_path_EGREP" --version 2>&1 < /dev/null | grep 'GNU' >/dev/null; then - ac_cv_path_EGREP="$ac_path_EGREP" - break 2 - -fi - - - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"$tmp/conftest.in" - while : - do - cat "$tmp/conftest.in" "$tmp/conftest.in" >"$tmp/conftest.tmp" - mv "$tmp/conftest.tmp" "$tmp/conftest.in" - cp "$tmp/conftest.in" "$tmp/conftest.nl" - echo 'EGREP' >> "$tmp/conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "$tmp/conftest.nl" >"$tmp/conftest.out" || break - diff "$tmp/conftest.out" "$tmp/conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done -fi - - done -done -done - -rm -rf "$tmp" - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in \$PATH" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -fi - -fi - - - fi -fi -echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6 - EGREP="$ac_cv_path_EGREP" - - -echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_header_stdc=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <string.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <stdlib.h> - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ctype.h> -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - exit(2); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - -for ac_header in fcntl.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - -# checks for typedefs, structures, and compiler characteristics - -echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset x; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *ccp; - char **p; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - ccp = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - } -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_c_const=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - -fi - -echo "$as_me:$LINENO: checking for int" >&5 -echo $ECHO_N "checking for int... $ECHO_C" >&6 -if test "${ac_cv_type_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((int *) 0) - return 0; -if (sizeof (int)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_int=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_int=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -echo "${ECHO_T}$ac_cv_type_int" >&6 - -echo "$as_me:$LINENO: checking size of int" >&5 -echo $ECHO_N "checking size of int... $ECHO_C" >&6 -if test "${ac_cv_sizeof_int+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_int" = yes; then - # The cast to long int works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (int))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_int=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long int) (sizeof (int)); } -unsigned long ulongval () { return (long int) (sizeof (int)); } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long int) (sizeof (int))) < 0) - { - long i = longval (); - if (i != ((long int) (sizeof (int)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long int) (sizeof (int)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_int=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (int), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.val -else - ac_cv_sizeof_int=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -echo "${ECHO_T}$ac_cv_sizeof_int" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -echo "$as_me:$LINENO: checking for long" >&5 -echo $ECHO_N "checking for long... $ECHO_C" >&6 -if test "${ac_cv_type_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -if ((long *) 0) - return 0; -if (sizeof (long)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_long=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_type_long=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -echo "${ECHO_T}$ac_cv_type_long" >&6 - -echo "$as_me:$LINENO: checking size of long" >&5 -echo $ECHO_N "checking size of long... $ECHO_C" >&6 -if test "${ac_cv_sizeof_long+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$ac_cv_type_long" = yes; then - # The cast to long int works around a bug in the HP C Compiler - # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects - # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. - # This bug is HP SR number 8606223364. - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr $ac_mid + 1` - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) < 0)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) >= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_hi=`expr '(' $ac_mid ')' - 1` - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo= ac_hi= -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -static int test_array [1 - 2 * !(((long int) (sizeof (long))) <= $ac_mid)]; -test_array [0] = 0 - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_lo=`expr '(' $ac_mid ')' + 1` -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in -?*) ac_cv_sizeof_long=$ac_lo;; -'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } ;; -esac -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -long longval () { return (long int) (sizeof (long)); } -unsigned long ulongval () { return (long int) (sizeof (long)); } -#include <stdio.h> -#include <stdlib.h> -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - exit (1); - if (((long int) (sizeof (long))) < 0) - { - long i = longval (); - if (i != ((long int) (sizeof (long)))) - exit (1); - fprintf (f, "%ld\n", i); - } - else - { - unsigned long i = ulongval (); - if (i != ((long int) (sizeof (long)))) - exit (1); - fprintf (f, "%lu\n", i); - } - exit (ferror (f) || fclose (f) != 0); - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_long=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute sizeof (long), 77 -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.val -else - ac_cv_sizeof_long=0 -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -echo "${ECHO_T}$ac_cv_sizeof_long" >&6 -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF - - - - -# checks for library functions - -# Here we check whether we can use our mmap file component. - - - -for ac_header in stdlib.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_func in getpagesize -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -echo "$as_me:$LINENO: checking for working mmap" >&5 -echo $ECHO_N "checking for working mmap... $ECHO_C" >&6 -if test "${ac_cv_func_mmap_fixed_mapped+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_mmap_fixed_mapped=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -/* malloc might have been renamed as rpl_malloc. */ -#undef malloc - -/* Thanks to Mike Haertel and Jim Avera for this test. - Here is a matrix of mmap possibilities: - mmap private not fixed - mmap private fixed at somewhere currently unmapped - mmap private fixed at somewhere already mapped - mmap shared not fixed - mmap shared fixed at somewhere currently unmapped - mmap shared fixed at somewhere already mapped - For private mappings, we should verify that changes cannot be read() - back from the file, nor mmap's back from the file at a different - address. (There have been systems where private was not correctly - implemented like the infamous i386 svr4.0, and systems where the - VM page cache was not coherent with the file system buffer cache - like early versions of FreeBSD and possibly contemporary NetBSD.) - For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ - -#include <fcntl.h> -#include <sys/mman.h> - -#if !STDC_HEADERS && !HAVE_STDLIB_H -char *malloc (); -#endif - -/* This mess was copied from the GNU getpagesize.h. */ -#if !HAVE_GETPAGESIZE -/* Assume that all systems that can run configure have sys/param.h. */ -# if !HAVE_SYS_PARAM_H -# define HAVE_SYS_PARAM_H 1 -# endif - -# ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ -# if HAVE_SYS_PARAM_H -# include <sys/param.h> -# ifdef EXEC_PAGESIZE -# define getpagesize() EXEC_PAGESIZE -# else /* no EXEC_PAGESIZE */ -# ifdef NBPG -# define getpagesize() NBPG * CLSIZE -# ifndef CLSIZE -# define CLSIZE 1 -# endif /* no CLSIZE */ -# else /* no NBPG */ -# ifdef NBPC -# define getpagesize() NBPC -# else /* no NBPC */ -# ifdef PAGESIZE -# define getpagesize() PAGESIZE -# endif /* PAGESIZE */ -# endif /* no NBPC */ -# endif /* no NBPG */ -# endif /* no EXEC_PAGESIZE */ -# else /* no HAVE_SYS_PARAM_H */ -# define getpagesize() 8192 /* punt totally */ -# endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ - -int -main () -{ - char *data, *data2, *data3; - int i, pagesize; - int fd; - - pagesize = getpagesize (); - - /* First, make a file with some known garbage in it. */ - data = (char *) malloc (pagesize); - if (!data) - exit (1); - for (i = 0; i < pagesize; ++i) - *(data + i) = rand (); - umask (0); - fd = creat ("conftest.mmap", 0600); - if (fd < 0) - exit (1); - if (write (fd, data, pagesize) != pagesize) - exit (1); - close (fd); - - /* Next, try to mmap the file at a fixed address which already has - something else allocated at it. If we can, also make sure that - we see the same garbage. */ - fd = open ("conftest.mmap", O_RDWR); - if (fd < 0) - exit (1); - data2 = (char *) malloc (2 * pagesize); - if (!data2) - exit (1); - data2 += (pagesize - ((long) data2 & (pagesize - 1))) & (pagesize - 1); - if (data2 != mmap (data2, pagesize, PROT_READ | PROT_WRITE, - MAP_PRIVATE | MAP_FIXED, fd, 0L)) - exit (1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data2 + i)) - exit (1); - - /* Finally, make sure that changes to the mapped area do not - percolate back to the file as seen by read(). (This is a bug on - some variants of i386 svr4.0.) */ - for (i = 0; i < pagesize; ++i) - *(data2 + i) = *(data2 + i) + 1; - data3 = (char *) malloc (pagesize); - if (!data3) - exit (1); - if (read (fd, data3, pagesize) != pagesize) - exit (1); - for (i = 0; i < pagesize; ++i) - if (*(data + i) != *(data3 + i)) - exit (1); - close (fd); - exit (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mmap_fixed_mapped=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_mmap_fixed_mapped=no -fi -rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:$LINENO: result: $ac_cv_func_mmap_fixed_mapped" >&5 -echo "${ECHO_T}$ac_cv_func_mmap_fixed_mapped" >&6 -if test $ac_cv_func_mmap_fixed_mapped = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MMAP 1 -_ACEOF - -fi -rm -f conftest.mmap - -if test "$ac_cv_func_mmap_fixed_mapped" != yes; then - FTSYS_SRC='$(BASE_DIR)/ftsystem.c' -else - FTSYS_SRC='$(BUILD_DIR)/ftsystem.c' - - echo "$as_me:$LINENO: checking whether munmap is declared" >&5 -echo $ECHO_N "checking whether munmap is declared... $ECHO_C" >&6 -if test "${ac_cv_have_decl_munmap+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#include <sys/mman.h> - - - -int -main () -{ -#ifndef munmap - char *p = (char *) munmap; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_have_decl_munmap=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_have_decl_munmap=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_have_decl_munmap" >&5 -echo "${ECHO_T}$ac_cv_have_decl_munmap" >&6 -if test $ac_cv_have_decl_munmap = yes; then - -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_MUNMAP 1 -_ACEOF - - -else - cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_MUNMAP 0 -_ACEOF - - -fi - - - - echo "$as_me:$LINENO: checking for munmap's first parameter type" >&5 -echo $ECHO_N "checking for munmap's first parameter type... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF - - /* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -#include <unistd.h> -#include <sys/mman.h> -int munmap(void *, size_t); - - - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:$LINENO: result: void *" >&5 -echo "${ECHO_T}void *" >&6 - -cat >>confdefs.h <<\_ACEOF -#define MUNMAP_USES_VOIDP -_ACEOF - -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -echo "$as_me:$LINENO: result: char *" >&5 -echo "${ECHO_T}char *" >&6 -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -fi - - - - -for ac_func in memcpy memmove -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 -if eval "test \"\${$as_ac_var+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef $ac_func - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -choke me -#else -char (*f) () = $ac_func; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != $ac_func; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -eval "$as_ac_var=no" -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - -# Check for system zlib - - -# Check whether --with-zlib or --without-zlib was given. -if test "${with_zlib+set}" = set; then - withval="$with_zlib" - -fi; -if test x$with_zlib != xno && test -z "$LIBZ"; then - echo "$as_me:$LINENO: checking for gzsetparams in -lz" >&5 -echo $ECHO_N "checking for gzsetparams in -lz... $ECHO_C" >&6 -if test "${ac_cv_lib_z_gzsetparams+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char gzsetparams (); -int -main () -{ -gzsetparams (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_z_gzsetparams=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_z_gzsetparams=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_z_gzsetparams" >&5 -echo "${ECHO_T}$ac_cv_lib_z_gzsetparams" >&6 -if test $ac_cv_lib_z_gzsetparams = yes; then - if test "${ac_cv_header_zlib_h+set}" = set; then - echo "$as_me:$LINENO: checking for zlib.h" >&5 -echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 -if test "${ac_cv_header_zlib_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 -echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking zlib.h usability" >&5 -echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <zlib.h> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking zlib.h presence" >&5 -echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <zlib.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: zlib.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: zlib.h: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: zlib.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: zlib.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: zlib.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: zlib.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: zlib.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: zlib.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: zlib.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: zlib.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for zlib.h" >&5 -echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 -if test "${ac_cv_header_zlib_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_header_zlib_h=$ac_header_preproc -fi -echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 -echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 - -fi -if test $ac_cv_header_zlib_h = yes; then - LIBZ='-lz' -fi - - -fi - -fi -if test x$with_zlib != xno && test -n "$LIBZ"; then - CFLAGS="$CFLAGS -DFT_CONFIG_OPTION_SYSTEM_ZLIB" - LDFLAGS="$LDFLAGS $LIBZ" - SYSTEM_ZLIB=yes -fi - - -# Whether to use Mac OS resource-based fonts or not - - -# Check whether --with-old-mac-fonts or --without-old-mac-fonts was given. -if test "${with_old_mac_fonts+set}" = set; then - withval="$with_old_mac_fonts" - -fi; -if test x$with_old_mac_fonts = xyes; then - LDFLAGS="$LDFLAGS -Xlinker -framework -Xlinker CoreServices \ - -Xlinker -framework -Xlinker ApplicationServices" -else - CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" -fi - - - - - - - - -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi; - -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi; - -# Check whether --enable-fast-install or --disable-fast-install was given. -if test "${enable_fast_install+set}" = set; then - enableval="$enable_fast_install" - p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi; - -echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 -if test "${lt_cv_path_SED+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && break - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -SED=$lt_cv_path_SED - -fi - -echo "$as_me:$LINENO: result: $SED" >&5 -echo "${ECHO_T}$SED" >&6 - - -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi; -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 - 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 - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 -with_gnu_ld=$lt_cv_prog_gnu_ld - - -echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 -if test "${lt_cv_ld_reload_flag+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_ld_reload_flag='-r' -fi -echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' - -echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 -echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 -if test "${lt_cv_path_NM+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/${ac_tool_prefix}nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - esac - fi - done - IFS="$lt_save_ifs" - test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -fi -fi -echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -echo "${ECHO_T}$lt_cv_path_NM" >&6 -NM="$lt_cv_path_NM" - -echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6 -fi - -echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 -echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 -if test "${lt_cv_deplibs_check_method+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix4* | aix5*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi4*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump'. - lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | kfreebsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case "$host_cpu" in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux*) - case $host_cpu in - alpha*|hppa*|i*86|ia64*|m68*|mips*|powerpc*|sparc*|s390*|sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - # this will be overridden with pass_all, but let us keep it just in case - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; - esac - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -nto-qnx*) - lt_cv_deplibs_check_method=unknown - ;; - -openbsd*) - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' - else - lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -sco3.2v5*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" - -fi; -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line 6215 "configure"' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - case "`/usr/bin/file conftest.o`" in - *32-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 -if test "${lt_cv_cc_needs_belf+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - lt_cv_cc_needs_belf=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -lt_cv_cc_needs_belf=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; - -esac - -need_locks="$enable_libtool_lock" - - - -for ac_header in dlfcn.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -else - # Is the header compilable? -echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_header_compiler=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6 - -# Is the header present? -echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_c_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi -rm -f conftest.err conftest.$ac_ext -echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6 - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( - cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## -_ASBOX - ) | - sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Header+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - echo "$as_me:$LINENO: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - CXX=$ac_ct_CXX - fi -fi - - -# Provide some information about the compiler. -echo "$as_me:$LINENO:" \ - "checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 -if test "${ac_cv_cxx_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 -GXX=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -CXXFLAGS="-g" -echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_cxx_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_cxx_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -for ac_declaration in \ - '' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -#include <stdlib.h> -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -continue -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -done -rm -f conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 -if test -z "$CXXCPP"; then - if test "${ac_cv_prog_CXXCPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -echo "$as_me:$LINENO: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6 -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - # <limits.h> exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - Syntax error -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether non-existent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <ac_nonexistent.h> -_ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$F77"; then - ac_cv_prog_F77="$F77" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_F77="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -F77=$ac_cv_prog_F77 -if test -n "$F77"; then - echo "$as_me:$LINENO: result: $F77" >&5 -echo "${ECHO_T}$F77" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$F77" && break - done -fi -if test -z "$F77"; then - ac_ct_F77=$F77 - for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_F77"; then - ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_F77="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_F77=$ac_cv_prog_ac_ct_F77 -if test -n "$ac_ct_F77"; then - echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 -echo "${ECHO_T}$ac_ct_F77" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_F77" && break -done - - if test "x$ac_ct_F77" = x; then - F77="" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - F77=$ac_ct_F77 - fi -fi - - -# Provide some information about the compiler. -echo "$as_me:7228:" \ - "checking for Fortran 77 compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5 - (eval $ac_compiler --version </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v </dev/null >&5\"") >&5 - (eval $ac_compiler -v </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V </dev/null >&5\"") >&5 - (eval $ac_compiler -V </dev/null >&5) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -rm -f a.out - -# If we don't use `.F' as extension, the preprocessor is not run on the -# input file. (Note that this only needs to work for GNU compilers.) -ac_save_ext=$ac_ext -ac_ext=F -echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 -if test "${ac_cv_f77_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF - program main -#ifndef __GNUC__ - choke me -#endif - - end -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_compiler_gnu=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_f77_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 -ac_ext=$ac_save_ext -ac_test_FFLAGS=${FFLAGS+set} -ac_save_FFLAGS=$FFLAGS -FFLAGS= -echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 -echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 -if test "${ac_cv_prog_f77_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - FFLAGS=-g -cat >conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_f77_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_prog_f77_g=no -fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 -echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 -if test "$ac_test_FFLAGS" = set; then - FFLAGS=$ac_save_FFLAGS -elif test $ac_cv_prog_f77_g = yes; then - if test "x$ac_cv_f77_compiler_gnu" = xyes; then - FFLAGS="-g -O2" - else - FFLAGS="-g" - fi -else - if test "x$ac_cv_f77_compiler_gnu" = xyes; then - FFLAGS="-O2" - else - FFLAGS= - fi -fi - -G77=`test $ac_compiler_gnu = yes && echo yes` -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! - -# find the maximum length of command line arguments -echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 -if test "${lt_cv_sys_max_cmd_len+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - *) - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while (test "X"`$CONFIG_SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ - = "XX$teststring") >/dev/null 2>&1 && - new_result=`expr "X$teststring" : ".*" 2>&1` && - lt_cv_sys_max_cmd_len=$new_result && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - teststring= - # Add a significant safety factor because C++ compilers can tack on massive - # amounts of additional arguments before passing them to the linker. - # It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 -else - echo "$as_me:$LINENO: result: none" >&5 -echo "${ECHO_T}none" >&6 -fi - - - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 -if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Transform the above into a raw symbol and a C symbol. -symxfrm='\1 \2\3 \3' - -# Transform an extracted symbol line into a proper C declaration -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32*) - symcode='[ABCDGISTW]' - ;; -hpux*) # Its linker distinguishes data from code symbols - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris* | sysv5*) - symcode='[BDRT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Try without a prefix undercore, then with it. -for ac_symprfx in "" "_"; do - - # Write the raw and C identifiers. - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -EOF - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 - (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if grep ' nm_test_var$' "$nlist" >/dev/null; then - if grep ' nm_test_func$' "$nlist" >/dev/null; then - cat <<EOF > conftest.$ac_ext -#ifdef __cplusplus -extern "C" { -#endif - -EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' - - cat <<EOF >> conftest.$ac_ext -#if defined (__STDC__) && __STDC__ -# define lt_ptr_t void * -#else -# define lt_ptr_t char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr_t address; -} -lt_preloaded_symbols[] = -{ -EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext - cat <<\EOF >> conftest.$ac_ext - {0, (lt_ptr_t) 0} -}; - -#ifdef __cplusplus -} -#endif -EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_save_LIBS="$LIBS" - lt_save_CFLAGS="$CFLAGS" - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS="$lt_save_LIBS" - CFLAGS="$lt_save_CFLAGS" - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -f conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - echo "$as_me:$LINENO: result: failed" >&5 -echo "${ECHO_T}failed" >&6 -else - echo "$as_me:$LINENO: result: ok" >&5 -echo "${ECHO_T}ok" >&6 -fi - -echo "$as_me:$LINENO: checking for objdir" >&5 -echo $ECHO_N "checking for objdir... $ECHO_C" >&6 -if test "${lt_cv_objdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -echo "${ECHO_T}$lt_cv_objdir" >&6 -objdir=$lt_cv_objdir - - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='sed -e s/^X//' -sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -# Constants: -rm="rm -f" - -# Global variables: -default_ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except M$VC, -# which needs '.lib'). -libext=a -ltmain="$ac_aux_dir/ltmain.sh" -ofile="$default_ofile" -with_gnu_ld="$lt_cv_prog_gnu_ld" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -set dummy ${ac_tool_prefix}ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="${ac_tool_prefix}ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:$LINENO: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_AR"; then - ac_ct_AR=$AR - # Extract the first word of "ar", so it can be a program name with args. -set dummy ar; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_AR+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="ar" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "x$ac_ct_AR" = x; then - AR="false" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - AR=$ac_ct_AR - fi -else - AR="$ac_cv_prog_AR" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - echo "$as_me:$LINENO: result: $STRIP" >&5 -echo "${ECHO_T}$STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -echo "${ECHO_T}$ac_ct_STRIP" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - if test "$build" != "$host"; then - { echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} - fi - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$AR" && AR=ar -test -z "$AR_FLAGS" && AR_FLAGS=cru -test -z "$AS" && AS=as -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$DLLTOOL" && DLLTOOL=dlltool -test -z "$LD" && LD=ld -test -z "$LN_S" && LN_S="ln -s" -test -z "$MAGIC_CMD" && MAGIC_CMD=file -test -z "$NM" && NM=nm -test -z "$SED" && SED=sed -test -z "$OBJDUMP" && OBJDUMP=objdump -test -z "$RANLIB" && RANLIB=: -test -z "$STRIP" && STRIP=: -test -z "$ac_objext" && ac_objext=o - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" - ;; - *) - old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -# Only perform the check for file, if the check method requires it -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - echo "$as_me:$LINENO: checking for file" >&5 -echo $ECHO_N "checking for file... $ECHO_C" >&6 -if test "${lt_cv_path_MAGIC_CMD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`" - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -echo "${ECHO_T}$MAGIC_CMD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -enable_dlopen=no -enable_win32_dll=no - -# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then - enableval="$enable_libtool_lock" - -fi; -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - - -# Check whether --with-pic or --without-pic was given. -if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" -else - pic_mode=default -fi; -test -z "$pic_mode" && pic_mode=default - -# Use C for the default configuration in the libtool script -tagname= -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}\n' - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# -# Check for any special shared library compilation flags. -# -lt_prog_cc_shlib= -if test "$GCC" = no; then - case $host_os in - sco3.2v5*) - lt_prog_cc_shlib='-belf' - ;; - esac -fi -if test -n "$lt_prog_cc_shlib"; then - { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5 -echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;} - if echo "$old_CC $old_CFLAGS " | grep "[ ]$lt_prog_cc_shlib[ ]" >/dev/null; then : - else - { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 -echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} - lt_cv_prog_cc_can_build_shared=no - fi -fi - - -# -# Check to make sure the static flag actually works. -# -echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5 -echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6 -if test "${lt_prog_compiler_static_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_prog_compiler_static" - printf "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - else - lt_prog_compiler_static_works=yes - fi - fi - $rm conftest* - LDFLAGS="$save_LDFLAGS" - -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 - -if test x"$lt_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag=' -fno-builtin' - - -echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8295: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:8299: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - -lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - linux*) - case $CC in - icc* | ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - sco3.2v5*) - lt_prog_compiler_pic='-Kpic' - lt_prog_compiler_static='-dn' - ;; - - solaris*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic" >&6 - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8528: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:8532: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - lt_prog_compiler_pic_works=yes - fi - fi - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 - -if test x"$lt_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_c_o+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:8588: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:8592: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s out/conftest.err; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 - - runpath_var= - allow_undefined_flag= - enable_shared_with_static_runtimes=no - archive_cmds= - archive_expsym_cmds= - old_archive_From_new_cmds= - old_archive_from_expsyms_cmds= - export_dynamic_flag_spec= - whole_archive_flag_spec= - thread_safe_flag_spec= - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_direct=no - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - link_all_deplibs=unknown - hardcode_automatic=no - module_cmds= - module_expsym_cmds= - always_export_symbols=no - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - ld_shlibs=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_cmds="$tmp_archive_cmds" - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test $supports_anon_versioning = yes; then - archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ -cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -$echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - archive_expsym_cmds="$tmp_archive_cmds" - fi - else - ld_shlibs=no - fi - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - - if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct=yes - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec=' ' - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - # see comment about different semantics on the GNU ld section - ld_shlibs=no - ;; - - bsdi4*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_From_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes=yes - ;; - - darwin* | rhapsody*) - if test "$GXX" = yes ; then - archive_cmds_need_lc=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='-all_load $convenience' - link_all_deplibs=yes - else - ld_shlibs=no - fi - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) - archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - ia64*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=no - hardcode_shlibpath_var=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - *) - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_ld='-rpath $libdir' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - openbsd*) - hardcode_direct=yes - hardcode_shlibpath_var=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - hardcode_libdir_separator=: - ;; - - sco3.2v5*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag=' -z text' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4.2uw2*) - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=no - hardcode_shlibpath_var=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv5*) - no_undefined_flag=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec= - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -echo "${ECHO_T}$ld_shlibs" >&6 -test "$ld_shlibs" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc=no - else - archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -echo "${ECHO_T}$archive_cmds_need_lc" >&6 - ;; - esac - fi - ;; -esac - -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.01* | freebsdelf3.01*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=yes - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 -test "$dynamic_linker" = no && can_build_shared=no - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || \ - test -n "$runpath_var " || \ - test "X$hardcode_automatic"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action" >&5 -echo "${ECHO_T}$hardcode_action" >&6 - -if test "$hardcode_action" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef shl_load - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != shl_load; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -int -main () -{ -shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef dlopen - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != dlopen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_svld_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_svld_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dld_link (); -int -main () -{ -dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_dld_link=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 10772 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 10870 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - -# Report which librarie types wil actually be built -echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6 - -echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - -aix4* | aix5*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - darwin* | rhapsody*) - if test "$GCC" = yes; then - archive_cmds_need_lc=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - output_verbose_link_cmd='echo' - archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring' - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs$compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='-all_load $convenience' - link_all_deplibs=yes - else - ld_shlibs=no - fi - ;; -esac -echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6 - -echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6 - -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler \ - CC \ - LD \ - lt_prog_compiler_wl \ - lt_prog_compiler_pic \ - lt_prog_compiler_static \ - lt_prog_compiler_no_builtin_flag \ - export_dynamic_flag_spec \ - thread_safe_flag_spec \ - whole_archive_flag_spec \ - enable_shared_with_static_runtimes \ - old_archive_cmds \ - old_archive_from_new_cmds \ - predep_objects \ - postdep_objects \ - predeps \ - postdeps \ - compiler_lib_search_path \ - archive_cmds \ - archive_expsym_cmds \ - postinstall_cmds \ - postuninstall_cmds \ - old_archive_from_expsyms_cmds \ - allow_undefined_flag \ - no_undefined_flag \ - export_symbols_cmds \ - hardcode_libdir_flag_spec \ - hardcode_libdir_flag_spec_ld \ - hardcode_libdir_separator \ - hardcode_automatic \ - module_cmds \ - module_expsym_cmds \ - lt_cv_prog_compiler_c_o \ - exclude_expsyms \ - include_expsyms; do - - case $var in - old_archive_cmds | \ - old_archive_from_new_cmds | \ - archive_cmds | \ - archive_expsym_cmds | \ - module_cmds | \ - module_expsym_cmds | \ - old_archive_from_expsyms_cmds | \ - export_symbols_cmds | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -cfgfile="${ofile}T" - trap "$rm \"$cfgfile\"; exit 1" 1 2 15 - $rm -f "$cfgfile" - { echo "$as_me:$LINENO: creating $ofile" >&5 -echo "$as_me: creating $ofile" >&6;} - - cat <<__EOF__ >> "$cfgfile" -#! $SHELL - -# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="$SED -e s/^X//" - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi - -# The names of the tagged configurations supported by this script. -available_tags= - -# ### BEGIN LIBTOOL CONFIG - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU C compiler? -with_gcc=$GCC - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_LD - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# ### END LIBTOOL CONFIG - -__EOF__ - - - case $host_os in - aix3*) - cat <<\EOF >> "$cfgfile" - -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -EOF - ;; - esac - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || \ - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - -# Check whether --with-tags or --without-tags was given. -if test "${with_tags+set}" = set; then - withval="$with_tags" - tagnames="$withval" -fi; - -if test -f "$ltmain" && test -n "$tagnames"; then - if test ! -f "${ofile}"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} - fi - - if test -z "$LTCC"; then - eval "`$SHELL ${ofile} --config | grep '^LTCC='`" - if test -z "$LTCC"; then - { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 -echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} - else - { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 -echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} - fi - fi - - # Extract list of available tagged configurations in $ofile. - # Note that this assumes the entire list is on one line. - available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` - - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for tagname in $tagnames; do - IFS="$lt_save_ifs" - # Check whether tagname contains only valid characters - case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in - "") ;; - *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 -echo "$as_me: error: invalid tag name: $tagname" >&2;} - { (exit 1); exit 1; }; } - ;; - esac - - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null - then - { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 -echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} - { (exit 1); exit 1; }; } - fi - - # Update the list of available tags. - if test -n "$tagname"; then - echo appending configuration tag \"$tagname\" to $ofile - - case $tagname in - CXX) - if test -n "$CXX" && test "X$CXX" != "Xno"; then - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - - - - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_automatic_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -# Source file extension for C++ test sources. -ac_ext=cc - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(int, char *) { return(0); }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_LD=$LD -lt_save_GCC=$GCC -GCC=$GXX -lt_save_with_gnu_ld=$with_gnu_ld -lt_save_path_LD=$lt_cv_path_LD -if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -else - unset lt_cv_prog_gnu_ld -fi -if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX -else - unset lt_cv_path_LD -fi -test -z "${LDCXX+set}" || LD=$LDCXX -CC=${CXX-"c++"} -compiler=$CC -compiler_CXX=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -# We don't want -fno-exception wen compiling C++ code, so set the -# no_builtin_flag separately -if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' -else - lt_prog_compiler_no_builtin_flag_CXX= -fi - -if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - -# Check whether --with-gnu-ld or --without-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then - withval="$with_gnu_ld" - test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi; -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 - 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 - echo "$as_me:$LINENO: checking for GNU ld" >&5 -echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -else - echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -fi -if test "${lt_cv_path_LD+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some GNU ld's only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in - *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; - *) - test "$with_gnu_ld" != yes && break - ;; - esac - fi - done - IFS="$lt_save_ifs" -else - lt_cv_path_LD="$LD" # Let the user override the test with a path. -fi -fi - -LD="$lt_cv_path_LD" -if test -n "$LD"; then - echo "$as_me:$LINENO: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} - { (exit 1); exit 1; }; } -echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -if test "${lt_cv_prog_gnu_ld+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # I'd rather use --version here, but apparently some GNU ld's only accept -v. -case `$LD -v 2>&1 </dev/null` in -*GNU* | *'with BFD'*) - lt_cv_prog_gnu_ld=yes - ;; -*) - lt_cv_prog_gnu_ld=no - ;; -esac -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 -echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ - grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - -else - GXX=no - with_gnu_ld=no - wlarc= -fi - -# PORTME: fill in a description of your system's C++ link characteristics -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 -ld_shlibs_CXX=yes -case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - - if test "$GXX" = yes; then - case $host_os in aix4.012|aix4.012.*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct_CXX=yes - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_CXX=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX=' ' - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs_CXX=no - fi - ;; - - darwin* | rhapsody*) - if test "$GXX" = yes; then - archive_cmds_need_lc_CXX=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_CXX='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_CXX='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_CXX='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag_CXX='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_CXX='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_CXX='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - whole_archive_flag_spec_CXX='-all_load $convenience' - link_all_deplibs_CXX=yes - else - ld_shlibs_CXX=no - fi - ;; - - dgux*) - case $cc_basename in - ec++) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - freebsd12*) - # C++ shared libraries reported to be fairly broken before switch to ELF - ld_shlibs_CXX=no - ;; - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - freebsd* | kfreebsd*-gnu) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - gnu*) - ;; - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC) - archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_CXX='+b $libdir' - hardcode_libdir_separator_CXX=: - ;; - ia64*) - hardcode_libdir_flag_spec_CXX='-L$libdir' - ;; - *) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case "$host_cpu" in - hppa*64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - *) - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC) - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case "$host_cpu" in - ia64*|hppa*64*) - archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - irix5* | irix6*) - case $cc_basename in - CC) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - ;; - linux*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc) - # Intel C++ - with_gnu_ld=yes - archive_cmds_need_lc_CXX=no - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - cxx) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - esac - ;; - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - mvs*) - case $cc_basename in - cxx) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - osf3*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - osf4* | osf5*) - case $cc_basename in - KCC) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' - ;; - RCC) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry $objdir/so_locations -o $lib~ - $rm $lib.exp' - - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - sco*) - archive_cmds_need_lc_CXX=no - case $cc_basename in - CC) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.0-5 | solaris2.0-5.*) ;; - *) - # The C++ compiler is used as linker so we must use $wl - # flag to pass the commands to the underlying system - # linker. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | grep -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - fi - ;; - esac - ;; - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - archive_cmds_need_lc_CXX=no - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; -esac -echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6 -test "$ld_shlibs_CXX" = no && can_build_shared=no - -GCC_CXX="$GXX" -LD_CXX="$LD" - - -cat > conftest.$ac_ext <<EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -EOF - -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - # The `*' in the case matches for architectures that use `case' in - # $output_verbose_cmd can trigger glob expansion during the loop - # eval without this substitution. - output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`" - - for p in `eval $output_verbose_link_cmd`; do - case $p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" \ - || test $p = "-R"; then - prev=$p - continue - else - prev= - fi - - if test "$pre_test_object_deps_done" = no; then - case $p in - -L* | -R*) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - ;; - - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$rm -f confest.$objext - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - -lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | os2* | pw32*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix4* | aix5*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68) - # Green Hills C++ Compiler - # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - dgux*) - case $cc_basename in - ec++) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | kfreebsd*-gnu) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive" - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux*) - case $cc_basename in - KCC) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - icpc) - # Intel C++ - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - cxx) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - sco*) - case $cc_basename in - CC) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - *) - ;; - esac - ;; - solaris*) - case $cc_basename in - CC) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - unixware*) - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13049: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:13053: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - lt_prog_compiler_pic_works_CXX=yes - fi - fi - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 - -if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:13109: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:13113: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s out/conftest.err; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - case $host_os in - aix4* | aix5*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw*) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -echo "${ECHO_T}$ld_shlibs_CXX" >&6 -test "$ld_shlibs_CXX" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc_CXX=no - else - archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 - ;; - esac - fi - ;; -esac - -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.01* | freebsdelf3.01*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=yes - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 -test "$dynamic_linker" = no && can_build_shared=no - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || \ - test -n "$runpath_var CXX" || \ - test "X$hardcode_automatic_CXX"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -echo "${ECHO_T}$hardcode_action_CXX" >&6 - -if test "$hardcode_action_CXX" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef shl_load - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != shl_load; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -int -main () -{ -shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef dlopen - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != dlopen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_svld_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_svld_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dld_link (); -int -main () -{ -dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_cxx_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_dld_link=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 14470 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 14568 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler_CXX \ - CC_CXX \ - LD_CXX \ - lt_prog_compiler_wl_CXX \ - lt_prog_compiler_pic_CXX \ - lt_prog_compiler_static_CXX \ - lt_prog_compiler_no_builtin_flag_CXX \ - export_dynamic_flag_spec_CXX \ - thread_safe_flag_spec_CXX \ - whole_archive_flag_spec_CXX \ - enable_shared_with_static_runtimes_CXX \ - old_archive_cmds_CXX \ - old_archive_from_new_cmds_CXX \ - predep_objects_CXX \ - postdep_objects_CXX \ - predeps_CXX \ - postdeps_CXX \ - compiler_lib_search_path_CXX \ - archive_cmds_CXX \ - archive_expsym_cmds_CXX \ - postinstall_cmds_CXX \ - postuninstall_cmds_CXX \ - old_archive_from_expsyms_cmds_CXX \ - allow_undefined_flag_CXX \ - no_undefined_flag_CXX \ - export_symbols_cmds_CXX \ - hardcode_libdir_flag_spec_CXX \ - hardcode_libdir_flag_spec_ld_CXX \ - hardcode_libdir_separator_CXX \ - hardcode_automatic_CXX \ - module_cmds_CXX \ - module_expsym_cmds_CXX \ - lt_cv_prog_compiler_c_o_CXX \ - exclude_expsyms_CXX \ - include_expsyms_CXX; do - - case $var in - old_archive_cmds_CXX | \ - old_archive_from_new_cmds_CXX | \ - archive_cmds_CXX | \ - archive_expsym_cmds_CXX | \ - module_cmds_CXX | \ - module_expsym_cmds_CXX | \ - old_archive_from_expsyms_cmds_CXX | \ - export_symbols_cmds_CXX | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -cfgfile="$ofile" - - cat <<__EOF__ >> "$cfgfile" -# ### BEGIN LIBTOOL TAG CONFIG: $tagname - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_CXX - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds_CXX -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects_CXX - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_CXX - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps_CXX - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path_CXX" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# ### END LIBTOOL TAG CONFIG: $tagname - -__EOF__ - - -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC -LDCXX=$LD -LD=$lt_save_LD -GCC=$lt_save_GCC -with_gnu_ldcxx=$with_gnu_ld -with_gnu_ld=$lt_save_with_gnu_ld -lt_cv_path_LDCXX=$lt_cv_path_LD -lt_cv_path_LD=$lt_save_path_LD -lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld - - else - tagname="" - fi - ;; - - F77) - if test -n "$F77" && test "X$F77" != "Xno"; then - -ac_ext=f -ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_f77_compiler_gnu - - -archive_cmds_need_lc_F77=no -allow_undefined_flag_F77= -always_export_symbols_F77=no -archive_expsym_cmds_F77= -export_dynamic_flag_spec_F77= -hardcode_direct_F77=no -hardcode_libdir_flag_spec_F77= -hardcode_libdir_flag_spec_ld_F77= -hardcode_libdir_separator_F77= -hardcode_minus_L_F77=no -hardcode_automatic_F77=no -module_cmds_F77= -module_expsym_cmds_F77= -link_all_deplibs_F77=unknown -old_archive_cmds_F77=$old_archive_cmds -no_undefined_flag_F77= -whole_archive_flag_spec_F77= -enable_shared_with_static_runtimes_F77=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -objext_F77=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code=" subroutine t\n return\n end\n" - -# Code to be used in simple link tests -lt_simple_link_test_code=" program t\n end\n" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${F77-"f77"} -compiler=$CC -compiler_F77=$CC -cc_basename=`$echo X"$compiler" | $Xsed -e 's%^.*/%%'` - -echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 -echo "$as_me:$LINENO: result: $can_build_shared" >&5 -echo "${ECHO_T}$can_build_shared" >&6 - -echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 -test "$can_build_shared" = "no" && enable_shared=no - -# On AIX, shared libraries and static libraries use the same namespace, and -# are all built from PIC. -case "$host_os" in -aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; -aix4* | aix5*) - test "$enable_shared" = yes && enable_static=no - ;; -esac -echo "$as_me:$LINENO: result: $enable_shared" >&5 -echo "${ECHO_T}$enable_shared" >&6 - -echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 -# Make sure either enable_shared or enable_static is yes. -test "$enable_shared" = yes || enable_static=yes -echo "$as_me:$LINENO: result: $enable_static" >&5 -echo "${ECHO_T}$enable_static" >&6 - -test "$ld_shlibs_F77" = no && can_build_shared=no - -GCC_F77="$G77" -LD_F77="$LD" - -lt_prog_compiler_wl_F77= -lt_prog_compiler_pic_F77= -lt_prog_compiler_static_F77= - -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 - - if test "$GCC" = yes; then - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_static_F77='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_F77='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_F77='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_F77='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared_F77=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_F77=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_F77='-fPIC' - ;; - esac - ;; - - *) - lt_prog_compiler_pic_F77='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl_F77='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_F77='-Bstatic' - else - lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_F77='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl_F77='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_F77='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static_F77='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl_F77='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static_F77='-non_shared' - ;; - - newsos6) - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - linux*) - case $CC in - icc* | ecc*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-static' - ;; - ccc*) - lt_prog_compiler_wl_F77='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static_F77='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl_F77='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static_F77='-non_shared' - ;; - - sco3.2v5*) - lt_prog_compiler_pic_F77='-Kpic' - lt_prog_compiler_static_F77='-dn' - ;; - - solaris*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - sunos4*) - lt_prog_compiler_wl_F77='-Qoption ld ' - lt_prog_compiler_pic_F77='-PIC' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - lt_prog_compiler_wl_F77='-Wl,' - lt_prog_compiler_pic_F77='-KPIC' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic_F77='-Kconform_pic' - lt_prog_compiler_static_F77='-Bstatic' - fi - ;; - - uts4*) - lt_prog_compiler_pic_F77='-pic' - lt_prog_compiler_static_F77='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared_F77=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_F77"; then - -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_pic_works_F77=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_F77" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15395: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:15399: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - lt_prog_compiler_pic_works_F77=yes - fi - fi - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 - -if test x"$lt_prog_compiler_pic_works_F77" = xyes; then - case $lt_prog_compiler_pic_F77 in - "" | " "*) ;; - *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; - esac -else - lt_prog_compiler_pic_F77= - lt_prog_compiler_can_build_shared_F77=no -fi - -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_F77= - ;; - *) - lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" - ;; -esac - -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o_F77=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:15455: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:15459: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s out/conftest.err; then - lt_cv_prog_compiler_c_o_F77=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 - - runpath_var= - allow_undefined_flag_F77= - enable_shared_with_static_runtimes_F77=no - archive_cmds_F77= - archive_expsym_cmds_F77= - old_archive_From_new_cmds_F77= - old_archive_from_expsyms_cmds_F77= - export_dynamic_flag_spec_F77= - whole_archive_flag_spec_F77= - thread_safe_flag_spec_F77= - hardcode_libdir_flag_spec_F77= - hardcode_libdir_flag_spec_ld_F77= - hardcode_libdir_separator_F77= - hardcode_direct_F77=no - hardcode_minus_L_F77=no - hardcode_shlibpath_var_F77=unsupported - link_all_deplibs_F77=unknown - hardcode_automatic_F77=no - module_cmds_F77= - module_expsym_cmds_F77= - always_export_symbols_F77=no - export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms_F77= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs_F77=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs_F77=no - cat <<EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_minus_L_F77=yes - - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - ld_shlibs_F77=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_F77=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_F77=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_F77='-L$libdir' - allow_undefined_flag_F77=unsupported - always_export_symbols_F77=no - enable_shared_with_static_runtimes_F77=yes - export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs_F77=no - cat <<EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs_F77=no - fi - ;; - - sunos4*) - archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_cmds_F77="$tmp_archive_cmds" - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test $supports_anon_versioning = yes; then - archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ -cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -$echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - archive_expsym_cmds_F77="$tmp_archive_cmds" - fi - else - ld_shlibs_F77=no - fi - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs_F77=no - fi - ;; - esac - - if test "$ld_shlibs_F77" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_F77='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_F77= - fi - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag_F77=unsupported - always_export_symbols_F77=yes - archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L_F77=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct_F77=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_F77='' - hardcode_direct_F77=yes - hardcode_libdir_separator_F77=':' - link_all_deplibs_F77=yes - - if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct_F77=yes - else - # We have old collect2 - hardcode_direct_F77=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_F77=yes - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_libdir_separator_F77= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols_F77=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_F77='-berok' - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_F77="-z nodefs" - archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF - program main - - end -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_f77_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_F77=' ${wl}-bernotok' - allow_undefined_flag_F77=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_F77=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_F77=' ' - archive_cmds_need_lc_F77=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_minus_L_F77=yes - # see comment about different semantics on the GNU ld section - ld_shlibs_F77=no - ;; - - bsdi4*) - export_dynamic_flag_spec_F77=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_F77=' ' - allow_undefined_flag_F77=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_From_new_cmds_F77='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes_F77=yes - ;; - - darwin* | rhapsody*) - if test "$GXX" = yes ; then - archive_cmds_need_lc_F77=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_F77='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_F77='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_F77='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag_F77='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_F77='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_F77='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_F77='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct_F77=no - hardcode_automatic_F77=yes - hardcode_shlibpath_var_F77=unsupported - whole_archive_flag_spec_F77='-all_load $convenience' - link_all_deplibs_F77=yes - else - ld_shlibs_F77=no - fi - ;; - - dgux*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_shlibpath_var_F77=no - ;; - - freebsd1*) - ld_shlibs_F77=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec_F77='-R$libdir' - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes - hardcode_minus_L_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) - archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_F77='-R$libdir' - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_F77=: - hardcode_direct_F77=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_F77=yes - export_dynamic_flag_spec_F77='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_F77='+b $libdir' - hardcode_libdir_separator_F77=: - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - ;; - ia64*) - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_direct_F77=no - hardcode_shlibpath_var_F77=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_F77=yes - ;; - *) - hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_F77=: - hardcode_direct_F77=yes - export_dynamic_flag_spec_F77='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_F77=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' - fi - hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_F77=: - link_all_deplibs_F77=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec_F77='-R$libdir' - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - newsos6) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes - hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_F77=: - hardcode_shlibpath_var_F77=no - ;; - - openbsd*) - hardcode_direct_F77=yes - hardcode_shlibpath_var_F77=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' - export_dynamic_flag_spec_F77='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_F77='-R$libdir' - ;; - *) - archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_minus_L_F77=yes - allow_undefined_flag_F77=unsupported - archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag_F77=' -expect_unresolved \*' - archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_F77=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag_F77=' -expect_unresolved \*' - archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec_F77='-rpath $libdir' - fi - hardcode_libdir_separator_F77=: - ;; - - sco3.2v5*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_F77=no - export_dynamic_flag_spec_F77='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag_F77=' -z text' - if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - hardcode_libdir_flag_spec_F77='-R$libdir' - hardcode_shlibpath_var_F77=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; - esac - link_all_deplibs_F77=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_direct_F77=yes - hardcode_minus_L_F77=yes - hardcode_shlibpath_var_F77=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds_F77='$CC -r -o $output$reload_objs' - hardcode_direct_F77=no - ;; - motorola) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_F77=no - ;; - - sysv4.3*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_F77=no - export_dynamic_flag_spec_F77='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_F77=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs_F77=yes - fi - ;; - - sysv4.2uw2*) - archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_F77=yes - hardcode_minus_L_F77=no - hardcode_shlibpath_var_F77=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag_F77='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_F77=no - ;; - - sysv5*) - no_undefined_flag_F77=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec_F77= - hardcode_shlibpath_var_F77=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_F77='-L$libdir' - hardcode_shlibpath_var_F77=no - ;; - - *) - ld_shlibs_F77=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 -echo "${ECHO_T}$ld_shlibs_F77" >&6 -test "$ld_shlibs_F77" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_F77" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_F77=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_F77 in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_F77 - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_F77 - allow_undefined_flag_F77= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc_F77=no - else - archive_cmds_need_lc_F77=yes - fi - allow_undefined_flag_F77=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 - ;; - esac - fi - ;; -esac - -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.01* | freebsdelf3.01*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=yes - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 -test "$dynamic_linker" = no && can_build_shared=no - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_F77= -if test -n "$hardcode_libdir_flag_spec_F77" || \ - test -n "$runpath_var F77" || \ - test "X$hardcode_automatic_F77"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct_F77" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && - test "$hardcode_minus_L_F77" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_F77=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_F77=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_F77=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 -echo "${ECHO_T}$hardcode_action_F77" >&6 - -if test "$hardcode_action_F77" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - - - -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler_F77 \ - CC_F77 \ - LD_F77 \ - lt_prog_compiler_wl_F77 \ - lt_prog_compiler_pic_F77 \ - lt_prog_compiler_static_F77 \ - lt_prog_compiler_no_builtin_flag_F77 \ - export_dynamic_flag_spec_F77 \ - thread_safe_flag_spec_F77 \ - whole_archive_flag_spec_F77 \ - enable_shared_with_static_runtimes_F77 \ - old_archive_cmds_F77 \ - old_archive_from_new_cmds_F77 \ - predep_objects_F77 \ - postdep_objects_F77 \ - predeps_F77 \ - postdeps_F77 \ - compiler_lib_search_path_F77 \ - archive_cmds_F77 \ - archive_expsym_cmds_F77 \ - postinstall_cmds_F77 \ - postuninstall_cmds_F77 \ - old_archive_from_expsyms_cmds_F77 \ - allow_undefined_flag_F77 \ - no_undefined_flag_F77 \ - export_symbols_cmds_F77 \ - hardcode_libdir_flag_spec_F77 \ - hardcode_libdir_flag_spec_ld_F77 \ - hardcode_libdir_separator_F77 \ - hardcode_automatic_F77 \ - module_cmds_F77 \ - module_expsym_cmds_F77 \ - lt_cv_prog_compiler_c_o_F77 \ - exclude_expsyms_F77 \ - include_expsyms_F77; do - - case $var in - old_archive_cmds_F77 | \ - old_archive_from_new_cmds_F77 | \ - archive_cmds_F77 | \ - archive_expsym_cmds_F77 | \ - module_cmds_F77 | \ - module_expsym_cmds_F77 | \ - old_archive_from_expsyms_cmds_F77 | \ - export_symbols_cmds_F77 | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -cfgfile="$ofile" - - cat <<__EOF__ >> "$cfgfile" -# ### BEGIN LIBTOOL TAG CONFIG: $tagname - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_F77 - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_compiler_F77 - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_F77 - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_LD_F77 - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_F77 - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_F77 -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_F77 - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds_F77 -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 - -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds_F77 -archive_expsym_cmds=$lt_archive_expsym_cmds_F77 -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds_F77 -module_expsym_cmds=$lt_module_expsym_cmds_F77 - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects_F77 - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_F77 - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps_F77 - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps_F77 - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_F77 - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_F77 - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_F77 - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_F77 - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct_F77 - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L_F77 - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic_F77 - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_F77 - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path_F77" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols_F77 - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_F77 - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_F77 - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_F77 - -# ### END LIBTOOL TAG CONFIG: $tagname - -__EOF__ - - -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - else - tagname="" - fi - ;; - - GCJ) - if test -n "$GCJ" && test "X$GCJ" != "Xno"; then - - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -objext_GCJ=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}\n" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String argv) {}; }\n' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${GCJ-"gcj"} -compiler=$CC -compiler_GCJ=$CC - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -archive_cmds_need_lc_GCJ=no - - -lt_prog_compiler_no_builtin_flag_GCJ= - -if test "$GCC" = yes; then - lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' - - -echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17488: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:17492: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" -else - : -fi - -fi - -lt_prog_compiler_wl_GCJ= -lt_prog_compiler_pic_GCJ= -lt_prog_compiler_static_GCJ= - -echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 - - if test "$GCC" = yes; then - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_static_GCJ='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_GCJ='-Bstatic' - fi - ;; - - amigaos*) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' - ;; - - beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_GCJ='-fno-common' - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared_GCJ=no - enable_shared=no - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_GCJ=-Kconform_pic - fi - ;; - - hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_GCJ='-fPIC' - ;; - esac - ;; - - *) - lt_prog_compiler_pic_GCJ='-fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl_GCJ='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_GCJ='-Bstatic' - else - lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | pw32* | os2*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl_GCJ='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case "$host_cpu" in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_GCJ='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl_GCJ='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static_GCJ='-non_shared' - ;; - - newsos6) - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - linux*) - case $CC in - icc* | ecc*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-static' - ;; - ccc*) - lt_prog_compiler_wl_GCJ='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static_GCJ='-non_shared' - ;; - esac - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl_GCJ='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static_GCJ='-non_shared' - ;; - - sco3.2v5*) - lt_prog_compiler_pic_GCJ='-Kpic' - lt_prog_compiler_static_GCJ='-dn' - ;; - - solaris*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - sunos4*) - lt_prog_compiler_wl_GCJ='-Qoption ld ' - lt_prog_compiler_pic_GCJ='-PIC' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - lt_prog_compiler_wl_GCJ='-Wl,' - lt_prog_compiler_pic_GCJ='-KPIC' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic_GCJ='-Kconform_pic' - lt_prog_compiler_static_GCJ='-Bstatic' - fi - ;; - - uts4*) - lt_prog_compiler_pic_GCJ='-pic' - lt_prog_compiler_static_GCJ='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared_GCJ=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_GCJ"; then - -echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 -echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_prog_compiler_pic_works_GCJ=no - ac_outfile=conftest.$ac_objext - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_GCJ" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17721: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:17725: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s conftest.err; then - lt_prog_compiler_pic_works_GCJ=yes - fi - fi - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 - -if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then - case $lt_prog_compiler_pic_GCJ in - "" | " "*) ;; - *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; - esac -else - lt_prog_compiler_pic_GCJ= - lt_prog_compiler_can_build_shared_GCJ=no -fi - -fi -case "$host_os" in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_GCJ= - ;; - *) - lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" - ;; -esac - -echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_prog_compiler_c_o_GCJ=no - $rm -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:17781: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:17785: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - if test ! -s out/conftest.err; then - lt_cv_prog_compiler_c_o_GCJ=yes - fi - fi - chmod u+w . - $rm conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files - $rm out/* && rmdir out - cd .. - rmdir conftest - $rm conftest* - -fi -echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 -echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 - hard_links=yes - $rm conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - echo "$as_me:$LINENO: result: $hard_links" >&5 -echo "${ECHO_T}$hard_links" >&6 - if test "$hard_links" = no; then - { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - -echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 - - runpath_var= - allow_undefined_flag_GCJ= - enable_shared_with_static_runtimes_GCJ=no - archive_cmds_GCJ= - archive_expsym_cmds_GCJ= - old_archive_From_new_cmds_GCJ= - old_archive_from_expsyms_cmds_GCJ= - export_dynamic_flag_spec_GCJ= - whole_archive_flag_spec_GCJ= - thread_safe_flag_spec_GCJ= - hardcode_libdir_flag_spec_GCJ= - hardcode_libdir_flag_spec_ld_GCJ= - hardcode_libdir_separator_GCJ= - hardcode_direct_GCJ=no - hardcode_minus_L_GCJ=no - hardcode_shlibpath_var_GCJ=unsupported - link_all_deplibs_GCJ=unknown - hardcode_automatic_GCJ=no - module_cmds_GCJ= - module_expsym_cmds_GCJ= - always_export_symbols_GCJ=no - export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms_GCJ= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs_GCJ=yes - if test "$with_gnu_ld" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # See if GNU ld supports shared libraries. - case $host_os in - aix3* | aix4* | aix5*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs_GCJ=no - cat <<EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.9.1, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to modify your PATH -*** so that a non-GNU linker is found, and then restart. - -EOF - fi - ;; - - amigaos*) - archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_minus_L_GCJ=yes - - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - ld_shlibs_GCJ=no - ;; - - beos*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_GCJ=unsupported - # Joseph Beckenbach <jrb3@best.com> says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_GCJ=no - fi - ;; - - cygwin* | mingw* | pw32*) - # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_GCJ='-L$libdir' - allow_undefined_flag_GCJ=unsupported - always_export_symbols_GCJ=no - enable_shared_with_static_runtimes_GCJ=yes - export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' - - if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib' - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris* | sysv5*) - if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then - ld_shlibs_GCJ=no - cat <<EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -EOF - elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs_GCJ=no - fi - ;; - - sunos4*) - archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - - linux*) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - tmp_archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_cmds_GCJ="$tmp_archive_cmds" - supports_anon_versioning=no - case `$LD -v 2>/dev/null` in - *\ 01.* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - if test $supports_anon_versioning = yes; then - archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ -cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -$echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - else - archive_expsym_cmds_GCJ="$tmp_archive_cmds" - fi - else - ld_shlibs_GCJ=no - fi - ;; - - *) - if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs_GCJ=no - fi - ;; - esac - - if test "$ld_shlibs_GCJ" = yes; then - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_GCJ= - fi - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag_GCJ=unsupported - always_export_symbols_GCJ=yes - archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L_GCJ=yes - if test "$GCC" = yes && test -z "$link_static_flag"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct_GCJ=unsupported - fi - ;; - - aix4* | aix5*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - if $NM -V 2>&1 | grep 'GNU' > /dev/null; then - export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix5*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_GCJ='' - hardcode_direct_GCJ=yes - hardcode_libdir_separator_GCJ=':' - link_all_deplibs_GCJ=yes - - if test "$GCC" = yes; then - case $host_os in aix4.012|aix4.012.*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && \ - strings "$collect2name" | grep resolve_lib_name >/dev/null - then - # We have reworked collect2 - hardcode_direct_GCJ=yes - else - # We have old collect2 - hardcode_direct_GCJ=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_GCJ=yes - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_libdir_separator_GCJ= - fi - esac - shared_flag='-shared' - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols_GCJ=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_GCJ='-berok' - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_GCJ="-z nodefs" - archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an empty executable. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - -aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'` -# Check for a 64-bit object if we didn't find anything. -if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -}'`; fi -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi - - hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_GCJ=' ${wl}-bernotok' - allow_undefined_flag_GCJ=' ${wl}-berok' - # -bexpall does not export symbols beginning with underscore (_) - always_export_symbols_GCJ=yes - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_GCJ=' ' - archive_cmds_need_lc_GCJ=yes - # This is similar to how AIX traditionally builds it's shared libraries. - archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_minus_L_GCJ=yes - # see comment about different semantics on the GNU ld section - ld_shlibs_GCJ=no - ;; - - bsdi4*) - export_dynamic_flag_spec_GCJ=-rdynamic - ;; - - cygwin* | mingw* | pw32*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_GCJ=' ' - allow_undefined_flag_GCJ=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_From_new_cmds_GCJ='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' - fix_srcfile_path='`cygpath -w "$srcfile"`' - enable_shared_with_static_runtimes_GCJ=yes - ;; - - darwin* | rhapsody*) - if test "$GXX" = yes ; then - archive_cmds_need_lc_GCJ=no - case "$host_os" in - rhapsody* | darwin1.[012]) - allow_undefined_flag_GCJ='-undefined suppress' - ;; - *) # Darwin 1.3 on - if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then - allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' - else - case ${MACOSX_DEPLOYMENT_TARGET} in - 10.[012]) - allow_undefined_flag_GCJ='-flat_namespace -undefined suppress' - ;; - 10.*) - allow_undefined_flag_GCJ='-undefined dynamic_lookup' - ;; - esac - fi - ;; - esac - lt_int_apple_cc_single_mod=no - output_verbose_link_cmd='echo' - if $CC -dumpspecs 2>&1 | grep 'single_module' >/dev/null ; then - lt_int_apple_cc_single_mod=yes - fi - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_cmds_GCJ='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - else - archive_cmds_GCJ='$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - fi - module_cmds_GCJ='$CC ${wl}-bind_at_load $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's - if test "X$lt_int_apple_cc_single_mod" = Xyes ; then - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r ${wl}-bind_at_load -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - hardcode_direct_GCJ=no - hardcode_automatic_GCJ=yes - hardcode_shlibpath_var_GCJ=unsupported - whole_archive_flag_spec_GCJ='-all_load $convenience' - link_all_deplibs_GCJ=yes - else - ld_shlibs_GCJ=no - fi - ;; - - dgux*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_shlibpath_var_GCJ=no - ;; - - freebsd1*) - ld_shlibs_GCJ=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec_GCJ='-R$libdir' - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes - hardcode_minus_L_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | kfreebsd*-gnu) - archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_GCJ='-R$libdir' - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - hardcode_direct_GCJ=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_GCJ=yes - export_dynamic_flag_spec_GCJ='${wl}-E' - ;; - - hpux10* | hpux11*) - if test "$GCC" = yes -a "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case "$host_cpu" in - hppa*64*|ia64*) - archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags' - ;; - *) - archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - ;; - esac - fi - if test "$with_gnu_ld" = no; then - case "$host_cpu" in - hppa*64*) - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' - hardcode_libdir_separator_GCJ=: - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - ;; - ia64*) - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_direct_GCJ=no - hardcode_shlibpath_var_GCJ=no - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_GCJ=yes - ;; - *) - hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - hardcode_direct_GCJ=yes - export_dynamic_flag_spec_GCJ='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L_GCJ=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' - fi - hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - link_all_deplibs_GCJ=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec_GCJ='-R$libdir' - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - - newsos6) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes - hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - hardcode_shlibpath_var_GCJ=no - ;; - - openbsd*) - hardcode_direct_GCJ=yes - hardcode_shlibpath_var_GCJ=no - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' - export_dynamic_flag_spec_GCJ='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_GCJ='-R$libdir' - ;; - *) - archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' - ;; - esac - fi - ;; - - os2*) - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_minus_L_GCJ=yes - allow_undefined_flag_GCJ=unsupported - archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag_GCJ=' -expect_unresolved \*' - archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - fi - hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_GCJ=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag_GCJ=' -expect_unresolved \*' - archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ - $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec_GCJ='-rpath $libdir' - fi - hardcode_libdir_separator_GCJ=: - ;; - - sco3.2v5*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_GCJ=no - export_dynamic_flag_spec_GCJ='${wl}-Bexport' - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ;; - - solaris*) - no_undefined_flag_GCJ=' -z text' - if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' - else - archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - fi - hardcode_libdir_flag_spec_GCJ='-R$libdir' - hardcode_shlibpath_var_GCJ=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; - esac - link_all_deplibs_GCJ=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_direct_GCJ=yes - hardcode_minus_L_GCJ=yes - hardcode_shlibpath_var_GCJ=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds_GCJ='$CC -r -o $output$reload_objs' - hardcode_direct_GCJ=no - ;; - motorola) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_GCJ=no - ;; - - sysv4.3*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_GCJ=no - export_dynamic_flag_spec_GCJ='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var_GCJ=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs_GCJ=yes - fi - ;; - - sysv4.2uw2*) - archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct_GCJ=yes - hardcode_minus_L_GCJ=no - hardcode_shlibpath_var_GCJ=no - hardcode_runpath_var=yes - runpath_var=LD_RUN_PATH - ;; - - sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*) - no_undefined_flag_GCJ='${wl}-z ${wl}text' - if test "$GCC" = yes; then - archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var_GCJ=no - ;; - - sysv5*) - no_undefined_flag_GCJ=' -z text' - # $CC -shared without GNU ld will not create a library from C++ - # object files and a static libstdc++, better avoid it by now - archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' - hardcode_libdir_flag_spec_GCJ= - hardcode_shlibpath_var_GCJ=no - runpath_var='LD_RUN_PATH' - ;; - - uts4*) - archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec_GCJ='-L$libdir' - hardcode_shlibpath_var_GCJ=no - ;; - - *) - ld_shlibs_GCJ=no - ;; - esac - fi - -echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 -echo "${ECHO_T}$ld_shlibs_GCJ" >&6 -test "$ld_shlibs_GCJ" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_GCJ" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_GCJ=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_GCJ in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 - $rm conftest* - printf "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_GCJ - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ - allow_undefined_flag_GCJ= - if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 - (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - then - archive_cmds_need_lc_GCJ=no - else - archive_cmds_need_lc_GCJ=yes - fi - allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $rm conftest* - echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 -echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 - ;; - esac - fi - ;; -esac - -echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix4* | aix5*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib<name>.so - # instead of lib<name>.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi4*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $rm \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" - ;; - mingw*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` - if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH printed by - # mingw gcc, but we are running on Cygwin. Gcc prints its search - # path with ; separators, and with drive letters. We can handle the - # drive letters (cygwin fileutils understands them), so leave them, - # especially as we might pass files found there to a mingw objdump, - # which wouldn't understand a cygwinified path. Ahh. - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/./-/g'`${versuffix}${shared_ext}' - ;; - esac - ;; - - *) - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - ;; - esac - dynamic_linker='Win32 ld.exe' - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)' - # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. - if test "$GCC" = yes; then - sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` - else - sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' - fi - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -kfreebsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -freebsd*) - objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.01* | freebsdelf3.01*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - *) # from 3.2 on - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case "$host_cpu" in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555. - postinstall_cmds='chmod 555 $lib' - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`$SED -e 's/:,\t/ /g;s/=^=*$//;s/=^= * / /g' /etc/ld.so.conf | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -knetbsd*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='GNU ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -nto-qnx*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -openbsd*) - version_type=sunos - need_lib_prefix=no - need_version=yes - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -sco3.2v5*) - version_type=osf - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - export_dynamic_flag_spec='${wl}-Blargedynsym' - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -echo "${ECHO_T}$dynamic_linker" >&6 -test "$dynamic_linker" = no && can_build_shared=no - -echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -hardcode_action_GCJ= -if test -n "$hardcode_libdir_flag_spec_GCJ" || \ - test -n "$runpath_var GCJ" || \ - test "X$hardcode_automatic_GCJ"="Xyes" ; then - - # We can hardcode non-existant directories. - if test "$hardcode_direct_GCJ" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && - test "$hardcode_minus_L_GCJ" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_GCJ=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_GCJ=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_GCJ=unsupported -fi -echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 -echo "${ECHO_T}$hardcode_action_GCJ" >&6 - -if test "$hardcode_action_GCJ" = relink; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - -striplib= -old_striplib= -echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - ;; - *) - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - ;; - esac -fi - -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - echo "$as_me:$LINENO: checking for shl_load" >&5 -echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -if test "${ac_cv_func_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define shl_load innocuous_shl_load - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shl_load (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef shl_load - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_shl_load) || defined (__stub___shl_load) -choke me -#else -char (*f) () = shl_load; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != shl_load; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -if test $ac_cv_func_shl_load = yes; then - lt_cv_dlopen="shl_load" -else - echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_shl_load+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char shl_load (); -int -main () -{ -shl_load (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_shl_load=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_shl_load=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -else - echo "$as_me:$LINENO: checking for dlopen" >&5 -echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -if test "${ac_cv_func_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen. - For example, HP-UX 11i <limits.h> declares gettimeofday. */ -#define dlopen innocuous_dlopen - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlopen (); below. - Prefer <limits.h> to <assert.h> if __STDC__ is defined, since - <limits.h> exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include <limits.h> -#else -# include <assert.h> -#endif - -#undef dlopen - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -{ -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined (__stub_dlopen) || defined (__stub___dlopen) -choke me -#else -char (*f) () = dlopen; -#endif -#ifdef __cplusplus -} -#endif - -int -main () -{ -return f != dlopen; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_func_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -if test $ac_cv_func_dlopen = yes; then - lt_cv_dlopen="dlopen" -else - echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -if test "${ac_cv_lib_dl_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dl_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -if test $ac_cv_lib_dl_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -if test "${ac_cv_lib_svld_dlopen+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dlopen (); -int -main () -{ -dlopen (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_svld_dlopen=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_svld_dlopen=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -if test $ac_cv_lib_svld_dlopen = yes; then - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -if test "${ac_cv_lib_dld_dld_link+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char dld_link (); -int -main () -{ -dld_link (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" - || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dld_dld_link=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_dld_dld_link=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 19965 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self" >&6 - - if test "x$lt_cv_dlopen_self" = xyes; then - LDFLAGS="$LDFLAGS $link_static_flag" - echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -if test "${lt_cv_dlopen_self_static+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<EOF -#line 20063 "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include <dlfcn.h> -#endif - -#include <stdio.h> - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -#ifdef __cplusplus -extern "C" void exit (int); -#endif - -void fnord() { int i=42;} -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - /* dlclose (self); */ - } - - exit (status); -} -EOF - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler_GCJ \ - CC_GCJ \ - LD_GCJ \ - lt_prog_compiler_wl_GCJ \ - lt_prog_compiler_pic_GCJ \ - lt_prog_compiler_static_GCJ \ - lt_prog_compiler_no_builtin_flag_GCJ \ - export_dynamic_flag_spec_GCJ \ - thread_safe_flag_spec_GCJ \ - whole_archive_flag_spec_GCJ \ - enable_shared_with_static_runtimes_GCJ \ - old_archive_cmds_GCJ \ - old_archive_from_new_cmds_GCJ \ - predep_objects_GCJ \ - postdep_objects_GCJ \ - predeps_GCJ \ - postdeps_GCJ \ - compiler_lib_search_path_GCJ \ - archive_cmds_GCJ \ - archive_expsym_cmds_GCJ \ - postinstall_cmds_GCJ \ - postuninstall_cmds_GCJ \ - old_archive_from_expsyms_cmds_GCJ \ - allow_undefined_flag_GCJ \ - no_undefined_flag_GCJ \ - export_symbols_cmds_GCJ \ - hardcode_libdir_flag_spec_GCJ \ - hardcode_libdir_flag_spec_ld_GCJ \ - hardcode_libdir_separator_GCJ \ - hardcode_automatic_GCJ \ - module_cmds_GCJ \ - module_expsym_cmds_GCJ \ - lt_cv_prog_compiler_c_o_GCJ \ - exclude_expsyms_GCJ \ - include_expsyms_GCJ; do - - case $var in - old_archive_cmds_GCJ | \ - old_archive_from_new_cmds_GCJ | \ - archive_cmds_GCJ | \ - archive_expsym_cmds_GCJ | \ - module_cmds_GCJ | \ - module_expsym_cmds_GCJ | \ - old_archive_from_expsyms_cmds_GCJ | \ - export_symbols_cmds_GCJ | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -cfgfile="$ofile" - - cat <<__EOF__ >> "$cfgfile" -# ### BEGIN LIBTOOL TAG CONFIG: $tagname - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_GCJ - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_compiler_GCJ - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_GCJ - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_LD_GCJ - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_GCJ - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_GCJ -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_GCJ - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds_GCJ -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ - -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds_GCJ -archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds_GCJ -module_expsym_cmds=$lt_module_expsym_cmds_GCJ - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects_GCJ - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_GCJ - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps_GCJ - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps_GCJ - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_GCJ - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_GCJ - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_GCJ - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct_GCJ - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L_GCJ - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic_GCJ - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_GCJ - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path_GCJ" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols_GCJ - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_GCJ - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_GCJ - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_GCJ - -# ### END LIBTOOL TAG CONFIG: $tagname - -__EOF__ - - -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - else - tagname="" - fi - ;; - - RC) - - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -objext_RC=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -CC=${RC-"windres"} -compiler=$CC -compiler_RC=$CC -lt_cv_prog_compiler_c_o_RC=yes - -# The else clause should only fire when bootstrapping the -# libtool distribution, otherwise you forgot to ship ltmain.sh -# with your package, and you will get complaints that there are -# no rules to generate ltmain.sh. -if test -f "$ltmain"; then - # See if we are running on zsh, and set the options which allow our commands through - # without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - # Now quote all the things that may contain metacharacters while being - # careful not to overquote the AC_SUBSTed values. We take copies of the - # variables and quote the copies for generation of the libtool script. - for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \ - SED SHELL STRIP \ - libname_spec library_names_spec soname_spec extract_expsyms_cmds \ - old_striplib striplib file_magic_cmd finish_cmds finish_eval \ - deplibs_check_method reload_flag reload_cmds need_locks \ - lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ - lt_cv_sys_global_symbol_to_c_name_address \ - sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ - old_postinstall_cmds old_postuninstall_cmds \ - compiler_RC \ - CC_RC \ - LD_RC \ - lt_prog_compiler_wl_RC \ - lt_prog_compiler_pic_RC \ - lt_prog_compiler_static_RC \ - lt_prog_compiler_no_builtin_flag_RC \ - export_dynamic_flag_spec_RC \ - thread_safe_flag_spec_RC \ - whole_archive_flag_spec_RC \ - enable_shared_with_static_runtimes_RC \ - old_archive_cmds_RC \ - old_archive_from_new_cmds_RC \ - predep_objects_RC \ - postdep_objects_RC \ - predeps_RC \ - postdeps_RC \ - compiler_lib_search_path_RC \ - archive_cmds_RC \ - archive_expsym_cmds_RC \ - postinstall_cmds_RC \ - postuninstall_cmds_RC \ - old_archive_from_expsyms_cmds_RC \ - allow_undefined_flag_RC \ - no_undefined_flag_RC \ - export_symbols_cmds_RC \ - hardcode_libdir_flag_spec_RC \ - hardcode_libdir_flag_spec_ld_RC \ - hardcode_libdir_separator_RC \ - hardcode_automatic_RC \ - module_cmds_RC \ - module_expsym_cmds_RC \ - lt_cv_prog_compiler_c_o_RC \ - exclude_expsyms_RC \ - include_expsyms_RC; do - - case $var in - old_archive_cmds_RC | \ - old_archive_from_new_cmds_RC | \ - archive_cmds_RC | \ - archive_expsym_cmds_RC | \ - module_cmds_RC | \ - module_expsym_cmds_RC | \ - old_archive_from_expsyms_cmds_RC | \ - export_symbols_cmds_RC | \ - extract_expsyms_cmds | reload_cmds | finish_cmds | \ - postinstall_cmds | postuninstall_cmds | \ - old_postinstall_cmds | old_postuninstall_cmds | \ - sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) - # Double-quote double-evaled strings. - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" - ;; - *) - eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" - ;; - esac - done - - case $lt_echo in - *'\$0 --fallback-echo"') - lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` - ;; - esac - -cfgfile="$ofile" - - cat <<__EOF__ >> "$cfgfile" -# ### BEGIN LIBTOOL TAG CONFIG: $tagname - -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_RC - -# Whether or not to disallow shared libs when runtime libs are static -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# The host system. -host_alias=$host_alias -host=$host - -# An echo program that does not interpret backslashes. -echo=$lt_echo - -# The archiver. -AR=$lt_AR -AR_FLAGS=$lt_AR_FLAGS - -# A C compiler. -LTCC=$lt_LTCC - -# A language-specific compiler. -CC=$lt_compiler_RC - -# Is the compiler the GNU C compiler? -with_gcc=$GCC_RC - -# An ERE matcher. -EGREP=$lt_EGREP - -# The linker used to build libraries. -LD=$lt_LD_RC - -# Whether we need hard or soft links. -LN_S=$lt_LN_S - -# A BSD-compatible nm program. -NM=$lt_NM - -# A symbol stripping program -STRIP=$lt_STRIP - -# Used to examine libraries when file_magic_cmd begins "file" -MAGIC_CMD=$MAGIC_CMD - -# Used on cygwin: DLL creation program. -DLLTOOL="$DLLTOOL" - -# Used on cygwin: object dumper. -OBJDUMP="$OBJDUMP" - -# Used on cygwin: assembler. -AS="$AS" - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_RC - -# Object file suffix (normally "o"). -objext="$ac_objext" - -# Old archive suffix (normally "a"). -libext="$libext" - -# Shared library suffix (normally ".so"). -shrext_cmds='$shrext_cmds' - -# Executable file suffix (normally ""). -exeext="$exeext" - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_RC -pic_mode=$pic_mode - -# What is the maximum length of a command? -max_cmd_len=$lt_cv_sys_max_cmd_len - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC - -# Must we lock files when doing compilation ? -need_locks=$lt_need_locks - -# Do we need the lib prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_RC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC - -# Compiler flag to generate thread-safe objects. -thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC - -# Library versioning type. -version_type=$version_type - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME. -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Commands used to build and install an old-style archive. -RANLIB=$lt_RANLIB -old_archive_cmds=$lt_old_archive_cmds_RC -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC - -# Commands used to build and install a shared archive. -archive_cmds=$lt_archive_cmds_RC -archive_expsym_cmds=$lt_archive_expsym_cmds_RC -postinstall_cmds=$lt_postinstall_cmds -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to build a loadable module (assumed same as above if empty) -module_cmds=$lt_module_cmds_RC -module_expsym_cmds=$lt_module_expsym_cmds_RC - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - -# Dependencies to place before the objects being linked to create a -# shared library. -predep_objects=$lt_predep_objects_RC - -# Dependencies to place after the objects being linked to create a -# shared library. -postdep_objects=$lt_postdep_objects_RC - -# Dependencies to place before the objects being linked to create a -# shared library. -predeps=$lt_predeps_RC - -# Dependencies to place after the objects being linked to create a -# shared library. -postdeps=$lt_postdeps_RC - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_RC - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method == file_magic. -file_magic_cmd=$lt_file_magic_cmd - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_RC - -# Flag that forces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_RC - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# Same as above, but a single script fragment to be evaled but not shown. -finish_eval=$lt_finish_eval - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# This is the shared library runtime path variable. -runpath_var=$runpath_var - -# This is the shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_RC - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC - -# If ld is used when linking, flag to hardcode \$libdir into -# a binary during linking. This must work even if \$libdir does -# not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC - -# Whether we need a single -rpath flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC - -# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -# resulting binary. -hardcode_direct=$hardcode_direct_RC - -# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -# resulting binary. -hardcode_minus_L=$hardcode_minus_L_RC - -# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -# the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_RC - -# Set to yes if building a shared library automatically hardcodes DIR into the library -# and all subsequent libraries and executables linked against it. -hardcode_automatic=$hardcode_automatic_RC - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at relink time. -variables_saved_for_relink="$variables_saved_for_relink" - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_RC - -# Compile-time system search path for libraries -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Fix the shell variable \$srcfile for the compiler. -fix_srcfile_path="$fix_srcfile_path_RC" - -# Set to yes if exported symbols are required. -always_export_symbols=$always_export_symbols_RC - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_RC - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_RC - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_RC - -# ### END LIBTOOL TAG CONFIG: $tagname - -__EOF__ - - -else - # If there is no Makefile yet, we rely on a make rule to execute - # `config.status --recheck' to rerun these tests and create the - # libtool script then. - ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` - if test -f "$ltmain_in"; then - test -f Makefile && make "$ltmain" - fi -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - ;; - - *) - { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 -echo "$as_me: error: Unsupported tag name: $tagname" >&2;} - { (exit 1); exit 1; }; } - ;; - esac - - # Append the new tag name to the list of available tags. - if test -n "$tagname" ; then - available_tags="$available_tags $tagname" - fi - fi - done - IFS="$lt_save_ifs" - - # Now substitute the updated list of available tags. - if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then - mv "${ofile}T" "$ofile" - chmod +x "$ofile" - else - rm -f "${ofile}T" - { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 -echo "$as_me: error: unable to update list of available tagged configurations." >&2;} - { (exit 1); exit 1; }; } - fi -fi - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - -# Prevent multiple expansion - - - - - - - - - - - - - - - - - - - - -# urgh -- these are internal libtool variables... - - - - - -# configuration file -- stay in 8.3 limit -# -# since #undef doesn't survive in configuration header files we replace -# `/undef' with `#undef' after creating the output file - - ac_config_headers="$ac_config_headers ftconfig.h:ftconfig.in" - - -# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' -# and 'builds/unix/unix-cc.mk' that will be used by the build system -# - ac_config_files="$ac_config_files unix-cc.mk:unix-cc.in unix-def.mk:unix-def.in freetype-config freetype2.pc:freetype2.in" - - -# re-generate the Jamfile to use libtool now -# -# AC_CONFIG_FILES([../../Jamfile:../../Jamfile.in]) - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` - # 2. Add them. - ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi -DUALCASE=1; export DUALCASE # for MKS sh - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# Find who we are. Look in the path if we contain no path at all -# relative or not. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} - { (exit 1); exit 1; }; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -$as_unset ENV MAIL MAILPATH -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)$' \| \ - . : '\(.\)' 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } - /^X\/\(\/\/\)$/{ s//\1/; q; } - /^X\/\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x$as_lineno_3" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s,[$]LINENO.*,&-, - t lineno - b - : lineno - N - : loop - s,[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\),\2\1\2, - t loop - s,-\n.*,, - ' >$as_me.lineno && - chmod +x $as_me.lineno || - { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensible to this). - . ./$as_me.lineno - # Exit status is that of the last command. - exit -} - - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_executable_p="test -f" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH - -exec 6>&1 - -# Open the log real soon, to keep \$[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. Logging --version etc. is OK. -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX -} >&5 -cat >&5 <<_CSEOF - -This file was extended by $as_me, which was -generated by GNU Autoconf 2.59a. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -_CSEOF -echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -echo >&5 -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\_ACEOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to <bug-autoconf@gnu.org>." -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.59a, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2004 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=$srcdir -INSTALL="$INSTALL" -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - ac_shift=: - ;; - -*) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_option=$1 - ac_need_defaults=false;; - esac - - case $ac_option in - # Handling of the options. -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:$LINENO: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&5 -echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF - - - - - -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "unix-cc.mk" ) CONFIG_FILES="$CONFIG_FILES unix-cc.mk:unix-cc.in" ;; - "unix-def.mk" ) CONFIG_FILES="$CONFIG_FILES unix-def.mk:unix-def.in" ;; - "freetype-config" ) CONFIG_FILES="$CONFIG_FILES freetype-config" ;; - "freetype2.pc" ) CONFIG_FILES="$CONFIG_FILES freetype2.pc:freetype2.in" ;; - "ftconfig.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ftconfig.h:ftconfig.in" ;; - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason to put it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -f -r $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./confstat$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "\$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@DEFS@,$DEFS,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@LIBS@,$LIBS,;t t -s,@version_info@,$version_info,;t t -s,@ft_version@,$ft_version,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@target@,$target,;t t -s,@target_cpu@,$target_cpu,;t t -s,@target_vendor@,$target_vendor,;t t -s,@target_os@,$target_os,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CPP@,$CPP,;t t -s,@XX_CFLAGS@,$XX_CFLAGS,;t t -s,@XX_ANSIFLAGS@,$XX_ANSIFLAGS,;t t -s,@RMF@,$RMF,;t t -s,@RMDIR@,$RMDIR,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@GREP@,$GREP,;t t -s,@EGREP@,$EGREP,;t t -s,@FTSYS_SRC@,$FTSYS_SRC,;t t -s,@LIBZ@,$LIBZ,;t t -s,@SYSTEM_ZLIB@,$SYSTEM_ZLIB,;t t -s,@LN_S@,$LN_S,;t t -s,@ECHO@,$ECHO,;t t -s,@AR@,$AR,;t t -s,@ac_ct_AR@,$ac_ct_AR,;t t -s,@RANLIB@,$RANLIB,;t t -s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -s,@STRIP@,$STRIP,;t t -s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -s,@CXX@,$CXX,;t t -s,@CXXFLAGS@,$CXXFLAGS,;t t -s,@ac_ct_CXX@,$ac_ct_CXX,;t t -s,@CXXCPP@,$CXXCPP,;t t -s,@F77@,$F77,;t t -s,@FFLAGS@,$FFLAGS,;t t -s,@ac_ct_F77@,$ac_ct_F77,;t t -s,@LIBTOOL@,$LIBTOOL,;t t -s,@enable_shared@,$enable_shared,;t t -s,@hardcode_libdir_flag_spec@,$hardcode_libdir_flag_spec,;t t -s,@wl@,$wl,;t t -s,@LIBOBJS@,$LIBOBJS,;t t -s,@LTLIBOBJS@,$LTLIBOBJS,;t t -CEOF - -_ACEOF - - cat >>$CONFIG_STATUS <<\_ACEOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # is no need to browse any of the substitutions). - # These are the two extra sed commands mentioned above. - (echo ':t - /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - test -d "$ac_dir" || mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - ac_builddir=. - -if test "$ac_dir" != .; then - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A "../" for each directory in $ac_dir_suffix. - ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -else - ac_dir_suffix= ac_top_builddir= -fi - -case $srcdir in - .) # No --srcdir option. We are building in place. - ac_srcdir=. - if test -z "$ac_top_builddir"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_builddir$srcdir ;; -esac - -# Do not use `cd foo && pwd` to compute absolute paths, because -# the directories may not exist. -case `pwd` in -.) ac_abs_builddir="$ac_dir";; -*) - case "$ac_dir" in - .) ac_abs_builddir=`pwd`;; - [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; - *) ac_abs_builddir=`pwd`/"$ac_dir";; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_builddir=${ac_top_builddir}.;; -*) - case ${ac_top_builddir}. in - .) ac_abs_top_builddir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; - *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_srcdir=$ac_srcdir;; -*) - case $ac_srcdir in - .) ac_abs_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; - *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; - esac;; -esac -case $ac_abs_builddir in -.) ac_abs_top_srcdir=$ac_top_srcdir;; -*) - case $ac_top_srcdir in - .) ac_abs_top_srcdir=$ac_abs_builddir;; - [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; - *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; - esac;; -esac - - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_builddir$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - configure_input= - else - configure_input="$ac_file. " - fi - configure_input=$configure_input"Generated from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@abs_srcdir@,$ac_abs_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -s,@builddir@,$ac_builddir,;t t -s,@abs_builddir@,$ac_abs_builddir,;t t -s,@top_builddir@,$ac_top_builddir,;t t -s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - # Do quote $f, to prevent DOS paths from being IFS'd. - echo "$f";; - *) # Relative - if test -f "$f"; then - # Build tree - echo "$f" - elif test -f "$srcdir/$f"; then - # Source tree - echo "$srcdir/$f" - else - # /dev/null tree - { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -_ACEOF - -# Transform confdefs.h into two sed scripts, `conftest.defines' and -# `conftest.undefs', that substitutes the proper values into -# config.h.in to produce config.h. The first handles `#define' -# templates, and the second `#undef' templates. -# And first: Protect against being on the right side of a sed subst in -# config.status. Protect against being in an unquoted here document -# in config.status. -rm -f conftest.defines conftest.undefs -# Using a here document instead of a string reduces the quoting nightmare. -# Putting comments in sed scripts is not portable. -# -# `end' is used to avoid that the second main sed command (meant for -# 0-ary CPP macros) applies to n-ary macro definitions. -# See the Autoconf documentation for `clear'. -cat >confdef2sed.sed <<\_ACEOF -s/[\\&,]/\\&/g -s,[\\$`],\\&,g -t clear -: clear -s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -t end -s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -: end -_ACEOF -# If some macros were called several times there might be several times -# the same #defines, which is useless. Nevertheless, we may not want to -# sort them, since we want the *last* AC-DEFINE to be honored. -uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -rm -f confdef2sed.sed - -# This sed command replaces #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -cat >>conftest.undefs <<\_ACEOF -s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -_ACEOF - -# Break up conftest.defines because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -echo ' :' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.defines >/dev/null -do - # Write a limited-size here document to $tmp/defines.sed. - echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#define' lines. - echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/defines.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines -echo ' fi # grep' >>$CONFIG_STATUS -echo >>$CONFIG_STATUS - -# Break up conftest.undefs because some shells have a limit on the size -# of here documents, and old seds have small limits too (100 cmds). -echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -rm -f conftest.tail -while grep . conftest.undefs >/dev/null -do - # Write a limited-size here document to $tmp/undefs.sed. - echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS - # Speed up: don't consider the non `#undef' - echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS - # Work around the forget-to-reset-the-flag bug. - echo 't clr' >>$CONFIG_STATUS - echo ': clr' >>$CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS - echo 'CEOF - sed -f $tmp/undefs.sed $tmp/in >$tmp/out - rm -f $tmp/in - mv $tmp/out $tmp/in -' >>$CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail - rm -f conftest.undefs - mv conftest.tail conftest.undefs -done -rm -f conftest.undefs - -cat >>$CONFIG_STATUS <<\_ACEOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - rm -f $tmp/in - if test x"$ac_file" != x-; then - if diff $ac_file $tmp/config.h >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`(dirname "$ac_file") 2>/dev/null || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - { if $as_mkdir_p; then - test -d "$ac_dir" || mkdir -p "$ac_dir" - else - as_dir="$ac_dir" - as_dirs= - while test ! -d "$as_dir"; do - as_dirs="$as_dir $as_dirs" - as_dir=`(dirname "$as_dir") 2>/dev/null || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - done - test ! -n "$as_dirs" || mkdir $as_dirs - fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} - { (exit 1); exit 1; }; }; } - - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi - # Run the commands associated with the file. - case $ac_file in - ftconfig.h ) mv ftconfig.h ftconfig.tmp - sed 's|/undef|#undef|' < ftconfig.tmp > ftconfig.h - rm ftconfig.tmp ;; - esac -done -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - - -# end of configure.ac diff --git a/nx-X11/extras/freetype2/builds/unix/configure.ac b/nx-X11/extras/freetype2/builds/unix/configure.ac deleted file mode 100644 index 71a04ce90..000000000 --- a/nx-X11/extras/freetype2/builds/unix/configure.ac +++ /dev/null @@ -1,178 +0,0 @@ -# This file is part of the FreeType project. -# -# Process this file with autoconf to produce a configure script. - -AC_INIT -AC_CONFIG_SRCDIR([ftconfig.in]) - - -# Don't forget to update docs/VERSION.DLL! - -version_info='9:7:3' -AC_SUBST([version_info]) -ft_version=`echo $version_info | tr : .` -AC_SUBST([ft_version]) - - -# checks for system type - -AC_CANONICAL_TARGET - - -# checks for programs - -AC_PROG_CC -AC_PROG_CPP - - -# get compiler flags right - -if test "x$CC" = xgcc; then - XX_CFLAGS="-Wall" - XX_ANSIFLAGS="-pedantic -ansi" -else - case "$host" in - *-dec-osf*) - CFLAGS= - XX_CFLAGS="-std1 -g3" - XX_ANSIFLAGS= - ;; - *) - XX_CFLAGS= - XX_ANSIFLAGS= - ;; - esac -fi -AC_SUBST([XX_CFLAGS]) -AC_SUBST([XX_ANSIFLAGS]) - - -# auxiliary programs - -AC_CHECK_PROG([RMF], [rm], [rm -f]) -AC_CHECK_PROG([RMDIR], [rmdir], [rmdir]) - - -# Since this file will be finally moved to another directory we make -# the path of the install script absolute. This small code snippet has -# been taken from automake's `ylwrap' script. - -AC_PROG_INSTALL -case "$INSTALL" in -/*) - ;; -*/*) - INSTALL="`pwd`/$INSTALL" ;; -esac - - -# checks for header files - -AC_HEADER_STDC -AC_CHECK_HEADERS([fcntl.h unistd.h]) - - -# checks for typedefs, structures, and compiler characteristics - -AC_C_CONST -AC_CHECK_SIZEOF([int]) -AC_CHECK_SIZEOF([long]) - - -# checks for library functions - -# Here we check whether we can use our mmap file component. - -AC_FUNC_MMAP -if test "$ac_cv_func_mmap_fixed_mapped" != yes; then - FTSYS_SRC='$(BASE_DIR)/ftsystem.c' -else - FTSYS_SRC='$(BUILD_DIR)/ftsystem.c' - - AC_CHECK_DECLS([munmap], - [], - [], - [ - -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif -#include <sys/mman.h> - - ]) - - FT_MUNMAP_PARAM -fi -AC_SUBST([FTSYS_SRC]) - -AC_CHECK_FUNCS([memcpy memmove]) - - -# Check for system zlib - -AC_ARG_WITH([zlib], - dnl don't quote AS_HELP_STRING! - AS_HELP_STRING([--without-zlib], - [use internal zlib instead of system-wide])) -if test x$with_zlib != xno && test -z "$LIBZ"; then - AC_CHECK_LIB([z], [gzsetparams], [AC_CHECK_HEADER([zlib.h], [LIBZ='-lz'])]) -fi -if test x$with_zlib != xno && test -n "$LIBZ"; then - CFLAGS="$CFLAGS -DFT_CONFIG_OPTION_SYSTEM_ZLIB" - LDFLAGS="$LDFLAGS $LIBZ" - SYSTEM_ZLIB=yes -fi - - -# Whether to use Mac OS resource-based fonts or not - -AC_ARG_WITH([old-mac-fonts], - dnl don't quote AS_HELP_STRING! - AS_HELP_STRING([--with-old-mac-fonts], - [allow Mac resource-based fonts to be used])) -if test x$with_old_mac_fonts = xyes; then - LDFLAGS="$LDFLAGS -Xlinker -framework -Xlinker CoreServices \ - -Xlinker -framework -Xlinker ApplicationServices" -else - CFLAGS="$CFLAGS -DDARWIN_NO_CARBON" -fi - - -AC_SUBST([LIBZ]) -AC_SUBST([CFLAGS]) -AC_SUBST([LDFLAGS]) -AC_SUBST([SYSTEM_ZLIB]) - - -AC_PROG_LIBTOOL -# urgh -- these are internal libtool variables... -AC_SUBST([enable_shared]) -AC_SUBST([hardcode_libdir_flag_spec]) -AC_SUBST([wl]) - - -# configuration file -- stay in 8.3 limit -# -# since #undef doesn't survive in configuration header files we replace -# `/undef' with `#undef' after creating the output file - -AC_CONFIG_HEADERS([ftconfig.h:ftconfig.in], - [mv ftconfig.h ftconfig.tmp - sed 's|/undef|#undef|' < ftconfig.tmp > ftconfig.h - rm ftconfig.tmp]) - -# create the Unix-specific sub-Makefiles `builds/unix/unix-def.mk' -# and 'builds/unix/unix-cc.mk' that will be used by the build system -# -AC_CONFIG_FILES([unix-cc.mk:unix-cc.in - unix-def.mk:unix-def.in - freetype-config - freetype2.pc:freetype2.in]) - -# re-generate the Jamfile to use libtool now -# -# AC_CONFIG_FILES([../../Jamfile:../../Jamfile.in]) - -AC_OUTPUT - -# end of configure.ac diff --git a/nx-X11/extras/freetype2/builds/unix/detect.mk b/nx-X11/extras/freetype2/builds/unix/detect.mk deleted file mode 100644 index a0419dce7..000000000 --- a/nx-X11/extras/freetype2/builds/unix/detect.mk +++ /dev/null @@ -1,90 +0,0 @@ -# -# FreeType 2 configuration file to detect a UNIX host platform. -# - - -# Copyright 1996-2000, 2002, 2003, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -.PHONY: setup - -ifeq ($(PLATFORM),ansi) - - # Note: this test is duplicated in "builds/toplevel.mk". - # - is_unix := $(strip $(wildcard /sbin/init) \ - $(wildcard /usr/sbin/init) \ - $(wildcard /hurd/auth)) - ifneq ($(is_unix),) - - PLATFORM := unix - - endif # test is_unix -endif # test PLATFORM ansi - -ifeq ($(PLATFORM),unix) - COPY := cp - DELETE := rm -f - - # If `devel' is the requested target, we use a special configuration - # file named `unix-dev.mk'. It disables optimization and libtool. - # - ifneq ($(findstring devel,$(MAKECMDGOALS)),) - CONFIG_FILE := unix-dev.mk - CC := gcc - devel: setup - .PHONY: devel - else - - # If `lcc' is the requested target, we use a special configuration - # file named `unix-lcc.mk'. It disables libtool for LCC. - # - ifneq ($(findstring lcc,$(MAKECMDGOALS)),) - CONFIG_FILE := unix-lcc.mk - CC := lcc - lcc: setup - .PHONY: lcc - else - - # If a Unix platform is detected, the configure script is called and - # `unix-def.mk' together with `unix-cc.mk' is created. - # - # Arguments to `configure' should be in the CFG variable. Example: - # - # make CFG="--prefix=/usr --disable-static" - # - # If you need to set CFLAGS or LDFLAGS, do it here also. - # - # Feel free to add support for other platform specific compilers in - # this directory (e.g. solaris.mk + changes here to detect the - # platform). - # - CONFIG_FILE := unix.mk - setup: $(BUILD_DIR)/unix-def.mk - unix: setup - .PHONY: unix - endif - endif - - setup: std_setup - - have_mk := $(strip $(wildcard $(OBJ_DIR)/Makefile)) - ifneq ($(have_mk),) - # we are building FT2 not in the src tree - $(BUILD_DIR)/unix-def.mk: $(TOP_DIR)/builds/unix/unix-def.in - $(TOP_DIR)/builds/unix/configure $(CFG) - else - $(BUILD_DIR)/unix-def.mk: $(TOP_DIR)/builds/unix/unix-def.in - cd builds/unix; ./configure $(CFG) - endif - -endif # test PLATFORM unix - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/freetype-config.in b/nx-X11/extras/freetype2/builds/unix/freetype-config.in deleted file mode 100644 index 9a6ae100d..000000000 --- a/nx-X11/extras/freetype2/builds/unix/freetype-config.in +++ /dev/null @@ -1,134 +0,0 @@ -#! /bin/sh - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -exec_prefix_set=no -includedir=@includedir@ -libdir=@libdir@ -enable_shared=@enable_shared@ -wl=@wl@ -hardcode_libdir_flag_spec='@hardcode_libdir_flag_spec@' - -usage() -{ - cat <<EOF -Usage: freetype-config [OPTION]... -Get FreeType compilation and linking information. - -Options: - --prefix display \`--prefix' value used for building the - FreeType library - --prefix=PREFIX override \`--prefix' value with PREFIX - --exec-prefix display \`--exec-prefix' value used for building - the FreeType library - --exec-prefix=EPREFIX override \`--exec-prefix' value with EPREFIX - --version display libtool version of the FreeType library - --libs display flags for linking with the FreeType library - --libtool display library name for linking with libtool - --cflags display flags for compiling with the FreeType - library -EOF - exit $1 -} - -if test $# -eq 0 ; then - usage 1 1>&2 -fi - -while test $# -gt 0 ; do - case "$1" in - -*=*) - optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` - ;; - *) - optarg= - ;; - esac - - case $1 in - --prefix=*) - prefix=$optarg - local_prefix=yes - ;; - --prefix) - echo_prefix=yes - ;; - --exec-prefix=*) - exec_prefix=$optarg - exec_prefix_set=yes - local_prefix=yes - ;; - --exec-prefix) - echo_exec_prefix=yes - ;; - --version) - echo @ft_version@ - exit 0 - ;; - --cflags) - echo_cflags=yes - ;; - --libs) - echo_libs=yes - ;; - --libtool) - echo_libtool=yes - ;; - *) - usage 1 1>&2 - ;; - esac - shift -done - -if test "$local_prefix" = "yes" ; then - if test "$exec_prefix_set" != "yes" ; then - exec_prefix=$prefix - fi -fi - -if test "$echo_prefix" = "yes" ; then - echo $prefix -fi - -if test "$echo_exec_prefix" = "yes" ; then - echo $exec_prefix -fi - -if test "$exec_prefix_set" = "yes" ; then - libdir=$exec_prefix/lib -else - if test "$local_prefix" = "yes" ; then - includedir=$prefix/include - libdir=$prefix/lib - fi -fi - -if test "$echo_cflags" = "yes" ; then - cflags="-I$includedir/freetype2" - if test "$includedir" != "/usr/include" ; then - echo $cflags -I$includedir - else - echo $cflags - fi -fi - -if test "$echo_libs" = "yes" ; then - rpath= - if test "$enable_shared" = "yes" ; then - eval "rpath=\"$hardcode_libdir_flag_spec\"" - fi - libs="-lfreetype @LIBZ@" - if test "$libdir" != "/usr/lib" ; then - echo -L$libdir $rpath $libs - else - echo $libs - fi -fi - -if test "$echo_libtool" = "yes" ; then - convlib="libfreetype.la" - echo $libdir/$convlib -fi - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/freetype2.in b/nx-X11/extras/freetype2/builds/unix/freetype2.in deleted file mode 100644 index 0bc22d1ba..000000000 --- a/nx-X11/extras/freetype2/builds/unix/freetype2.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: FreeType 2 -Description: A free, high-quality, and portable font engine. -Version: @ft_version@ -Requires: -Libs: -L${libdir} -lfreetype @LIBZ@ -Cflags: -I${includedir}/freetype2 diff --git a/nx-X11/extras/freetype2/builds/unix/freetype2.m4 b/nx-X11/extras/freetype2/builds/unix/freetype2.m4 deleted file mode 100644 index 7424a32ab..000000000 --- a/nx-X11/extras/freetype2/builds/unix/freetype2.m4 +++ /dev/null @@ -1,178 +0,0 @@ -# Configure paths for FreeType2 -# Marcelo Magallon 2001-10-26, based on gtk.m4 by Owen Taylor -# -# serial 2 - -# AC_CHECK_FT2([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -# Test for FreeType 2, and define FT2_CFLAGS and FT2_LIBS. -# MINIMUM-VERSION is what libtool reports; the default is `7.0.1' (this is -# FreeType 2.0.4). -# -AC_DEFUN([AC_CHECK_FT2], - [# Get the cflags and libraries from the freetype-config script - # - AC_ARG_WITH([ft-prefix], - dnl don't quote AS_HELP_STRING! - AS_HELP_STRING([--with-ft-prefix=PREFIX], - [Prefix where FreeType is installed (optional)]), - [ft_config_prefix="$withval"], - [ft_config_prefix=""]) - - AC_ARG_WITH([ft-exec-prefix], - dnl don't quote AS_HELP_STRING! - AS_HELP_STRING([--with-ft-exec-prefix=PREFIX], - [Exec prefix where FreeType is installed (optional)]), - [ft_config_exec_prefix="$withval"], - [ft_config_exec_prefix=""]) - - AC_ARG_ENABLE([freetypetest], - dnl don't quote AS_HELP_STRING! - AS_HELP_STRING([--disable-freetypetest], - [Do not try to compile and run a test FreeType program]), - [], - [enable_fttest=yes]) - - if test x$ft_config_exec_prefix != x ; then - ft_config_args="$ft_config_args --exec-prefix=$ft_config_exec_prefix" - if test x${FT2_CONFIG+set} != xset ; then - FT2_CONFIG=$ft_config_exec_prefix/bin/freetype-config - fi - fi - - if test x$ft_config_prefix != x ; then - ft_config_args="$ft_config_args --prefix=$ft_config_prefix" - if test x${FT2_CONFIG+set} != xset ; then - FT2_CONFIG=$ft_config_prefix/bin/freetype-config - fi - fi - - AC_PATH_PROG([FT2_CONFIG], [freetype-config], [no]) - - min_ft_version=m4_if([$1], [], [7.0.1], [$1]) - AC_MSG_CHECKING([for FreeType -- version >= $min_ft_version]) - no_ft="" - if test "$FT2_CONFIG" = "no" ; then - no_ft=yes - else - FT2_CFLAGS=`$FT2_CONFIG $ft_config_args --cflags` - FT2_LIBS=`$FT2_CONFIG $ft_config_args --libs` - ft_config_major_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - ft_config_minor_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - ft_config_micro_version=`$FT2_CONFIG $ft_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - ft_min_major_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - ft_min_minor_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - ft_min_micro_version=`echo $min_ft_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test x$enable_fttest = xyes ; then - ft_config_is_lt="" - if test $ft_config_major_version -lt $ft_min_major_version ; then - ft_config_is_lt=yes - else - if test $ft_config_major_version -eq $ft_min_major_version ; then - if test $ft_config_minor_version -lt $ft_min_minor_version ; then - ft_config_is_lt=yes - else - if test $ft_config_minor_version -eq $ft_min_minor_version ; then - if test $ft_config_micro_version -lt $ft_min_micro_version ; then - ft_config_is_lt=yes - fi - fi - fi - fi - fi - if test x$ft_config_is_lt = xyes ; then - no_ft=yes - else - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $FT2_CFLAGS" - LIBS="$FT2_LIBS $LIBS" - - # - # Sanity checks for the results of freetype-config to some extent. - # - AC_RUN_IFELSE([ - AC_LANG_SOURCE([[ - -#include <ft2build.h> -#include FT_FREETYPE_H -#include <stdio.h> -#include <stdlib.h> - -int -main() -{ - FT_Library library; - FT_Error error; - - error = FT_Init_FreeType(&library); - - if (error) - return 1; - else - { - FT_Done_FreeType(library); - return 0; - } -} - - ]]) - ], - [], - [no_ft=yes], - [echo $ECHO_N "cross compiling; assuming OK... $ECHO_C"]) - - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi # test $ft_config_version -lt $ft_min_version - fi # test x$enable_fttest = xyes - fi # test "$FT2_CONFIG" = "no" - - if test x$no_ft = x ; then - AC_MSG_RESULT([yes]) - m4_if([$2], [], [:], [$2]) - else - AC_MSG_RESULT([no]) - if test "$FT2_CONFIG" = "no" ; then - AC_MSG_WARN([ - - The freetype-config script installed by FreeType 2 could not be found. - If FreeType 2 was installed in PREFIX, make sure PREFIX/bin is in - your path, or set the FT2_CONFIG environment variable to the - full path to freetype-config. - ]) - else - if test x$ft_config_is_lt = xyes ; then - AC_MSG_WARN([ - - Your installed version of the FreeType 2 library is too old. - If you have different versions of FreeType 2, make sure that - correct values for --with-ft-prefix or --with-ft-exec-prefix - are used, or set the FT2_CONFIG environment variable to the - full path to freetype-config. - ]) - else - AC_MSG_WARN([ - - The FreeType test program failed to run. If your system uses - shared libraries and they are installed outside the normal - system library path, make sure the variable LD_LIBRARY_PATH - (or whatever is appropiate for your system) is correctly set. - ]) - fi - fi - - FT2_CFLAGS="" - FT2_LIBS="" - m4_if([$3], [], [:], [$3]) - fi - - AC_SUBST([FT2_CFLAGS]) - AC_SUBST([FT2_LIBS])]) - -# end of freetype2.m4 diff --git a/nx-X11/extras/freetype2/builds/unix/ft-munmap.m4 b/nx-X11/extras/freetype2/builds/unix/ft-munmap.m4 deleted file mode 100644 index 0036ffb61..000000000 --- a/nx-X11/extras/freetype2/builds/unix/ft-munmap.m4 +++ /dev/null @@ -1,23 +0,0 @@ -## FreeType specific autoconf tests - -# serial 2 - -AC_DEFUN([FT_MUNMAP_PARAM], - [AC_MSG_CHECKING([for munmap's first parameter type]) - AC_COMPILE_IFELSE([ - AC_LANG_SOURCE([[ - -#include <unistd.h> -#include <sys/mman.h> -int munmap(void *, size_t); - - ]]) - ], - [AC_MSG_RESULT([void *]) - AC_DEFINE([MUNMAP_USES_VOIDP], - [], - [Define to 1 if the first argument of munmap is of type void *])], - [AC_MSG_RESULT([char *])]) - ]) - -# end of ft-munmap.m4 diff --git a/nx-X11/extras/freetype2/builds/unix/ft2unix.h b/nx-X11/extras/freetype2/builds/unix/ft2unix.h deleted file mode 100644 index 7390dc494..000000000 --- a/nx-X11/extras/freetype2/builds/unix/ft2unix.h +++ /dev/null @@ -1,61 +0,0 @@ -/***************************************************************************/ -/* */ -/* ft2build.h */ -/* */ -/* Build macros of the FreeType 2 library. */ -/* */ -/* Copyright 1996-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This is a Unix-specific version of <ft2build.h> that should be used */ - /* exclusively *after* installation of the library. */ - /* */ - /* It assumes that "/usr/local/include/freetype2" (or whatever is */ - /* returned by the "freetype-config --cflags" or "pkg-config --cflags" */ - /* command) is in your compilation include path. */ - /* */ - /* We don't need to do anything special in this release. However, for */ - /* a future FreeType 2 release, the following installation changes will */ - /* be performed: */ - /* */ - /* - The contents of "freetype-2.x/include/freetype" will be installed */ - /* to "/usr/local/include/freetype2" instead of */ - /* "/usr/local/include/freetype2/freetype". */ - /* */ - /* - This file will #include <freetype2/config/ftheader.h>, instead */ - /* of <freetype/config/ftheader.h>. */ - /* */ - /* - The contents of "ftheader.h" will be processed with `sed' to */ - /* replace all "<freetype/xxx>" with "<freetype2/xxx>". */ - /* */ - /* - Adding "/usr/local/include/freetype2" to your compilation include */ - /* path will not be necessary anymore. */ - /* */ - /* These changes will be transparent to client applications which use */ - /* freetype-config (or pkg-config). No modifications will be necessary */ - /* to compile with the new scheme. */ - /* */ - /*************************************************************************/ - - -#ifndef __FT2_BUILD_UNIX_H__ -#define __FT2_BUILD_UNIX_H__ - - /* "<prefix>/include/freetype2" must be in your current inclusion path */ -#include <freetype/config/ftheader.h> - -#endif /* __FT2_BUILD_UNIX_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/builds/unix/ftconfig.in b/nx-X11/extras/freetype2/builds/unix/ftconfig.in deleted file mode 100644 index 6d8f1e856..000000000 --- a/nx-X11/extras/freetype2/builds/unix/ftconfig.in +++ /dev/null @@ -1,334 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftconfig.in */ -/* */ -/* UNIX-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This header file contains a number of macro definitions that are used */ - /* by the rest of the engine. Most of the macros here are automatically */ - /* determined at compile time, and you should not need to change it to */ - /* port FreeType, except to compile the library with a non-ANSI */ - /* compiler. */ - /* */ - /* Note however that if some specific modifications are needed, we */ - /* advise you to place a modified copy in your build directory. */ - /* */ - /* The build directory is usually `freetype/builds/<system>', and */ - /* contains system-specific files that are always included first when */ - /* building the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ - -#include <ft2build.h> -#include FT_CONFIG_OPTIONS_H -#include FT_CONFIG_STANDARD_LIBRARY_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled to suit a specific system. The current */ - /* ones are defaults used to compile FreeType in an ANSI C environment */ - /* (16bit compilers are also supported). Copy this file to your own */ - /* `freetype/builds/<system>' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ - - -#undef HAVE_UNISTD_H -#undef HAVE_FCNTL_H - -#undef SIZEOF_INT -#undef SIZEOF_LONG - - -#define FT_SIZEOF_INT SIZEOF_INT -#define FT_SIZEOF_LONG SIZEOF_LONG - -#define FT_CHAR_BIT CHAR_BIT - - /* Preferred alignment of data */ -#define FT_ALIGNMENT 8 - - - /* FT_UNUSED is a macro used to indicate that a given parameter is not */ - /* used -- this is only used to get rid of unpleasant compiler warnings */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - - - /*************************************************************************/ - /* */ - /* AUTOMATIC CONFIGURATION MACROS */ - /* */ - /* These macros are computed from the ones defined above. Don't touch */ - /* their definition, unless you know precisely what you are doing. No */ - /* porter should need to mess with them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Mac support */ - /* */ - /* This is the only necessary change, so it is defined here instead */ - /* providing a new configuration file. */ - /* */ -#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ - ( defined( __MWERKS__ ) && defined( macintosh ) ) -#define FT_MACINTOSH 1 -#endif - - - /*************************************************************************/ - /* */ - /* IntN types */ - /* */ - /* Used to guarantee the size of some specific integers. */ - /* */ - typedef signed short FT_Int16; - typedef unsigned short FT_UInt16; - -#if FT_SIZEOF_INT == 4 - - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; - -#elif FT_SIZEOF_LONG == 4 - - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; - -#else -#error "no 32bit type found -- please check your configuration files" -#endif - - - /* look up an integer type that is at least 32 bits */ -#if FT_SIZEOF_INT >= 4 - - typedef int FT_Fast; - typedef unsigned int FT_UFast; - -#elif FT_SIZEOF_LONG >= 4 - - typedef long FT_Fast; - typedef unsigned long FT_UFast; - -#endif - - - /* determine whether we have a 64-bit int type for platforms without */ - /* Autoconf */ -#if FT_SIZEOF_LONG == 8 - - /* FT_LONG64 must be defined if a 64-bit type is available */ -#define FT_LONG64 -#define FT_INT64 long - -#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __BORLANDC__ ) /* Borland C++ */ - - /* XXXX: We should probably check the value of __BORLANDC__ in order */ - /* to test the compiler version. */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __WATCOMC__ ) /* Watcom C++ */ - - /* Watcom doesn't provide 64-bit data types */ - -#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ - -#define FT_LONG64 -#define FT_INT64 long long int - -#elif defined( __GNUC__ ) - - /* GCC provides the "long long" type */ -#define FT_LONG64 -#define FT_INT64 long long int - -#endif /* FT_SIZEOF_LONG == 8 */ - - -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - - /*************************************************************************/ - /* */ - /* A 64-bit data type will create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable their use if */ - /* __STDC__ is defined. You can however ignore this rule by */ - /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ - /* */ -#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) - -#ifdef __STDC__ - - /* Undefine the 64-bit macros in strict ANSI compilation mode. */ - /* Since `#undef' doesn't survive in configuration header files */ - /* we use the postprocessing facility of AC_CONFIG_HEADERS to */ - /* replace the leading `/' with `#'. */ -/undef FT_LONG64 -/undef FT_INT64 - -#endif /* __STDC__ */ - -#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ - - -#ifdef FT_MAKE_OPTION_SINGLE_OBJECT - -#define FT_LOCAL( x ) static x -#define FT_LOCAL_DEF( x ) static x - -#else - -#ifdef __cplusplus -#define FT_LOCAL( x ) extern "C" x -#define FT_LOCAL_DEF( x ) extern "C" x -#else -#define FT_LOCAL( x ) extern x -#define FT_LOCAL_DEF( x ) x -#endif - -#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ - - -#ifndef FT_BASE - -#ifdef __cplusplus -#define FT_BASE( x ) extern "C" x -#else -#define FT_BASE( x ) extern x -#endif - -#endif /* !FT_BASE */ - - -#ifndef FT_BASE_DEF - -#ifdef __cplusplus -#define FT_BASE_DEF( x ) extern "C" x -#else -#define FT_BASE_DEF( x ) extern x -#endif - -#endif /* !FT_BASE_DEF */ - - -#ifndef FT_EXPORT - -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ - -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ - - -FT_END_HEADER - - -#endif /* __FTCONFIG_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/builds/unix/ftsystem.c b/nx-X11/extras/freetype2/builds/unix/ftsystem.c deleted file mode 100644 index c7a34ad58..000000000 --- a/nx-X11/extras/freetype2/builds/unix/ftsystem.c +++ /dev/null @@ -1,397 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.c */ -/* */ -/* Unix-specific FreeType low-level system interface (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> - /* we use our special ftconfig.h file, not the standard one */ -#include <ftconfig.h> -#include FT_INTERNAL_DEBUG_H -#include FT_SYSTEM_H -#include FT_ERRORS_H -#include FT_TYPES_H -#include FT_INTERNAL_OBJECTS_H - - /* memory-mapping includes and definitions */ -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include <sys/mman.h> -#ifndef MAP_FILE -#define MAP_FILE 0x00 -#endif - -#ifdef MUNMAP_USES_VOIDP -#define MUNMAP_ARG_CAST void * -#else -#define MUNMAP_ARG_CAST char * -#endif - -#ifdef NEED_MUNMAP_DECL - -#ifdef __cplusplus - extern "C" -#else - extern -#endif - int - munmap( char* addr, - int len ); - -#define MUNMAP_ARG_CAST char * - -#endif /* NEED_DECLARATION_MUNMAP */ - - -#include <sys/types.h> -#include <sys/stat.h> - -#ifdef HAVE_FCNTL_H -#include <fcntl.h> -#endif - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <errno.h> - - - /*************************************************************************/ - /* */ - /* MEMORY MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_alloc */ - /* */ - /* <Description> */ - /* The memory allocation function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* size :: The requested size in bytes. */ - /* */ - /* <Return> */ - /* The address of newly allocated block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_alloc( FT_Memory memory, - long size ) - { - FT_UNUSED( memory ); - - return malloc( size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_realloc */ - /* */ - /* <Description> */ - /* The memory reallocation function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* cur_size :: The current size of the allocated memory block. */ - /* */ - /* new_size :: The newly requested size in bytes. */ - /* */ - /* block :: The current address of the block in memory. */ - /* */ - /* <Return> */ - /* The address of the reallocated memory block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) - { - FT_UNUSED( memory ); - FT_UNUSED( cur_size ); - - return realloc( block, new_size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_free */ - /* */ - /* <Description> */ - /* The memory release function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* block :: The address of block in memory to be freed. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_free( FT_Memory memory, - void* block ) - { - FT_UNUSED( memory ); - - free( block ); - } - - - /*************************************************************************/ - /* */ - /* RESOURCE MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_io - - /* We use the macro STREAM_FILE for convenience to extract the */ - /* system-specific stream handle from a given FreeType stream object */ -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_close_stream_by_munmap */ - /* */ - /* <Description> */ - /* The function to close a stream which is opened by mmap. */ - /* */ - /* <Input> */ - /* stream :: A pointer to the stream object. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_close_stream_by_munmap( FT_Stream stream ) - { - munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_close_stream_by_free */ - /* */ - /* <Description> */ - /* The function to close a stream which is created by ft_alloc. */ - /* */ - /* <Input> */ - /* stream :: A pointer to the stream object. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_close_stream_by_free( FT_Stream stream ) - { - ft_free( NULL, stream->descriptor.pointer ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = 0; - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Stream_Open( FT_Stream stream, - const char* filepathname ) - { - int file; - struct stat stat_buf; - - - if ( !stream ) - return FT_Err_Invalid_Stream_Handle; - - /* open the file */ - file = open( filepathname, O_RDONLY ); - if ( file < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - return FT_Err_Cannot_Open_Resource; - } - - /* Here we ensure that a "fork" will _not_ duplicate */ - /* our opened input streams on Unix. This is critical */ - /* since it avoids some (possible) access control */ - /* issues and cleans up the kernel file table a bit. */ - /* */ -#ifdef F_SETFD -#ifdef FD_CLOEXEC - (void)fcntl( file, F_SETFD, FD_CLOEXEC ); -#else - (void)fcntl( file, F_SETFD, 1 ); -#endif /* FD_CLOEXEC */ -#endif /* F_SETFD */ - - if ( fstat( file, &stat_buf ) < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `fstat' file `%s'\n", filepathname )); - goto Fail_Map; - } - - stream->size = stat_buf.st_size; - stream->pos = 0; - stream->base = (unsigned char *)mmap( NULL, - stream->size, - PROT_READ, - MAP_FILE | MAP_PRIVATE, - file, - 0 ); - - if ( (long)stream->base != -1 ) - stream->close = ft_close_stream_by_munmap; - else - { - ssize_t total_read_count; - - - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); - - stream->base = ft_alloc( NULL, stream->size ); - - if ( !stream->base ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `alloc' memory\n" )); - goto Fail_Map; - } - - total_read_count = 0; - do { - ssize_t read_count; - - - read_count = read( file, - stream->base + total_read_count, - stream->size - total_read_count ); - - if ( ( read_count == -1 ) ) - { - if ( errno == EINTR ) - continue; - - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " error while `read'ing file `%s'\n", filepathname )); - goto Fail_Read; - } - - total_read_count += read_count; - - } while ( total_read_count != stream->size ); - - stream->close = ft_close_stream_by_free; - } - - close( file ); - - stream->descriptor.pointer = stream->base; - stream->pathname.pointer = (char*)filepathname; - - stream->read = 0; - - FT_TRACE1(( "FT_Stream_Open:" )); - FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", - filepathname, stream->size )); - - return FT_Err_Ok; - - Fail_Read: - ft_free( NULL, stream->base ); - - Fail_Map: - close( file ); - - stream->base = NULL; - stream->size = 0; - stream->pos = 0; - - return FT_Err_Cannot_Open_Stream; - } - - -#ifdef FT_DEBUG_MEMORY - - extern FT_Int - ft_mem_debug_init( FT_Memory memory ); - - extern void - ft_mem_debug_done( FT_Memory memory ); - -#endif - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Memory ) - FT_New_Memory( void ) - { - FT_Memory memory; - - - memory = (FT_Memory)malloc( sizeof ( *memory ) ); - if ( memory ) - { - memory->user = 0; - memory->alloc = ft_alloc; - memory->realloc = ft_realloc; - memory->free = ft_free; -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_init( memory ); -#endif - } - - return memory; - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( void ) - FT_Done_Memory( FT_Memory memory ) - { -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_done( memory ); -#endif - memory->free( memory, memory ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/builds/unix/install-sh b/nx-X11/extras/freetype2/builds/unix/install-sh deleted file mode 100644 index 77bc38144..000000000 --- a/nx-X11/extras/freetype2/builds/unix/install-sh +++ /dev/null @@ -1,316 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2004-02-15.20 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename= -transform_arg= -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd= -chgrpcmd= -stripcmd= -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src= -dst= -dir_arg= - -usage="Usage: $0 [OPTION]... SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 -d DIRECTORIES... - -In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. -In the second, create the directory path DIR. - -Options: --b=TRANSFORMBASENAME --c copy source (using $cpprog) instead of moving (using $mvprog). --d create directories instead of installing files. --g GROUP $chgrp installed files to GROUP. --m MODE $chmod installed files to MODE. --o USER $chown installed files to USER. --s strip installed files (using $stripprog). --t=TRANSFORM ---help display this help and exit. ---version display version info and exit. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" - -while test -n "$1"; do - case $1 in - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - -c) instcmd=$cpprog - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - --help) echo "$usage"; exit 0;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - --version) echo "$0 $scriptversion"; exit 0;; - - *) # When -d is used, all remaining arguments are directories to create. - test -n "$dir_arg" && break - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dstarg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dstarg" - shift # fnord - fi - shift # arg - dstarg=$arg - done - break;; - esac -done - -if test -z "$1"; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src ;; - esac - - if test -n "$dir_arg"; then - dst=$src - src= - - if test -d "$dst"; then - instcmd=: - chmodcmd= - else - instcmd=$mkdirprog - fi - else - # Waiting for this to be detected by the "$instcmd $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dstarg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dstarg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst ;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - dst=$dst/`basename "$src"` - fi - fi - - # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - - # Make sure that the destination directory exists. - - # Skip lots of stat calls in the usual case. - if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - IFS=$oIFS - - pathcomp= - - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 - shift - if test ! -d "$pathcomp"; then - $mkdirprog "$pathcomp" || lasterr=$? - # mkdir can fail with a `File exist' error in case several - # install-sh are creating the directory concurrently. This - # is OK. - test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; } - fi - pathcomp=$pathcomp/ - done - fi - - if test -n "$dir_arg"; then - $doit $instcmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - - else - # If we're going to rename the final executable, determine the name now. - if test -z "$transformarg"; then - dstfile=`basename "$dst"` - else - dstfile=`basename "$dst" $transformbasename \ - | sed $transformarg`$transformbasename - fi - - # don't allow the sed command to completely eliminate the filename. - test -z "$dstfile" && dstfile=`basename "$dst"` - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 - trap '(exit $?); exit' 1 2 13 15 - - # Move or copy the file name to the temp name - $doit $instcmd "$src" "$dsttmp" && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $instcmd $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now remove or move aside any old file at destination location. We - # try this two ways since rm can't unlink itself on some systems and - # the destination file might be busy for other reasons. In this case, - # the final cleanup might fail but the new file should still install - # successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - fi || { (exit 1); exit; } -done - -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit -} - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/nx-X11/extras/freetype2/builds/unix/install.mk b/nx-X11/extras/freetype2/builds/unix/install.mk deleted file mode 100644 index 1930d3716..000000000 --- a/nx-X11/extras/freetype2/builds/unix/install.mk +++ /dev/null @@ -1,100 +0,0 @@ -# -# FreeType 2 installation instructions for Unix systems -# - - -# Copyright 1996-2000, 2002, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# If you say -# -# make install DESTDIR=/tmp/somewhere/ -# -# don't forget the final backslash (this command is mainly for package -# maintainers). - - -.PHONY: install uninstall check - -# Unix installation and deinstallation targets. -install: $(PROJECT_LIBRARY) - $(MKINSTALLDIRS) $(DESTDIR)$(libdir) \ - $(DESTDIR)$(libdir)/pkgconfig \ - $(DESTDIR)$(includedir)/freetype2/freetype/config \ - $(DESTDIR)$(includedir)/freetype2/freetype/internal \ - $(DESTDIR)$(includedir)/freetype2/freetype/cache \ - $(DESTDIR)$(bindir) \ - $(DESTDIR)$(datadir)/aclocal - $(LIBTOOL) --mode=install $(INSTALL) \ - $(PROJECT_LIBRARY) $(DESTDIR)$(libdir) - -for P in $(PUBLIC_H) ; do \ - $(INSTALL_DATA) \ - $$P $(DESTDIR)$(includedir)/freetype2/freetype ; \ - done - -for P in $(BASE_H) ; do \ - $(INSTALL_DATA) \ - $$P $(DESTDIR)$(includedir)/freetype2/freetype/internal ; \ - done - -for P in $(CONFIG_H) ; do \ - $(INSTALL_DATA) \ - $$P $(DESTDIR)$(includedir)/freetype2/freetype/config ; \ - done - -for P in $(CACHE_H) ; do \ - $(INSTALL_DATA) \ - $$P $(DESTDIR)$(includedir)/freetype2/freetype/cache ; \ - done - $(INSTALL_DATA) $(BUILD_DIR)/ft2unix.h \ - $(DESTDIR)$(includedir)/ft2build.h - $(INSTALL_DATA) $(BUILD_DIR)/ftconfig.h \ - $(DESTDIR)$(includedir)/freetype2/freetype/config/ftconfig.h - $(INSTALL_SCRIPT) -m 755 $(OBJ_BUILD)/freetype-config \ - $(DESTDIR)$(bindir)/freetype-config - $(INSTALL_SCRIPT) -m 644 $(BUILD_DIR)/freetype2.m4 \ - $(DESTDIR)$(datadir)/aclocal/freetype2.m4 - $(INSTALL_SCRIPT) -m 644 $(OBJ_BUILD)/freetype2.pc \ - $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc - - -uninstall: - -$(LIBTOOL) --mode=uninstall $(RM) $(DESTDIR)$(libdir)/$(LIBRARY).$A - -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/cache/* - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype/cache - -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/config/* - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype/config - -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/internal/* - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype/internal - -$(DELETE) $(DESTDIR)$(includedir)/freetype2/freetype/* - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2/freetype - -$(DELDIR) $(DESTDIR)$(includedir)/freetype2 - -$(DELETE) $(DESTDIR)$(includedir)/ft2build.h - -$(DELETE) $(DESTDIR)$(bindir)/freetype-config - -$(DELETE) $(DESTDIR)$(datadir)/aclocal/freetype2.m4 - -$(DELETE) $(DESTDIR)$(libdir)/pkgconfig/freetype2.pc - - -check: - @echo There is no validation suite for this package. - - -.PHONY: clean_project_unix distclean_project_unix - -# Unix cleaning and distclean rules. -# -clean_project_unix: - -$(DELETE) $(BASE_OBJECTS) $(OBJ_M) $(OBJ_S) - -$(DELETE) $(patsubst %.$O,%.$(SO),$(BASE_OBJECTS) $(OBJ_M) $(OBJ_S)) \ - $(CLEAN) - -distclean_project_unix: clean_project_unix - -$(DELETE) $(PROJECT_LIBRARY) - -$(DELETE) $(OBJ_DIR)/.libs/* - -$(DELDIR) $(OBJ_DIR)/.libs - -$(DELETE) *.orig *~ core *.core $(DISTCLEAN) - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/ltmain.sh b/nx-X11/extras/freetype2/builds/unix/ltmain.sh deleted file mode 100644 index 70f0b2d03..000000000 --- a/nx-X11/extras/freetype2/builds/unix/ltmain.sh +++ /dev/null @@ -1,6422 +0,0 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun configure. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004 -# Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -basename="s,^.*/,,g" - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - -# The name of this program: -progname=`echo "$progpath" | $SED $basename` -modename="$progname" - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -PROGRAM=ltmain.sh -PACKAGE=libtool -VERSION=1.5.6 -TIMESTAMP=" (1.1220.2.94 2004/04/10 16:27:27)" - - -# Check that we have a working $echo. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <<EOF -$* -EOF - exit $EXIT_SUCCESS -fi - -default_mode= -help="Try \`$progname --help' for more information." -magic="%%%MAGIC variable%%%" -mkdir="mkdir" -mv="mv -f" -rm="rm -f" - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g' -# test EBCDIC or ASCII -case `echo A|tr A '\301'` in - A) # EBCDIC based system - SP2NL="tr '\100' '\n'" - NL2SP="tr '\r\n' '\100\100'" - ;; - *) # Assume ASCII based system - SP2NL="tr '\040' '\012'" - NL2SP="tr '\015\012' '\040\040'" - ;; -esac - -# NLS nuisances. -# Only set LANG and LC_ALL to C if already set. -# These must not be set unconditionally because not all systems understand -# e.g. LANG=C (notably SCO). -# We save the old values to restore during execute mode. -if test "${LC_ALL+set}" = set; then - save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL -fi -if test "${LANG+set}" = set; then - save_LANG="$LANG"; LANG=C; export LANG -fi - -# Make sure IFS has a sensible default -: ${IFS=" -"} - -if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - $echo "$modename: not configured to build any kind of library" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" - -##################################### -# Shell function definitions: -# This seems to be the best place for them - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -func_win32_libid () { - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ - $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ - sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` - if test "X$win32_nmres" = "Ximport" ; then - win32_libid_type="x86 archive import" - else - win32_libid_type="x86 archive static" - fi - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $echo $win32_libid_type -} - - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () { - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done - case "$@ " in - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit $EXIT_FAILURE -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac - fi -} -# End of Shell function definitions -##################################### - -# Darwin sucks -eval std_shrext=\"$shrext_cmds\" - -# Parse our command line options once, thoroughly. -while test "$#" -gt 0 -do - arg="$1" - shift - - case $arg in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - execute_dlfiles) - execute_dlfiles="$execute_dlfiles $arg" - ;; - tag) - tagname="$arg" - preserve_args="${preserve_args}=$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $tagname in - CC) - # Don't test for the "default" C tag, as we know, it's there, but - # not specially marked. - ;; - *) - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" - else - $echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi - ;; - esac - ;; - *) - eval "$prev=\$arg" - ;; - esac - - prev= - prevopt= - continue - fi - - # Have we seen a non-optional argument yet? - case $arg in - --help) - show_help=yes - ;; - - --version) - $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - $echo - $echo "Copyright (C) 2003 Free Software Foundation, Inc." - $echo "This is free software; see the source for copying conditions. There is NO" - $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit $EXIT_SUCCESS - ;; - - --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath - # Now print the configurations for the tags. - for tagname in $taglist; do - ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" - done - exit $EXIT_SUCCESS - ;; - - --debug) - $echo "$progname: enabling shell trace mode" - set -x - preserve_args="$preserve_args $arg" - ;; - - --dry-run | -n) - run=: - ;; - - --features) - $echo "host: $host" - if test "$build_libtool_libs" = yes; then - $echo "enable shared libraries" - else - $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - $echo "enable static libraries" - else - $echo "disable static libraries" - fi - exit $EXIT_SUCCESS - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --preserve-dup-deps) duplicate_deps="yes" ;; - - --quiet | --silent) - show=: - preserve_args="$preserve_args $arg" - ;; - - --tag) prevopt="--tag" prev=tag ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag - preserve_args="$preserve_args --tag" - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE -fi - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 - $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2 - case $nonopt in - *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do - case $arg in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case $mode in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - - for arg - do - case "$arg_mode" in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - if test -n "$libobj" ; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit $EXIT_FAILURE - fi - arg_mode=target - continue - ;; - - -static | -prefer-pic | -prefer-non-pic) - later="$later $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - lastarg="$lastarg $arg" - done - IFS="$save_ifs" - lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` - - # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" - continue - ;; - - * ) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - case $lastarg in - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - lastarg="\"$lastarg\"" - ;; - esac - - base_compile="$base_compile $lastarg" - done # for arg - - case $arg_mode in - arg) - $echo "$modename: you must specify an argument for -Xcompile" - exit $EXIT_FAILURE - ;; - target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit $EXIT_FAILURE - ;; - *) - # Get the name of the library object. - [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSifmso]' - case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.ii) xform=ii ;; - *.class) xform=class ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - *.java) xform=java ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - - case $libobj in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -static) - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir= - else - xdir=$xdir/ - fi - lobj=${xdir}$objdir/$objname - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - $run $rm $removelist - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $run ln "$progpath" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $echo "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - $echo $srcfile > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - - $run $rm "$libobj" "${libobj}T" - - # Create a libtool object file (analogous to a ".la" file), - # but don't create it if we're doing a dry run. - test -z "$run" && cat > ${libobj}T <<EOF -# $libobj - a libtool object file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# Name of the PIC object. -EOF - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $srcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $srcfile" - fi - - if test ! -d "${xdir}$objdir"; then - $show "$mkdir ${xdir}$objdir" - $run $mkdir ${xdir}$objdir - status=$? - if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then - exit $status - fi - fi - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - command="$command -o $lobj" - fi - - $run $rm "$lobj" "$output_obj" - - $show "$command" - if $run eval "$command"; then : - else - test -n "$output_obj" && $run $rm $removelist - exit $EXIT_FAILURE - fi - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - $show "$mv $output_obj $lobj" - if $run $mv $output_obj $lobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the PIC object to the libtool object file. - test -z "$run" && cat >> ${libobj}T <<EOF -pic_object='$objdir/$objname' - -EOF - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - else - # No PIC object so indicate it doesn't exist in the libtool - # object file. - test -z "$run" && cat >> ${libobj}T <<EOF -pic_object=none - -EOF - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $srcfile" - else - command="$base_compile $srcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - command="$command -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - command="$command$suppress_output" - $run $rm "$obj" "$output_obj" - $show "$command" - if $run eval "$command"; then : - else - $run $rm $removelist - exit $EXIT_FAILURE - fi - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <<EOF -# Name of the non-PIC object. -non_pic_object='$objname' - -EOF - else - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <<EOF -# Name of the non-PIC object. -non_pic_object=none - -EOF - fi - - $run $mv "${libobj}T" "${libobj}" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - $run $rm "$lockfile" - fi - - exit $EXIT_SUCCESS - ;; - - # libtool link mode - link | relink) - modename="$modename: link" - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args="$nonopt" - base_compile="$nonopt $@" - compile_command="$nonopt" - finalize_command="$nonopt" - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - - avoid_version=no - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -all-static | -static) - if test "X$arg" = "X-all-static"; then - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test - ;; - *) qarg=$arg ;; - esac - libtool_args="$libtool_args $qarg" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac - - case $prev in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit $EXIT_FAILURE - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat $save_arg` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - done - else - $echo "$modename: link input file \`$save_arg' does not exist" - exit $EXIT_FAILURE - fi - arg=$save_arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - compile_command="$compile_command $wl$qarg" - finalize_command="$finalize_command $wl$qarg" - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: more than one -exported-symbols argument is not allowed" - exit $EXIT_FAILURE - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - ;; - esac - continue - ;; - - -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - exit $EXIT_FAILURE - fi - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-mingw* | *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs -framework System" - continue - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) - deplibs="$deplibs $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # gcc -m* arguments should be passed to the linker via $compiler_flags - # in order to pass architecture information to the linker - # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo - # but this is not reliable with gcc because gcc may use -mfoo to - # select a different linker, different libraries, etc, while - # -Wl,-mfoo simply passes -mfoo to the linker. - -m*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - if test "$with_gcc" = "yes" ; then - compiler_flags="$compiler_flags $arg" - fi - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - # The PATH hackery in wrapper scripts is required on Windows - # in order for the loader to find any dlls it needs. - $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 - $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Wl,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $wl$flag" - linker_flags="$linker_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done # argument parsing loop - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - # Create the object directory. - if test ! -d "$output_objdir"; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test "$status" -ne 0 && test ! -d "$output_objdir"; then - exit $status - fi - fi - - # Determine the type of output - case $output in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplications in $postdeps and $predeps - duplicate_compiler_generated_deps=yes - ;; - *) - duplicate_compiler_generated_deps=$duplicate_deps - ;; - esac - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if test "X$duplicate_deps" = "Xyes" ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - case $linkmode in - lib) - passes="conv link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 - exit $EXIT_FAILURE - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - for pass in $passes; do - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 - continue - fi - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` - for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if (${SED} -e '2q' $lib | - grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - library_names= - old_library= - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - *) - $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - if test "$deplibs_check_method" != pass_all; then - $echo - $echo "*** Warning: Trying to link with static lib archive $deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because the file extensions .$libext of this argument makes me believe" - $echo "*** that it is just a static archive that I should not used here." - else - $echo - $echo "*** Warning: Linking the shared library $output against the" - $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - $echo "$modename: cannot find the library \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - - # Read the .la file - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 - exit $EXIT_FAILURE - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - abs_ladir="$ladir" - fi - ;; - esac - laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - $echo "$modename: warning: library \`$lib' was moved." 1>&2 - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi # $installed = yes - name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var"; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; - *) temp_rpath="$temp_rpath $dir" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - # This is a shared library - - # Warn about portability, can't link against -module's on - # some systems (darwin) - if test "$shouldnotlink" = yes && test "$pass" = link ; then - $echo - if test "$linkmode" = prog; then - $echo "*** Warning: Linking the executable $output against the loadable module" - else - $echo "*** Warning: Linking the shared library $output against the loadable module" - fi - $echo "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - realname="$2" - shift; shift - libname=`eval \\$echo \"$libname_spec\"` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw*) - major=`expr $current - $age` - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - soname=`$echo $soroot | ${SED} -e 's/^.*\///'` - newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - $show "extracting exported symbol list from \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5* ) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a module then we can not link against - # it, someone is ignoring the new warnings I added - if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then - $echo "** Warning, lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $echo - $echo "** And there doesn't seem to be a static archive available" - $echo "** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case "$libdir" in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit $EXIT_FAILURE - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case "$libdir" in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - $echo - $echo "*** Warning: This system can not link to static lib archive $lib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - $echo "*** But as you try to build a module library, libtool will still create " - $echo "*** a static module, that should work as long as the dlopening application" - $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - convenience="$convenience $dir/$old_library" - old_convenience="$old_convenience $dir/$old_library" - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - case $deplib in - -L*) path="$deplib" ;; - *.la) - dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$deplib" && dir="." - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - absdir="$dir" - fi - ;; - esac - if grep "^installed=no" $deplib > /dev/null; then - path="$absdir/$objdir" - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi - path="$absdir" - fi - depdepl= - case $host in - *-*-darwin*) - # we do not want to link against static libs, - # but need to link against shared - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" - fi - # do not add paths which are already there - case " $newlib_search_path " in - *" $path "*) ;; - *) newlib_search_path="$newlib_search_path $path";; - esac - fi - path="" - ;; - *) - path="-L$path" - ;; - esac - ;; - -l*) - case $host in - *-*-darwin*) - # Again, we only want to link against shared libraries - eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` - for tmp in $newlib_search_path ; do - if test -f "$tmp/lib$tmp_libs.dylib" ; then - eval depdepl="$tmp/lib$tmp_libs.dylib" - break - fi - done - path="" - ;; - *) continue ;; - esac - ;; - *) continue ;; - esac - case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$depdepl $deplibs" ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$deplibs $path" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi - - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 - exit $EXIT_FAILURE - else - $echo - $echo "*** Warning: Linking the shared library $output against the non-libtool" - $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - if test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 - fi - - set dummy $rpath - if test "$#" -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - IFS="$save_ifs" - - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$2" - number_minor="$3" - number_revision="$4" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows) - current=`expr $number_major + $number_minor` - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - current=`expr $number_major + $number_minor - 1` - age="$number_minor" - revision="$number_minor" - ;; - esac - ;; - no) - current="$2" - revision="$3" - age="$4" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $revision in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $age in - 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; - *) - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - if test "$age" -gt "$current"; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - - irix | nonstopux) - major=`expr $current - $age + 1` - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - ;; - - osf) - major=.`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - major=`expr $current - $age` - versuffix="-$major" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - fi - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$echo "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - removelist="$removelist $p" - ;; - *) ;; - esac - done - if test -n "$removelist"; then - $show "${rm}r $removelist" - $run ${rm}r $removelist - fi - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - for path in $notinst_path; do - lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` - deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` - dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` - done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs -framework System" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $rm conftest.c - cat > conftest.c <<EOF - int main() { return 0; } -EOF - $rm conftest - $LTCC -o conftest conftest.c $deplibs - if test "$?" -eq 0 ; then - ldd_output=`ldd conftest` - for i in $deplibs; do - name="`expr $i : '-l\(.*\)'`" - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" -ne "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) - newdeplibs="$newdeplibs $i" - i="" - ;; - esac - fi - if test -n "$i" ; then - libname=`eval \\$echo \"$libname_spec\"` - deplib_matches=`eval \\$echo \"$library_names_spec\"` - set dummy $deplib_matches - deplib_match=$2 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" - else - droppeddeps=yes - $echo - $echo "*** Warning: dynamic linker does not accept needed library $i." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which I believe you do not have" - $echo "*** because a test_compile did reveal that the linker did not use it for" - $echo "*** its dynamic dependency list that programs get resolved with at runtime." - fi - fi - else - newdeplibs="$newdeplibs $i" - fi - done - else - # Error occurred in the first compile. Let's try to salvage - # the situation: Compile a separate program for each library. - for i in $deplibs; do - name="`expr $i : '-l\(.*\)'`" - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" != "0"; then - $rm conftest - $LTCC -o conftest conftest.c $i - # Did it work? - if test "$?" -eq 0 ; then - ldd_output=`ldd conftest` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $i "*) - newdeplibs="$newdeplibs $i" - i="" - ;; - esac - fi - if test -n "$i" ; then - libname=`eval \\$echo \"$libname_spec\"` - deplib_matches=`eval \\$echo \"$library_names_spec\"` - set dummy $deplib_matches - deplib_match=$2 - if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then - newdeplibs="$newdeplibs $i" - else - droppeddeps=yes - $echo - $echo "*** Warning: dynamic linker does not accept needed library $i." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because a test_compile did reveal that the linker did not use this one" - $echo "*** as a dynamic dependency that programs can get resolved with at runtime." - fi - fi - else - droppeddeps=yes - $echo - $echo "*** Warning! Library $i is needed by this library but I was not able to" - $echo "*** make it link in! You will probably need to install it or some" - $echo "*** library that it depends on before this library will be fully" - $echo "*** functional. Installing it before continuing would be even better." - fi - else - newdeplibs="$newdeplibs $i" - fi - done - fi - ;; - file_magic*) - set dummy $deplibs_check_method - file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do - name="`expr $a_deplib : '-l\(.*\)'`" - # If $name is empty we are operating on a -L argument. - if test "$name" != "" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for file magic test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a file magic. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do - name="`expr $a_deplib : '-l\(.*\)'`" - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval $echo \"$potent_lib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a regex pattern. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` - done - fi - if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ - | grep . >/dev/null; then - $echo - if test "X$deplibs_check_method" = "Xnone"; then - $echo "*** Warning: inter-library dependencies are not supported in this platform." - else - $echo "*** Warning: inter-library dependencies are not known to be supported." - fi - $echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - $echo - $echo "*** Warning: libtool could not satisfy all declared inter-library" - $echo "*** dependencies of module $libname. Therefore, libtool will create" - $echo "*** a static module, that should work as long as the dlopening" - $echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - $echo "*** The inter-library dependencies that have been dropped here will be" - $echo "*** automatically added whenever a program is linked with this library" - $echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - $echo - $echo "*** Since this library must not contain undefined symbols," - $echo "*** because either the platform does not support them or" - $echo "*** it was explicitly requested with -no-undefined," - $echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - if len=`expr "X$cmd" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - $show "$cmd" - $run eval "$cmd" || exit $? - skipped_export=false - else - # The command line is too long to execute in one step. - $show "using reloadable object file for export list..." - skipped_export=: - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise. - $echo "creating reloadable object files..." - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - delfiles= - last_robj= - k=1 - output=$output_objdir/$save_output-${k}.$objext - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - eval test_cmds=\"$reload_cmds $objlist $last_robj\" - if test "X$objlist" = X || - { len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len"; }; then - objlist="$objlist $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" - else - # All subsequent reloadable object files will link in - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" - fi - last_robj=$output_objdir/$save_output-${k}.$objext - k=`expr $k + 1` - output=$output_objdir/$save_output-${k}.$objext - objlist=$obj - len=1 - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" - - if ${skipped_export-false}; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - libobjs=$output - # Append the command to create the export file. - eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" - fi - - # Set up a command to remove the reloadale object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$save_output-${i}.$objext" - done - - $echo "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - - # Append the command to remove the reloadable object files - # to the just-reset $cmds. - eval cmds=\"\$cmds~\$rm $delfiles\" - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi - - case $output in - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit $EXIT_FAILURE - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - for xlib in $convenience; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $run eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; - esac - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi - - if test "$preload" = yes; then - if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi - fi - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - case $host in - *darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - if test "$tagname" = CXX ; then - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - fi - ;; - esac - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" - else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - fi - fi - - if test -n "$dlsyms"; then - case $dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" - - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" - - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" - - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - if test -n "$export_symbols_regex"; then - $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$output.exp" - $run $rm $export_symbols - $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else - $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' - $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` - $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | - if sort -k 3 </dev/null >/dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ - -#undef lt_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define lt_ptr void * -#else -# define lt_ptr char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -const struct { - const char *name; - lt_ptr address; -} -lt_preloaded_symbols[] = -{\ -" - - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - fi - - pic_flag_for_symtable= - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit $EXIT_FAILURE - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - status=$? - - # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" - fi - - exit $status - fi - - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $run $rm $output - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname - - $show "$link_command" - $run eval "$link_command" || exit $? - - # Now create the wrapper script. - $show "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - fi - - # Only actually do things if our run command is non-null. - if test -z "$run"; then - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - cwrappersource=`$echo ${objdir}/lt-${output}.c` - cwrapper=`$echo ${output}.exe` - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - cat > $cwrappersource <<EOF - -/* $cwrappersource - temporary wrapper executable for $objdir/$outputname - Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP - - The $output program cannot be directly executed until all the libtool - libraries that it depends on are installed. - - This wrapper executable should never be moved out of the build directory. - If it is, it will not operate correctly. - - Currently, it simply execs the wrapper *script* "/bin/sh $output", - but could eventually absorb all of the scripts functionality and - exec $objdir/$outputname directly. -*/ -EOF - cat >> $cwrappersource<<"EOF" -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <malloc.h> -#include <stdarg.h> -#include <assert.h> - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef DIR_SEPARATOR -#define DIR_SEPARATOR '/' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -#define HAVE_DOS_BASED_FILE_SYSTEM -#ifndef DIR_SEPARATOR_2 -#define DIR_SEPARATOR_2 '\\' -#endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -char * basename (const char *name); -char * fnqualify(const char *path); -char * strendzap(char *str, const char *pat); -void lt_fatal (const char *message, ...); - -int -main (int argc, char *argv[]) -{ - char **newargz; - int i; - - program_name = (char *) xstrdup ((char *) basename (argv[0])); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <<EOF - newargz[0] = "$SHELL"; -EOF - - cat >> $cwrappersource <<"EOF" - newargz[1] = fnqualify(argv[0]); - /* we know the script has the same name, without the .exe */ - /* so make sure newargz[1] doesn't end in .exe */ - strendzap(newargz[1],".exe"); - for (i = 1; i < argc; i++) - newargz[i+1] = xstrdup(argv[i]); - newargz[argc+1] = NULL; -EOF - - cat >> $cwrappersource <<EOF - execv("$SHELL",newargz); -EOF - - cat >> $cwrappersource <<"EOF" -} - -void * -xmalloc (size_t num) -{ - void * p = (void *) malloc (num); - if (!p) - lt_fatal ("Memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL -; -} - -char * -basename (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha (name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return (char *) base; -} - -char * -fnqualify(const char *path) -{ - size_t size; - char *p; - char tmp[LT_PATHMAX + 1]; - - assert(path != NULL); - - /* Is it qualified already? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha (path[0]) && path[1] == ':') - return xstrdup (path); -#endif - if (IS_DIR_SEPARATOR (path[0])) - return xstrdup (path); - - /* prepend the current directory */ - /* doesn't handle '~' */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ - p = XMALLOC(char, size); - sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); - return p; -} - -char * -strendzap(char *str, const char *pat) -{ - size_t len, patlen; - - assert(str != NULL); - assert(pat != NULL); - - len = strlen(str); - patlen = strlen(pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp(str, pat) == 0) - *str = '\0'; - } - return str; -} - -static void -lt_error_core (int exit_status, const char * mode, - const char * message, va_list ap) -{ - fprintf (stderr, "%s: %s: ", program_name, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); - va_end (ap); -} -EOF - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. - $run $LTCC -s -o $cwrapper $cwrappersource - ;; - esac - $rm $output - trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $echo >> $output "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" - - $echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" - exit $EXIT_FAILURE - fi - fi - - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \$progdir\\\\\$program \${1+\"\$@\"} -" - ;; - - *) - $echo >> $output "\ - exec \$progdir/\$program \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit $EXIT_FAILURE - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - $echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit $EXIT_FAILURE - fi -fi\ -" - chmod +x $output - fi - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - generated="$generated $gentop" - - # Add in members from convenience archives. - for xlib in $addlibs; do - # Extract the objects. - case $xlib in - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; - *) xabs=`pwd`"/$xlib" ;; - esac - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` - xdir="$gentop/$xlib" - - $show "${rm}r $xdir" - $run ${rm}r "$xdir" - $show "$mkdir $xdir" - $run $mkdir "$xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$xdir"; then - exit $status - fi - # We will extract separately just the conflicting names and we will no - # longer touch any unique names. It is faster to leave these extract - # automatically by $AR in one run. - $show "(cd $xdir && $AR x $xabs)" - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2 - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2 - $AR t "$xabs" | sort | uniq -cd | while read -r count name - do - i=1 - while test "$i" -le "$count" - do - # Put our $i before any first dot (extension) - # Never overwrite any file - name_to="$name" - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to" - do - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"` - done - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')" - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $? - i=`expr $i + 1` - done - done - fi - - oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` - done - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - eval cmds=\"$old_archive_cmds\" - - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - $echo "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - # GNU ar 2.10+ was changed to match POSIX; thus no paths are - # encoded into archives. This makes 'ar r' malfunction in - # this piecewise linking case whenever conflicting object - # names appear in distinct ar calls; check, warn and compensate. - if (for obj in $save_oldobjs - do - $echo "X$obj" | $Xsed -e 's%^.*/%%' - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2 - $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2 - AR_FLAGS=cq - fi - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - for obj in $save_oldobjs - do - oldobjs="$objlist $obj" - objlist="$objlist $obj" - eval test_cmds=\"$old_archive_cmds\" - if len=`expr "X$test_cmds" : ".*"` && - test "$len" -le "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - eval cmd=\"$cmd\" - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlfiles="$newdlfiles $libdir/$name" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlprefiles="$newdlprefiles $libdir/$name" - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - done - dlprefiles="$newdlprefiles" - fi - $rm $output - # place dlname in correct position for cygwin - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $echo > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $echo >> $output "\ -relink_command=\"$relink_command\"" - fi - done - fi - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac - exit $EXIT_SUCCESS - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg="$nonopt" - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest="$arg" - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) prev="-f" ;; - -g) prev="-g" ;; - -m) prev="-m" ;; - -o) prev="-o" ;; - -s) - stripme=" -s" - continue - ;; - -*) ;; - - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest="$arg" - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - library_names= - old_library= - relink_command= - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - if test "$inst_prefix_dir" = "$destdir"; then - $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - $echo "$modename: warning: relinking \`$file'" 1>&2 - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - exit $EXIT_FAILURE - fi - fi - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$srcname $destdir/$realname" - $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? - if test -n "$stripme" && test -n "$striplib"; then - $show "$striplib $destdir/$realname" - $run eval "$striplib $destdir/$realname" || exit $? - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - file=`$echo $file|${SED} 's,.exe$,,'` - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin*|*mingw*) - wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` - ;; - *) - wrapper=$file - ;; - esac - if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then - notinst_deplibs= - relink_command= - - # To insure that "foo" is sourced, and not "foo.exe", - # finese the cygwin/MSYS system by explicitly sourcing "foo." - # which disallows the automatic-append-.exe behavior. - case $build in - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; - *) wrapperdot=${wrapper} ;; - esac - # If there is no directory component, then add one. - case $file in - */* | *\\*) . ${wrapperdot} ;; - *) . ./${wrapperdot} ;; - esac - - # Check the variables that should have been set. - if test -z "$notinst_deplibs"; then - $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 - exit $EXIT_FAILURE - fi - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - relink_command= - # To insure that "foo" is sourced, and not "foo.exe", - # finese the cygwin/MSYS system by explicitly sourcing "foo." - # which disallows the automatic-append-.exe behavior. - case $build in - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;; - *) wrapperdot=${wrapper} ;; - esac - # If there is no directory component, then add one. - case $file in - */* | *\\*) . ${wrapperdot} ;; - *) . ./${wrapperdot} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - save_umask=`umask` - umask 0077 - if $mkdir "$tmpdir"; then - umask $save_umask - else - umask $save_umask - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyways - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac - ;; - esac - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - if test -n "$stripme" && test -n "$old_striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? - fi - - # Do each command in the postinstall commands. - cmds=$old_postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - cmds=$finish_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit $EXIT_SUCCESS - - $echo "----------------------------------------------------------------------" - $echo "Libraries have been installed in:" - for libdir in $libdirs; do - $echo " $libdir" - done - $echo - $echo "If you ever happen to want to link against installed libraries" - $echo "in a given directory, LIBDIR, you must either use libtool, and" - $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - $echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - $echo " during execution" - fi - if test -n "$runpath_var"; then - $echo " - add LIBDIR to the \`$runpath_var' environment variable" - $echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $echo - $echo "See any operating system documentation about shared libraries for" - $echo "more information, such as the ld(1) and ld.so(8) manual pages." - $echo "----------------------------------------------------------------------" - exit $EXIT_SUCCESS - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit $EXIT_FAILURE - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit $EXIT_FAILURE - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done - - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit $EXIT_SUCCESS - fi - ;; - - # libtool clean and uninstall mode - clean | uninstall) - modename="$modename: $mode" - rm="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) rm="$rm $arg"; rmforce=yes ;; - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; - esac - done - - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$file"; then - dir=. - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if (test -L "$file") >/dev/null 2>&1 \ - || (test -h "$file") >/dev/null 2>&1 \ - || test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - - if test "$mode" = uninstall; then - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - cmds=$postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - cmds=$old_postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - # FIXME: should reinstall the best remaining shared library. - fi - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - - # Read the .lo file - . $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" \ - && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" \ - && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - file=`$echo $file|${SED} 's,.exe$,,'` - noexename=`$echo $name|${SED} 's,.exe$,,'` - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - relink_command= - . $dir/$noexename - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - $show "$rm $rmfiles" - $run $rm $rmfiles || exit_status=1 - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - $show "rmdir $dir" - $run rmdir $dir >/dev/null 2>&1 - fi - done - - exit $exit_status - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - fi -fi # test -z "$show_help" - -if test -n "$exec_cmd"; then - eval exec $exec_cmd - exit $EXIT_FAILURE -fi - -# We need to display help for each of the modes. -case $mode in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - --version print version information - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE. - -Report bugs to <bug-libtool@gnu.org>." - exit $EXIT_SUCCESS - ;; - -clean) - $echo \ -"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; -esac - -$echo -$echo "Try \`$modename --help' for more information about other modes." - -exit $EXIT_SUCCESS - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/nx-X11/extras/freetype2/builds/unix/mkinstalldirs b/nx-X11/extras/freetype2/builds/unix/mkinstalldirs deleted file mode 100644 index 6fbe5e117..000000000 --- a/nx-X11/extras/freetype2/builds/unix/mkinstalldirs +++ /dev/null @@ -1,150 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2004-02-15.20 - -# Original author: Noah Friedman <friedman@prep.ai.mit.edu> -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to <bug-automake@gnu.org> or send patches to -# <automake-patches@gnu.org>. - -errstatus=0 -dirmode="" - -usage="\ -Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... - -Create each directory DIR (with mode MODE, if specified), including all -leading file name components. - -Report bugs to <bug-automake@gnu.org>." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" - exit 0 - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --version) - echo "$0 $scriptversion" - exit 0 - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -# mkdir -p a/c at the same time, both will detect that a is missing, -# one will create a, then the other will try to create a and die with -# a "File exists" error. This is a problem when calling mkinstalldirs -# from a parallel make. We use --version in the probe to restrict -# ourselves to GNU mkdir, which is thread-safe. -case $dirmode in - '') - if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - test -d ./-p && rmdir ./-p - test -d ./--version && rmdir ./--version - fi - ;; - *) - if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && - test ! -d ./--version; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - else - # Clean up after NextStep and OpenStep mkdir. - for d in ./-m ./-p ./--version "./$dirmode"; - do - test -d $d && rmdir $d - done - fi - ;; -esac - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr="" - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/nx-X11/extras/freetype2/builds/unix/unix-cc.in b/nx-X11/extras/freetype2/builds/unix/unix-cc.in deleted file mode 100644 index 2d1f17e5f..000000000 --- a/nx-X11/extras/freetype2/builds/unix/unix-cc.in +++ /dev/null @@ -1,100 +0,0 @@ -# -# FreeType 2 template for Unix-specific compiler definitions -# - -# Copyright 1996-2000, 2002, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CC := @CC@ -COMPILER_SEP := $(SEP) - -ifndef LIBTOOL - LIBTOOL := $(BUILD_DIR)/libtool -endif - - -# The object file extension (for standard and static libraries). This can be -# .o, .tco, .obj, etc., depending on the platform. -# -O := lo -SO := o - - -# The library file extension (for standard and static libraries). This can -# be .a, .lib, etc., depending on the platform. -# -A := la -SA := a - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := lib$(PROJECT) - - -# Path inclusion flag. Some compilers use a different flag than `-I' to -# specify an additional include path. Examples are `/i=' or `-J'. -# -I := -I - - -# C flag used to define a macro before the compilation of a given source -# object. Usually it is `-D' like in `-DDEBUG'. -# -D := -D - - -# The link flag used to specify a given library file on link. Note that -# this is only used to compile the demo programs, not the library itself. -# -L := -l - - -# Target flag. -# -T := -o$(space) - - -# C flags -# -# These should concern: debug output, optimization & warnings. -# -# Use the ANSIFLAGS variable to define the compiler flags used to enfore -# ANSI compliance. -# -# We use our own FreeType configuration file. -# -CFLAGS := -c @XX_CFLAGS@ @CPPFLAGS@ @CFLAGS@ \ - -DFT_CONFIG_CONFIG_H="<ftconfig.h>" - -# ANSIFLAGS: Put there the flags used to make your compiler ANSI-compliant. -# -ANSIFLAGS := @XX_ANSIFLAGS@ - -# C compiler to use -- we use libtool! -# -# -CCraw := $(CC) -CC := $(LIBTOOL) --mode=compile $(CCraw) - -# Linker flags. -# -LDFLAGS := @LDFLAGS@ - - -# Library linking -# -LINK_LIBRARY = $(LIBTOOL) --mode=link $(CCraw) -o $@ $(OBJECTS_LIST) \ - -rpath $(libdir) -version-info $(version_info) \ - $(LDFLAGS) - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/unix-def.in b/nx-X11/extras/freetype2/builds/unix/unix-def.in deleted file mode 100644 index c263e0e26..000000000 --- a/nx-X11/extras/freetype2/builds/unix/unix-def.in +++ /dev/null @@ -1,98 +0,0 @@ -# -# FreeType 2 configuration rules templates for Unix + configure -# - - -# Copyright 1996-2000, 2002, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifndef TOP_DIR - TOP_DIR := . -endif -TOP_DIR := $(shell cd $(TOP_DIR); pwd) - -DELETE := @RMF@ -DELDIR := @RMDIR@ -SEP := / - -# this is used for `make distclean' and `make install' -ifndef OBJ_BUILD - OBJ_BUILD := $(BUILD_DIR) -endif - -# don't use `:=' here since the path stuff will be included after this file -# -FTSYS_SRC = @FTSYS_SRC@ - -INSTALL := @INSTALL@ -INSTALL_DATA := @INSTALL_DATA@ -INSTALL_PROGRAM := @INSTALL_PROGRAM@ -INSTALL_SCRIPT := @INSTALL_SCRIPT@ -MKINSTALLDIRS := $(BUILD_DIR)/mkinstalldirs - -DISTCLEAN += $(OBJ_BUILD)/config.cache \ - $(OBJ_BUILD)/config.log \ - $(OBJ_BUILD)/config.status \ - $(OBJ_BUILD)/unix-def.mk \ - $(OBJ_BUILD)/unix-cc.mk \ - $(OBJ_BUILD)/ftconfig.h \ - $(OBJ_BUILD)/freetype-config \ - $(OBJ_BUILD)/freetype2.pc \ - $(LIBTOOL) \ - $(OBJ_BUILD)/Makefile - - -# Standard installation variables. -# -prefix := @prefix@ -exec_prefix := @exec_prefix@ -libdir := @libdir@ -bindir := @bindir@ -includedir := @includedir@ -datadir := @datadir@ - -version_info := @version_info@ - - -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP_DIR=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f $TOP_DIR/Makefile setup [options] -# make -f $TOP_DIR/Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(shell cd $(TOP_DIR)/objs; pwd) -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The SYSTEM_ZLIB macro is defined if the user wishes to link dynamically -# with its system wide zlib. If SYSTEM_ZLIB is 'yes', the zlib part of the -# ftgzip module is not compiled in. -SYSTEM_ZLIB := @SYSTEM_ZLIB@ - - -# The NO_OUTPUT macro is appended to command lines in order to ignore -# the output of some programs. -# -NO_OUTPUT := 2> /dev/null - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/unix-dev.mk b/nx-X11/extras/freetype2/builds/unix/unix-dev.mk deleted file mode 100644 index 12c641af2..000000000 --- a/nx-X11/extras/freetype2/builds/unix/unix-dev.mk +++ /dev/null @@ -1,26 +0,0 @@ -# -# FreeType 2 Configuration rules for Unix + GCC -# -# Development version without optimizations & libtool -# and no installation. -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/unix/unixddef.mk -BUILD_DIR := $(TOP_DIR)/devel - -include $(TOP_DIR)/builds/compiler/gcc-dev.mk -include $(TOP_DIR)/builds/link_std.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/unix-lcc.mk b/nx-X11/extras/freetype2/builds/unix/unix-lcc.mk deleted file mode 100644 index 6038e5239..000000000 --- a/nx-X11/extras/freetype2/builds/unix/unix-lcc.mk +++ /dev/null @@ -1,24 +0,0 @@ -# -# FreeType 2 Configuration rules for Unix + LCC -# -# Development version without optimizations & libtool -# and no installation. -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/unix/unixddef.mk -include $(TOP_DIR)/builds/compiler/unix-lcc.mk -include $(TOP_DIR)/builds/link_std.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/unix.mk b/nx-X11/extras/freetype2/builds/unix/unix.mk deleted file mode 100644 index c1555acf6..000000000 --- a/nx-X11/extras/freetype2/builds/unix/unix.mk +++ /dev/null @@ -1,61 +0,0 @@ -# -# FreeType 2 configuration rules for UNIX platforms -# - - -# Copyright 1996-2000, 2002, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - -# We need these declarations here since unix-def.mk is a generated file. -BUILD_DIR := $(TOP_DIR)/builds/unix -PLATFORM := unix - -have_mk := $(strip $(wildcard $(BUILD_DIR)/unix-def.mk)) -ifneq ($(have_mk),) - include $(BUILD_DIR)/unix-def.mk - include $(BUILD_DIR)/unix-cc.mk -else - # we are building FT2 not in the src tree - include $(OBJ_DIR)/unix-def.mk - include $(OBJ_DIR)/unix-cc.mk -endif - -ifdef BUILD_PROJECT - - .PHONY: clean_project distclean_project - - # Now include the main sub-makefile. It contains all the rules used to - # build the library with the previous variables defined. - # - include $(TOP_DIR)/builds/$(PROJECT).mk - - - # The cleanup targets. - # - clean_project: clean_project_unix - distclean_project: distclean_project_unix - - - # This final rule is used to link all object files into a single library. - # It is part of the system-specific sub-Makefile because not all - # librarians accept a simple syntax like - # - # librarian library_file {list of object files} - # - $(PROJECT_LIBRARY): $(OBJECTS_LIST) -ifdef CLEAN_LIBRARY - -$(CLEAN_LIBRARY) $(NO_OUTPUT) -endif - $(LINK_LIBRARY) - -endif - -include $(TOP_DIR)/builds/unix/install.mk - -# EOF diff --git a/nx-X11/extras/freetype2/builds/unix/unixddef.mk b/nx-X11/extras/freetype2/builds/unix/unixddef.mk deleted file mode 100644 index 803ce755a..000000000 --- a/nx-X11/extras/freetype2/builds/unix/unixddef.mk +++ /dev/null @@ -1,55 +0,0 @@ -# -# FreeType 2 configuration rules templates for -# development under Unix with no configure script (gcc only) -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -ifndef TOP_DIR - TOP_DIR := . -endif -TOP_DIR := $(shell cd $(TOP_DIR); pwd) - -DELETE := rm -f -SEP := / - -# we use a special devel ftoption.h -BUILD_DIR := $(TOP_DIR)/devel - -# do not set the platform to `unix', or libtool will trick you -PLATFORM := unixdev - - -# The directory where all object files are placed. -# -ifndef OBJ_DIR - OBJ_DIR := $(shell cd $(TOP_DIR)/objs; pwd) -endif - - -# library file name -# -LIBRARY := lib$(PROJECT) - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -NO_OUTPUT := 2> /dev/null - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/vms/ftconfig.h b/nx-X11/extras/freetype2/builds/vms/ftconfig.h deleted file mode 100644 index dcce1e090..000000000 --- a/nx-X11/extras/freetype2/builds/vms/ftconfig.h +++ /dev/null @@ -1,331 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftconfig.h */ -/* */ -/* VMS-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This header file contains a number of macro definitions that are used */ - /* by the rest of the engine. Most of the macros here are automatically */ - /* determined at compile time, and you should not need to change it to */ - /* port FreeType, except to compile the library with a non-ANSI */ - /* compiler. */ - /* */ - /* Note however that if some specific modifications are needed, we */ - /* advise you to place a modified copy in your build directory. */ - /* */ - /* The build directory is usually `freetype/builds/<system>', and */ - /* contains system-specific files that are always included first when */ - /* building the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ - - - /* Include the header file containing all developer build options */ -#include <ft2build.h> -#include FT_CONFIG_OPTIONS_H -#include FT_CONFIG_STANDARD_LIBRARY_H - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled to suit a specific system. The current */ - /* ones are defaults used to compile FreeType in an ANSI C environment */ - /* (16bit compilers are also supported). Copy this file to your own */ - /* `freetype/builds/<system>' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ - - -#define HAVE_UNISTD_H 1 -#define HAVE_FCNTL_H 1 - -#define SIZEOF_INT 4 -#define SIZEOF_LONG 4 - -#define FT_SIZEOF_INT 4 -#define FT_SIZEOF_LONG 4 - -#define FT_CHAR_BIT 8 - - - /* Preferred alignment of data */ -#define FT_ALIGNMENT 8 - - - /* FT_UNUSED is a macro used to indicate that a given parameter is not */ - /* used -- this is only used to get rid of unpleasant compiler warnings */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - - - /*************************************************************************/ - /* */ - /* AUTOMATIC CONFIGURATION MACROS */ - /* */ - /* These macros are computed from the ones defined above. Don't touch */ - /* their definition, unless you know precisely what you are doing. No */ - /* porter should need to mess with them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Mac support */ - /* */ - /* This is the only necessary change, so it is defined here instead */ - /* providing a new configuration file. */ - /* */ -#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ - ( defined( __MWERKS__ ) && defined( macintosh ) ) -#define FT_MACINTOSH 1 -#endif - - - /*************************************************************************/ - /* */ - /* IntN types */ - /* */ - /* Used to guarantee the size of some specific integers. */ - /* */ - typedef signed short FT_Int16; - typedef unsigned short FT_UInt16; - -#if FT_SIZEOF_INT == 4 - - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; - -#elif FT_SIZEOF_LONG == 4 - - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; - -#else -#error "no 32bit type found -- please check your configuration files" -#endif - - /* look up an integer type that is at least 32 bits */ -#if FT_SIZEOF_INT >= 4 - - typedef int FT_Fast; - typedef unsigned int FT_UFast; - -#elif FT_SIZEOF_LONG >= 4 - - typedef long FT_Fast; - typedef unsigned long FT_UFast; - -#endif - - - /* determine whether we have a 64-bit int type for platforms without */ - /* Autoconf */ -#if FT_SIZEOF_LONG == 8 - - /* FT_LONG64 must be defined if a 64-bit type is available */ -#define FT_LONG64 -#define FT_INT64 long - -#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __BORLANDC__ ) /* Borland C++ */ - - /* XXXX: We should probably check the value of __BORLANDC__ in order */ - /* to test the compiler version. */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __WATCOMC__ ) /* Watcom C++ */ - - /* Watcom doesn't provide 64-bit data types */ - -#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ - -#define FT_LONG64 -#define FT_INT64 long long int - -#elif defined( __GNUC__ ) - - /* GCC provides the "long long" type */ -#define FT_LONG64 -#define FT_INT64 long long int - -#endif /* FT_SIZEOF_LONG == 8 */ - - -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - - /*************************************************************************/ - /* */ - /* A 64-bit data type will create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable their use if */ - /* __STDC__ is defined. You can however ignore this rule by */ - /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ - /* */ -#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) - -#ifdef __STDC__ - - /* undefine the 64-bit macros in strict ANSI compilation mode */ -#undef FT_LONG64 -#undef FT_INT64 - -#endif /* __STDC__ */ - -#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ - - -#ifdef FT_MAKE_OPTION_SINGLE_OBJECT - -#define FT_LOCAL( x ) static x -#define FT_LOCAL_DEF( x ) static x - -#else - -#ifdef __cplusplus -#define FT_LOCAL( x ) extern "C" x -#define FT_LOCAL_DEF( x ) extern "C" x -#else -#define FT_LOCAL( x ) extern x -#define FT_LOCAL_DEF( x ) x -#endif - -#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ - - -#ifndef FT_BASE - -#ifdef __cplusplus -#define FT_BASE( x ) extern "C" x -#else -#define FT_BASE( x ) extern x -#endif - -#endif /* !FT_BASE */ - - -#ifndef FT_BASE_DEF - -#ifdef __cplusplus -#define FT_BASE_DEF( x ) extern "C" x -#else -#define FT_BASE_DEF( x ) extern x -#endif - -#endif /* !FT_BASE_DEF */ - - -#ifndef FT_EXPORT - -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ - -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ - - -FT_END_HEADER - - -#endif /* __FTCONFIG_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/builds/vms/ftsystem.c b/nx-X11/extras/freetype2/builds/vms/ftsystem.c deleted file mode 100644 index 8a198e63a..000000000 --- a/nx-X11/extras/freetype2/builds/vms/ftsystem.c +++ /dev/null @@ -1,321 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.c */ -/* */ -/* VMS-specific FreeType low-level system interface (body). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> - /* we use our special ftconfig.h file, not the standard one */ -#include <ftconfig.h> -#include FT_INTERNAL_DEBUG_H -#include FT_SYSTEM_H -#include FT_ERRORS_H -#include FT_TYPES_H -#include FT_INTERNAL_OBJECTS_H - - /* memory-mapping includes and definitions */ -#ifdef HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include <sys/mman.h> -#ifndef MAP_FILE -#define MAP_FILE 0x00 -#endif - -#ifdef MUNMAP_USES_VOIDP -#define MUNMAP_ARG_CAST void * -#else -#define MUNMAP_ARG_CAST char * -#endif - -#ifdef NEED_MUNMAP_DECL - -#ifdef __cplusplus - extern "C" -#else - extern -#endif - int - munmap( char* addr, - int len ); - -#define MUNMAP_ARG_CAST char * - -#endif /* NEED_DECLARATION_MUNMAP */ - - -#include <sys/types.h> -#include <sys/stat.h> - -#ifdef HAVE_FCNTL_H -#include <fcntl.h> -#endif - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - - - /*************************************************************************/ - /* */ - /* MEMORY MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_alloc */ - /* */ - /* <Description> */ - /* The memory allocation function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* size :: The requested size in bytes. */ - /* */ - /* <Return> */ - /* The address of newly allocated block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_alloc( FT_Memory memory, - long size ) - { - FT_UNUSED( memory ); - - return malloc( size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_realloc */ - /* */ - /* <Description> */ - /* The memory reallocation function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* cur_size :: The current size of the allocated memory block. */ - /* */ - /* new_size :: The newly requested size in bytes. */ - /* */ - /* block :: The current address of the block in memory. */ - /* */ - /* <Return> */ - /* The address of the reallocated memory block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) - { - FT_UNUSED( memory ); - FT_UNUSED( cur_size ); - - return realloc( block, new_size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_free */ - /* */ - /* <Description> */ - /* The memory release function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* block :: The address of block in memory to be freed. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_free( FT_Memory memory, - void* block ) - { - FT_UNUSED( memory ); - - free( block ); - } - - - /*************************************************************************/ - /* */ - /* RESOURCE MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_io - - /* We use the macro STREAM_FILE for convenience to extract the */ - /* system-specific stream handle from a given FreeType stream object */ -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_close_stream */ - /* */ - /* <Description> */ - /* The function to close a stream. */ - /* */ - /* <Input> */ - /* stream :: A pointer to the stream object. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_close_stream( FT_Stream stream ) - { - munmap( (MUNMAP_ARG_CAST)stream->descriptor.pointer, stream->size ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = 0; - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Stream_Open( FT_Stream stream, - const char* filepathname ) - { - int file; - struct stat stat_buf; - - - if ( !stream ) - return FT_Err_Invalid_Stream_Handle; - - /* open the file */ - file = open( filepathname, O_RDONLY ); - if ( file < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - return FT_Err_Cannot_Open_Resource; - } - - if ( fstat( file, &stat_buf ) < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `fstat' file `%s'\n", filepathname )); - goto Fail_Map; - } - - stream->size = stat_buf.st_size; - stream->pos = 0; - stream->base = (unsigned char *)mmap( NULL, - stream->size, - PROT_READ, - MAP_FILE | MAP_PRIVATE, - file, - 0 ); - - if ( (long)stream->base == -1 ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not `mmap' file `%s'\n", filepathname )); - goto Fail_Map; - } - - close( file ); - - stream->descriptor.pointer = stream->base; - stream->pathname.pointer = (char*)filepathname; - - stream->close = ft_close_stream; - stream->read = 0; - - FT_TRACE1(( "FT_Stream_Open:" )); - FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", - filepathname, stream->size )); - - return FT_Err_Ok; - - Fail_Map: - close( file ); - - stream->base = NULL; - stream->size = 0; - stream->pos = 0; - - return FT_Err_Cannot_Open_Stream; - } - - -#ifdef FT_DEBUG_MEMORY - - extern FT_Int - ft_mem_debug_init( FT_Memory memory ); - - extern void - ft_mem_debug_done( FT_Memory memory ); - -#endif - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Memory ) - FT_New_Memory( void ) - { - FT_Memory memory; - - - memory = (FT_Memory)malloc( sizeof ( *memory ) ); - if ( memory ) - { - memory->user = 0; - memory->alloc = ft_alloc; - memory->realloc = ft_realloc; - memory->free = ft_free; -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_init( memory ); -#endif - } - - return memory; - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( void ) - FT_Done_Memory( FT_Memory memory ) - { -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_done( memory ); -#endif - memory->free( memory, memory ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/builds/win32/detect.mk b/nx-X11/extras/freetype2/builds/win32/detect.mk deleted file mode 100644 index f24538fdb..000000000 --- a/nx-X11/extras/freetype2/builds/win32/detect.mk +++ /dev/null @@ -1,147 +0,0 @@ -# -# FreeType 2 configuration file to detect a Win32 host platform. -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -.PHONY: setup - - -ifeq ($(PLATFORM),ansi) - - # Detecting Windows NT is easy, as the OS variable must be defined and - # contains `Windows_NT'. Untested with Windows 2K, but I guess it should - # work... - # - ifeq ($(OS),Windows_NT) - - is_windows := 1 - - # We test for the COMSPEC environment variable, then run the `ver' - # command-line program to see if its output contains the word `Windows'. - # - # If this is true, we are running a win32 platform (or an emulation). - # - else - ifdef COMSPEC - is_windows := $(findstring Windows,$(strip $(shell ver))) - endif - endif # test NT - - ifdef is_windows - - PLATFORM := win32 - - endif -endif # test PLATFORM ansi - -ifeq ($(PLATFORM),win32) - - DELETE := del - COPY := copy - SEP := $(BACKSLASH) - - # gcc Makefile by default - CONFIG_FILE := w32-gcc.mk - ifeq ($(firstword $(CC)),cc) - CC := gcc - endif - - ifneq ($(findstring list,$(MAKECMDGOALS)),) # test for the "list" target - dump_target_list: - @echo � - @echo $(PROJECT_TITLE) build system -- supported compilers - @echo � - @echo Several command-line compilers are supported on Win32: - @echo � - @echo ��make setup���������������������gcc (with Mingw) - @echo ��make setup visualc�������������Microsoft Visual C++ - @echo ��make setup bcc32���������������Borland C/C++ - @echo ��make setup lcc�����������������Win32-LCC - @echo ��make setup intelc��������������Intel C/C++ - @echo � - - setup: dump_target_list - .PHONY: dump_target_list list - else - setup: dos_setup - endif - - # additionally, we provide hooks for various other compilers - # - ifneq ($(findstring visualc,$(MAKECMDGOALS)),) # Visual C/C++ - CONFIG_FILE := w32-vcc.mk - CC := cl - visualc: setup - .PHONY: visualc - endif - - ifneq ($(findstring intelc,$(MAKECMDGOALS)),) # Intel C/C++ - CONFIG_FILE := w32-intl.mk - CC := cl - visualc: setup - .PHONY: intelc - endif - - ifneq ($(findstring watcom,$(MAKECMDGOALS)),) # Watcom C/C++ - CONFIG_FILE := w32-wat.mk - CC := wcc386 - watcom: setup - .PHONY: watcom - endif - - ifneq ($(findstring visualage,$(MAKECMDGOALS)),) # Visual Age C++ - CONFIG_FILE := w32-icc.mk - CC := icc - visualage: setup - .PHONY: visualage - endif - - ifneq ($(findstring lcc,$(MAKECMDGOALS)),) # LCC-Win32 - CONFIG_FILE := w32-lcc.mk - CC := lcc - lcc: setup - .PHONY: lcc - endif - - ifneq ($(findstring mingw32,$(MAKECMDGOALS)),) # mingw32 - CONFIG_FILE := w32-mingw32.mk - CC := gcc - mingw32: setup - .PHONY: mingw32 - endif - - ifneq ($(findstring bcc32,$(MAKECMDGOALS)),) # Borland C++ - CONFIG_FILE := w32-bcc.mk - CC := bcc32 - bcc32: setup - .PHONY: bcc32 - endif - - ifneq ($(findstring devel-bcc,$(MAKECMDGOALS)),) # development target - CONFIG_FILE := w32-bccd.mk - CC := bcc32 - devel-bcc: setup - .PHONY: devel-bcc - endif - - ifneq ($(findstring devel-gcc,$(MAKECMDGOALS)),) # development target - CONFIG_FILE := w32-dev.mk - CC := gcc - devel-gcc: setup - .PHONY: devel-gcc - endif - -endif # test PLATFORM win32 - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/ftdebug.c b/nx-X11/extras/freetype2/builds/win32/ftdebug.c deleted file mode 100644 index 5816a4f9a..000000000 --- a/nx-X11/extras/freetype2/builds/win32/ftdebug.c +++ /dev/null @@ -1,211 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftdebug.c */ -/* */ -/* Debugging and logging component for Win32 (body). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This component contains various macros and functions used to ease the */ - /* debugging of the FreeType engine. Its main purpose is in assertion */ - /* checking, tracing, and error detection. */ - /* */ - /* There are now three debugging modes: */ - /* */ - /* - trace mode */ - /* */ - /* Error and trace messages are sent to the log file (which can be the */ - /* standard error output). */ - /* */ - /* - error mode */ - /* */ - /* Only error messages are generated. */ - /* */ - /* - release mode: */ - /* */ - /* No error message is sent or generated. The code is free from any */ - /* debugging parts. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H - - -#ifdef FT_DEBUG_LEVEL_ERROR - - -# include <stdarg.h> -# include <stdlib.h> -# include <string.h> - -# include <windows.h> - - - FT_EXPORT_DEF( void ) - FT_Message( const char* fmt, ... ) - { - static char buf[8192]; - va_list ap; - - - va_start( ap, fmt ); - vsprintf( buf, fmt, ap ); - OutputDebugStringA( buf ); - va_end( ap ); - } - - - FT_EXPORT_DEF( void ) - FT_Panic( const char* fmt, ... ) - { - static char buf[8192]; - va_list ap; - - - va_start( ap, fmt ); - vsprintf( buf, fmt, ap ); - OutputDebugStringA( buf ); - va_end( ap ); - - exit( EXIT_FAILURE ); - } - - -# ifdef FT_DEBUG_LEVEL_TRACE - - - /* array of trace levels, initialized to 0 */ - int ft_trace_levels[trace_count]; - - /* define array of trace toggle names */ -# define FT_TRACE_DEF( x ) #x , - - static const char* ft_trace_toggles[trace_count + 1] = - { -# include FT_INTERNAL_TRACE_H - NULL - }; - -# undef FT_TRACE_DEF - - - /*************************************************************************/ - /* */ - /* Initialize the tracing sub-system. This is done by retrieving the */ - /* value of the "FT2_DEBUG" environment variable. It must be a list of */ - /* toggles, separated by spaces, `;' or `,'. Example: */ - /* */ - /* "any:3 memory:6 stream:5" */ - /* */ - /* This will request that all levels be set to 3, except the trace level */ - /* for the memory and stream components which are set to 6 and 5, */ - /* respectively. */ - /* */ - /* See the file <freetype/internal/fttrace.h> for details of the */ - /* available toggle names. */ - /* */ - /* The level must be between 0 and 6; 0 means quiet (except for serious */ - /* runtime errors), and 6 means _very_ verbose. */ - /* */ - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - const char* ft2_debug = getenv( "FT2_DEBUG" ); - - - if ( ft2_debug ) - { - const char* p = ft2_debug; - const char* q; - - - for ( ; *p; p++ ) - { - /* skip leading whitespace and separators */ - if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) - continue; - - /* read toggle name, followed by ':' */ - q = p; - while ( *p && *p != ':' ) - p++; - - if ( *p == ':' && p > q ) - { - int n, i, len = p - q; - int level = -1, found = -1; - - - for ( n = 0; n < trace_count; n++ ) - { - const char* toggle = ft_trace_toggles[n]; - - - for ( i = 0; i < len; i++ ) - { - if ( toggle[i] != q[i] ) - break; - } - - if ( i == len && toggle[i] == 0 ) - { - found = n; - break; - } - } - - /* read level */ - p++; - if ( *p ) - { - level = *p++ - '0'; - if ( level < 0 || level > 6 ) - level = -1; - } - - if ( found >= 0 && level >= 0 ) - { - if ( found == trace_any ) - { - /* special case for "any" */ - for ( n = 0; n < trace_count; n++ ) - ft_trace_levels[n] = level; - } - else - ft_trace_levels[found] = level; - } - } - } - } - } - - -# else /* !FT_DEBUG_LEVEL_TRACE */ - - - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - /* nothing */ - } - - -# endif /* !FT_DEBUG_LEVEL_TRACE */ - -#endif /* FT_DEBUG_LEVEL_ERROR */ - -/* END */ diff --git a/nx-X11/extras/freetype2/builds/win32/visualc/freetype.dsp b/nx-X11/extras/freetype2/builds/win32/visualc/freetype.dsp deleted file mode 100644 index 5e88deb38..000000000 --- a/nx-X11/extras/freetype2/builds/win32/visualc/freetype.dsp +++ /dev/null @@ -1,349 +0,0 @@ -# Microsoft Developer Studio Project File - Name="freetype" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=freetype - Win32 Debug Singlethreaded -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "freetype.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "freetype.mak" CFG="freetype - Win32 Debug Singlethreaded" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "freetype - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug Multithreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Release Multithreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Release Singlethreaded" (based on "Win32 (x86) Static Library") -!MESSAGE "freetype - Win32 Debug Singlethreaded" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "freetype - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release" -# PROP Intermediate_Dir "..\..\..\objs\release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /MD /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c -# SUBTRACT CPP /nologo /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype219.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug" -# PROP Intermediate_Dir "..\..\..\objs\debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /MDd /Za /W4 /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype219_D.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug Multithreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "freetype___Win32_Debug_Multithreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Multithreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug_mt" -# PROP Intermediate_Dir "..\..\..\objs\debug_mt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /Za /W3 /Gm /GX /ZI /Od /I "..\freetype\include\\" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /GZ /c -# SUBTRACT BASE CPP /X -# ADD CPP /MTd /Za /W4 /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype200b8_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype219MT_D.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Release Multithreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "freetype___Win32_Release_Multithreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Release_Multithreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release_mt" -# PROP Intermediate_Dir "..\..\..\objs\release_mt" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /Za /W3 /GX /O2 /I "..\freetype\include\\" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_FLAT_COMPILE" /YX /FD /c -# ADD CPP /MT /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c -# SUBTRACT CPP /nologo /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"lib\freetype200b8.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype219MT.lib" - -!ELSEIF "$(CFG)" == "freetype - Win32 Release Singlethreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "freetype___Win32_Release_Singlethreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Release_Singlethreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "..\..\..\objs\release_st" -# PROP Intermediate_Dir "..\..\..\objs\release_st" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c -# SUBTRACT BASE CPP /YX -# ADD CPP /Za /W4 /GX /Zi /O2 /I "..\..\..\include" /D "NDEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /FD /c -# SUBTRACT CPP /nologo /YX -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype206.lib" -# ADD LIB32 /out:"..\..\..\objs\freetype219ST.lib" -# SUBTRACT LIB32 /nologo - -!ELSEIF "$(CFG)" == "freetype - Win32 Debug Singlethreaded" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "freetype___Win32_Debug_Singlethreaded" -# PROP BASE Intermediate_Dir "freetype___Win32_Debug_Singlethreaded" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "..\..\..\objs\debug_st" -# PROP Intermediate_Dir "..\..\..\objs\debug_st" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /Za /W4 /Gm /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c -# SUBTRACT BASE CPP /X /YX -# ADD CPP /Za /W4 /GX /Zi /Od /I "..\..\..\include" /D "_DEBUG" /D "WIN32" /D "_MBCS" /D "_LIB" /D "FT_DEBUG_LEVEL_ERROR" /D "FT_DEBUG_LEVEL_TRACE" /FD /GZ /c -# SUBTRACT CPP /nologo /X /YX -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo /out:"..\..\..\objs\freetype206_D.lib" -# ADD LIB32 /nologo /out:"..\..\..\objs\freetype219ST_D.lib" - -!ENDIF - -# Begin Target - -# Name "freetype - Win32 Release" -# Name "freetype - Win32 Debug" -# Name "freetype - Win32 Debug Multithreaded" -# Name "freetype - Win32 Release Multithreaded" -# Name "freetype - Win32 Release Singlethreaded" -# Name "freetype - Win32 Debug Singlethreaded" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=..\..\..\src\autohint\autohint.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\bdf\bdf.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cff\cff.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftbase.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cache\ftcache.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\ftdebug.c -# ADD CPP /Ze -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftglyph.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\gzip\ftgzip.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\lzw\ftlzw.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftinit.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftmm.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\base\ftsystem.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pcf\pcf.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pfr\pfr.c -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\psaux\psaux.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\pshinter\pshinter.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\psnames\psmodule.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\raster\raster.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\sfnt\sfnt.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\smooth\smooth.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\truetype\truetype.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\type1\type1.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\cid\type1cid.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\type42\type42.c -# SUBTRACT CPP /Fr -# End Source File -# Begin Source File - -SOURCE=..\..\..\src\winfonts\winfnt.c -# SUBTRACT CPP /Fr -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=..\..\..\include\ft2build.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftconfig.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftheader.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftmodule.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftoption.h -# End Source File -# Begin Source File - -SOURCE=..\..\..\include\freetype\config\ftstdlib.h -# End Source File -# End Group -# End Target -# End Project diff --git a/nx-X11/extras/freetype2/builds/win32/visualc/freetype.dsw b/nx-X11/extras/freetype2/builds/win32/visualc/freetype.dsw deleted file mode 100644 index b1b375dbb..000000000 --- a/nx-X11/extras/freetype2/builds/win32/visualc/freetype.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "freetype"=.\freetype.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/nx-X11/extras/freetype2/builds/win32/visualc/freetype.sln b/nx-X11/extras/freetype2/builds/win32/visualc/freetype.sln deleted file mode 100644 index 0afd3a3b6..000000000 --- a/nx-X11/extras/freetype2/builds/win32/visualc/freetype.sln +++ /dev/null @@ -1,33 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "freetype", "freetype.vcproj", "{78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Debug Multithreaded = Debug Multithreaded - Debug Singlethreaded = Debug Singlethreaded - Release = Release - Release Multithreaded = Release Multithreaded - Release Singlethreaded = Release Singlethreaded - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug.ActiveCfg = Debug|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug.Build.0 = Debug|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded.ActiveCfg = Debug Multithreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Multithreaded.Build.0 = Debug Multithreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded.ActiveCfg = Debug Singlethreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Debug Singlethreaded.Build.0 = Debug Singlethreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release.ActiveCfg = Release|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release.Build.0 = Release|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded.ActiveCfg = Release Multithreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Multithreaded.Build.0 = Release Multithreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded.ActiveCfg = Release Singlethreaded|Win32 - {78B079BD-9FC7-4B9E-B4A6-96DA0F00248B}.Release Singlethreaded.Build.0 = Release Singlethreaded|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection -EndGlobal diff --git a/nx-X11/extras/freetype2/builds/win32/visualc/freetype.vcproj b/nx-X11/extras/freetype2/builds/win32/visualc/freetype.vcproj deleted file mode 100644 index 4967e582a..000000000 --- a/nx-X11/extras/freetype2/builds/win32/visualc/freetype.vcproj +++ /dev/null @@ -1,1717 +0,0 @@ -<?xml version="1.0" encoding="windows-1251"?> -<VisualStudioProject - ProjectType="Visual C++" - Version="7.10" - Name="freetype" - ProjectGUID="{D0087BEB-3E7B-4004-BD4A-E4D071CF8D92}" - SccProjectName="" - SccLocalPath=""> - <Platforms> - <Platform - Name="Win32"/> - </Platforms> - <Configurations> - <Configuration - Name="Release|Win32" - OutputDirectory=".\..\..\..\objs\release" - IntermediateDirectory=".\..\..\..\objs\release" - ConfigurationType="4" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - ImproveFloatingPointConsistency="TRUE" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB" - StringPooling="TRUE" - RuntimeLibrary="2" - EnableFunctionLevelLinking="TRUE" - DisableLanguageExtensions="TRUE" - PrecompiledHeaderFile=".\..\..\..\objs\release/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release/" - ObjectFile=".\..\..\..\objs\release/" - ProgramDataBaseFileName=".\..\..\..\objs\release/" - WarningLevel="4" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype219.lib" - SuppressStartupBanner="TRUE"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release Multithreaded|Win32" - OutputDirectory=".\..\..\..\objs\release_mt" - IntermediateDirectory=".\..\..\..\objs\release_mt" - ConfigurationType="4" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - ImproveFloatingPointConsistency="TRUE" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB" - StringPooling="TRUE" - RuntimeLibrary="0" - EnableFunctionLevelLinking="TRUE" - DisableLanguageExtensions="TRUE" - PrecompiledHeaderFile=".\..\..\..\objs\release_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_mt/" - ObjectFile=".\..\..\..\objs\release_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\release_mt/" - WarningLevel="4" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype219MT.lib" - SuppressStartupBanner="TRUE"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Release Singlethreaded|Win32" - OutputDirectory=".\..\..\..\objs\release_st" - IntermediateDirectory=".\..\..\..\objs\release_st" - ConfigurationType="4" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - InlineFunctionExpansion="1" - ImproveFloatingPointConsistency="TRUE" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="NDEBUG;WIN32;_LIB" - StringPooling="TRUE" - RuntimeLibrary="4" - EnableFunctionLevelLinking="TRUE" - DisableLanguageExtensions="TRUE" - PrecompiledHeaderFile=".\..\..\..\objs\release_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\release_st/" - ObjectFile=".\..\..\..\objs\release_st/" - ProgramDataBaseFileName=".\..\..\..\objs\release_st/" - WarningLevel="4" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype219ST.lib"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="NDEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Debug|Win32" - OutputDirectory=".\..\..\..\objs\debug" - IntermediateDirectory=".\..\..\..\objs\debug" - ConfigurationType="4" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - ImproveFloatingPointConsistency="TRUE" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE" - BasicRuntimeChecks="3" - RuntimeLibrary="3" - DisableLanguageExtensions="TRUE" - PrecompiledHeaderFile=".\..\..\..\objs\debug/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug/" - ObjectFile=".\..\..\..\objs\debug/" - ProgramDataBaseFileName=".\..\..\..\objs\debug/" - WarningLevel="4" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype219_D.lib" - SuppressStartupBanner="TRUE"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Debug Singlethreaded|Win32" - OutputDirectory=".\..\..\..\objs\debug_st" - IntermediateDirectory=".\..\..\..\objs\debug_st" - ConfigurationType="4" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - ImproveFloatingPointConsistency="TRUE" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE" - BasicRuntimeChecks="3" - RuntimeLibrary="5" - DisableLanguageExtensions="TRUE" - PrecompiledHeaderFile=".\..\..\..\objs\debug_st/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_st/" - ObjectFile=".\..\..\..\objs\debug_st/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_st/" - WarningLevel="4" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype219ST_D.lib" - SuppressStartupBanner="TRUE"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - <Configuration - Name="Debug Multithreaded|Win32" - OutputDirectory=".\..\..\..\objs\debug_mt" - IntermediateDirectory=".\..\..\..\objs\debug_mt" - ConfigurationType="4" - UseOfMFC="0" - ATLMinimizesCRunTimeLibraryUsage="FALSE" - CharacterSet="2"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - ImproveFloatingPointConsistency="TRUE" - AdditionalIncludeDirectories="..\..\..\include" - PreprocessorDefinitions="_DEBUG;WIN32;_LIB;FT_DEBUG_LEVEL_ERROR;FT_DEBUG_LEVEL_TRACE" - BasicRuntimeChecks="3" - RuntimeLibrary="1" - DisableLanguageExtensions="TRUE" - PrecompiledHeaderFile=".\..\..\..\objs\debug_mt/freetype.pch" - AssemblerListingLocation=".\..\..\..\objs\debug_mt/" - ObjectFile=".\..\..\..\objs\debug_mt/" - ProgramDataBaseFileName=".\..\..\..\objs\debug_mt/" - WarningLevel="4" - DebugInformationFormat="3" - CompileAs="0"/> - <Tool - Name="VCCustomBuildTool"/> - <Tool - Name="VCLibrarianTool" - OutputFile="..\..\..\objs\freetype219MT_D.lib" - SuppressStartupBanner="TRUE"/> - <Tool - Name="VCMIDLTool"/> - <Tool - Name="VCPostBuildEventTool"/> - <Tool - Name="VCPreBuildEventTool"/> - <Tool - Name="VCPreLinkEventTool"/> - <Tool - Name="VCResourceCompilerTool" - PreprocessorDefinitions="_DEBUG" - Culture="1033"/> - <Tool - Name="VCWebServiceProxyGeneratorTool"/> - <Tool - Name="VCXMLDataGeneratorTool"/> - <Tool - Name="VCManagedWrapperGeneratorTool"/> - <Tool - Name="VCAuxiliaryManagedWrapperGeneratorTool"/> - </Configuration> - </Configurations> - <References> - </References> - <Files> - <Filter - Name="Source Files" - Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"> - <File - RelativePath="..\..\..\src\autofit\autofit.c"> - </File> - <File - RelativePath="..\..\..\src\autohint\autohint.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\bdf\bdf.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\cff\cff.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\base\ftbase.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\cache\ftcache.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\ftdebug.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - DisableLanguageExtensions="FALSE"/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - DisableLanguageExtensions="FALSE"/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - DisableLanguageExtensions="FALSE"/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - DisableLanguageExtensions="FALSE"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - DisableLanguageExtensions="FALSE"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3" - DisableLanguageExtensions="FALSE"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\base\ftglyph.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\gzip\ftgzip.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\lzw\ftlzw.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\base\ftinit.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\base\ftmm.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\base\ftsystem.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\pcf\pcf.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\pfr\pfr.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\psaux\psaux.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\pshinter\pshinter.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\psnames\psmodule.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\raster\raster.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\sfnt\sfnt.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\smooth\smooth.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\truetype\truetype.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\type1\type1.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\cid\type1cid.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\type42\type42.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - <File - RelativePath="..\..\..\src\winfonts\winfnt.c"> - <FileConfiguration - Name="Release|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Release Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="2" - AdditionalIncludeDirectories="" - PreprocessorDefinitions=""/> - </FileConfiguration> - <FileConfiguration - Name="Debug|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Singlethreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - <FileConfiguration - Name="Debug Multithreaded|Win32"> - <Tool - Name="VCCLCompilerTool" - Optimization="0" - AdditionalIncludeDirectories="" - PreprocessorDefinitions="" - BasicRuntimeChecks="3"/> - </FileConfiguration> - </File> - </Filter> - <Filter - Name="Header Files" - Filter="h;hpp;hxx;hm;inl"> - <File - RelativePath="..\..\..\include\ft2build.h"> - </File> - <File - RelativePath="..\..\..\include\freetype\config\ftconfig.h"> - </File> - <File - RelativePath="..\..\..\include\freetype\config\ftheader.h"> - </File> - <File - RelativePath="..\..\..\include\freetype\config\ftmodule.h"> - </File> - <File - RelativePath="..\..\..\include\freetype\config\ftoption.h"> - </File> - <File - RelativePath="..\..\..\include\freetype\config\ftstdlib.h"> - </File> - </Filter> - </Files> - <Globals> - </Globals> -</VisualStudioProject> diff --git a/nx-X11/extras/freetype2/builds/win32/visualc/index.html b/nx-X11/extras/freetype2/builds/win32/visualc/index.html deleted file mode 100644 index 9454d4c24..000000000 --- a/nx-X11/extras/freetype2/builds/win32/visualc/index.html +++ /dev/null @@ -1,38 +0,0 @@ -<html> -<header> -<title> - FreeType 2 Project Files for Visual C++ and VS.NET 2003 -</title> -</header> -<body> - -<h1> - FreeType 2 Project Files for Visual C++ and VS.NET 2003 -</h1> - -<p>This directory contains a project files for Visual C++, named -<tt>freetype.dsp</tt>, and Visual Studio, called <tt>freetype.sln</tt>. It -will compile the following libraries from the FreeType 2.1.9 sources:</p> - -<ul> - <pre> - freetype219.lib - release build; single threaded - freetype219_D.lib - debug build; single threaded - freetype219MT.lib - release build; multi-threaded - freetype219MT_D.lib - debug build; multi-threaded</pre> -</ul> - -<p>Be sure to extract the files with the Windows (CR+LF) line endings. ZIP -archives are already stored this way, so no further step is required. If -you use some <tt>.tar.*z</tt> archives, be sure to configure your extracting -tool to convert the line endings. For example, with <a -href="http://www.winzip.com">WinZip</a>, you should activate the <it>TAR -file smart CR/LF Conversion</it> option. Alternatively, you may consider -using the <tt>unix2dos</tt> or <tt>u2d</tt> utilities that are floating -around, which specifically deal with this particular problem. - -<p>Build directories are placed in the top-level <tt>objs</tt> -directory.</p> - -</body> -</html> diff --git a/nx-X11/extras/freetype2/builds/win32/w32-bcc.mk b/nx-X11/extras/freetype2/builds/win32/w32-bcc.mk deleted file mode 100644 index 522d6b378..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-bcc.mk +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 Borland C++ on Win32 -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/win32/win32-def.mk -include $(TOP_DIR)/builds/compiler/bcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/w32-bccd.mk b/nx-X11/extras/freetype2/builds/win32/w32-bccd.mk deleted file mode 100644 index 29519995a..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-bccd.mk +++ /dev/null @@ -1,25 +0,0 @@ -# -# FreeType 2 Borland C++ on Win32 + debugging -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/win32/win32-def.mk -BUILD_DIR := $(TOP_DIR)/devel - -include $(TOP_DIR)/builds/compiler/bcc-dev.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/w32-dev.mk b/nx-X11/extras/freetype2/builds/win32/w32-dev.mk deleted file mode 100644 index 0b665dee5..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-dev.mk +++ /dev/null @@ -1,35 +0,0 @@ -# -# FreeType 2 configuration rules for Win32 + GCC -# -# Development version without optimizations. -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# NOTE: This version requires that GNU Make is invoked from the Windows -# Shell (_not_ Cygwin BASH)! -# - -ifndef TOP_DIR - TOP_DIR := . -endif - -include $(TOP_DIR)/builds/win32/win32-def.mk -BUILD_DIR := $(TOP_DIR)/devel - -include $(TOP_DIR)/builds/compiler/gcc-dev.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/w32-gcc.mk b/nx-X11/extras/freetype2/builds/win32/w32-gcc.mk deleted file mode 100644 index 91d11338d..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-gcc.mk +++ /dev/null @@ -1,26 +0,0 @@ -# -# FreeType 2 configuration rules for Win32 + GCC -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# include Win32-specific definitions -include $(TOP_DIR)/builds/win32/win32-def.mk - -# include gcc-specific definitions -include $(TOP_DIR)/builds/compiler/gcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/w32-icc.mk b/nx-X11/extras/freetype2/builds/win32/w32-icc.mk deleted file mode 100644 index 1e18202ce..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-icc.mk +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 configuration rules for Win32 + IBM Visual Age C++ -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/win32/win32-def.mk -include $(TOP_DIR)/builds/compiler/visualage.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/w32-intl.mk b/nx-X11/extras/freetype2/builds/win32/w32-intl.mk deleted file mode 100644 index 5c42ad3c4..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-intl.mk +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 configuration rules for Intel C/C++ on Win32 -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/win32/win32-def.mk -include $(TOP_DIR)/builds/compiler/intelc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/w32-lcc.mk b/nx-X11/extras/freetype2/builds/win32/w32-lcc.mk deleted file mode 100644 index a147c4cb6..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-lcc.mk +++ /dev/null @@ -1,24 +0,0 @@ -# -# FreeType 2 configuration rules for Win32 + LCC -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -SEP := / -include $(TOP_DIR)/builds/win32/win32-def.mk -include $(TOP_DIR)/builds/compiler/win-lcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - -# EOF - diff --git a/nx-X11/extras/freetype2/builds/win32/w32-mingw32.mk b/nx-X11/extras/freetype2/builds/win32/w32-mingw32.mk deleted file mode 100644 index 01f71b343..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-mingw32.mk +++ /dev/null @@ -1,28 +0,0 @@ -# -# FreeType 2 configuration rules for mingw32 -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# include Win32-specific definitions -include $(TOP_DIR)/builds/win32/win32-def.mk - -LIBRARY := lib$(PROJECT) - -# include gcc-specific definitions -include $(TOP_DIR)/builds/compiler/gcc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/w32-vcc.mk b/nx-X11/extras/freetype2/builds/win32/w32-vcc.mk deleted file mode 100644 index 37bfec30b..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-vcc.mk +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 Visual C++ on Win32 -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/win32/win32-def.mk -include $(TOP_DIR)/builds/compiler/visualc.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/w32-wat.mk b/nx-X11/extras/freetype2/builds/win32/w32-wat.mk deleted file mode 100644 index accafc52f..000000000 --- a/nx-X11/extras/freetype2/builds/win32/w32-wat.mk +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 configuration rules for Watcom C/C++ -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -include $(TOP_DIR)/builds/win32/win32-def.mk -include $(TOP_DIR)/builds/compiler/watcom.mk - -# include linking instructions -include $(TOP_DIR)/builds/link_dos.mk - - -# EOF diff --git a/nx-X11/extras/freetype2/builds/win32/win32-def.mk b/nx-X11/extras/freetype2/builds/win32/win32-def.mk deleted file mode 100644 index a9db459e8..000000000 --- a/nx-X11/extras/freetype2/builds/win32/win32-def.mk +++ /dev/null @@ -1,55 +0,0 @@ -# -# FreeType 2 Win32 specific definitions -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -DELETE := del -SEP := $(strip \ ) -BUILD_DIR := $(TOP_DIR)/builds/win32 -PLATFORM := win32 - - -# The directory where all object files are placed. -# -# This lets you build the library in your own directory with something like -# -# set TOP_DIR=.../path/to/freetype2/top/dir... -# set OBJ_DIR=.../path/to/obj/dir -# make -f %TOP_DIR%/Makefile setup [options] -# make -f %TOP_DIR%/Makefile -# -ifndef OBJ_DIR - OBJ_DIR := $(TOP_DIR)/objs -endif - - -# The directory where all library files are placed. -# -# By default, this is the same as $(OBJ_DIR); however, this can be changed -# to suit particular needs. -# -LIB_DIR := $(OBJ_DIR) - - -# The name of the final library file. Note that the DOS-specific Makefile -# uses a shorter (8.3) name. -# -LIBRARY := $(PROJECT) - - -# The NO_OUTPUT macro is used to ignore the output of commands. -# -NO_OUTPUT = 2> nul - - -# EOF diff --git a/nx-X11/extras/freetype2/configure b/nx-X11/extras/freetype2/configure deleted file mode 100644 index 8621c0e5a..000000000 --- a/nx-X11/extras/freetype2/configure +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/sh -# -# Call the 'configure' script located in 'builds/unix'. -# -# This should re-generate the following files: -# -# config.mk -# install -# - -if test "x$GNUMAKE" = x; then - GNUMAKE=make -fi - -if test -z "`$GNUMAKE -v 2>/dev/null | grep GNU`"; then - if test -z "`$GNUMAKE -v 2>/dev/null | grep makepp`"; then - echo "GNU make (>= 3.79.1) or makepp (>= 1.19) is required to build FreeType2." >&2 - echo "Please try" >&2 - echo " \`GNUMAKE=<GNU make command name> $0'." >&2 - echo "or >&2" - echo " \`GNUMAKE=\"makepp --norc-substitution\" $0'." >&2 - exit 1 - fi -fi - -# Uh, oh. This is taken from autoconf. They know what they are doing... - -if expr a : '\(a\)' >/dev/null 2>&1; then - ft_expr=expr -else - ft_expr=false -fi - -ft2_dir=`(dirname "$0") 2>/dev/null || -$ft_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - -abs_curr_dir=`pwd` -abs_ft2_dir=`cd "$ft2_dir" && pwd` - -# build a dummy Makefile if we are not building in the source tree - -if test "$abs_curr_dir" != "$abs_ft2_dir"; then - mkdir reference - echo "TOP_DIR=$abs_ft2_dir" > Makefile - echo "OBJ_DIR=$abs_curr_dir" >> Makefile - echo "OBJ_BUILD=$abs_curr_dir" >> Makefile - echo "DOC_DIR=$abs_curr_dir/reference" >> Makefile - echo "LIBTOOL=$abs_curr_dir/libtool" >> Makefile - echo "include $abs_ft2_dir/Makefile" >> Makefile -fi - -# call make - -CFG="$@" $GNUMAKE setup unix - -# eof diff --git a/nx-X11/extras/freetype2/devel/ft2build.h b/nx-X11/extras/freetype2/devel/ft2build.h deleted file mode 100644 index 242ac1e85..000000000 --- a/nx-X11/extras/freetype2/devel/ft2build.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************/ -/* */ -/* ft2build.h */ -/* */ -/* FreeType 2 build and setup macros. */ -/* (Generic version) */ -/* */ -/* Copyright 1996-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /* - * This is a development version of <ft2build.h> that is used - * to build the library in debug mode. Its only difference with - * the reference is that it forces the use of the local "ftoption.h" - * which contains different settings for all configuration macros. - * - * To use it, you must define the environment variable FT2_BUILD_INCLUDE - * to point to the directory containing these two files ("ft2build.h" and - * "ftoption.h"), then invoke Jam as usual. - */ - -#ifndef __FT2_BUILD_DEVEL_H__ -#define __FT2_BUILD_DEVEL_H__ - -#define FT_CONFIG_OPTIONS_H <ftoption.h> - -#include <freetype/config/ftheader.h> - -#endif /* __FT2_BUILD_DEVEL_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/devel/ftoption.h b/nx-X11/extras/freetype2/devel/ftoption.h deleted file mode 100644 index eaad2b6dc..000000000 --- a/nx-X11/extras/freetype2/devel/ftoption.h +++ /dev/null @@ -1,577 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoption.h */ -/* */ -/* User-selectable configuration macros (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* USER-SELECTABLE CONFIGURATION MACROS */ - /* */ - /* This file contains the default configuration macro definitions for */ - /* a standard build of the FreeType library. There are three ways to */ - /* use this file to build project-specific versions of the library: */ - /* */ - /* - You can modify this file by hand, but this is not recommended in */ - /* cases where you would like to build several versions of the */ - /* library from a single source directory. */ - /* */ - /* - You can put a copy of this file in your build directory, more */ - /* precisely in "$BUILD/freetype/config/ftoption.h", where "$BUILD" */ - /* is the name of a directory that is included _before_ the FreeType */ - /* include path during compilation. */ - /* */ - /* The default FreeType Makefiles and Jamfiles use the build */ - /* directory "builds/<system>" by default, but you can easily change */ - /* that for your own projects. */ - /* */ - /* - Copy the file <ft2build.h> to "$BUILD/ft2build.h" and modify it */ - /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ - /* locate this file during the build. For example, */ - /* */ - /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ - /* #include <freetype/config/ftheader.h> */ - /* */ - /* will use "$BUILD/myftoptions.h" instead of this file for macro */ - /* definitions. */ - /* */ - /* Note also that you can similarly pre-define the macro */ - /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ - /* that are statically linked to the library at compile time. By */ - /* default, this file is <freetype/config/ftmodule.h>. */ - /* */ - /* We highly recommend using the third method whenever possible. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Many compilers provide a non-ANSI 64-bit data type that can be used */ - /* by FreeType to speed up some computations. However, this will create */ - /* some problems when compiling the library in strict ANSI mode. */ - /* */ - /* For this reason, the use of 64-bit integers is normally disabled when */ - /* the __STDC__ macro is defined. You can however disable this by */ - /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ - /* */ - /* For most compilers, this will only create compilation warnings when */ - /* building the library. */ - /* */ - /* ObNote: The compiler-specific 64-bit integers are detected in the */ - /* file "ftconfig.h" either statically or through the */ - /* `configure' script on supported platforms. */ - /* */ -#undef FT_CONFIG_OPTION_FORCE_INT64 - - - /*************************************************************************/ - /* */ - /* LZW-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* 'compress' program. This is mostly used to parse many of the PCF */ - /* files that come with various X11 distributions. The implementation */ - /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ - /* (see src/lzw/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. */ - /* */ -#define FT_CONFIG_OPTION_USE_LZW - - - /*************************************************************************/ - /* */ - /* Gzip-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* 'gzip' program. This is mostly used to parse many of the PCF files */ - /* that come with XFree86. The implementation uses `zlib' to */ - /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. See also */ - /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ - /* */ -#define FT_CONFIG_OPTION_USE_ZLIB - - - /*************************************************************************/ - /* */ - /* ZLib library selection */ - /* */ - /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ - /* It allows FreeType's `ftgzip' component to link to the system's */ - /* installation of the ZLib library. This is useful on systems like */ - /* Unix or VMS where it generally is already available. */ - /* */ - /* If you let it undefined, the component will use its own copy */ - /* of the zlib sources instead. These have been modified to be */ - /* included directly within the component and *not* export external */ - /* function names. This allows you to link any program with FreeType */ - /* _and_ ZLib without linking conflicts. */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ -/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ - - - /*************************************************************************/ - /* */ - /* DLL export compilation */ - /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ - /* */ - /* FT_EXPORT( return_type ) */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* */ - /* */ - /* FT_EXPORT_DEF( return_type ) */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* */ - /* You can provide your own implementation of FT_EXPORT and */ - /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ - /* will be later automatically defined as `extern return_type' to */ - /* allow normal compilation. */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ -/* #define FT_EXPORT(x) extern x */ -/* #define FT_EXPORT_DEF(x) x */ - - - /*************************************************************************/ - /* */ - /* Glyph Postscript Names handling */ - /* */ - /* By default, FreeType 2 is compiled with the `PSNames' module. This */ - /* module is in charge of converting a glyph name string into a */ - /* Unicode value, or return a Macintosh standard glyph name for the */ - /* use with the TrueType `post' table. */ - /* */ - /* Undefine this macro if you do not want `PSNames' compiled in your */ - /* build of FreeType. This has the following effects: */ - /* */ - /* - The TrueType driver will provide its own set of glyph names, */ - /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ - /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ - /* charmap out of the glyphs found in the fonts. */ - /* */ - /* You would normally undefine this configuration macro when building */ - /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ - /* */ -#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Postscript Names to Unicode Values support */ - /* */ - /* By default, FreeType 2 is built with the `PSNames' module compiled */ - /* in. Among other things, the module is used to convert a glyph name */ - /* into a Unicode value. This is especially useful in order to */ - /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */ - /* through a big table named the `Adobe Glyph List' (AGL). */ - /* */ - /* Undefine this macro if you do not want the Adobe Glyph List */ - /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthetize a Unicode charmap out of the glyphs found in the */ - /* fonts. */ - /* */ -#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - - /*************************************************************************/ - /* */ - /* Support for Mac fonts */ - /* */ - /* Define this macro if you want support for outline fonts in Mac */ - /* format (mac dfont, mac resource, macbinary containing a mac */ - /* resource) on non-Mac platforms. */ - /* */ - /* Note that the `FOND' resource isn't checked. */ - /* */ -#define FT_CONFIG_OPTION_MAC_FONTS - - - /*************************************************************************/ - /* */ - /* Guessing methods to access embedded resource forks */ - /* */ - /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ - /* GNU/Linux). */ - /* */ - /* Resource forks which include fonts data are stored sometimes in */ - /* locations which users or developers don't expected. In some cases, */ - /* resource forks start with some offset from the head of a file. In */ - /* other cases, the actual resource fork is stored in file different */ - /* from what the user specifies. If this option is activated, */ - /* FreeType tries to guess whether such offsets or different file */ - /* names must be used. */ - /* */ - /* Note that normal, direct access of resource forks is controlled via */ - /* the FT_CONFIG_OPTION_MAC_FONTS option. */ - /* */ -#ifdef FT_CONFIG_OPTION_MAC_FONTS -#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK -#endif - - - /*************************************************************************/ - /* */ - /* Allow the use of FT_Incremental_Interface to load typefaces that */ - /* contain no glyph data, but supply it via a callback function. */ - /* This allows FreeType to be used with the PostScript language, using */ - /* the GhostScript interpreter. */ - /* */ -/* #define FT_CONFIG_OPTION_INCREMENTAL */ - - - /*************************************************************************/ - /* */ - /* The size in bytes of the render pool used by the scan-line converter */ - /* to do all of its work. */ - /* */ - /* This must be greater than 4KByte. */ - /* */ -#define FT_RENDER_POOL_SIZE 16384L - - - /*************************************************************************/ - /* */ - /* FT_MAX_MODULES */ - /* */ - /* The maximum number of modules that can be registered in a single */ - /* FreeType library object. 32 is the default. */ - /* */ -#define FT_MAX_MODULES 32 - - - /*************************************************************************/ - /* */ - /* Debug level */ - /* */ - /* FreeType can be compiled in debug or trace mode. In debug mode, */ - /* errors are reported through the `ftdebug' component. In trace */ - /* mode, additional messages are sent to the standard output during */ - /* execution. */ - /* */ - /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ - /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ - /* */ - /* Don't define any of these macros to compile in `release' mode! */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ -#define FT_DEBUG_LEVEL_ERROR -#define FT_DEBUG_LEVEL_TRACE - - - /*************************************************************************/ - /* */ - /* Memory Debugging */ - /* */ - /* FreeType now comes with an integrated memory debugger that is */ - /* capable of detecting simple errors like memory leaks or double */ - /* deletes. To compile it within your build of the library, you */ - /* should define FT_DEBUG_MEMORY here. */ - /* */ - /* Note that the memory debugger is only activated at runtime when */ - /* when the _environment_ variable "FT2_DEBUG_MEMORY" is defined also! */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ -#define FT_DEBUG_MEMORY - - - /*************************************************************************/ - /* */ - /* Module errors */ - /* */ - /* If this macro is set (which is _not_ the default), the higher byte */ - /* of an error code gives the module in which the error has occurred, */ - /* while the lower byte is the real error code. */ - /* */ - /* Setting this macro makes sense for debugging purposes only, since */ - /* it would break source compatibility of certain programs that use */ - /* FreeType 2. */ - /* */ - /* More details can be found in the files ftmoderr.h and fterrors.h. */ - /* */ -#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS - - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ - /* embedded bitmaps in all formats using the SFNT module (namely */ - /* TrueType & OpenType). */ - /* */ -#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ - /* load and enumerate the glyph Postscript names in a TrueType or */ - /* OpenType file. */ - /* */ - /* Note that when you do not compile the `PSNames' module by undefining */ - /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ - /* contain additional code used to read the PS Names table from a font. */ - /* */ - /* (By default, the module uses `PSNames' to extract glyph names.) */ - /* */ -#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ - /* access the internal name table in a SFNT-based format like TrueType */ - /* or OpenType. The name table contains various strings used to */ - /* describe the font, like family name, copyright, version, etc. It */ - /* does not contain any glyph name though. */ - /* */ - /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftnames.h'. */ - /* */ -#define TT_CONFIG_OPTION_SFNT_NAMES - - - /*************************************************************************/ - /* */ - /* TrueType CMap support */ - /* */ - /* Here you can fine-tune which TrueType CMap table format shall be */ - /* supported. */ -#define TT_CONFIG_CMAP_FORMAT_0 -#define TT_CONFIG_CMAP_FORMAT_2 -#define TT_CONFIG_CMAP_FORMAT_4 -#define TT_CONFIG_CMAP_FORMAT_6 -#define TT_CONFIG_CMAP_FORMAT_8 -#define TT_CONFIG_CMAP_FORMAT_10 -#define TT_CONFIG_CMAP_FORMAT_12 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ - /* a bytecode interpreter in the TrueType driver. Note that there are */ - /* important patent issues related to the use of the interpreter. */ - /* */ - /* By undefining this, you will only compile the code necessary to load */ - /* TrueType glyphs without hinting. */ - /* */ - /* Do not #undef this macro here, since the build system might */ - /* define it for certain configurations only. */ - /* */ -#define TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_UNPATENTED_HINTING (in addition to */ - /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER) to compile the unpatented */ - /* work-around hinting system. Note that for the moment, the algorithm */ - /* is only used when selected at runtime through the parameter tag */ - /* FT_PARAM_TAG_UNPATENTED_HINTING; or when the debug hook */ - /* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally actived */ - /* */ -#define TT_CONFIG_OPTION_UNPATENTED_HINTING - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ - /* bytecode interpreter with a huge switch statement, rather than a call */ - /* table. This results in smaller and faster code for a number of */ - /* architectures. */ - /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ - /* */ -#define TT_CONFIG_OPTION_INTERPRETER_SWITCH - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ - /* TrueType glyph loader to use Apple's definition of how to handle */ - /* component offsets in composite glyphs. */ - /* */ - /* Apple and MS disagree on the default behavior of component offsets */ - /* in composites. Apple says that they should be scaled by the scale */ - /* factors in the transformation matrix (roughly, it's more complex) */ - /* while MS says they should not. OpenType defines two bits in the */ - /* composite flags array which can be used to disambiguate, but old */ - /* fonts will not have them. */ - /* */ - /* http://partners.adobe.com/asn/developer/opentype/glyf.html */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ - /* */ -#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ - /* support for Apple's distortable font technology (fvar, gvar, cvar, */ - /* and avar tables). This has many similarities to Type 1 Multiple */ - /* Masters support. */ - /* */ -#define TT_CONFIG_OPTION_GX_VAR_SUPPORT - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ - /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ - /* required. */ - /* */ -#define T1_MAX_DICT_DEPTH 5 - - - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ -#define T1_MAX_SUBRS_CALLS 16 - - - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ - /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ - /* */ -#define T1_MAX_CHARSTRINGS_OPERANDS 256 - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ - /* files into an existing face. Note that if set, the T1 driver will be */ - /* unable to produce kerning distances. */ - /* */ -#undef T1_CONFIG_OPTION_NO_AFM - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of the Multiple Masters font support in the Type 1 */ - /* driver. */ - /* */ -#undef T1_CONFIG_OPTION_NO_MM_SUPPORT - - /* */ - -/* - * The FT_CONFIG_OPTION_CHESTER_XXXX macros are used to toggle some recent - * improvements to the auto-hinter contributed by David Chester. They will - * most likely disappear completely in the next release. For now, you - * should always keep them defined. - * - */ -#define FT_CONFIG_OPTION_CHESTER_HINTS - -#ifdef FT_CONFIG_OPTION_CHESTER_HINTS - -#define FT_CONFIG_CHESTER_SMALL_F -#define FT_CONFIG_CHESTER_ASCENDER -#define FT_CONFIG_CHESTER_SERIF -#define FT_CONFIG_CHESTER_STEM -#define FT_CONFIG_CHESTER_BLUE_SCALE - -#endif /* FT_CONFIG_OPTION_CHESTER_HINTS */ - -FT_END_HEADER - - -#endif /* __FTOPTION_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/docs/CHANGES b/nx-X11/extras/freetype2/docs/CHANGES deleted file mode 100644 index fdb9ce33d..000000000 --- a/nx-X11/extras/freetype2/docs/CHANGES +++ /dev/null @@ -1,2477 +0,0 @@ - -LATEST CHANGES BETWEEN 2.1.9 and 2.1.8 - - I. IMPORTANT BUG FIXES - - - The function `FT_Get_CharMap_Index' was only declared, without - any real code. For consistency, it has been renamed to - `FT_Get_Charmap_Index'. (This function is needed to implement - cmap caches.) - - - `FT_Outline_Get_BBox' sometimes returned incorrect values for - conic outlines (e.g., for TrueType fonts). - - - Handling of `bhed' table has been fixed. - - - The TrueType driver with enabled byte code interpreter sometimes - returned artifacts due to incorrect rounding. This bug has been - introduced after version 2.1.4. - - - The BDF driver dropped the last glyph in the font. - - - The BDF driver now uses the DEFAULT_CHAR property (if available) - to select a glyph shape for the undefined glyph. - - - II. IMPORTANT CHANGES - - - George Williams contributed code to handle Apple's font - distortion technology found in GX fonts (`avar', `cvar', `fvar', - and `gvar' tables; the Multiple Masters API has been slightly - extended to cope with the new functionality). - - - The `FT_GlyphSlotRec' structure has been extended: The elements - `lsb_delta' and `rsb_delta' give the difference between hinted - and unhinted left and right side bearings if autohinting is - active. Using those values can improve the inter-letter spacing - considerably. See the documentation of `FT_GlyphSlotRec' and - the `ftstring' demo program how to use it. - - - III. MISCELLANEOUS - - - A new documentation file `formats.txt' describes various font - formats supported (and not supported) by FreeType. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.8 and 2.1.7 - - I. IMPORTANT BUG FIXES - - - The native TrueType hinter contained some bugs which prevented - some fonts to be rendered correctly, most notably Legendum.otf. - - - The PostScript hinter now produces improved results. - - - The linear advance width and height values were incorrectly - rounded, making them virtually unusable if not loaded with - FT_LOAD_LINEAR_DESIGN. - - - Indexing CID-keyed CFF fonts is now working: The glyph index is - correctly treated as a CID, similar to FreeType's CID driver - module. Note that CID CMap support is still missing. - - - The FT_FACE_FLAGS_GLYPH_NAMES flag is now set correctly for all - font formats. - - - Some subsetted Type 1 fonts weren't parsed correctly. This bug - has been introduced in 2.1.7. In summary, the Type 1 parser has - become more robust. - - - Non-decimal numbers weren't parsed correctly in PS fonts. - - - The WinFNT driver now correctly reports FT_ENCODING_NONE for all - but one encoding. Use the new FT_WinFNT_ID_XXX values together - with FT_Get_WinFNT_Header() to get the WinFNT charset ID. - - - The descender metrics (face->size->metrics.descender) for WinFNT - bitmap fonts had the wrong sign. - - - The (emulated) `seac' support for CFF fonts was broken. - - - The `flex' operator didn't work for CFF fonts. - - - PS glyphs which use the `hintmask' operator haven't been - rendered correctly in some cases. - - - Metrics for BDF and PCF bitmap font formats have been fixed. - - - Autohinting is now disabled for glyphs which are vertically - distorted or mirrored (using a transformation matrix). This - fixes a bug which produced zero-height glyphs. - - - The `freetype-config' script now handles --prefix and - --exec-prefix correctly; it also returns the proper --rpath (or - -R) value if FreeType has been built as a shared library. - - - II. IMPORTANT CHANGES - - - Both PCF and BDF drivers now handle the SETWIDTH_NAME and - ADD_STYLE_NAME properties. Values are appended to - face->style_name; example: `Bold SemiCondensed'. - - - The PCF driver now handles bitmap fonts compressed with the LZW - algorithm (extension .pcf.Z, compressed with `compress'). - - - A new API function `FT_Get_CMap_Language_ID' (declared in - `tttables.h') is available to get the language ID of a - TrueType/SFNT cmap. - - - The hexadecimal format of data after the `StartData' command in - CID-keyed Type 1 fonts is now supported. While this can't occur - in file-based fonts, it can happen in document-embedded - resources of PostScript documents. - - - Embedded bitmaps in SFNT-based CFF fonts are now supported. - - - A simple API is now available to control FreeType's tracing - mechanism if compiled with FT_DEBUG_LEVEL_TRACE. See the file - `ftdebug.h' for more details. - - - YAMATO Masatake contributed improved handling of MacOS resource - forks on non-MacOS platforms (for example, Linux can mount MacOS - file systems). - - - Support for MacOS has been improved; there is now a new function - `FT_New_Face_From_FSSpec' similar to `FT_New_Face' except that - it accepts an FSSpec instead of a path. - - - The cache sub-system has been rewritten. - - - There is now support for deinstallation of faces. - - - A new API function `FTC_Manager_RemoveFaceID' has been added - to delete all `idle' nodes that correspond to a given - FTC_FaceID. All `locked' nodes (i.e., those with a reference - count > 0), will be modified to prevent them from appearing in - further lookups (they will be cleaned normally when their - reference count reaches 0). - - - There is now support for point scaling (i.e., providing - character sizes in points + dpis, instead of pixels). - - - Three abstract cache classes are now available: - - FTC_GCache: Used to store one glyph item per cache node, - with the ability to group common attributes into - `families'. This replaces the old - FTC_GlyphCache class. - - FTC_ICache: Used to store one FT_Glyph per cache node. This - extends FTC_GCache. Family definition, family - comparison, and glyph loading are however left - to sub-classes. - - FTC_SCache: Used to store up to 16 small bitmaps per cache - node. This extends FTC_GCache. Family - definition, family comparison and glyph loading - are however left to sub-classes. - - - The file `src/cache/ftcbasic.c' implements: - - FTC_ImageCache: Extends FTC_ICache; implements family - definitions and glyph loading similar to the - old API. - - FTC_SBitCache: Extends FTC_SCache, implements family - definitions and glyph loading similar to the - old API - - Client applications should be able to extend FTC_GCache, - FTC_ICache, or FTC_SCache much more easily (i.e., less code to - write, and less callbacks). For example, one could envision - caches that are capable of storing transformed (obliqued), - stroked, emboldened, or colored glyph images. Use - `ftcbasic.c' as an example. - - - All public APIs are now in `include/freetype/ftcache.h', (to - be accessed as `FT_CACHE_H'). The contents of - `include/freetype/cache/' is only needed by applications that - wish to implement their own caches. - - - There were some major performance improvements through the use - of various programming tricks. Cache hits are up to 70% - faster than in the old code. - - - The FTC_CMapCache has been simplied. Charmaps can only be - accessed by index right now. There is also a new API named - `FT_Charmap_GetIndex' for this purpose. - - - The demo programs have been updated to the new code. The - previous versions will not work with the current one. - - - Using an invalid face index in FT_Open_Face and friends now - causes an error even if the font contains a single face only. - - - III. MISCELLANEOUS - - - Wolfgang Domr�se contributed support files for building FreeType - on the Atari using the PureC compiler. Note that the Atari is a - 16bit platform. - - - Vitaliy Pasternak contributed project files for VS.NET 2003. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.7 and 2.1.6 - - I. IMPORTANT BUG FIXES - - - Updated to newest libtool version, fixing build problems on - various platforms. - - - On Unix platforms, `make install' didn't copy the correct - `ftconfig.h' file. - - Note that version 2.1.7 contains the same library C source code as - version 2.1.6. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.6 and 2.1.5 - - I. IMPORTANT BUG FIXES - - - The PFR font driver didn't load kerning tables correctly, and - the functions in FT_PFR_H didn't work at all. - - - Type 1 font files in binary format (PFB) with an end-of-file - indicator weren't accepted by the FreeType engine. - - - Fonts which contain /PaintType and /StrokeWidth no longer cause - a segfault. This bug has been introduced in version 2.1.5. - - - Fonts loaded with FT_LOAD_RENDER no longer cause strange - results. This bug has been introduced in version 2.1.5. - - - Some Windows (bitmap) FNT/FON files couldn't be handled - correctly. - - - II. IMPORTANT CHANGES - - - The internal module API has been heavily changed in favor of - massive simplifications within the font engine. This also means - that authors of third-party modules must adapt their code to the - new scheme. - - NOTE: THE NEW SCHEME IS NOT COMPLETED YET. PLEASE WAIT UNTIL A - FINAL ANNOUNCEMENT! - - - The PostScript parser has been enhanced to handle comments and - strings correctly. Additionally, more syntax forms are - recognized. - - - Added the optional unpatented hinting system for TrueType. It - allows typefaces which need hinting to produce correct glyph - forms (e.g., Chinese typefaces from Dynalab) to work acceptably - without infringing Apple patents. This system is compiled only - if TT_CONFIG_OPTION_COMPILE_UNPATENTED_HINTING is defined in - ftoption.h (activated by default). - - - III. MISCELLANEOUS - - - There is now a guard in the public header files to protect - against inclusion of freetype.h from FreeType 1. - - - Direct inclusion of freetype.h and other public header files no - longer works. You have to use the documented scheme - - #include <ft2build.h> - #include FT_FREETYPE_H - - to load freetype.h with a symbolic name. This protects against - renaming of public header files (which shouldn't happen but - actually has, avoiding two public header files with the same - name). - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.5 and 2.1.4 - - I. IMPORTANT BUG FIXES - - - Parsing the /CIDFontName field now removes the leading slash to - be in sync with other font drivers. - - - gzip support was buggy. Some fonts could not be read. - - - Fonts which have nested subglyphs more than one level deep no - longer cause a segfault. - - - Creation of synthetic cmaps for fonts in CFF format was broken - partially. - - - Numeric font dictionary entries for synthetic fonts are no - longer overwritten. - - - The font matrix wasn't applied to the advance width for Type1, - CID, and CFF fonts. This caused problems when loading certain - synthetic Type 1 fonts like `Helvetica Narrow'. - - - The test for the charset registry in BDF and PCF fonts is now - case-insensitive. - - - FT_Vector_Rotate sometimes returned strange values due to - rounding errors. - - - The PCF driver now returns the correct number of glyphs - (including an artificial `notdef' glyph at index 0). - - - FreeType now supports buggy CMaps which are contained in many - CJK fonts from Dynalab. - - - Opening an invalid font on a Mac caused a segfault due to - double-freeing memory. - - - BDF fonts with more than 32768 glyphs weren't supported - properly. - - - II. IMPORTANT CHANGES - - - Accessing bitmap font formats has been synchronized. To do that - the FT_Bitmap_Size structure has been extended to contain new - fields `size', `x_ppem', and `y_ppem'. - - - The FNT driver now returns multiple faces, not multiple strikes. - - - The `psnames' module has been updated to the Adobe Glyph List - version 2.0. - - - The `psnames' module now understands `uXXXX[X[X]]' glyph names. - - - The algorithm for guessing the font style has been improved. - - - For fonts in SFNT format, root->height is no longer increased if - the line gap is zero. There exist fonts (containing e.g. form - drawing characters) which intentionally have a zero line gap - value. - - - ft_glyph_bbox_xxx flags are now deprecated in favour of - FT_GLYPH_BBOX_XXX. - - - ft_module_xxx flags are now deprecated in favour of - FT_MODULE_XXX. - - - FT_ENCODING_MS_{SJIS,GB2312,BIG5,WANSUNG,JOHAB} are now - deprecated in favour of - FT_ENCODING_{SJIS,GB2312,GIB5,WANSONG,JOHAB} -- those encodings - are not specific to Microsoft. - - - III. MISCELLANEOUS - - - The autohinter has been further improved; for example, `m' - glyphs now retain its vertical symmetry. - - - Partial support of Mac fonts on non-Mac platforms. - - - `make refdoc' (after first `make') builds the HTML - documentation. You need Python for this. - - - The make build system should now work more reliably on DOS-like - platforms. - - - Support for EMX gcc and Watson C/C++ compilers on MS-DOS has - been added. - - - Better VMS build support. - - - Support for the pkg-config package by providing a `freetype.pc' - file. - - - New configure option --with-old-mac-fonts for Darwin. - - - Some source files have been renamed (mainly to fit into the 8.3 - naming scheme). - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.4 and 2.1.3 - - I. IMPORTANT BUG FIXES - - - Updated to newest libtool version, fixing build problems on - various platforms. - - - A fix in the Gzip stream reader: It couldn't read certain .gz - files properly due to a small typo. In certain cases, FreeType - could also loop endlessly when trying to load tiny gzipped - files. - - - The configure script now tries to use the system-wide zlib when - it finds one (instead of the copy found in src/gzip). And - "freetype-config" has been updated to return relevant flags in - this case when invoked with "--libs" (e.g. "-lzlib"). - - - Certain fonts couldn't be loaded by 2.1.3 because they lacked a - Unicode charmap (e.g. SYMBOL.TTF). FreeType erroneously - rejected them. - - - The CFF loader was modified to accept fonts which only contain a - subset of their reference charset. This prevented the correct - use of PDF-embedded fonts. - - - The logic to detect Unicode charmaps has been modified. This is - required to support fonts which include both 16-bit and 32-bit - charmaps (like very recent asian ones) using the new 10 and 12 - SFNT formats. - - - The TrueType loader now limits the depth of composite glyphs. - This is necessary to prevent broken fonts to break the engine by - blowing the stack with recursive glyph definitions. - - - The CMap cache is now capable of managing UCS-4 character codes - that are mapped through extended charmaps in recent - TrueType/OpenType fonts. - - - The cache sub-system now properly manages out-of-memory - conditions instead of blindly reporting them to the caller. - This means that it will try to empty the cache before restarting - its allocations to see if that can help. - - - The PFR driver didn't return the list of available embedded - bitmaps properly. - - - There was a nasty memory leak when using embedded bitmaps in - certain font formats. - - - II. IMPORTANT CHANGES - - - David Chester contributed some enhancements to the auto-hinter - that significantly increase the quality of its output. The - Postscript hinter was also improved in several ways. - - - The FT_RENDER_MODE_LIGHT render mode was implemented. - - - A new API function called `FT_Get_BDF_Property' has been added - to FT_BDF_H to retrieve BDF properties from BDF _and_ PCF font - files. THIS IS STILL EXPERIMENTAL, since it hasn't been - properly tested yet. - - - A Windows FNT specific API has been added, mostly to access font - headers. This is used by Wine. - - - TrueType tables without an "hmtx" table are now tolerated when - an incremental interface is used. This happens for certain - Type42 fonts passed from Ghostscript to FreeType. - - - The PFR font driver is now capable of returning the font family - and style names when they are available (instead of the sole - "FontID"). This is performed by parsing an *undocumented* - portion of the font file! - - - III. MISCELLANEOUS - - - The path stroker in FT_STROKER_H has entered beta stage. It now - works very well, but its interface might change a bit in the - future. More on this in later releases. - - - The documentation for FT_Size_Metrics didn't appear properly in - the API reference. - - - The file docs/VERSION.DLL has been updated to explain versioning - with FreeType (i.e., comparing release/libtool/so numbers, and - how to use them in autoconf scripts). - - - The installation documentation has been seriously revamped. - Everything is now in the "docs" directory. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.3 and 2.1.2 - - I. IMPORTANT BUG FIXES - - - FT_Vector_Transform had been incorrectly modified in 2.1.2, - resulting in incorrect transformations being applied (for - example, rotations were processed in opposite angles). - - - The format 8 and 12 TrueType charmap enumeration routines have - been fixed (FT_Get_Next_Char returned invalid values). - - - The PFR font driver returned incorrect advance widths if the - outline and metrics resolution defined in the font file were - different. - - - FT_Glyph_To_Bitmap now returns successfully when called with an - FT_BitmapGlyph argument (it previously returned an error). - - - A bug in the Type 1 loader that prevented valid font bounding - boxes to be loaded from multiple master fonts. - - - The SFNT validation code has been rewritten. FreeType can now - load "broken" fonts that were usable on Windows, but not with - previous versions of the library. - - - The computation of bearings in the BDF driver has been fixed. - - - The Postscript hinter crashed when trying to hint certain glyphs - (more precisely, when trying to apply hints to an empty glyph - outline). - - - The TrueType glyph loader now supports composites in "Apple - format" (they differ slightly from Microsoft/OpenType ones in - the way transformation offsets are computed). - - - FreeType was very slow at opening certain asian CID/CFF fonts, - due to fixed increment in dynamic array re-allocations. This - has been changed to exponential behaviour to get acceptable - performance. - - - - II. IMPORTANT CHANGES - - - The PCF driver now supports gzip-compressed font files natively. - This means that you will be able to use all these bitmap fonts - that come with XFree86 with FreeType (and libXft/libXft2, by - extension). - - - The automatic and postscript hinters have both been updated. - This results in a relatively important increase of rendering - quality since many nasty defaults have been supressed. Please - visit the web page: - - http://www.freetype.org/hinting/smooth-hinting.html - - for additional details on this topic. - - - The "load_flags" parameter of FT_Load_Glyph is now an FT_Int32 - (instead of just being an FT_Int). This breaks source and - binary compatibility for 16bit systems only, while retaining - both of them for 32 and 64 bit ones. - - Some new flags have been added consequently: - - FT_LOAD_NO_AUTOHINT :: Disable the use of the auto-hinter - (but not native format hinters). - - FT_LOAD_TARGET_NORMAL :: Hint and render for normal - anti-aliased displays. - - FT_LOAD_TARGET_MONO :: Hint and render for 1-bit displays. - - FT_LOAD_TARGET_LCD :: Hint and render for horizontal RGB or - BGR sub-pixel displays (like LCD - screens). THIS IS STILL - EXPERIMENTAL! - - FT_LOAD_TARGET_LCD_V :: Same as FT_LOAD_TARGET_LCD, for - vertical sub-pixel displays (like - rotated LCD screens). THIS IS STILL - EXPERIMENTAL! - - FT_LOAD_MONOCHROME is still supported, but only affects - rendering, not the hinting. - - Note that the `ftview' demo program available in the `ft2demos' - package has been updated to support LCD-optimized display on - non-paletted displays (under Win32 and X11). - - - The PFR driver now supports embedded bitmaps (all formats - supported), and returns correct kerning metrics for all glyphs. - - - The TrueType charmap loader now supports certain `broken' fonts - that load under Windows without problems. - - - The cache API has been slightly modified (it's still a beta!): - - - The type FTC_ImageDesc has been removed; it is now replaced - by FTC_ImageTypeRec. Note that one of its fields is a - `load_flag' parameter for FT_Load_Glyph. - - - The field "num_grays" of FT_SBitRec has been changed to - "max_grays" in order to fit within a single byte. Its - maximum value is thus 255 (instead of 256 as previously). - - - III. MISCELLANEOUS - - - Added support for the DESTDIR variable during "make install". - This simplifies packaging of FreeType. - - - Included modified copies of the ZLib sources in `src/gzip' in - order to support gzip-compressed PCF fonts. We do not use the - system-provided zlib for now, though this is a probable - enhancement for future releases. - - - The DocMaker tool used to generate the on-line API reference has - been completely rewritten. It is now located in - "src/tools/docmaker/docmaker.py". Features: - - - better cross-referenced output - - more polished output - - uses Python regular expressions (though it didn't speed the - program) - - much more modular structure, which allows for different - "backends" in order to generate HTML, XML, or whatever - format. - - One can regenerate the API reference by calling: - - python src/tools/docmaker/docmaker.py \ - --prefix=ft2 \ - --title=FreeType-2.1.3 \ - --output=<outputdirectory> - include/freetype/*.h \ - include/freetype/config/*.h \ - include/freetype/cache/*.h - - - A new, experimental, support for incremental font loading (i.e., - loading of fonts where the glyphs are not in the font file - itself, but provided by an external component, like a Postscript - interpreter) has been added by Graham Asher. This is still work - in progress, however. - - - A new, EXPERIMENTAL, path stroker has been added. It doesn't - suffer from severe rounding errors and treat bezier arcs - directly. Still work in progress (i.e. not part of the official - API). See the file <freetype/ftstroker.h> for some of the - details. - - - The massive re-formatting of sources and internal re-design is - still under-way. Many internal functions, constants, and types - have been renamed. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.2 and 2.1.1 - - I. IMPORTANT BUG FIXES - - - Many font drivers didn't select a Unicode charmap by default - when a new face was opened (with the FT_CONFIG_OPTION_USE_CMAPS - options enabled), causing many applications to not be able to - display text correctly with the 2.1.x releases. - - - The PFR driver had a bug in its composite loading code that - produces incorrectly placed accents with many fonts. - - - The Type42 driver crashed sometimes due to a nasty bug. - - - The Type 1 custom encoding charmap didn't handle the case where - the first glyph index wasn't 0. - - - A serious typo in the TrueType composite loader produced - incorrectly placed glyphs in fonts like "Wingdings" and a few - others. - - - II. MISCELLANEOUS - - - The Win32 Visual C++ project file has been updated to include - the PFR driver as well. - - - "freetype.m4" is now installed by default by "make install" on - Unix systems. - - - The function FT_Get_PS_Font_Info now works with CID and Type42 - fonts as well. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.1 and 2.1.0 - - I. IMPORTANT BUG FIXES - - - The `version_info' returned by `freetype-config' in 2.1.0 - returned an invalid value. It now returns 9:1:3 (2.0.9 returned - 9:0:3). - - - Version 2.1.0 couldn't be linked against applications on Win32 - and Amiga systems due to a new debug function that wasn't - properly propagated to the system-specific directory in - `builds'. - - - Various MacOS and Mac OS X specific fixes. - - - Fixed a bug in the TrueType charmap validation routines that - made version 2.1.0 too restrictive -- many popular fonts have - been rejected. - - - There was still a very small difference between the monochrome - glyph bitmaps produced by FreeType 1.x and FreeType 2.x with the - bytecode interpreter enabled. This was caused by an invalid - flag setting in the TrueType glyph loader, making the rasterizer - change its drop-out control mode. Now theresults should - _really_ be completely identical. - - - The TrueType name table loader has been improved to support many - popular though buggy Asian fonts. It now ignores empty name - entries, invalid pointer offsets and a few other incorrect - subtleties. Moreover, name strings are now loaded on demand, - which reduces the memory load of many faces (e.g. the ARIAL.TTF - font file contains a 10kByte name table with 70 names). - - - Fixed a bug in the Postscript hinter that prevented family blues - substitution to happen correctly. - - - II. NEW FEATURES - - - Three new font drivers in this release: - - * A BDF font driver, contributed by Franco Zappa Nardelli, - heavily modified by Werner Lemberg. It also supports - anti-aliased bitmaps (using a slightly extended BDF format). - - * A Type42 font driver, contributed by Roberto Alameda. It is - still experimental but seems to work relatively well. - - * A PFR font driver, contributed by David Turner himself. It - doesn't support PFR hinting -- note that BitStream has at - least two patents on this format! - - - III. MISCELLANEOUS - - - The cache sub-system has been optimized in important ways. - Cache hits are now significantly faster. For example, using the - CMap cache is about twice faster than calling FT_Get_Char_Index - on most platforms. Similarly, using an SBit cache is about five - times faster than loading the bitmaps from a bitmap file, and - 300 to 500 times faster than generating them from a scalable - format. - - Note that you should recompile your sources if you designed a - custom cache class for the FT2 Cache subsystem, since the - changes performed are source, but not binary, compatible. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.1.0 and 2.0.9 - - I. IMPORTANT BUG FIXES - - - The TrueType bytecode interpreter has been fixed to produce - _exactly_ the same output as FreeType 1.x. Previous differences - were due to slightly distinct fixed-point computation routines - used to perform dot products and vector length measurements. - - It seems that native TrueType hinting is _extremely_ sensitive - to rounding errors. The required vector computation routines - have been optimized and placed within the "ttinterp.c" file. - - - Fixed the parsing of accelerator tables in the PCF font driver. - - - Fixed the Type1 glyph loader routine used to compute the font's - maximum advance width. - - - II. NEW FEATURES - - - The `configure' script used on Unix systems has been modified to - check that GNU Make is being used to build the library. - Otherwise, it will display a message proposing to use the - GNUMAKE environment variable to name it. - - The Unix-specific file README.UNX has been modified accordingly. - - - III. MISCELLANEOUS - - - The FreeType License in `docs/FTL.txt' has been updated to - include a proposed preferred disclaimer. If you are using - FreeType in your products, you are encouraged (but not mandated) - to use the following text in your documentation: - - """ - Portions of this software are copyright � 1996-2002 The - FreeType Project (www.freetype.org). All rights reserved. - """ - - - The default size of the render pool has been reduced to 16kByte. - This shouldn't result in any noticeable performance penalty, - unless you are using the engine as-is to render very large and - complex glyphs. - - - The FreeType 2 redesign has begun. More information can be - found at this URL: - - http://www.freetype.org/freetype2/redesign.html - - The following internal changes have been performed within the - sources of this release: - - - Many internal types have been renamed to increase - consistency. The following should be true, except for - public types: - - * All structure types have a name ending in "Rec" (short - for `record'). - - * A pointer-to-structure type has the same name as the - structure, _without_ the "Rec" suffix. - - Example: - - typedef struct FooRec_ - { - ... - - } FooRec, *Foo; - - - Many internal macros have been renamed to increase - consistency. The following should be true: - - * All macros have a name beginning with "FT_". This - required a few changes like - - ALLOC => FT_ALLOC - FREE => FT_FREE - REALLOC => FT_REALLOC - - * All macros are completely UPPERCASE. This required a - few changes like: - - READ_Short => FT_READ_SHORT - NEXT_Short => FT_NEXT_SHORT - GET_ULongLE => FT_GET_ULONG_LE - MEM_Set => FT_MEM_SET - MEM_Copy => FT_MEM_COPY - etc. - - * Whenever possible, all macro names follow the - FT_<OBJECT>_<METHOD> pattern. For example - - ACCESS_Frame => FT_FRAME_ENTER - FORGET_Frame => FT_FRAME_EXIT - EXTRACT_Frame => FT_FRAME_EXTRACT - RELEASE_Frame => FT_FRAME_RELEASE - - FILE_Pos => FT_STREAM_POS - FILE_Seek => FT_STREAM_SEEK - FILE_Read => FT_STREAM_READ - FILE_ReadAt => FT_STREAM_READ_AT - READ_Fields => FT_STREAM_READ_FIELDS - - - Many internal functions have been renamed to follow the - FT_<Object>_<Method> pattern. For example: - - FT_Seek_Stream => FT_Stream_Seek - FT_Read_Stream_At => FT_Stream_ReadAt - FT_Done_Stream => FT_Stream_Close - FT_New_Stream => FT_Stream_Open - FT_New_Memory_Stream => FT_Stream_OpenMemory - FT_Extract_Frame => FT_Stream_ExtractFrame - - Note that method names do not contain "_". - - - The FT_ALLOC_ARRAY and FT_REALLOC_ARRAY have been replaced - with FT_NEW_ARRAY and FT_RENEW_ARRAY which do not take a - type as the fourth argument. Instead, the array element - type size is computed automatically from the type of the - target pointer used. - - - A new object class, FT_CMap, has been introduced. These - internal objects are used to model character maps. This - eases the support of additional charmap types within the - engine. - - - A new configuration file named "ftstdlib.h" has been added - to `include/freetype/config'. It is used to define aliases - for _every_ routine of the ISO C library that the font - engine uses. Each aliases has a "ft_" prefix - (e.g. "ft_strlen" is an alias for "strlen"). - - This is used to ease the porting of FreeType 2 to exotic - runtime environments where the ISO C Library isn't available - (e.g. XFree86 extension modules). - - More details are available in the "ChangeLog" file. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.0.9 and 2.0.8 - - I. IMPORTANT BUG FIXES - - - Certain fonts like "foxjump.ttf" contain broken name tables with - invalid entries and wild offsets. This caused FreeType to crash - when trying to load them. - - The SFNT `name' table loader has been fixed to be able to - support these strange fonts. - - Moreover, the code in charge of processing this table has been - changed to always favour Windows-formatted entries over other - ones. Hence, a font that works on Windows but not on the Mac - will load cleanly in FreeType and report accurate values for - Family & PostScript names. - - - The CID font driver has been fixed. It unfortunately returned a - Postscript Font name with a leading slash, as in - "/MunhwaGothic-Regular". - - - FreeType 2 should now compile fine on AIX 4.3.3 as a shared - library. - - - A bug in the Postscript hinter has been found and fixed, - removing un-even stem widths at small pixel sizes (like 14-17). - - This improves the quality of a certain number of Postscript - fonts. - - - II. NEW FEATURES - - - A new function named `FT_Library_Version' has been added to - return the current library's major, minor, and patch version - numbers. This is important since the macros FREETYPE_MAJOR, - FREETYPE_MINOR, and FREETYPE_PATCH cannot be used when the - library is dynamically linked by a program. - - - Two new APIs have been added: `FT_Get_First_Char' and - `FT_Get_Next_Char'. - - Together, these can be used to iterate efficiently over the - currently selected charmap of a given face. Read the API - reference for more details. - - - III. MISCELLANEOUS - - - The FreeType sources are under heavy internal re-factoring. As - a consequence, we have created a branch named "STABLE" on the - CVS to hold all future releases/fixes in the 2.0.x family. - - The HEAD branch now contains the re-factored sources and - shouldn't be used for testing or packaging new releases. In - case you would like to access the 2.0.9 sources from our CVS - repository, use the tag `VER-2-0-9'. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.0.8 and 2.0.7 - - I. IMPORTANT BUG FIXES - - - There was a small but nasty bug in "freetype-config.in" which - caused the "freetype-config" script to fail on Unix. - - This didn't prevent the installation of the library or even its - execution, but caused problems when trying to compile many Unix - packages that depend on it. - - - Some TrueType or OpenType fonts embedded in PDF documents do not - have a 'cmap', 'post' and 'name' as is required by the - specification. FreeType no longer refuses to load such fonts. - - - Various fixes to the PCF font driver. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.0.7 and 2.0.6 - - I. IMPORTANT BUG FIXES - - - Fixed two bugs in the Type 1 font driver. The first one - resulted in a memory leak in subtle cases. The other one caused - FreeType to crash when trying to load ".gsf" files (Ghostscript - so-called Postscript fonts). - - (This made _many_ KDE applications crash on certain systems. - FreeType _is_ becoming a critical system component on Linux :-) - - - Fixed a memory leak in the CFF font driver. - - - Fixed a memory leak in the PCF font driver. - - - Fixed the Visual C++ project file - "builds/win32/visualc/freetype.dsp" since it didn't include the - Postscript hinter component, causing errors at build time. - - - Fixed a small rendering bug in the anti-aliased renderer that - only occurred when trying to draw thin (less than 1 pixel) - strokes. - - - Fixed "builds/unix/freetype2.a4" which is used to generate a - valid "freetype2.m4" for use with autoconf. - - - Fixed the OpenVMS Makefiles. - - - II. MISCELLANEOUS - - - Added "configure" and "install" scripts to the top-level - directory. A GNU-style installation is thus now easily possible - with - - ./configure <options> - make - make install - - -====================================================================== - -LATEST CHANGES BETWEEN 2.0.6 and 2.0.5 - - I. IMPORTANT BUG FIXES - - - It wasn't possible to load embedded bitmaps when the auto-hinter - was used. This is now fixed. - - - The TrueType font driver didn't load some composites properly - (the sub-glyphs were slightly shifted, and this was only - noticeable when using monochrome rendering). - - - Various fixes to the auto-hinter. They merely improve the - output of sans-serif fonts. Note that there are still problems - with serifed fonts and composites (accented characters). - - - All scalable font drivers erroneously returned un-fitted glyph - advances when hinting was requested. This created problems for - a number of layout applications. This is a very old bug that - got undetected mainly because most test/demo program perform - rounding explicitly or implicitly (through the cache). - - - FT_Glyph_To_Bitmap() did erroneously modify the source glyph in - certain cases. - - - "glnames.py" still contained a bug that made FreeType return - invalid names for certain glyphs. - - - The library crashed when loading certain Type 1 fonts like - "sadn.pfb" ("Stalingrad Normal"), which appear to contain - pathetic font info dictionaries. - - - The TrueType glyph loader is now much more paranoid and checks - everything when loading a given glyph image. This was necessary - to avoid problems (crashes and/or memory overwrites) with broken - fonts that came from a really buggy automatic font converter. - - - II. IMPORTANT UPDATES AND NEW FEATURES - - - Important updates to the Mac-specific parts of the library. - - - The caching sub-system has been completely re-designed, and its - API has evolved (the old one is still supported for backwards - compatibility). - - The documentation for it is not yet completed, sorry. For now, - you are encouraged to continue using the old API. However, the - ftview demo program in the ft2demos package has already been - updated to use the new caching functions. - - - A new charmap cache is provided too. See FTC_CMapCache(). This - is useful to perform character code -> glyph index translations - quickly, without the need for an opened FT_Face. - - - A NEW POSTSCRIPT HINTER module has been added to support native - hints in the following formats: PostScript Type 1, PostScript - CID, and CFF/CEF. - - Please test! Note that the auto-hinter produces better results - for a number of badly-hinted fonts (mostly auto-generated ones) - though. - - - A memory debugger is now part of the standard FreeType sources. - To enable it, define FT_DEBUG_MEMORY in - <freetype/config/ftoption.h>, and recompile the library. - - Additionally, define the _environment_ variable FT_DEBUG_MEMORY - and run any program using FreeType. When the library is exited, - a summary of memory footprints and possible leaks will be - displayed. - - This works transparently with _any_ program that uses FreeType. - However, you will need a lot of memory to use this (allocated - blocks are never released to the heap to detect double deletes - easily). - - - III. MISCELLANEOUS - - - We are aware of subtle differences between the output of - FreeType versions 1 and 2 when it comes to monochrome - TrueType-hinted glyphs. These are most probably due to small - differences in the monochrome rasterizers and will be worked out - in an upcoming release. - - - We have decided to fork the sources in a "stable" branch, and an - "unstable" one, since FreeType is becoming a critical component - of many Unix systems. - - The next bug-fix releases of the library will be named 2.0.7, - 2.0.8, etc., while the "2.1" branch will contain a version of - the sources where we will start major reworking of the library's - internals, in order to produce FreeType 2.2.0 (or even 3.0) in a - more distant future. - - We also hope that this scheme will allow much more frequent - releases than in the past. - - -====================================================================== - -LATEST CHANGES BETWEEN 2.0.5 and 2.0.4 - - NOTE THAT 2.0.5 DOES NOT CONTAIN THE POSTSCRIPT HINTER. THIS MODULE - WILL BE PART OF THE NEXT RELEASE (EITHER 2.0.6 or 2.1) - - - Fixed a bug that made certain glyphs, like "Cacute", "cacute" and - "lslash" unavailable from Unicode charmaps of Postscript fonts. - This prevented the correct display of Polish text, for example. - - - The kerning table of Type 1 fonts was loaded by FreeType, when its - AFM file was attached to its face, but the - FT_FACE_FLAG_HAS_KERNING bit flags was not set correctly, - preventing FT_Get_Kerning to return meaningful values. - - - Improved SFNT (TrueType & OpenType) charmap support. Slightly - better performance, as well as support for the new formats defined - by the OpenType 1.3 specification (8, 10, and 12) - - - Fixed a serious typo in "src/base/ftcalc.c" which caused invalid - computations in certain rare cases, producing ugly artefacts. - - - The size of the EM square is computed with a more accurate - algorithm for Postscript fonts. The old one caused slight errors - with embedded fonts found in PDF documents. - - - Fixed a bug in the cache manager that prevented normal LRU - behaviour within the cache manager, causing unnecessary reloads - (for FT_Face and FT_Size objects only). - - - Added a new function named "FT_Get_Name_Index" to retrieve the - glyph index of a given glyph name, when found in a face. - - - Added a new function named "FT_Get_Postscript_Name" to retrieve - the "unique" Postscript font name of a given face. - - - Added a new public header size named FT_SIZES_H (or - <freetype/ftsizes.h>) providing new FT_Size-management functions: - FT_New_Size, FT_Activate_Size, FT_Done_Size. - - - Fixed a reallocation bug that generated a dangling pointer (and - possibly memory leaks) with Postscript fonts (in - src/psaux/psobjs.c). - - - Many fixes for 16-bit correctness. - - - Removed many pedantic compiler warnings from the sources. - - - Added an Amiga build directory in "builds/amiga". - - -====================================================================== - -LATEST CHANGES BETWEEN 2.0.4 and 2.0.3 - - - Fixed a rather annoying bug that was introduced in 2.0.3. Namely, - the font transformation set through FT_Set_Transform was applied - twice to auto-hinted glyphs, resulting in incorrectly rotated text - output. - - - Fixed _many_ compiler warnings. FT2 should now compile cleanly - with Visual C++'s most pedantic warning level (/W4). It already - compiled fine with GCC and a few other compilers. - - - Fixed a bug that prevented the linear advance width of composite - TrueType glyphs to be correctly returned. - - - Fixed the Visual C++ project files located in - "builds/win32/visualc" (previous versions used older names of the - library). - - - Many 32-bit constants have an "L" appended to their value, in - order to improve the 16-bitness of the code. Someone is actually - trying to use FT2 on an Atari ST machine! - - - Updated the "builds/detect.mk" file in order to automatically - build FT2 on AIX systems. AIX uses "/usr/sbin/init" instead of - "/sbin/init" and wasn't previously detected as a Unix platform by - the FreeType build system. - - - Updated the Unix-specific portions of the build system (new - libtool version, etc.). - - - The SFNT kerning lodaer now ensures that the table is sorted - (since some problem fonts do not meet this requirement). - - -======================================================================= - -LATEST CHANGES BETWEEN 2.0.3 and 2.0.2 - - I. CHANGES TO THE MODULES / FONT DRIVERS - - - THE AUTO-HINTER HAS BEEN SLIGHTLY IMPROVED, in order to fix - several annoying artefacts, mainly: - - - Blue zone alignement of horizontal stems wasn't performed - correctly, resulting in artefacts like the "d" being placed - one pixel below the "b" in some fonts like Time New Roman. - - - Overshoot thresholding wasn't performed correctly, creating - unpleasant artefacts at large character pixel sizes. - - - Composite glyph loading has been simplified. This gets rid - of various artefacts where the components of a composite - glyphs were not correctly spaced. - - These are the last changes to the current auto-hinting module. - A new hinting sub-system is currently in the work in order to - support native hints in Type 1 / CFF / OpenType fonts, as well - as globally improve rendering. - - - The PCF driver has been fixed. It reported invalid glyph - dimensions for the fonts available on Solaris. - - - The Type 1, CID and CFF drivers have been modified to fix the - computation of the EM size. - - - The Type 1 driver has been fixed to avoid a dangerous bug that - crashed the library with non-conforming fonts (i.e. ones that do - not place the .notdef glyph at position 0). - - - The TrueType driver had a rather subtle bug (dangling pointer - when loading composite glyphs) that could crash the library in - rare occasions! - - - II. HIGH-LEVEL API CHANGES - - - The error code enumeration values have been changed. An error - value is decomposed in a generic error code, and a module - number. see <freetype/fterrors.h> for details. - - - A new public header file has been introduced, named - FT_TRIGONOMETRY_H (include/freetype/fttrig.h), providing - trigonometric functions to compute sines, cosines, arctangents, - etc. with 16.16 fixed precision. The implementation is based on - the CORDIC algorithm and is very fast while being sufficiently - accurate. - - - III. INTERNALS - - - Added BeOS-specific files in the old build sub-system. Note - that no changes were required to compile the library with Jam. - - - The configuration is now capable of automatically detecting - 64-bit integers on a set of predefined compilers (GCC, Visual - C++, Borland C++) and will use them by default. This provides a - small performance boost. - - - A small memory leak that happened when opening 0-sized files - (duh!) have been fixed. - - - Fixed bezier stack depth bug in the routines provided by the - FT_BBOX_H header file. Also fixed similar bugs in the - rasterizers. - - - The outline bounding box code has been rewritten to use direct - computations, instead of bezier sub-division, to compute the - exact bounding box of glyphs. This is slightly slower but more - accurate. - - - The build system has been improved and fixed, mainly to support - "make" on Windows 2000 correctly, avoid problems with "make - distclean" on non Unix systems, etc. - - - Hexadecimal constants have been suffixed with "U" to avoid - problems with certain compilers on 64-bit platforms. - - - A new directory named "src/tools" has been created. It contains - Python scripts and simple unit test programs used to develop the - library. - - - The DocMaker tool has been moved from "docs" to "src/tools" and - has been updated with the following: - - - Now accepts the "--title=XXXX" or "-t XXXX" option from the - command line to set the project's name in the generated API - reference. - - - Now accepts the "--output=DIR" or "-o DIR" option from the - command line to set the output directory for all generated - HTML files. - - - Now accepts the "--prefix=XXXX" or "-p XXX" option from the - command line to set the file prefix to use for all - generated HTML files. - - - Now generates the current time/data on each generated page - in order to distinguish between versions. - - DocMaker can be used with other projects now, not only FT2 - (e.g. MLib, FTLayout, etc.). - - -====================================================================== - -LATEST CHANGES BETWEEN 2.0.2 and 2.0.1 - - I. CHANGES TO THE MODULES / FONT DRIVERS - - - THE TRUETYPE BYTECODE INTERPRETER IS NOW TURNED OFF, in order to - avoid legal problems with the Apple patents. It seems that we - mistakenly turned this option on in previous releases of the - build. - - Note that if you want to use the bytecode interpreter in order - to get high-quality TrueType rendering, you will need to toggle - by hand the definition of the - TT_CONFIG_OPTION_BYTECODE_INTERPRETER macro in the file - "include/freetype/config/ftoption.h". - - - The CFF driver has been improved by Tom Kacvinsky and Sander van - der Wal: - - * Support for "seac" emulation. - * Support for "dotsection". - * Support for retrieving glyph names through - "FT_Get_Glyph_Name". - - The first two items are necessary to correctly a large number of - Type 1 fonts converted to the CFF formats by Adobe Acrobat. - - - The Type 1 driver was also improved by Tom & others: - - * Better EM size computation. - * Better support for synthetic (transformed) fonts. - * The Type 1 driver returns the charstrings corresponding to - each glyph in the "glyph->control_data" field after a call to - "FT_Load_Glyph" (thanks Ha Shao). - - - Various other bugfixes, including the following: - - * Fixed a nasty memory leak in the Type 1 driver. - * The autohinter and the pcf driver used static writable data - when they shouldn't. - * Many casts were added to make the code more 64-bits safe. It - also now compiles on Windows XP 64-bits without warnings. - * Some incorrect writable statics were removed in the "autohint" - and "pcf" drivers. FreeType 2 now compiles on Epoc again. - - - II. CHANGES TO THE HIGH-LEVEL API - - - The library header files inclusion scheme has been changed. The - old scheme looked like: - - #include <freetype/freetype.h> - #include <freetype/ftglyph.h> - #include <freetype/ftcache.h> - #include <freetype/cache/ftimage.h> - - Now you should use: - - #include <ft2build.h> - #include FT_FREETYPE_H - #include FT_GLYPH_H - #include FT_CACHE_H - #include FT_CACHE_IMAGE_H - - NOTE THAT THE OLD INCLUSION SCHEME WILL STILL WORK WITH THIS - RELEASE. HOWEVER, WE DO NOT GUARANTEE THAT THIS WILL STILL BE - TRUE IN THE NEXT ONE (A.K.A. FREETYPE 2.1). - - The file <ft2build.h> is used to define the header filename - macros. The complete and commented list of macros is available - in the API reference under the section name "Header File Macros" - in Chapter I. - - For more information, see section I of the following document: - - http://www.freetype.org/ - freetype2/docs/tutorial/step1.html - - or - - http://freetype.sourceforge.net/ - freetype2/docs/tutorial/step1.html - - - Many, many comments have been added to the public source file in - order to automatically generate the API Reference through the - "docmaker.py" Python script. - - The latter has been updated to support the grouping of sections - in chapters and better index sort. See: - - http://www.freetype.org/freetype2/docs/reference/ft2-toc.html - - - III. CHANGES TO THE BUILD PROCESS - - - If you are not building FreeType 2 with its own build system - (but with your own Makefiles or project files), you will need to - be aware that the build process has changed a little bit. - - You don't need to put the "src" directory in the include path - when compiling any FT2 component. Instead, simply put the - component's directory in the current include path. - - So, if you were doing something like: - - cc -c -Iinclude -Isrc src/base/ftbase.c - - change the line to: - - cc -c -Iinclude -Isrc/base src/base/ftbase.c - - If you were doing something like: - - cd src/base - cc -c -I../../include -I.. ftbase.c - - change it to: - - cd src/base - cc -c -I../../include ftbase.c - - -====================================================================== - -LATEST CHANGES BETWEEN 2.0.1 and 2.0 - - 2.0.1 introduces a few changes: - - - Fixed many bugs related to the support of CFF / OpenType fonts. - These formats are now much better supported though there is - still work planned to deal with charset tables and PDF-embedded - CFF files that use the old "seac" command. - - - The library could not be compiled in debug mode with a very - small number of C compilers whose pre-processors didn't - implement the "##" directive correctly (i.e. per se the ANSI C - specification!) An elegant fix was found. - - - Added support for the free Borland command-line C++ Builder - compiler. Use "make setup bcc32". Also fixed a few source - lines that generated new warnings with BCC32. - - - Fixed a bug in FT_Outline_Get_BBox when computing the extrema of - a conic Bezier arc. - - - Updated the INSTALL file to add IDE compilation. - - - Other minor bug fixes, from invalid Type 1 style flags to - correct support of synthetic (obliqued) fonts in the - auto-hinter, better support for embedded bitmaps in a SFNT font. - - - Fixed some problems with "freetype-config". - - Finally, the "standard" scheme for including FreeType headers is now - gradually changing, but this will be explained in a later release - (probably 2.0.2). - - And very special thanks to Tom Kacvinsky and YAMANO-UCHI Hidetoshi - for their contributions! - - -====================================================================== - -CHANGES BETWEEN beta8 and 2.0 - - - Changed the default installation path for public headers from - "include/freetype" to "include/freetype2". - - Also added a new "freetype-config" that is automatically generated - and installed on Unix and Cygwin systems. The script itself is - used to retrieve the current install path, C compilation flags as - well as linker flags. - - - Fixed several small bugs: - - * Incorrect max advance width for fixed-pitch Type 1 fonts. - * Incorrect glyph names for certain TrueType fonts. - * The glyph advance was not copied when FT_Glyph_To_Bitmap was - called. - * The linearHoriAdvance and linerVertAdvance fields were not - correctly returned for glyphs processed by the auto-hinter. - * "type1z" renamed back to "type1"; the old "type1" module has - been removed. - - - Revamped the build system to make it a lot more generic. This - will allow us to re-use nearly un-modified in lots of other - projects (including FreeType Layout). - - - Changed "cid" to use "psaux" too. - - - Added the cache sub-system. See <freetype/ftcache.h> as well as - the sources in "src/cache". Note that it compiles but is still - untested for now. - - - Updated "docs/docmaker.py", a draft API reference is available at - http://www.freetype.org/ft2api.html. - - - Changed "type1" to use "psaux". - - - Created a new module named "psaux" to hold the Type 1 & Type 2 - parsing routines. It should be used by "type1", "cid", and "cff" - in the future. - - - Fixed an important bug in "FT_Glyph_Get_CBox". - - - Fixed some compiler warnings that happened since the TrueType - bytecode decoder was deactivated by default. - - - Fixed two memory leaks: - - * The memory manager (16 bytes) isn't released in - FT_Done_FreeType! - * Using custom input streams, the copy of the original stream was - never released. - - - Fixed the auto-hinter by performing automatic computation of the - "filling direction" of each glyph. This is done through a simple - and fast approximation, and seems to work (problems spotted by - Werner though). The Arphic fonts are a lot nicer though there are - still a lot of things to do to handle Asian fonts correctly. - - -====================================================================== - -BETA-8 (RELEASE CANDIDATE) CHANGES - - - Deactivated the TrueType bytecode interpreter by default. - - - Deactivated the "src/type1" font driver. Now "src/type1z" is used - by default. - - - Updates to the build system. We now compile the library correctly - under Unix system through "configure" which is automatically - called on the first "make" invocation. - - - Added the auto-hinting module! Fixing some bugs here and there. - - - Found some bugs in the composite loader (seac) of the Type1-based - font drivers. - - - Renamed the directory "freetype2/config" to "freetype2/builds" and - updated all relevant files. - - - Found a memory leak in the "type1" driver. - - - Incorporated Tom's patches to support flex operators correctly in - OpenType/CFF fonts. Now all I need is to support pure CFF and CEF - fonts to be done with this driver :-) - - - Added the Windows FNT/FON driver in "src/winfonts". For now, it - always "simulates" a Unicode charmap, so it shouldn't be - considered completed right now. - - It is there to be more a proof of concept than anything else - anyway. The driver is a single C source file, that compiles to 3 - Kb of code. - - I'm still working on the PCF/BDF drivers, but I'm too lazy to - finish them now. - - - CHANGES TO THE HIGH-LEVEL API - - * FT_Get_Kerning has a new parameter that allows you to select the - coordinates of the kerning vector (font units, scaled, scaled + - grid-fitted). - * The outline functions are now in <freetype/ftoutln.h> and not - part of <freetype/freetype.h> anymore. - * <freetype/ftmodule.h> now contains declarations for - FT_New_Library, FT_Done_Library, FT_Add_Default_Modules. - * The so-called convenience functions have moved from "ftoutln.c" - to "ftglyph.c", and are thus available with this optional - component of the library. They are declared in - <freetype/ftglyph.h> now. - * Anti-aliased rendering is now the default for FT_Render_Glyph - (i.e. corresponds to render_mode == 0 == ft_render_mode_normal). - To generate a monochrome bitmap, use ft_render_mode_mono, or the - FT_LOAD_MONOCHROME flag in FT_Load_Glyph/FT_Load_Char. - FT_LOAD_ANTI_ALIAS is still defined, but values to 0. - * <freetype/freetype.h> now include <freetype/config/ftconfig.h>, - solving a few headaches :-) - * The type FT_GlyphSlotRec has now a "library" field. - - - CHANGES TO THE "ftglyph.h" API - - This API has been severely modified in order to make it simpler, - clearer, and more efficient. It certainly now looks like a real - "glyph factory" object, and allows client applications to manage - (i.e. transform, bbox and render) glyph images without ever - knowing their original format. - - - Added support for CID-keyed fonts to the CFF driver. Maybe - support for pure CFF + CEF fonts should come in? - - - Cleaned up source code in order to avoid two functions with the - same name. Also changed the names of the files in "type1z" from - "t1XXXX" to "z1XXXX" in order to avoid any conflicts. - - "make multi" now works well :-) - - Also removed the use of "cidafm" for now, even if the source files - are still there. This functionality will certainly go into a - specific module. - - - ADDED SUPPORT FOR THE AUTO-HINTER - - It works :-) I have a demo program which simply is a copy of - "ftview" that does a `FT_Add_Module(library, - &autohinter_module_class)' after library initialization, and Type - 1 & OpenType/CFF fonts are now hinted. - - CID fonts are not hinted, as they include no charmap and the - auto-hinter doesn't include "generic" global metrics computations - yet. - - Now, I need to release this thing to the FreeType 2 source. - - - CHANGES TO THE RENDERER MODULES - - The monochrome and smooth renderers are now in two distinct - directories, namely "src/raster1" and "src/smooth". Note that the - old "src/renderer" is now gone. - - I ditched the 5-gray-levels renderers. Basically, it involved a - simple #define toggle in 'src/raster1/ftraster.c'. - - FT_Render_Glyph, FT_Outline_Render & FT_Outline_Get_Bitmap now - select the best renderer available, depending on render mode. If - the current renderer for a given glyph image format isn't capable - of supporting the render mode, another one will be found in the - library's list. This means that client applications do not need - to switch or set the renderers themselves (as in the latest - change), they'll get what they want automatically. At last. - - Changed the demo programs accordingly. - - - MAJOR INTERNAL REDESIGN: - - A lot of internal modifications have been performed lately on the - source in order to provide the following enhancements: - - * More generic module support: - - The FT_Module type is now defined to represent a handle to a - given module. The file <freetype/ftmodule.h> contains the - FT_Module_Class definition, as well as the module-loading public - API. - - The FT_Driver type is still defined, and still represents a - pointer to a font driver. Note that FT_Add_Driver is replaced - by FT_Add_Module, FT_Get_Driver by FT_Get_Module, etc. - - * Support for generic glyph image types: - - The FT_Renderer type is a pointer to a module used to perform - various operations on glyph image. - - Each renderer is capable of handling images in a single format - (e.g. ft_glyph_format_outline). Its functions are used to: - - - transform an glyph image - - render a glyph image into a bitmap - - return the control box (dimensions) of a given glyph image - - The scan converters "ftraster.c" and "ftgrays.c" have been moved - to the new directory "src/renderer", and are used to provide two - default renderer modules. - - One corresponds to the "standard" scan-converter, the other to - the "smooth" one. - - he current renderer can be set through the new function - FT_Set_Renderer. - - The old raster-related function FT_Set_Raster, FT_Get_Raster and - FT_Set_Raster_Mode have now disappeared, in favor of the new: - - FT_Get_Renderer - FT_Set_Renderer - - See the file <freetype/ftrender.h> for more details. - - These changes were necessary to properly support different - scalable formats in the future, like bi-color glyphs, etc. - - * Glyph loader object: - - A new internal object, called a 'glyph loader' has been - introduced in the base layer. It is used by all scalable format - font drivers to load glyphs and composites. - - This object has been created to reduce the code size of each - driver, as each one of them basically re-implemented its - functionality. - - See <freetype/internal/ftobjs.h> and the FT_GlyphLoader type for - more information. - - * FT_GlyphSlot has new fields: - - In order to support extended features (see below), the - FT_GlyphSlot structure has a few new fields: - - linearHoriAdvance: - - This field gives the linearly scaled (i.e. scaled but - unhinted) advance width for the glyph, expressed as a 16.16 - fixed pixel value. This is useful to perform WYSIWYG text. - - linearVertAdvance: - This field gives the linearly scaled advance height for the - glyph (relevant in vertical glyph layouts only). This is - useful to perform WYSIWYG text. - - Note that the two above field replace the removed "metrics2" - field in the glyph slot. - - advance: - This field is a vector that gives the transformed advance for - the glyph. By default, it corresponds to the advance width, - unless FT_LOAD_VERTICAL_LAYOUT was specified when calling - FT_Load_Glyph or FT_Load_Char. - - bitmap_left: - This field gives the distance in integer pixels from the - current pen position to the left-most pixel of a glyph image - IF IT IS A BITMAP. It is only valid when the "format" field - is set to "ft_glyph_format_bitmap", for example, after calling - the new function FT_Render_Glyph. - - bitmap_top: - This field gives the distance in integer pixels from the - current pen position (located on the baseline) to the top-most - pixel of the glyph image IF IT IS A BITMAP. Positive values - correspond to upwards Y. - - loader: - This is a new private field for the glyph slot. Client - applications should not touch it. - - - * Support for transforms and direct rendering in FT_Load_Glyph: - - Most of the functionality found in <freetype/ftglyph.h> has been - moved to the core library. Hence, the following: - - - A transform can be specified for a face through - FT_Set_Transform. this transform is applied by FT_Load_Glyph - to scalable glyph images (i.e. NOT TO BITMAPS) before the - function returns, unless the bit flag FT_LOAD_IGNORE_TRANSFORM - was set in the load flags. - - - Once a glyph image has been loaded, it can be directly - converted to a bitmap by using the new FT_Render_Glyph - function. Note that this function takes the glyph image from - the glyph slot, and converts it to a bitmap whose properties - are returned in "face.glyph.bitmap", "face.glyph.bitmap_left" - and "face.glyph.bitmap_top". The original native image might - be lost after the conversion. - - - When using the new bit flag FT_LOAD_RENDER, the FT_Load_Glyph - and FT_Load_Char functions will call FT_Render_Glyph - automatically when needed. - - - Reformatted all modules source code in order to get rid of the - basic data types redifinitions (i.e. "TT_Int" instead of "FT_Int", - "T1_Fixed" instead of "FT_Fixed"). Hence the format-specific - prefixes like "TT_", "T1_", "T2_" and "CID_" are only used for - relevant structures. - - -====================================================================== - -OLD CHANGES FOR BETA 7 - - - bug-fixed the OpenType/CFF parser. It now loads and displays my - two fonts nicely, but I'm pretty certain that more testing is - needed :-) - - - fixed the crummy Type 1 hinter, it now handles accented characters - correctly (well, the accent is not always well placed, but that's - another problem..) - - - added the CID-keyed Type 1 driver in "src/cid". Works pretty well - for only 13 Kb of code ;-) Doesn't read AFM files though, nor the - really useful CMAP files.. - - - fixed two bugs in the smooth renderer (src/base/ftgrays.c). - Thanks to Boris Letocha for spotting them and providing a fix. - - - fixed potential "divide by zero" bugs in ftcalc.c. - - - added source code for the OpenType/CFF driver (still incomplete - though..) - - - modified the SFNT driver slightly to perform more robust header - checks in TT_Load_SFNT_Header. This prevents certain font files - (e.g. some Type 1 Multiple Masters) from being incorrectly - "recognized" as TrueType font files.. - - - moved a lot of stuff from the TrueType driver to the SFNT module, - this allows greater code re-use between font drivers - (e.g. TrueType, OpenType, Compact-TrueType, etc..) - - - added a tiny segment cache to the SFNT Charmap 4 decoder, in order - to minimally speed it up.. - - - added support for Multiple Master fonts in "type1z". There is - also a new file named <freetype/ftmm.h> which defines functions to - manage them from client applications. - - The new file "src/base/ftmm.c" is also optional to the engine.. - - - various formatting changes (e.g. EXPORT_DEF -> FT_EXPORT_DEF) + - small bug fixes in FT_Load_Glyph, the "type1" driver, etc.. - - - a minor fix to the Type 1 driver to let them apply the font matrix - correctly (used for many oblique fonts..) - - - some fixes for 64-bit systems (mainly changing some FT_TRACE calls - to use %p instead of %lx). Thanks to Karl Robillard. - - - fixed some bugs in the sbit loader (src/base/sfnt/ttsbit.c) + - added a new flag, FT_LOAD_CROP_BITMAP to query that bitmaps be - cropped when loaded from a file (maybe I should move the bitmap - cropper to the base layer ??). - - - changed the default number of gray levels of the smooth renderer - to 256 (instead of the previous 128). Of course, the human eye - can't see any difference ;-) - - - removed TT_MAX_SUBGLYPHS, there is no static limit on the number - of subglyphs in a TrueType font now.. - - -====================================================================== - -OLD CHANGES 16 May 2000 - - - tagged "BETA-6" in the CVS tree. This one is a serious release - candidate even though it doesn't incorporate the auto-hinter yet.. - - - various obsolete files were removed, and copyright header updated - - - finally updated the standard raster to fix the monochrome - rendering bug + re-enable support for 5-gray levels anti-aliasing - (suck, suck..) - - - created new header files, and modified sources accordingly: - - <freetype/fttypes.h> - - simple FreeType types, without the API - <freetype/internal/ftmemory.h> - - definition of memory-management macros - - - added the "DSIG" (OpenType Digital Signature) tag to - <freetype/tttags.h> - - - light update/cleaning of the build system + changes to the sources - in order to get rid of _all_ compiler warnings with three - compilers, i.e: - - gcc with "-ansi -pedantic -Wall -W", Visual C++ with "/W3 /WX" and - LCC - - IMPORTANT NOTE FOR WIN32-LCC USERS: - | - | It seems the C pre-processor that comes with LCC is broken, it - | doesn't recognize the ANSI standard directives # and ## - | correctly when one of the argument is a macro. Also, - | something like: - | - | #define F(x) print##x - | - | F(("hello")) - | - | will get incorrectly translated to: - | - | print "hello") - | - | by its pre-processor. For this reason, you simply cannot build - | FreeType 2 in debug mode with this compiler.. - - - yet another massive grunt work. I've changed the definition of - the EXPORT_DEF, EXPORT_FUNC, BASE_DEF & BASE_FUNC macros. These - now take an argument, which is the function's return value type. - - This is necessary to compile FreeType as a DLL on Windows and - OS/2. Depending on the compiler used, a compiler-specific keyword - like __export or __system must be placed before (VisualC++) or - after (BorlandC++) the type.. - - Of course, this needed a lot of changes throughout the source code - to make it compile again... All cleaned up now, apparently.. - - Note also that there is a new EXPORT_VAR macro defined to allow - the _declaration_ of an exportable public (constant) - variable. This is the case of the raster interfaces (see - ftraster.h and ftgrays.h), as well as each module's interface (see - sfdriver.h, psdriver.h, etc..) - - - new feature: it is now possible to pass extra parameters to font - drivers when creating a new face object. For now, - this capability is unused. It could however prove to - be useful in a near future.. - - the FT_Open_Args structure was changes, as well as the internal - driver interface (the specific "init_face" module function has - now a different signature). - - - updated the tutorial (not finished though). - - - updated the top-level BUILD document - - - fixed a potential memory leak that could occur when loading - embedded bitmaps. - - - added the declaration of FT_New_Memory_Face in - <freetype/freetype.h>, as it was missing from the public header - (the implementation was already in "ftobjs.c"). - - - the file <freetype/fterrors.h> has been seriously updated in order - to allow the automatic generation of error message tables. See - the comments within it for more information. - - - major directory hierarchy re-organisation. This was done for two - things: - - * first, to ease the "manual" compilation of the library by - requiring at lot less include paths :-) - - * second, to allow external programs to effectively access - internal data fields. For example, this can be extremely - useful if someone wants to write a font producer or a font - manager on top of FreeType. - - Basically, you should now use the 'freetype/' prefix for header - inclusion, as in: - - #include <freetype/freetype.h> - #include <freetype/ftglyph.h> - - Some new include sub-directories are available: - - a. the "freetype/config" directory, contains two files used to - configure the build of the library. Client applications - should not need to look at these normally, but they can if - they want. - - #include <freetype/config/ftoption.h> - #include <freetype/config/ftconfig.h> - - b. the "freetype/internal" directory, contains header files that - describes library internals. These are the header files that - were previously found in the "src/base" and "src/shared" - directories. - - - As usual, the build system and the demos have been updated to - reflect the change.. - - Here's a layout of the new directory hierarchy: - - TOP_DIR - include/ - freetype/ - freetype.h - ... - config/ - ftoption.h - ftconfig.h - ftmodule.h - - internal/ - ftobjs.h - ftstream.h - ftcalc.h - ... - - src/ - base/ - ... - - sfnt/ - psnames/ - truetype/ - type1/ - type1z/ - - - Compiling a module is now much easier, for example, the following - should work when in the TOP_DIR directory on an ANSI build: - - gcc -c -I./include -I./src/base src/base/ftbase.c - gcc -c -I./include -I./src/sfnt src/sfnt/sfnt.c - etc.. - - (of course, using -Iconfig/<system> if you provide system-specific - configuration files). - - - updated the structure of FT_Outline_Funcs in order to allow direct - coordinate scaling within the outline decomposition routine (this - is important for virtual "on" points with TrueType outlines) + - updates to the rasters to support this.. - - - updated the OS/2 table loading code in "src/sfnt/ttload.c" in - order to support version 2 of the table (see OpenType 1.2 spec) - - - created "include/tttables.h" and "include/t1tables.h" to allow - client applications to access some of the SFNT and T1 tables of a - face with a procedural interface (see FT_Get_Sfnt_Table()) + - updates to internal source files to reflect the change.. - - - some cleanups in the source code to get rid of warnings when - compiling with the "-Wall -W -ansi -pedantic" options in gcc. - - - debugged and moved the smooth renderer to "src/base/ftgrays.c" and - its header to "include/ftgrays.h" - - - updated TT_MAX_SUBGLYPHS to 96 as some CJK fonts have composites - with up to 80 sub-glyphs !! Thanks to Werner - - -====================================================================== - -OLD CHANGES - 14-apr-2000 - - - fixed a bug in the TrueType glyph loader that prevented the - correct loading of some CJK glyphs in mingli.ttf - - - improved the standard Type 1 hinter in "src/type1" - - - fixed two bugs in the experimental Type 1 driver in "src/type1z" - to handle the new XFree86 4.0 fonts (and a few other ones..) - - - the smooth renderer is now complete and supports sub-banding to - render large glyphs at high speed. However, it is still located - in "demos/src/ftgrays.c" and should move to the library itself in - the next beta. NOTE: The smooth renderer doesn't compile in - stand-alone mode anymore, but this should be fixed RSN.. - - - introduced convenience functions to more easily deal with glyph - images, see "include/ftglyph.h" for more details, as well as the - new demo program named "demos/src/ftstring.c" that demonstrates - its use - - - implemented FT_LOAD_NO_RECURSE in both the TrueType and Type 1 - drivers (this is required by the auto-hinter to improve its - results). - - - changed the raster interface, in order to allow client - applications to provide their own span-drawing callbacks. - However, only the smooth renderer supports this. See - "FT_Raster_Params" in the file "include/ftimage.h". - - - fixed a small bug in FT_MulFix that caused incorrect transform - computation! - - - Note: The tutorial is out-of-date. - - -====================================================================== - -OLD CHANGES - 12-mar-2000 - - - changed the layout of configuration files : now, all ANSI - configuration files are located in - "freetype2/config". System-specific over-rides can be placed in - "freetype2/config/<system>". - - - moved all configuration macros to "config/ftoption.h" - - - improvements in the Type 1 driver with AFM support - - - changed the fields in the FT_Outline structure : the old "flags" - array is re-named "tags", while all ancient flags are encoded into - a single unsigned int named "flags". - - - introduced new flags in FT_Outline.flags (see - ft_outline_.... enums in "ftimage.h"). - - - changed outline functions to "FT_Outline_<action>" syntax - - - added a smooth anti-alias renderer to the demonstration programs - - - added Mac graphics driver (thanks Just) - - - FT_Open_Face changed in order to received a pointer to a - FT_Open_Args descriptor.. - - - various cleanups, a few more API functions implemented (see - FT_Attach_File) - - - updated some docs - - -====================================================================== - -OLD CHANGES - 22-feb-2000 - - - introduced the "psnames" module. It is used to: - - o convert a Postscript glyph name into the equivalent Unicode - character code (used by the Type 1 driver(s) to synthetize on - the fly a Unicode charmap). - - o provide an interface to retrieve the Postscript names of the - Macintosh, Adobe Standard & Adobe Expert character codes. - (the Macintosh names are used by the SFNT-module postscript - names support routines, while the other two tables are used by - the Type 1 driver(s)). - - - introduced the "type1z" alternate Type 1 driver. This is a (still - experimental) driver for the Type 1 format that will ultimately - replace the one in "src/type1". It uses pattern matching to load - data from the font, instead of a finite state analyzer. It works - much better than the "old" driver with "broken" fonts. It is also - much smaller (under 15 Kb). - - - the Type 1 drivers (both in "src/type1" and "src/type1z") are - nearly complete. They both provide automatic Unicode charmap - synthesis through the "psnames" module. No re-encoding vector is - needed. (note that they still leak memory due to some code - missing, and I'm getting lazy). - - Trivial AFM support has been added to read kerning information but - wasn't exactly tested as it should ;-) - - - The TrueType glyph loader has been seriously rewritten (see the - file "src/truetype/ttgload.c". It is now much, much simpler as - well as easier to read, maintain and understand :-) Preliminary - versions introduced a memory leak that has been reported by Jack - Davis, and is now fixed.. - - - introduced the new "ft_glyph_format_plotter", used to represent - stroked outlines like Windows "Vector" fonts, and certain Type 1 - fonts like "Hershey". The corresponding raster will be written - soon. - - - FT_New_Memory_Face is gone. Likewise, FT_Open_Face has a new - interface that uses a structure to describe the input stream, the - driver (if required), etc.. - - -TODO - - - Write FT_Get_Glyph_Bitmap and FT_Load_Glyph_Bitmap - - - Add a function like FT_Load_Character( face, char_code, load_flags - ) that would really embbed a call to FT_Get_Char_Index then - FT_Load_Glyph to ease developer's work. - - - Update the tutorial! - - - consider adding support for Multiple Master fonts in the Type 1 - drivers. - - - Test the AFM routines of the Type 1 drivers to check that kerning - information is returned correctly. - - - write a decent auto-gridding component !! We need this to release - FreeType 2.0 gold ! - - -less urgent needs: - - - add a CFF/Type2 driver - - add a BDF driver - - add a FNT/PCF/HBF driver - - add a Speedo driver from the X11 sources - - -====================================================================== - -OLDER CHANGES - 27-jan-2000 - - - updated the "sfnt" module interface to allow several SFNT-based - drivers to co-exist peacefully - - - updated the "T1_Face" type to better separate Postscript font - content from the rest of the FT_Face structure. Might be used - later by the CFF/Type2 driver.. - - - added an experimental replacement Type 1 driver featuring advanced - (and speedy) pattern matching to retrieve the data from postscript - fonts. - - - very minor changes in the implementation of FT_Set_Char_Size and - FT_Set_Pixel_Sizes (they now implement default to ligthen the font - driver's code). - - -====================================================================== - -OLD MESSAGE - -This file summarizes the changes that occured since the last "beta" of -FreeType 2. Because the list is important, it has been divided into -separate sections: - -Table Of Contents: - - I High-Level Interface (easier !) - II Directory Structure - III Glyph Image Formats - IV Build System - V Portability - VI Font Drivers - - ----------------------------------------------------------------------- - -High-Level Interface: - - The high-level API has been considerably simplified. Here is how: - - - resource objects have disappeared. this means that face objects - can now be created with a single function call (see FT_New_Face - and FT_Open_Face) - - - when calling either FT_New_Face & FT_Open_Face, a size object - and a glyph slot object are automatically created for the face, - and can be accessed through "face->glyph" and "face->size" if - one really needs to. In most cases, there's no need to call - FT_New_Size or FT_New_Glyph. - - - similarly, FT_Load_Glyph now only takes a "face" argument - (instead of a glyph slot and a size). Also, it's "result" - parameter is gone, as the glyph image type is returned in the - field "face->glyph.format" - - - the list of available charmaps is directly accessible through - "face->charmaps", counting "face->num_charmaps" elements. Each - charmap has an 'encoding' field which specifies which known - encoding it deals with. Valid values are, for example: - - ft_encoding_unicode (for ASCII, Latin-1 and Unicode) - ft_encoding_apple_roman - ft_encoding_sjis - ft_encoding_adobe_standard - ft_encoding_adobe_expert - - other values may be added in the future. Each charmap still - holds its "platform_id" and "encoding_id" values in case the - encoding is too exotic for the current library - - ----------------------------------------------------------------------- - -Directory Structure: - - Should seem obvious to most of you: - - freetype/ - config/ -- configuration sub-makefiles - ansi/ - unix/ -- platform-specific configuration files - win32/ - os2/ - msdos/ - - include/ -- public header files, those to be included - directly by client apps - - src/ -- sources of the library - base/ -- the base layer - sfnt/ -- the sfnt "driver" (see the drivers section - below) - truetype/ -- the truetype driver - type1/ -- the type1 driver - shared/ -- some header files shared between drivers - - demos/ -- demos/tools - - docs/ -- documentation (a bit empty for now) - - ----------------------------------------------------------------------- - -Glyph Image Formats: - - Drivers are now able to register new glyph image formats within the - library. For now, the base layer supports of course bitmaps and - vector outlines, but one could imagine something different like - colored bitmaps, bi-color vectors or wathever else (Metafonts anyone - ??). - - See the file `include/ftimage.h'. Note also that the type - FT_Raster_Map is gone, and is now replaced by FT_Bitmap, which - should encompass all known bitmap types. - - Each new image format must provide at least one "raster", i.e. a - module capable of transforming the glyph image into a bitmap. It's - also possible to change the default raster used for a given glyph - image format. - - The default outline scan-converter now uses 128 levels of grays by - default, which tends to smooth many things. Note that the demo - programs have been updated significantly in order to display these.. - - ----------------------------------------------------------------------- - -Build system: - - You still need GNU Make to build the library. The build system has - been very seriously re-vamped in order to provide things like : - - - automatic host platform detection (reverting to 'config/ansi' if - it is not detected, with pseudo-standard compilation flags) - - - the ability to compile from the Makefiles with very different and - exotic compilers. Note that linking the library can be difficult - for some platforms. - - For example, the file `config/win32/lcclib.bat' is invoked by the - build system to create the ".lib" file with LCC-Win32 because its - librarian has too many flaws to be invoked directly from the - Makefile. - - Here's how it works: - - - the first time you type `make', the build system runs a series of - sub-makefiles in order to detect your host platform. It then - dumps what it found, and creates a file called `config.mk' in the - current directory. This is a sub-Makefile used to define many - important Make variables used to build the library. - - - the second time, the build system detects the `config.mk' then use - it to build the library. All object files go into 'obj' by - default, as well as the library file, but this can easily be - changed. - - Note that you can run "make setup" to force another host platform - detection even if a `config.mk' is present in the current - directory. Another solution is simply to delete the file, then - re-run make. - - Finally, the default compiler for all platforms is gcc (for now, - this will hopefully changed in the future). You can however specify - a different compiler by specifying it after the 'setup' target as - in: - - gnumake setup lcc on Win32 to use the LCC compiler - gnumake setup visualc on Win32 to use Visual C++ - - See the file `config/<system>/detect.mk' for a list of supported - compilers for your platforms. - - It should be relatively easy to write new detection rules files and - config.mk.. - - Finally, to build the demo programs, go to `demos' and launch GNU - Make, it will use the `config.mk' in the top directory to build the - test programs.. - - ----------------------------------------------------------------------- - -Portability: - - In the previous beta, a single FT_System object was used to - encompass all low-level operations like thread synchronisation, - memory management and i/o access. This has been greatly simplified: - - - thread synchronisation has been dropped, for the simple reason - that the library is already re-entrant, and that if you really - need two threads accessing the same FT_Library, you should - really synchronize access to it yourself with a simple mutex. - - - memory management is performed through a very simple object - called "FT_Memory", which really is a table containing a table - of pointers to functions like malloc, realloc and free as well - as some user data (closure). - - - resources have disappeared (they created more problems than they - solved), and i/o management have been simplified greatly as a - result. Streams are defined through FT_Stream objects, which - can be either memory-based or disk-based. - - Note that each face has its own stream, which is closed only - when the face object is destroyed. Hence, a function like - TT_Flush_Face in 1.x cannot be directly supported. However, if - you really need something like this, you can easily tailor your - own streams to achieve the same feature at a lower level (and - use FT_Open_Face instead of FT_New_Face to create the face). - - See the file "include/ftsystem.h" for more details, as well as the - implementations found in "config/unix" and "config/ansi". - - ----------------------------------------------------------------------- - -Font Drivers: - - The Font Driver interface has been modified in order to support - extensions & versioning. - - - The list of the font drivers that are statically linked to the - library at compile time is managed through a new configuration file - called `config/<platform>/ftmodule.h'. - - This file is autogenerated when invoking `make modules'. This - target will parse all sub-directories of 'src', looking for a - "module.mk" rules file, used to describe the driver to the build - system. - - Hence, one should call `make modules' each time a font driver is - added or removed from the `src' directory. - - Finally, this version provides a "pseudo-driver" in `src/sfnt'. - This driver doesn't support font files directly, but provides - services used by all TrueType-like font drivers. Hence, its code is - shared between the TrueType & OpenType font formats, and possibly - more formats to come if we're lucky.. - - ----------------------------------------------------------------------- - -Extensions support: - - The extensions support is inspired by the one found in 1.x. - - Now, each font driver has its own "extension registry", which lists - which extensions are available for the font faces managed by the - driver. - - Extension ids are now strings, rather than 4-byte tags, as this is - usually more readable. - - Each extension has: - - some data, associated to each face object - - an interface (table of function pointers) - - An extension that is format-specific should simply register itself - to the correct font driver. Here is some example code: - - // Registering an extensions - // - FT_Error FT_Init_XXXX_Extension( FT_Library library ) - { - FT_DriverInterface* tt_driver; - - driver = FT_Get_Driver( library, "truetype" ); - if (!driver) return FT_Err_Unimplemented_Feature; - - return FT_Register_Extension( driver, &extension_class ); - } - - - // Implementing the extensions - // - FT_Error FT_Proceed_Extension_XXX( FT_Face face ) - { - FT_XXX_Extension ext; - FT_XXX_Extension_Interface ext_interface; - - ext = FT_Get_Extension( face, "extensionid", &ext_interface ); - if (!ext) return error; - - return ext_interface->do_it(ext); - } - ---- end of CHANGES --- diff --git a/nx-X11/extras/freetype2/docs/CUSTOMIZE b/nx-X11/extras/freetype2/docs/CUSTOMIZE deleted file mode 100644 index 8709b3dec..000000000 --- a/nx-X11/extras/freetype2/docs/CUSTOMIZE +++ /dev/null @@ -1,125 +0,0 @@ -How to customize the compilation of the library: -================================================ - - FreeType is highly customizable to fit various needs, and this - document describes how it is possible to select options and components - at compilation time. - - -I. Configuration macros - - The file found in "include/freetype/config/ftoption.h" contains a list - of commented configuration macros that can be toggled by developers to - indicate which features should be active while building the library. - - These options range from debug level to availability of certain - features, like native TrueType hinting through a bytecode interpreter. - - We invite you to read this file for more information. You can change - the file's content to suit your needs, or override it with one of the - techniques described below. - - -II. Modules list - - The file found in "include/freetype/config/ftmodule.h" contains a list - of names corresponding to the modules and font drivers to be - statically compiled in the FreeType library during the build. - - You can change it to suit your own preferences. Be aware that certain - modules depend on others, as described by the file "modules.txt" in - this directory. - - You can modify the file's content to suit your needs, or override it - at compile time with one of the methods described below. - - -III. System interface - - FreeType's default interface to the system (i.e., the parts that deal - with memory management and i/o streams) is located in - "src/base/ftsystem.c". - - The current implementation uses standard C library calls to manage - memory and to read font files. It is however possible to write custom - implementations to suit specific systems. - - To tell the GNU Make-based build system to use a custom system - interface, you have to define the environment variable FTSYS_SRC to - point to the relevant implementation: - - on Unix: - - ./configure <your options> - export FTSYS_SRC=foo/my_ftsystem.c - make - make install - - on Windows: - - make setup <compiler> - set FTSYS_SRC=foo/my_ftsystem.c - make - - -IV. Overriding default configuration and module headers - - It is possible to override the default configuration and module - headers without changing the original files. There are two ways to do - that: - - - 1. Using the C include path - - Use the C include path to ensure that your own versions of the files - are used at compile time when the lines - - #include FT_CONFIG_OPTIONS_H - #include FT_CONFIG_MODULES_H - - are compiled. Their default values being - <freetype/config/ftoption.h> and <freetype/config/ftmodule.h>, you - can do something like: - - custom/ - freetype/ - config/ - ftoption.h => custom options header - ftmodule.h => custom modules list - - include/ => normal FreeType 2 include - freetype/ - ... - - then change the C include path to always give the path to "custom" - before the FreeType 2 "include". - - - 2. Re-defining FT_CONFIG_OPTIONS_H and FT_CONFIG_MODULES_H - - Another way to do the same thing is to redefine the macros used to - name the configuration headers. To do so, you need a custom - "ft2build.h" whose content can be as simple as: - - #ifndef __FT2_BUILD_MY_PLATFORM_H__ - #define __FT2_BUILD_MY_PLATFORM_H__ - - #define FT_CONFIG_OPTIONS_H <custom/my-ftoption.h> - #define FT_CONFIG_MODULES_H <custom/my-ftmodule.h> - - #include <freetype/config/ftheader.h> - - #endif /* __FT2_BUILD_MY_PLATFORM_H__ */ - - Place those files in a separate directory, e.g.: - - custom/ - ft2build.h => custom version described above - my-ftoption.h => custom options header - my-ftmodule.h => custom modules list header - - and change the C include path to ensure that "custom" is always - placed before the FT2 "include" during compilation. - - ---- end of CUSTOMIZE --- diff --git a/nx-X11/extras/freetype2/docs/DEBUG b/nx-X11/extras/freetype2/docs/DEBUG deleted file mode 100644 index c85ef3cb1..000000000 --- a/nx-X11/extras/freetype2/docs/DEBUG +++ /dev/null @@ -1,183 +0,0 @@ -Debugging within the FreeType sources -===================================== - -I. Configuration macros ------------------------ - -There are several ways to enable debugging features in a FreeType 2 -builds. This is controlled through the definition of special macros -located in the file "ftoptions.h". The macros are: - - - FT_DEBUG_LEVEL_ERROR - - #define this macro if you want to compile the FT_ERROR macro calls - to print error messages during program execution. This will not - stop the program. Very useful to spot invalid fonts during - development and to code workarounds for them. - - FT_DEBUG_LEVEL_TRACE - - #define this macro if you want to compile both macros FT_ERROR and - FT_TRACE. This also includes the variants FT_TRACE0, FT_TRACE1, - FT_TRACE2, ..., FT_TRACE6. - - The trace macros are used to send debugging messages when an - appropriate "debug level" is configured at runtime through the - FT2_DEBUG environment variable (more on this later). - - FT_DEBUG_MEMORY - - If this macro is #defined, the FreeType engine is linked with a - small but effective debugging memory manager that tracks all - allocations and frees that are performed within the font engine. - - When the FT2_DEBUG_MEMORY environment variable is defined at - runtime, a call to FT_Done_FreeType will dump memory statistics, - including the list of leaked memory blocks with the source locations - where these were allocated. It is always a very good idea to define - this in development builds. This works with _any_ program linked to - FreeType, but requires a big deal of memory (the debugging memory - manager never frees the blocks to the heap in order to detect double - frees). - - When FT2_DEBUG_MEMORY isn't defined at runtime, the debugging memory - manager is ignored, and performance is unaffected. - - -II. Debugging macros --------------------- - -Several macros can be used within the FreeType sources to help debugging -its code: - - 1. FT_ERROR(( ... )) - - This macro is used to send debug messages that indicate relatively - serious errors (like broken font files), but will not stop the - execution of the running program. Its code is compiled only when - either FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined in - "ftoption.h". - - Note that you have to use a printf-like signature, but with double - parentheses, like in: - - FT_ERROR(( "your %s is not %s\n", "foo", "bar" )); - - - 2. FT_ASSERT( condition ) - - This macro is used to check strong assertions at runtime. If its - condition isn't TRUE, the program will abort with a panic message. - Its code is compiled when either FT_DEBUG_LEVEL_ERROR or - FT_DEBUG_LEVEL_TRACE are defined. You don't need double-parentheses - here. For example: - - FT_ASSERT( ptr != NULL ); - - - 3. FT_TRACE( level, (message...) ) - - The FT_TRACE macro is used to send general-purpose debugging - messages during program execution. This macro uses an *implicit* - macro named FT_COMPONENT used to name the current FreeType component - being run. - - The developer should always define FT_COMPONENT as appropriate, for - example as in: - - #undef FT_COMPONENT - #define FT_COMPONENT trace_io - - The value of the FT_COMPONENT macro is an enumeration named - trace_XXXX where XXXX is one of the component names defined in the - internal file <freetype/internal/fttrace.h>. - - Each such component is assigned a "debug level", ranging from 0 - to 6, through the use of the FT2_DEBUG environment variable - (described below) when a program linked with FreeType starts. - - When FT_TRACE is called, its level is compared to the one of the - corresponding component. Messages with trace levels *higher* than - the corresponding component level are filtered and never printed. - - This means that trace messages with level 0 are always printed, - those with level 2 are only printed when the component level is *at - least* 2. - - The second parameter to FT_TRACE must contain parentheses and - correspond to a printf-like call, as in: - - FT_TRACE( 2, ( "your %s is not %s\n", "foo", "bar" ) ) - - The shortcut macros FT_TRACE0, FT_TRACE1, FT_TRACE2_, ... FT_TRACE6 - can be used with constant level indices, and are much cleaner to - use, as in - - FT_TRACE2(( "your %s is not %s\n", "foo", "bar" )); - - -III. Environment variables --------------------------- - -The following environment variables control debugging output and -behaviour of FreeType at runtime: - - FT2_DEBUG - - This variable is only used when FreeType is built with - FT_DEBUG_LEVEL_TRACE defined. It contains a list of component level - definitions, following this format: - - component1:level1 component2:level2 component3:level3 ... - - where "componentX" is the name of a tracing component, as defined in - "fttrace.h", but without the "trace_" prefix. "levelX" is the - corresponding level to use at runtime. - - "any" is a special component name that will be interpreted as - "any/all components". For example, the following definitions - - set FT2_DEBUG=any:2 memory:5 io:4 (on Windows) - export FT2_DEBUG="any:2 memory:5 io:4" (on Linux with bash) - - both stipulate that all components should have level 2, except for - the memory and io components which will be set to trace levels 5 - and 4, respectively. - - FT2_DEBUG_MEMORY - - This environment variable, when defined, tells FreeType to use a - debugging memory manager that will track leaking memory blocks as - well as other common errors like double frees. It is also capable - of reporting _where_ the leaking blocks were allocated, which - considerably saves time when debugging new additions to the library. - - This code is only compiled when FreeType is built with the - FT_DEBUG_MEMORY macro #defined in "ftoption.h" though, it will be - ignored in other builds. - - FT2_ALLOC_TOTAL_MAX - - This variable is ignored if FT2_DEBUG_MEMORY is not defined. It - allows you to specify a maximum heap size for all memory allocations - performed by FreeType. This is very useful to test the robustness - of the font engine and programs that use it in tight memory - conditions. - - If it is undefined, or if its value is not strictly positive, then - no allocation bounds are checked at runtime. - - FT2_ALLOC_COUNT_MAX - - This variable is ignored if FT2_DEBUG_MEMORY is not defined. It - allows you to specify a maximum number of memory allocations - performed by FreeType before returning the error - FT_Err_Out_Of_Memory. This is useful for debugging and testing the - engine's robustness. - - If it is undefined, or if its value is not strictly positive, then - no allocation bounsd are checked at runtime. - - ---- end of DEBUG --- diff --git a/nx-X11/extras/freetype2/docs/FTL.txt b/nx-X11/extras/freetype2/docs/FTL.txt deleted file mode 100644 index 096730273..000000000 --- a/nx-X11/extras/freetype2/docs/FTL.txt +++ /dev/null @@ -1,174 +0,0 @@ - The FreeType Project LICENSE - ---------------------------- - - 2002-Apr-11 - - Copyright 1996-2002 by - David Turner, Robert Wilhelm, and Werner Lemberg - - - -Introduction -============ - - The FreeType Project is distributed in several archive packages; - some of them may contain, in addition to the FreeType font engine, - various tools and contributions which rely on, or relate to, the - FreeType Project. - - This license applies to all files found in such packages, and - which do not fall under their own explicit license. The license - affects thus the FreeType font engine, the test programs, - documentation and makefiles, at the very least. - - This license was inspired by the BSD, Artistic, and IJG - (Independent JPEG Group) licenses, which all encourage inclusion - and use of free software in commercial and freeware products - alike. As a consequence, its main points are that: - - o We don't promise that this software works. However, we will be - interested in any kind of bug reports. (`as is' distribution) - - o You can use this software for whatever you want, in parts or - full form, without having to pay us. (`royalty-free' usage) - - o You may not pretend that you wrote this software. If you use - it, or only parts of it, in a program, you must acknowledge - somewhere in your documentation that you have used the - FreeType code. (`credits') - - We specifically permit and encourage the inclusion of this - software, with or without modifications, in commercial products. - We disclaim all warranties covering The FreeType Project and - assume no liability related to The FreeType Project. - - - Finally, many people asked us for a preferred form for a - credit/disclaimer to use in compliance with this license. We thus - encourage you to use the following text: - - """ - Portions of this software are copyright � 1996-2002 The FreeType - Project (www.freetype.org). All rights reserved. - """ - - -Legal Terms -=========== - -0. Definitions --------------- - - Throughout this license, the terms `package', `FreeType Project', - and `FreeType archive' refer to the set of files originally - distributed by the authors (David Turner, Robert Wilhelm, and - Werner Lemberg) as the `FreeType Project', be they named as alpha, - beta or final release. - - `You' refers to the licensee, or person using the project, where - `using' is a generic term including compiling the project's source - code as well as linking it to form a `program' or `executable'. - This program is referred to as `a program using the FreeType - engine'. - - This license applies to all files distributed in the original - FreeType Project, including all source code, binaries and - documentation, unless otherwise stated in the file in its - original, unmodified form as distributed in the original archive. - If you are unsure whether or not a particular file is covered by - this license, you must contact us to verify this. - - The FreeType Project is copyright (C) 1996-2000 by David Turner, - Robert Wilhelm, and Werner Lemberg. All rights reserved except as - specified below. - -1. No Warranty --------------- - - THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO - USE, OF THE FREETYPE PROJECT. - -2. Redistribution ------------------ - - This license grants a worldwide, royalty-free, perpetual and - irrevocable right and license to use, execute, perform, compile, - display, copy, create derivative works of, distribute and - sublicense the FreeType Project (in both source and object code - forms) and derivative works thereof for any purpose; and to - authorize others to exercise some or all of the rights granted - herein, subject to the following conditions: - - o Redistribution of source code must retain this license file - (`FTL.TXT') unaltered; any additions, deletions or changes to - the original files must be clearly indicated in accompanying - documentation. The copyright notices of the unaltered, - original files must be preserved in all copies of source - files. - - o Redistribution in binary form must provide a disclaimer that - states that the software is based in part of the work of the - FreeType Team, in the distribution documentation. We also - encourage you to put an URL to the FreeType web page in your - documentation, though this isn't mandatory. - - These conditions apply to any software derived from or based on - the FreeType Project, not just the unmodified files. If you use - our work, you must acknowledge us. However, no fee need be paid - to us. - -3. Advertising --------------- - - Neither the FreeType authors and contributors nor you shall use - the name of the other for commercial, advertising, or promotional - purposes without specific prior written permission. - - We suggest, but do not require, that you use one or more of the - following phrases to refer to this software in your documentation - or advertising materials: `FreeType Project', `FreeType Engine', - `FreeType library', or `FreeType Distribution'. - - As you have not signed this license, you are not required to - accept it. However, as the FreeType Project is copyrighted - material, only this license, or another one contracted with the - authors, grants you the right to use, distribute, and modify it. - Therefore, by using, distributing, or modifying the FreeType - Project, you indicate that you understand and accept all the terms - of this license. - -4. Contacts ------------ - - There are two mailing lists related to FreeType: - - o freetype@freetype.org - - Discusses general use and applications of FreeType, as well as - future and wanted additions to the library and distribution. - If you are looking for support, start in this list if you - haven't found anything to help you in the documentation. - - o devel@freetype.org - - Discusses bugs, as well as engine internals, design issues, - specific licenses, porting, etc. - - o http://www.freetype.org - - Holds the current FreeType web page, which will allow you to - download our latest development version and read online - documentation. - - You can also contact us individually at: - - David Turner <david.turner@freetype.org> - Robert Wilhelm <robert.wilhelm@freetype.org> - Werner Lemberg <werner.lemberg@freetype.org> - - ---- end of LICENSE.TXT --- diff --git a/nx-X11/extras/freetype2/docs/GPL.txt b/nx-X11/extras/freetype2/docs/GPL.txt deleted file mode 100644 index e8a612e5c..000000000 --- a/nx-X11/extras/freetype2/docs/GPL.txt +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) 19yy <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) 19yy name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/nx-X11/extras/freetype2/docs/INSTALL b/nx-X11/extras/freetype2/docs/INSTALL deleted file mode 100644 index 8fb665759..000000000 --- a/nx-X11/extras/freetype2/docs/INSTALL +++ /dev/null @@ -1,67 +0,0 @@ - -There are several ways to build the FreeType library, depending on your -system and the level of customization you need. Here is a short -overview of the documentation available: - - -I. Normal installation and upgrades -=================================== - - 1. Native TrueType Hinting - - Native TrueType hinting is disabled by default[1]. If you really - need it, read the file "TRUETYPE" for information. - - 2. Unix Systems (as well as Cygwin or MSys on Windows) - - Please read *both* UPGRADE.UNX and INSTALL.UNX to install or upgrade - FreeType 2 on a Unix system. Note that you *will* need GNU Make, - since other make tools won't work (this includes BSD Make). - - 3. On VMS with the "mms" build tool - - See INSTALL.VMS for installation instructions on this platform. - - 4. Other systems using GNU Make - - On non-Unix platforms, it is possible to build the library using GNU - Make utility. Note that *NO OTHER MAKE TOOL WILL WORK*[2]! This - methods supports several compilers on Windows, OS/2, and BeOS, - including Mingw, Visual C++, Borland C++, and more. - - Instructions are provided in the file "INSTALL.GNU". - - 5. With an IDE Project File (e.g. for Visual Studio or CodeWarrior) - - We provide a small number of "project files" for various IDEs to - automatically build the library as well. Note that these files are - not supported and sporadically maintained by FreeType developers, so - don't expect them to work in each release. - - To find them, have a look at the content of the "builds/<system>" - directory, where <system> stands for your OS or environment. - - 6. From you own IDE, or own Makefiles - - If you want to create your own project file, follow the instructions - given in the "INSTALL.ANY" document of this directory. - - -II. Custom builds of the library -================================ - - Customizing the compilation of FreeType is easy, and allows you to - select only the components of the font engine that you really need. - For more details read the file "CUSTOMIZE". - - ------------------------------------------------------------------------- - -[1] More details on: http://www.freetype.org/patents.html - -[2] make++, a make tool written in Perl, has sufficient support of GNU - make extensions to build FreeType. See - http://makepp.sourceforge.net for more information; you need version - 1.19 or newer, and you must pass option `--norc-substitution'. - ---- end of INSTALL --- diff --git a/nx-X11/extras/freetype2/docs/INSTALL.ANY b/nx-X11/extras/freetype2/docs/INSTALL.ANY deleted file mode 100644 index af3f6e7a3..000000000 --- a/nx-X11/extras/freetype2/docs/INSTALL.ANY +++ /dev/null @@ -1,99 +0,0 @@ -Instructions on how to build FreeType with your own build tool -============================================================== - -See the file "CUSTOMIZE" to learn how to customize FreeType to specific -environments. - - -I. Standard procedure ---------------------- - - * DISABLE PRE-COMPILED HEADERS! This is very important for Visual - C++, because FreeType uses lines like: - - #include FT_FREETYPE_H - - which are not correctly supported by this compiler while being ISO C - compliant! - - * You need to add the directories "freetype2/include" to your include - path when compiling the library. - - * FreeType 2 is made of several components; each of them is located in - a subdirectory of "freetype2/src". For example, - 'freetype2/src/truetype/' contains the TrueType font driver. - - * DO NOT COMPILE ALL C FILES! Rather, compile the following ones: - - -- base components (required) - - src/base/ftsystem.c - src/base/ftinit.c - src/base/ftdebug.c - src/base/ftbase.c - src/base/ftglyph.c - src/base/ftbbox.c - src/base/ftmm.c - src/base/ftpfr.c -- optional, see <freetype/ftpfr.h> - src/base/ftbdf.c -- optional, see <freetype/ftbdf.h> - src/base/ftwinfnt.c -- optional, see <freetype/ftwinfnt.h> - - src/base/ftmac.c -- only on the Macintosh - - -- other components (optional) - - src/autohint/autohint.c -- auto hinting module - src/cache/ftcache.c -- cache sub-system (in beta) - src/sfnt/sfnt.c -- SFNT files support - (TrueType & OpenType) - src/cff/cff.c -- CFF/OpenType font driver - src/pfr/pfr.c -- PFR/TrueDoc font driver - src/bdf/bdf.c -- BDF font driver - src/pcf/pcf.c -- PCF font driver - src/psnames/psnames.c -- PostScript glyph names support - src/psaux/psaux.c -- PostScript Type 1 parsing - src/truetype/truetype.c -- TrueType font driver - src/type1/type1.c -- Type 1 font driver - src/cid/type1cid.c -- Type 1 CID-keyed font driver - src/winfonts/winfonts.c -- Windows FONT / FNT font driver - src/raster1/raster1.c -- monochrome rasterizer - src/smooth/smooth.c -- anti-aliasing rasterizer - - Notes: - - `truetype.c' needs `sfnt.c' and `psnames.c' - `type1.c' needs `psaux.c' and `psnames.c' - `type1cid.c' needs `psaux.c' and `psnames.c' - `cff.c' needs `sfnt.c', `psaux.c', and `psnames.c' - - - You are done. In case of problems, see the archives of the FreeType - development mailing list. - - -II. Support for flat-directory compilation ------------------------------------------- - - It is possible to put all FreeType 2 source files into a single - directory, with the *exception* of the `include' hierarchy. - - 1. Copy all files in current directory - - cp freetype2/src/base/*.[hc] . - cp freetype2/src/raster1/*.[hc] . - cp freetype2/src/smooth/*.[hc] . - etc. - - 2. Compile sources - - cc -c -Ifreetype2/include ftsystem.c - cc -c -Ifreetype2/include ftinit.c - cc -c -Ifreetype2/include ftdebug.c - cc -c -Ifreetype2/include ftbase.c - etc. - - You don't need to define the FT_FLAT_COMPILATION macro (as this was - required in previous releases of FreeType 2). - - ---- end of INSTALL.ANY --- diff --git a/nx-X11/extras/freetype2/docs/INSTALL.GNU b/nx-X11/extras/freetype2/docs/INSTALL.GNU deleted file mode 100644 index 4a56d6d6d..000000000 --- a/nx-X11/extras/freetype2/docs/INSTALL.GNU +++ /dev/null @@ -1,140 +0,0 @@ -This document contains instructions how to build the FreeType library on -non-Unix systems with the help of GNU Make. Note that if you are -running Cygwin or MSys in Windows, you should follow the instructions in -the file INSTALL.UNX instead. - - - FreeType 2 includes a powerful and flexible build system that allows - you to easily compile it on a great variety of platforms from the - command line. To do so, just follow these simple instructions: - - 1. Install GNU Make - ------------------- - - Because GNU Make is the only Make tool supported to compile - FreeType 2, you should install it on your machine. - - The FreeType 2 build system relies on many features special to GNU - Make -- trying to build the library with any other Make tool will - *fail*. - - NEARLY ALL OTHER MAKE TOOLS WILL FAIL, INCLUDING "BSD MAKE", SO - REALLY INSTALL A RECENT VERSION OF GNU MAKE ON YOUR SYSTEM! - - Note that make++, a make tool written in Perl, supports enough - features of GNU make to compile FreeType. See - http://makepp.sourceforge.net for more information; you need version - 1.19 or newer, and you must pass option `--norc-substitution'. - - Make sure that you are invoking GNU Make from the command line, by - typing something like: - - make -v - - to display its version number. - - VERSION 3.78.1 OR NEWER IS NEEDED! - - - 2. Invoke 'make' - ---------------- - - Go to the root directory of FreeType 2, then simply invoke GNU Make - from the command line. This will launch the FreeType 2 host - platform detection routines. A summary will be displayed, for - example, on Win32: - - - ============================================================== - FreeType build system -- automatic system detection - - The following settings are used: - - platform win32 - compiler gcc - configuration directory ./builds/win32 - configuration rules ./builds/win32/w32-gcc.mk - - If this does not correspond to your system or settings please - remove the file 'config.mk' from this directory then read the - INSTALL file for help. - - Otherwise, simply type 'make' again to build the library. - ============================================================= - - - If the detected settings correspond to your platform and compiler, - skip to step 5. Note that if your platform is completely alien to - the build system, the detected platform will be 'ansi'. - - - 3. Configure the build system for a different compiler - ------------------------------------------------------ - - If the build system correctly detected your platform, but you want - to use a different compiler than the one specified in the summary - (for most platforms, gcc is the defaut compiler), invoke GNU Make - with - - make setup <compiler> - - Examples: - - to use Visual C++ on Win32, type: "make setup visualc" - to use Borland C++ on Win32, type "make setup bcc32" - to use Watcom C++ on Win32, type "make setup watcom" - to use Intel C++ on Win32, type "make setup intelc" - to use LCC-Win32 on Win32, type: "make setup lcc" - to use Watcom C++ on OS/2, type "make setup watcom" - to use VisualAge C++ on OS/2, type "make setup visualage" - - The <compiler> name to use is platform-dependent. The list of - available compilers for your system is available in the file - `builds/<system>/detect.mk' - - If you are satisfied by the new configuration summary, skip to - step 5. - - - 4. Configure the build system for an unknown platform/compiler - -------------------------------------------------------------- - - The auto-detection/setup phase of the build system copies a file to - the current directory under the name `config.mk'. - - For example, on OS/2+gcc, it would simply copy - `builds/os2/os2-gcc.mk' to `./config.mk'. - - If for some reason your platform isn't correctly detected, copy - manually the configuration sub-makefile to `./config.mk' and go to - step 5. - - Note that this file is a sub-Makefile used to specify Make variables - for compiler and linker invocation during the build. You can easily - create your own version from one of the existing configuration - files, then copy it to the current directory under the name - `./config.mk'. - - - 5. Build the library - -------------------- - - The auto-detection/setup phase should have copied a file in the - current directory, called `./config.mk'. This file contains - definitions of various Make variables used to invoke the compiler - and linker during the build. - - To launch the build, simply invoke GNU Make again: The top Makefile - will detect the configuration file and run the build with it. - - - Final note - - The build system builds a statically linked library of the font - engine in the "objs" directory. It does _not_ support the build of - DLLs on Windows and OS/2. If you need these, you have to either use - a IDE-specific project file, or follow the instructions in - "INSTALL.ANY" to create your own Makefiles. - - ---- end of INSTALL.GNU --- diff --git a/nx-X11/extras/freetype2/docs/INSTALL.UNX b/nx-X11/extras/freetype2/docs/INSTALL.UNX deleted file mode 100644 index d5a45c042..000000000 --- a/nx-X11/extras/freetype2/docs/INSTALL.UNX +++ /dev/null @@ -1,65 +0,0 @@ -This document contains instructions on how to build the FreeType library -on Unix systems. This also works for emulations like Cygwin or MSys on -Win32: - - - 1. Ensure that you are using GNU Make - ------------------------------------- - - The FreeType build system _exclusively_ works with GNU Make. You - will not be able to compile the library with the instructions below - using any other alternative (including BSD Make). - - [Well, this is not really correct. Recently, a perl implementation - of make called `makepp' has appeared which can also build FreeType 2 - successfully on Unix platforms. See http://makepp.sourceforge.net - for more details; you need version 1.19 or newer, and you must pass - option `--norc-substitution'.] - - Trying to compile the library with a different Make tool will print - a message like: - - Sorry, GNU make is required to build FreeType2. - - and the build process will be aborted. If this happens, install GNU - Make on your system, and use the GNUMAKE environment variable to - name it. - - - 2. Build and install the library - -------------------------------- - - The following should work on all Unix systems where the `make' - command invokes GNU Make: - - ./configure [options] - make - make install (as root) - - The default installation path is "/usr/local". It can be changed - with the `--prefix=<path>' option. Example: - - ./configure --prefix=/usr - - When using a different command to invoke GNU Make, use the GNUMAKE - variable. For example, if `gmake' is the command to use on your - system, do something like: - - GNUMAKE=gmake ./configure [options] - gmake - gmake install (as root) - - If this still doesn't work, something's rotten on your system - (e.g. you are using a very old version of GNU Make). - - It is possible to compile FreeType in a different directory. - Assuming the FreeType source files in directory `/src/freetype' a - compilation in directory `foo' works as follows: - - cd foo - /src/freetype/configure [options] - make - make install - - ---- end of INSTALL.UNX -- diff --git a/nx-X11/extras/freetype2/docs/INSTALL.VMS b/nx-X11/extras/freetype2/docs/INSTALL.VMS deleted file mode 100644 index 4d9d64ca2..000000000 --- a/nx-X11/extras/freetype2/docs/INSTALL.VMS +++ /dev/null @@ -1,36 +0,0 @@ -How to build the freetype2 library on VMS ------------------------------------------ - -Just type one of the following depending on the type of external entries -you want: - - mms - -or - - mms/macro=("COMP_FLAGS=/name=(as_is,short)") - -The library is avalaible in the directory - - [.LIB] - -To compile applications using FreeType 2 you have to define the logical -FREETYPE pointing to the directory - - [.INCLUDE.FREETYPE] - -i.e., if the directory in which this INSTALL.VMS file is located is -$disk:[freetype] then define the logical with - - define freetype $disk:[freetype.include.freetype] - -This version has been tested with Compaq C V6.2-006 on OpenVMS Alpha -V7.2-1. - - - Any problems can be reported to - - Jouk Jansen <joukj@hrem.stm.tudelft.nl> - - ---- end of INSTALL.VMS --- diff --git a/nx-X11/extras/freetype2/docs/PATENTS b/nx-X11/extras/freetype2/docs/PATENTS deleted file mode 100644 index 717bb7d3f..000000000 --- a/nx-X11/extras/freetype2/docs/PATENTS +++ /dev/null @@ -1,27 +0,0 @@ - - FreeType Patents Disclaimer - August 1999 - - - -WE HAVE DISCOVERED THAT APPLE OWNS SEVERAL PATENTS RELATED TO THE -RENDERING OF TRUETYPE FONTS. THIS COULD MEAN THAT THE FREE USE OF -FREETYPE MIGHT BE ILLEGAL IN THE USA, JAPAN, AND POSSIBLY OTHER -COUNTRIES, BE IT IN COMMERCIAL OR OPEN SOURCE PRODUCTS. - -FOR MORE DETAILS, WE STRONGLY ADVISE YOU TO GO TO THE FREETYPE -PATENTS PAGE AT THE FOLLOWING WEB ADDRESS: - - http://www.freetype.org/patents.html - -WE WILL NOT PLACE INFORMATION IN THIS FILE AS THE SITUATION IS STILL -UNDETERMINED FOR NOW. AT THE TIME THESE LINES ARE WRITTEN, WE HAVE -CONTACTED APPLE'S LEGAL DEPARTMENT AND ARE STILL WAITING FOR THEIR -ANSWER ON THE SUBJECT. - -PLEASE READ THE `INSTALL' FILE TO SEE HOW TO DISABLE THE ENGINE'S -BYTECODE INTERPRETER IN ORDER TO BUILD A PATENT-FREE ENGINE, AT THE -COST OF RENDERING QUALITY. - - ---- end of PATENTS --- diff --git a/nx-X11/extras/freetype2/docs/TODO b/nx-X11/extras/freetype2/docs/TODO deleted file mode 100644 index 592809acf..000000000 --- a/nx-X11/extras/freetype2/docs/TODO +++ /dev/null @@ -1,23 +0,0 @@ -Here is a list of items that need to be addressed in FreeType 2; they are -not exactly bugs, but should be considered though: - -* Implement stem3/counter hints properly in the Postscript hinter. - -* Finalize the cache sub-system. It has been in beta far too long :-) - -* The automatic and Postscript hinters have been improved to increase - the quality of AA text, but Monochrome and LCD hinting still suck. We - need to do something about that. - -* Add CIDCMap support to the CID driver. - -* Add track kerning support to the Type1 and PFR driver and the API - (The degree of kerning, e.g. light, normal or tight, and - the glyph size has to be passed as parameter). - -* Add kerning (AFM file) support to the CID driver. - -* Possibly add support for reading PFM files. - - ---- end of TODO --- diff --git a/nx-X11/extras/freetype2/docs/TRUETYPE b/nx-X11/extras/freetype2/docs/TRUETYPE deleted file mode 100644 index 68ecf1971..000000000 --- a/nx-X11/extras/freetype2/docs/TRUETYPE +++ /dev/null @@ -1,26 +0,0 @@ -How to enable the TrueType native hinter if you need it --------------------------------------------------------- - - The TrueType bytecode interpreter is disabled in all public releases - of the FreeType packages for patents reasons (see - http://www.freetype.org/patents.html for more details). - - However, many Linux distributions do enable the interpreter in the - FreeType packages (DEB/RPM/etc.) they produce for their platforms. If - you are using TrueType fonts on your system, you most probably want to - enable it manually by doing the following: - - - open the file "include/freetype/config/ftoption.h" - - - locate a line that says: - - #undef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - - change it to: - - #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - These steps must be done _before_ compiling the library. - - ---- end of TRUETYPE --- diff --git a/nx-X11/extras/freetype2/docs/UPGRADE.UNX b/nx-X11/extras/freetype2/docs/UPGRADE.UNX deleted file mode 100644 index 0246b97c7..000000000 --- a/nx-X11/extras/freetype2/docs/UPGRADE.UNX +++ /dev/null @@ -1,127 +0,0 @@ - -SPECIAL NOTE FOR UNIX USERS -=========================== - - If you are installing this release of FreeType on a system that - already uses release 2.0.5 (or even an older version), you have to - perform a few special steps to ensure that everything goes well. - - - 1. Enable the TrueType bytecode hinter if you need it - ----------------------------------------------------- - - See the instructions in the file "TRUETYPE" of this directory. - - Note that FreeType supports TrueType fonts without the bytecode - interpreter through its auto-hinter, which now generates relatively - good results with most fonts. - - - 2. Determine the correct installation path - ------------------------------------------ - - By default, the configure script will install the library in - "/usr/local". However, many Unix distributions now install the - library in "/usr", since FreeType is becoming a critical system - component. - - If FreeType is already installed on your system, type - - freetype-config --prefix - - on the command line. This should return the installation path - (e.g., "/usr" or "/usr/local"). To avoid problems of parallel - FreeType versions, use this path for the --prefix option of the - configure script. - - Otherwise, simply use "/usr" (or whatever you think is adequate for - your installation). - - - 3. Ensure that you are using GNU Make - ------------------------------------- - - The FreeType build system _exclusively_ works with GNU Make (as an - exception you can use make++ which emulates GNU Make sufficiently; - see http://makepp.sourceforge.net). You will not be able to compile - the library with the instructions below using any other alternative - (including BSD Make). - - Trying to compile the library with a different Make tool will print - a message like: - - Sorry, GNU make is required to build FreeType2. - - and the build process will be aborted. If this happens, install GNU - Make on your system, and use the GNUMAKE environment variable to - name it. - - - 4. Build and install the library - -------------------------------- - - The following should work on all Unix systems where the `make' - command invokes GNU Make: - - ./configure --prefix=<yourprefix> - make - make install (as root) - - where "<yourprefix>" must be replaced by the prefix returned by the - "freetype-config" command. - - When using a different command to invoke GNU Make, use the GNUMAKE - variable. For example, if `gmake' is the command to use on your - system, do something like: - - GNUMAKE=gmake ./configure --prefix=<yourprefix> - gmake - gmake install (as root) - - - 5. Take care of XFree86 version 4 - --------------------------------- - - Certain recent Linux distributions will install _several_ versions - of FreeType on your system. For example, on a fresh Mandrake 8.1 - system, you can find the following files: - - /usr/lib/libfreetype.so which links to - /usr/lib/libfreetype.6.1.0.so - - and - - /usr/X11R6/lib/libfreetype.so which links to - /usr/X11R6/lib/libfreetype.6.0.so - - Note that these files correspond to two distinct versions of the - library! It seems that this surprising issue is due to the install - scripts of recent XFree86 servers (from 4.1.0) which install their - own (dated) version of the library in "/usr/X11R6/lib". - - In certain _rare_ cases you may experience minor problems if you - install this release of the library in "/usr" only, namely, that - certain applications will not benefit from the bug fixes and - rendering improvements you would expect. - - There are two good ways to deal with this situation: - - - Install the library _twice_, in "/usr" and in "/usr/X11R6" (you - have to do that each time you install a new FreeType release - though). - - - Change the link in /usr/X11R6/lib/libfreetype.so to point to - - /usr/lib/libfreetype.so, - - and get rid of - - /usr/X11R6/lib/libfreetype.6.0.so - - The FreeType Team is not responsible for this problem, so please - contact either the XFree86 development team or your Linux - distributor to help clear this issue in case the information given - here doesn't help. - - ----- end of UPGRADE.UNX --- diff --git a/nx-X11/extras/freetype2/docs/VERSION.DLL b/nx-X11/extras/freetype2/docs/VERSION.DLL deleted file mode 100644 index 9e27a57d2..000000000 --- a/nx-X11/extras/freetype2/docs/VERSION.DLL +++ /dev/null @@ -1,110 +0,0 @@ -Due to our use of "libtool" to generate and install the FreeType 2 -libraries on Unix systems, as well as other historical events, it is -generally very difficult to know precisely which release of the font -engine is installed on a given system. - -This file tries to explain why and to document ways to properly detect -FreeType on Unix. - - -1. Version & Release numbers ----------------------------- - -For each new public release of FreeType 2, there are generally *three* -distinct "version" numbers to consider: - - * The official FT2 release number, like 2.0.9, or 2.1.3. - - * The libtool (and Unix) specific version number, like "9.2.3". This - is what "freetype-config --version" will return. - - * The platform-specific shared object number, used for example when - the library is installed as "/usr/lib/libfreetype.so.6.3.2". - -The platform-specific number is, unsurprisingly, platform-specific and -varies with the operating system you are using (several variants of -Linux, FreeBSD, Solaris, etc.). You should thus _never_ use it, even -for simple tests. - -The libtool-specific number does not equal the release number but is -tied to it. - -The release number is available at *compile* time through the following -macros defined in FT_FREETYPE_H: - - - FREETYPE_MAJOR : major release number - - FREETYPE_MINOR : minor release number - - FREETYPE_PATCH : patch release number - -See below for a small autoconf fragment. - -The release number is also available at *runtime* through the -"FT_Library_Version" API. Unfortunately, this one wasn't available or -working correctly before the 2.1.3 official release. - - -2. History ----------- - -The following table gives, for each official release, the corresponding -libtool number, as well as the shared object number found on _most_ -systems, but not all of them: - - release libtool so - ------------------------------- - 2.1.9 9.7.3 6.3.7 - 2.1.8 9.6.3 6.3.6 - 2.1.7 9.5.3 6.3.5 - 2.1.6 9.5.3 6.3.5 - 2.1.5 9.4.3 6.3.4 - 2.1.4 9.3.3 6.3.3 - 2.1.3 9.2.3 6.3.2 - 2.1.2 9.1.3 6.3.1 - 2.1.1 9.0.3 ? - 2.1.0 8.0.2 ? - 2.0.9 9.0.3 ? - 2.0.8 8.0.2 ? - 2.0.4 7.0.1 ? - 2.0.1 6.1.0 ? - -The libtool numbers are a bit inconsistent due to the library's history: - - - 2.1.0 was created as a development branch from 2.0.8 (hence the same - libtool numbers). - - - 2.0.9 was a bug-fix release of the "stable" branch, and we - incorrectly increased its libtool number. - - - 2.1.4 is still in the "development" branch, however it is stable - enough to be the basis of an upcoming 2.2.0 release. - - -3. Autoconf Code Fragment -------------------------- - -Lars Clausen contributed the following autoconf fragment to detect which -version of FreeType is installed on a system. This one tests for a -version that is at least 2.0.9; you should change it to check against -other release numbers. - - - AC_MSG_CHECKING([whether FreeType version is 2.0.9 or higher]) - old_CPPFLAGS="$CPPFLAGS" - CPPFLAGS=`freetype-config --cflags` - AC_TRY_CPP([ - -#include <ft2build.h> -#include FT_FREETYPE_H -#if (FREETYPE_MAJOR*1000 + FREETYPE_MINOR)*1000 + FREETYPE_PATCH < 2000009 -#error Freetype version too low. -#endif - ], - [AC_MSG_RESULT(yes) - FREETYPE_LIBS=`freetype-config --libs` - AC_SUBST(FREETYPE_LIBS) - AC_DEFINE(HAVE_FREETYPE,1,[Define if you have the FreeType2 library]) - CPPFLAGS="$old_CPPFLAGS"], - [AC_MSG_ERROR([Need FreeType library version 2.0.9 or higher])]) - - ---- end of VERSION.DLL --- diff --git a/nx-X11/extras/freetype2/docs/formats.txt b/nx-X11/extras/freetype2/docs/formats.txt deleted file mode 100644 index b11f6c409..000000000 --- a/nx-X11/extras/freetype2/docs/formats.txt +++ /dev/null @@ -1,139 +0,0 @@ -This file contains a list of various font formats. It gives the -reference document and whether it is supported in FreeType 2. - - - file type: - The only special case is `MAC'; on older Mac OS versions, a `file' - is stored as a data and a resource fork, this is, within two - separate data chunks. In all other cases, the font data is stored - in a single file. - - wrapper format: - The format used to represent the font data. In the table below it - is used only if the font format differs. Possible values are - `SFNT' (binary), `PS' (a text header, followed by binary or text - data), and `LZW' (compressed with either `gzip' or `compress'). - - font format: - How the font is to be accessed, possibly after converting the file - type and wrapper format into a generic form. Bitmap formats are - `BDF', `PCF', and one form of `WINFNT'; all others are vector - formats. - - font type: - Sub-formats of the font format. `SBIT' and `MACSBIT' are bitmap - formats, `MM' and `VAR' support optical axes. - - glyph access: - If not specified, the glyph access is `standard' to the font - format. Values are `CID' for CID-keyed fonts, `SYNTHETIC' for - fonts which are modified versions of other fonts by means of a - transformation matrix, `COLLECTION' for collecting multiple fonts - (sharing most of the data) into a single file, and `TYPE_0' for PS - fonts which are to be accessed in a tree-like structure. - - FreeType driver: - The module in the FreeType library which handles the specific font - format. A missing entry means that FreeType doesn't support the - font format (yet). - - -Please send additions and/or corrections to wl@gnu.org or to the -FreeType developer's list at devel@freetype (for subscribers only). If -you can provide a font example for a format which isn't supported yet -please send a mail too. - - -file wrapper font font glyph FreeType reference -type format format type access driver documents ----------------------------------------------------------------------------- - ---- --- BDF --- --- bdf 5005.BDF_Spec.pdf, X11 - - ---- SFNT PS TYPE_1 --- --- Type 1 GX Font Format - (for the Mac) -MAC SFNT PS TYPE_1 --- --- Type 1 GX Font Format - (for the Mac) ---- SFNT PS TYPE_1 CID --- 5180.sfnt.pdf (for the Mac) -MAC SFNT PS TYPE_1 CID --- 5180.sfnt.pdf (for the Mac) ---- SFNT PS CFF --- cff OT spec, 5176.CFF.pdf - (`OTTO' format) -MAC SFNT PS CFF --- cff OT spec, 5176.CFF.pdf - (`OTTO' format) ---- SFNT PS CFF CID cff OT spec, 5176.CFF.pdf -MAC SFNT PS CFF CID cff OT spec, 5176.CFF.pdf ---- SFNT PS CFF SYNTHETIC --- OT spec, 5176.CFF.pdf -MAC SFNT PS CFF SYNTHETIC --- OT spec, 5176.CFF.pdf ---- SFNT TT SBIT --- --- XFree86? (bitmaps only; - `head' table) ---- SFNT TT MACSBIT --- sfnt OT spec (for the Mac; - bitmaps only; `bhed' table) -MAC SFNT TT MACSBIT --- sfnt OT spec (for the Mac; - bitmaps only; `bhed' table) ---- SFNT TT --- --- truetype OT spec (`normal' TT font) -MAC SFNT TT --- --- truetype OT spec (`normal' TT font) -MAC SFNT TT VAR --- truetype GX spec (`?var' tables) ---- SFNT TT --- COLLECTION truetype OT spec (this can't be CFF) -MAC SFNT TT --- COLLECTION truetype OT spec (this can't be CFF) - - ---- --- PS TYPE_1 --- type1 T1_SPEC.pdf - (`normal' Type 1 font) -MAC --- PS TYPE_1 --- type1 T1_SPEC.pdf - (`normal' Type 1 font) ---- --- PS TYPE_1 CID cid PLRM.pdf (CID Font Type 0; - Type 9 font) ---- --- PS MM --- type1 5015.Type1_Supp.pdf - (Multiple Masters) ---- --- PS CFF --- cff 5176.CFF.pdf (`pure' CFF) ---- --- PS CFF CID cff 5176.CFF.pdf (`pure' CFF) ---- --- PS CFF SYNTHETIC --- 5176.CFF.pdf (`pure' CFF) ---- PS PS CFF --- --- PLRM.pdf (Type 2) [1] ---- PS PS CFF CID --- PLRM.pdf (Type 2) [1] ---- PS PS CFF SYNTHETIC --- PLRM.pdf (Type 2) [1] ---- --- PS --- TYPE_0 --- PLRM.pdf ---- --- PS TYPE_3 --- --- PLRM.pdf (never supported) ---- --- PS TYPE_3 CID --- PLRM.pdf (CID Font Type 1; - Type 10 font; never supported) ---- PS PS TYPE_14 --- --- PLRM.pdf (Chameleon font; - Type 14 font; never supported?) ---- --- PS TYPE_32 CID --- PLRM.pdf (CID Font Type 4; - Type 32 font; never supported?) ---- PS TT --- --- type42 5012.Type42_Spec.pdf - (Type 42 font) ---- PS TT --- CID --- PLRM.pdf (CID Font Type 2; - Type 11 font) - - ---- ? ? CEF ? cff ? - - ---- --- PCF --- --- pcf X11 ---- LZW PCF --- --- pcf X11 - - ---- --- PFR PFR0 --- pfr [2] ---- --- PFR PFR1 --- --- (undocumented, proprietary; - probably never supported) - - ---- --- WINFNT --- --- winfonts MS Windows 3 Developer's Notes ---- --- WINFNT VECTOR --- --- MS Windows 3 Developer's Notes - - -[1] Support should be rather simple since this is identical to `CFF' - but in a PS wrapper. - -[2] Official PFR specification: - - http://www.bitstream.com/categories/developer/truedoc/pfrspec.html - http://www.bitstream.com/categories/developer/truedoc/pfrspec1.2.pdf - - The syntax of the auxiliary data is not defined there, but is partially - defined in MHP 1.0.3 (also called ETSI TS 101812 V1.3.1) section 7.4. - - http://www.etsi.org/ - http://webapp.etsi.org/workprogram/Report_WorkItem.asp?WKI_ID=18799 - - (free registration required). diff --git a/nx-X11/extras/freetype2/docs/license.txt b/nx-X11/extras/freetype2/docs/license.txt deleted file mode 100644 index 876cc4b93..000000000 --- a/nx-X11/extras/freetype2/docs/license.txt +++ /dev/null @@ -1,28 +0,0 @@ - -The FreeType 2 font engine is copyrighted work and cannot be used -legally without a software license. In order to make this project -usable to a vast majority of developers, we distribute it under two -mutually exclusive open-source licenses. - -This means that *you* must choose *one* of the two licenses described -below, then obey all its terms and conditions when using FreeType 2 in -any of your projects or products. - - - The FreeType License, found in the file `FTL.TXT', which is similar - to the original BSD license *with* an advertising clause that forces - you to explicitly cite the FreeType project in your product's - documentation. All details are in the license file. This license - is suited to products which don't use the GNU General Public - License. - - - The GNU General Public License version 2, found in `GPL.TXT' (any - later version can be used also), for programs which already use the - GPL. Note that the FTL is incompatible with the GPL due to its - advertisement clause. - -The contributed PCF driver comes with a license similar to that of the X -Window System. It is compatible to the above two licenses (see file -src/pcf/readme). - - ---- end of licence.txt --- diff --git a/nx-X11/extras/freetype2/docs/modules.txt b/nx-X11/extras/freetype2/docs/modules.txt deleted file mode 100644 index 04f4d120a..000000000 --- a/nx-X11/extras/freetype2/docs/modules.txt +++ /dev/null @@ -1,14 +0,0 @@ -This file shows the interdependencies of various FreeType modules. - -Note that the use of `psnames' can be controlled in ftconfig.h -(FT_CONFIG_OPTION_POSTSCRIPT_NAMES). - - module dependency - --------------------------------------- - cff sfnt, pshinter, psnames - cid psaux, pshinter, psnames - truetype sfnt - type1 psaux, pshinter, psnames - type42 truetype - psaux psnames - sfnt psnames diff --git a/nx-X11/extras/freetype2/docs/raster.txt b/nx-X11/extras/freetype2/docs/raster.txt deleted file mode 100644 index 078c51aa1..000000000 --- a/nx-X11/extras/freetype2/docs/raster.txt +++ /dev/null @@ -1,624 +0,0 @@ - - How FreeType's rasterizer work - - by David Turner - - Revised 2003-Dec-08 - - -This file is an attempt to explain the internals of the FreeType -rasterizer. The rasterizer is of quite general purpose and could -easily be integrated into other programs. - - - I. Introduction - - II. Rendering Technology - 1. Requirements - 2. Profiles and Spans - a. Sweeping the Shape - b. Decomposing Outlines into Profiles - c. The Render Pool - d. Computing Profiles Extents - e. Computing Profiles Coordinates - f. Sweeping and Sorting the Spans - - -I. Introduction -=============== - - A rasterizer is a library in charge of converting a vectorial - representation of a shape into a bitmap. The FreeType rasterizer - has been originally developed to render the glyphs found in - TrueType files, made up of segments and second-order B�ziers. - Meanwhile it has been extended to render third-order B�zier curves - also. This document is an explanation of its design and - implementation. - - While these explanations start from the basics, a knowledge of - common rasterization techniques is assumed. - - -II. Rendering Technology -======================== - -1. Requirements ---------------- - - We assume that all scaling, rotating, hinting, etc., has been - already done. The glyph is thus described by a list of points in - the device space. - - - All point coordinates are in the 26.6 fixed float format. The - used orientation is: - - - ^ y - | reference orientation - | - *----> x - 0 - - - `26.6' means that 26 bits are used for the integer part of a - value and 6 bits are used for the fractional part. - Consequently, the `distance' between two neighbouring pixels is - 64 `units' (1 unit = 1/64th of a pixel). - - Note that, for the rasterizer, pixel centers are located at - integer coordinates. The TrueType bytecode interpreter, - however, assumes that the lower left edge of a pixel (which is - taken to be a square with a length of 1 unit) has integer - coordinates. - - - ^ y ^ y - | | - | (1,1) | (0.5,0.5) - +-----------+ +-----+-----+ - | | | | | - | | | | | - | | | o-----+-----> x - | | | (0,0) | - | | | | - o-----------+-----> x +-----------+ - (0,0) (-0.5,-0.5) - - TrueType bytecode interpreter FreeType rasterizer - - - A pixel line in the target bitmap is called a `scanline'. - - - A glyph is usually made of several contours, also called - `outlines'. A contour is simply a closed curve that delimits an - outer or inner region of the glyph. It is described by a series - of successive points of the points table. - - Each point of the glyph has an associated flag that indicates - whether it is `on' or `off' the curve. Two successive `on' - points indicate a line segment joining the two points. - - One `off' point amidst two `on' points indicates a second-degree - (conic) B�zier parametric arc, defined by these three points - (the `off' point being the control point, and the `on' ones the - start and end points). Similarly, a third-degree (cubic) B�zier - curve is described by four points (two `off' control points - between two `on' points). - - Finally, for second-order curves only, two successive `off' - points forces the rasterizer to create, during rendering, an - `on' point amidst them, at their exact middle. This greatly - facilitates the definition of successive B�zier arcs. - - The parametric form of a second-order B�zier curve is: - - P(t) = (1-t)^2*P1 + 2*t*(1-t)*P2 + t^2*P3 - - (P1 and P3 are the end points, P2 the control point.) - - The parametric form of a third-order B�zier curve is: - - P(t) = (1-t)^3*P1 + 3*t*(1-t)^2*P2 + 3*t^2*(1-t)*P3 + t^3*P4 - - (P1 and P4 are the end points, P2 and P3 the control points.) - - For both formulae, t is a real number in the range [0..1]. - - Note that the rasterizer does not use these formulae directly. - They exhibit, however, one very useful property of B�zier arcs: - Each point of the curve is a weighted average of the control - points. - - As all weights are positive and always sum up to 1, whatever the - value of t, each arc point lies within the triangle (polygon) - defined by the arc's three (four) control points. - - In the following, only second-order curves are discussed since - rasterization of third-order curves is completely identical. - - Here some samples for second-order curves. - - - * # on curve - * off curve - __---__ - #-__ _-- -_ - --__ _- - - --__ # \ - --__ # - -# - Two `on' points - Two `on' points and one `off' point - between them - - * - # __ Two `on' points with two `off' - \ - - points between them. The point - \ / \ marked `0' is the middle of the - - 0 \ `off' points, and is a `virtual - -_ _- # on' point where the curve passes. - -- It does not appear in the point - * list. - - -2. Profiles and Spans ---------------------- - - The following is a basic explanation of the _kind_ of computations - made by the rasterizer to build a bitmap from a vector - representation. Note that the actual implementation is slightly - different, due to performance tuning and other factors. - - However, the following ideas remain in the same category, and are - more convenient to understand. - - - a. Sweeping the Shape - - The best way to fill a shape is to decompose it into a number of - simple horizontal segments, then turn them on in the target - bitmap. These segments are called `spans'. - - __---__ - _-- -_ - _- - - - \ - / \ - / \ - | \ - - __---__ Example: filling a shape - _----------_ with spans. - _-------------- - ----------------\ - /-----------------\ This is typically done from the top - / \ to the bottom of the shape, in a - | | \ movement called a `sweep'. - V - - __---__ - _----------_ - _-------------- - ----------------\ - /-----------------\ - /-------------------\ - |---------------------\ - - - In order to draw a span, the rasterizer must compute its - coordinates, which are simply the x coordinates of the shape's - contours, taken on the y scanlines. - - - /---/ |---| Note that there are usually - /---/ |---| several spans per scanline. - | /---/ |---| - | /---/_______|---| When rendering this shape to the - V /----------------| current scanline y, we must - /-----------------| compute the x values of the - a /----| |---| points a, b, c, and d. - - - - * * - - - - * * - - y - - / / b c| |d - - - /---/ |---| - /---/ |---| And then turn on the spans a-b - /---/ |---| and c-d. - /---/_______|---| - /----------------| - /-----------------| - a /----| |---| - - - - ####### - - - - ##### - - y - - / / b c| |d - - - b. Decomposing Outlines into Profiles - - For each scanline during the sweep, we need the following - information: - - o The number of spans on the current scanline, given by the - number of shape points intersecting the scanline (these are - the points a, b, c, and d in the above example). - - o The x coordinates of these points. - - x coordinates are computed before the sweep, in a phase called - `decomposition' which converts the glyph into *profiles*. - - Put it simply, a `profile' is a contour's portion that can only - be either ascending or descending, i.e., it is monotonic in the - vertical direction (we also say y-monotonic). There is no such - thing as a horizontal profile, as we shall see. - - Here are a few examples: - - - this square - 1 2 - ---->---- is made of two - | | | | - | | profiles | | - ^ v ^ + v - | | | | - | | | | - ----<---- - - up down - - - this triangle - - P2 1 2 - - |\ is made of two | \ - ^ | \ \ | \ - | | \ \ profiles | \ | - | | \ v ^ | \ | - | \ | | + \ v - | \ | | \ - P1 ---___ \ ---___ \ - ---_\ ---_ \ - <--__ P3 up down - - - - A more general contour can be made of more than two profiles: - - __ ^ - / | / ___ / | - / | / | / | / | - | | / / => | v / / - | | | | | | ^ | - ^ | |___| | | ^ + | + | + v - | | | v | | - | | | up | - |___________| | down | - - <-- up down - - - Successive profiles are always joined by horizontal segments - that are not part of the profiles themselves. - - For the rasterizer, a profile is simply an *array* that - associates one horizontal *pixel* coordinate to each bitmap - *scanline* crossed by the contour's section containing the - profile. Note that profiles are *oriented* up or down along the - glyph's original flow orientation. - - In other graphics libraries, profiles are also called `edges' or - `edgelists'. - - - c. The Render Pool - - FreeType has been designed to be able to run well on _very_ - light systems, including embedded systems with very few memory. - - A render pool will be allocated once; the rasterizer uses this - pool for all its needs by managing this memory directly in it. - The algorithms that are used for profile computation make it - possible to use the pool as a simple growing heap. This means - that this memory management is actually quite easy and faster - than any kind of malloc()/free() combination. - - Moreover, we'll see later that the rasterizer is able, when - dealing with profiles too large and numerous to lie all at once - in the render pool, to immediately decompose recursively the - rendering process into independent sub-tasks, each taking less - memory to be performed (see `sub-banding' below). - - The render pool doesn't need to be large. A 4KByte pool is - enough for nearly all renditions, though nearly 100% slower than - a more confortable 16KByte or 32KByte pool (that was tested with - complex glyphs at sizes over 500 pixels). - - - d. Computing Profiles Extents - - Remember that a profile is an array, associating a _scanline_ to - the x pixel coordinate of its intersection with a contour. - - Though it's not exactly how the FreeType rasterizer works, it is - convenient to think that we need a profile's height before - allocating it in the pool and computing its coordinates. - - The profile's height is the number of scanlines crossed by the - y-monotonic section of a contour. We thus need to compute these - sections from the vectorial description. In order to do that, - we are obliged to compute all (local and global) y extrema of - the glyph (minima and maxima). - - - P2 For instance, this triangle has only - two y-extrema, which are simply - |\ - | \ P2.y as a vertical maximum - | \ P3.y as a vertical minimum - | \ - | \ P1.y is not a vertical extremum (though - | \ it is a horizontal minimum, which we - P1 ---___ \ don't need). - ---_\ - P3 - - - Note that the extrema are expressed in pixel units, not in - scanlines. The triangle's height is certainly (P3.y-P2.y+1) - pixel units, but its profiles' heights are computed in - scanlines. The exact conversion is simple: - - - min scanline = FLOOR ( min y ) - - max scanline = CEILING( max y ) - - A problem arises with B�zier Arcs. While a segment is always - necessarily y-monotonic (i.e., flat, ascending, or descending), - which makes extrema computations easy, the ascent of an arc can - vary between its control points. - - - P2 - * - # on curve - * off curve - __-x--_ - _-- -_ - P1 _- - A non y-monotonic B�zier arc. - # \ - - The arc goes from P1 to P3. - \ - \ P3 - # - - - We first need to be able to easily detect non-monotonic arcs, - according to their control points. I will state here, without - proof, that the monotony condition can be expressed as: - - P1.y <= P2.y <= P3.y for an ever-ascending arc - - P1.y >= P2.y >= P3.y for an ever-descending arc - - with the special case of - - P1.y = P2.y = P3.y where the arc is said to be `flat'. - - As you can see, these conditions can be very easily tested. - They are, however, extremely important, as any arc that does not - satisfy them necessarily contains an extremum. - - Note also that a monotonic arc can contain an extremum too, - which is then one of its `on' points: - - - P1 P2 - #---__ * P1P2P3 is ever-descending, but P1 - -_ is an y-extremum. - - - ---_ \ - -> \ - \ P3 - # - - - Let's go back to our previous example: - - - P2 - * - # on curve - * off curve - __-x--_ - _-- -_ - P1 _- - A non-y-monotonic B�zier arc. - # \ - - Here we have - \ P2.y >= P1.y && - \ P3 P2.y >= P3.y (!) - # - - - We need to compute the vertical maximum of this arc to be able - to compute a profile's height (the point marked by an `x'). The - arc's equation indicates that a direct computation is possible, - but we rely on a different technique, which use will become - apparent soon. - - B�zier arcs have the special property of being very easily - decomposed into two sub-arcs, which are themselves B�zier arcs. - Moreover, it is easy to prove that there is at most one vertical - extremum on each B�zier arc (for second-degree curves; similar - conditions can be found for third-order arcs). - - For instance, the following arc P1P2P3 can be decomposed into - two sub-arcs Q1Q2Q3 and R1R2R3: - - - P2 - * - # on curve - * off curve - - - original B�zier arc P1P2P3. - __---__ - _-- --_ - _- -_ - - - - / \ - / \ - # # - P1 P3 - - - - P2 - * - - - - Q3 Decomposed into two subarcs - Q2 R2 Q1Q2Q3 and R1R2R3 - * __-#-__ * - _-- --_ - _- R1 -_ Q1 = P1 R3 = P3 - - - Q2 = (P1+P2)/2 R2 = (P2+P3)/2 - / \ - / \ Q3 = R1 = (Q2+R2)/2 - # # - Q1 R3 Note that Q2, R2, and Q3=R1 - are on a single line which is - tangent to the curve. - - - We have then decomposed a non-y-monotonic B�zier curve into two - smaller sub-arcs. Note that in the above drawing, both sub-arcs - are monotonic, and that the extremum is then Q3=R1. However, in - a more general case, only one sub-arc is guaranteed to be - monotonic. Getting back to our former example: - - - Q2 - * - - __-x--_ R1 - _-- #_ - Q1 _- Q3 - R2 - # \ * - - - \ - \ R3 - # - - - Here, we see that, though Q1Q2Q3 is still non-monotonic, R1R2R3 - is ever descending: We thus know that it doesn't contain the - extremum. We can then re-subdivide Q1Q2Q3 into two sub-arcs and - go on recursively, stopping when we encounter two monotonic - subarcs, or when the subarcs become simply too small. - - We will finally find the vertical extremum. Note that the - iterative process of finding an extremum is called `flattening'. - - - e. Computing Profiles Coordinates - - Once we have the height of each profile, we are able to allocate - it in the render pool. The next task is to compute coordinates - for each scanline. - - In the case of segments, the computation is straightforward, - using the Euclidian algorithm (also known as Bresenham). - However, for B�zier arcs, the job is a little more complicated. - - We assume that all B�ziers that are part of a profile are the - result of flattening the curve, which means that they are all - y-monotonic (ascending or descending, and never flat). We now - have to compute the intersections of arcs with the profile's - scanlines. One way is to use a similar scheme to flattening - called `stepping'. - - - Consider this arc, going from P1 to - --------------------- P3. Suppose that we need to - compute its intersections with the - drawn scanlines. As already - --------------------- mentioned this can be done - directly, but the involed algorithm - * P2 _---# P3 is far too slow. - ------------- _-- -- - _- - _/ Instead, it is still possible to - ---------/----------- use the decomposition property in - / the same recursive way, i.e., - | subdivide the arc into subarcs - ------|-------------- until these get too small to cross - | more than one scanline! - | - -----|--------------- This is very easily done using a - | rasterizer-managed stack of - | subarcs. - # P1 - - - f. Sweeping and Sorting the Spans - - Once all our profiles have been computed, we begin the sweep to - build (and fill) the spans. - - As both the TrueType and Type 1 specifications use the winding - fill rule (but with opposite directions), we place, on each - scanline, the present profiles in two separate lists. - - One list, called the `left' one, only contains ascending - profiles, while the other `right' list contains the descending - profiles. - - As each glyph is made of closed curves, a simple geometric - property ensures that the two lists contain the same number of - elements. - - Creating spans is thus straightforward: - - 1. We sort each list in increasing horizontal order. - - 2. We pair each value of the left list with its corresponding - value in the right list. - - - / / | | For example, we have here - / / | | four profiles. Two of - >/ / | | | them are ascending (1 & - 1// / ^ | | | 2 3), while the two others - // // 3| | | v are descending (2 & 4). - / //4 | | | On the given scanline, - a / /< | | the left list is (1,3), - - - - *-----* - - - - *---* - - y - and the right one is - / / b c| |d (4,2) (sorted). - - There are then two spans, joining - 1 to 4 (i.e. a-b) and 3 to 2 - (i.e. c-d)! - - - Sorting doesn't necessarily take much time, as in 99 cases out - of 100, the lists' order is kept from one scanline to the next. - We can thus implement it with two simple singly-linked lists, - sorted by a classic bubble-sort, which takes a minimum amount of - time when the lists are already sorted. - - A previous version of the rasterizer used more elaborate - structures, like arrays to perform `faster' sorting. It turned - out that this old scheme is not faster than the one described - above. - - Once the spans have been `created', we can simply draw them in - the target bitmap. - - ---- end of raster.txt --- - -Local Variables: -coding: latin-1 -End: diff --git a/nx-X11/extras/freetype2/docs/reference/.cvsignore b/nx-X11/extras/freetype2/docs/reference/.cvsignore deleted file mode 100644 index 2d19fc766..000000000 --- a/nx-X11/extras/freetype2/docs/reference/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.html diff --git a/nx-X11/extras/freetype2/docs/reference/README b/nx-X11/extras/freetype2/docs/reference/README deleted file mode 100644 index 7c3467b53..000000000 --- a/nx-X11/extras/freetype2/docs/reference/README +++ /dev/null @@ -1,2 +0,0 @@ -After saying `make refdoc' this directory contains the FreeType API -reference. You need python to make this target. diff --git a/nx-X11/extras/freetype2/docs/release b/nx-X11/extras/freetype2/docs/release deleted file mode 100644 index 7cf37b849..000000000 --- a/nx-X11/extras/freetype2/docs/release +++ /dev/null @@ -1,32 +0,0 @@ -How to prepare a new release ----------------------------- - -. include/freetype/freetype.h: Update FREETYPE_MAJOR, FREETYPE_MINOR, and - FREETYPE_PATCH. - -. builds/unix/configure.ac (version_info): Update according to the libtool - rules, then regenerate the configure script. - -. builds/freetype.mk (refdoc): Update the `--title' option. - -. docs/CHANGES: Document differences to last release. - -. README: Update. - -. docs/VERSION.DLL: Document changed `version_info'. - -. ChangeLog: Announce new release. - -. Call `make refdoc' to update HTML reference. Copy it to - freetype2/docs/reference in the `www' CVS module and update the CVS. - Then call `update-www' in ~/cvs/scripts on www.freetype.org to - update and distribute everything to sourceforge. - -. Tag the CVS (freetype, ft2demos, www/freetype2/docs). - -. Update `make-release' and `make-current' in ~/cvs/scripts/ on - www.freetype.org, then call them. - -. Create an md5 checksum file (with md5sum). - -. Announce new release on announce@freetype.org and to relevant newsgroups. diff --git a/nx-X11/extras/freetype2/include/freetype/cache/ftccache.h b/nx-X11/extras/freetype2/include/freetype/cache/ftccache.h deleted file mode 100644 index 7c7688dba..000000000 --- a/nx-X11/extras/freetype2/include/freetype/cache/ftccache.h +++ /dev/null @@ -1,272 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftccache.h */ -/* */ -/* FreeType internal cache interface (specification). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTCCACHE_H__ -#define __FTCCACHE_H__ - - -#include FT_CACHE_INTERNAL_MRU_H - -FT_BEGIN_HEADER - - /* handle to cache object */ - typedef struct FTC_CacheRec_* FTC_Cache; - - /* handle to cache class */ - typedef const struct FTC_CacheClassRec_* FTC_CacheClass; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE NODE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Each cache controls one or more cache nodes. Each node is part of */ - /* the global_lru list of the manager. Its `data' field however is used */ - /* as a reference count for now. */ - /* */ - /* A node can be anything, depending on the type of information held by */ - /* the cache. It can be an individual glyph image, a set of bitmaps */ - /* glyphs for a given size, some metrics, etc. */ - /* */ - /*************************************************************************/ - - /* structure size should be 20 bytes on 32-bits machines */ - typedef struct FTC_NodeRec_ - { - FTC_MruNodeRec mru; /* circular mru list pointer */ - FTC_Node link; /* used for hashing */ - FT_UInt32 hash; /* used for hashing too */ - FT_UShort cache_index; /* index of cache the node belongs to */ - FT_Short ref_count; /* reference count for this node */ - - } FTC_NodeRec; - - -#define FTC_NODE( x ) ( (FTC_Node)(x) ) -#define FTC_NODE_P( x ) ( (FTC_Node*)(x) ) - -#define FTC_NODE__NEXT(x) FTC_NODE( (x)->mru.next ) -#define FTC_NODE__PREV(x) FTC_NODE( (x)->mru.prev ) - - - /*************************************************************************/ - /* */ - /* These functions are exported so that they can be called from */ - /* user-provided cache classes; otherwise, they are really part of the */ - /* cache sub-system internals. */ - /* */ - - /* reserved for manager's use */ - FT_EXPORT( void ) - ftc_node_destroy( FTC_Node node, - FTC_Manager manager ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* initialize a new cache node */ - typedef FT_Error - (*FTC_Node_NewFunc)( FTC_Node *pnode, - FT_Pointer query, - FTC_Cache cache ); - - typedef FT_ULong - (*FTC_Node_WeightFunc)( FTC_Node node, - FTC_Cache cache ); - - /* compare a node to a given key pair */ - typedef FT_Bool - (*FTC_Node_CompareFunc)( FTC_Node node, - FT_Pointer key, - FTC_Cache cache ); - - - typedef void - (*FTC_Node_FreeFunc)( FTC_Node node, - FTC_Cache cache ); - - typedef FT_Error - (*FTC_Cache_InitFunc)( FTC_Cache cache ); - - typedef void - (*FTC_Cache_DoneFunc)( FTC_Cache cache ); - - - typedef struct FTC_CacheClassRec_ - { - FTC_Node_NewFunc node_new; - FTC_Node_WeightFunc node_weight; - FTC_Node_CompareFunc node_compare; - FTC_Node_CompareFunc node_remove_faceid; - FTC_Node_FreeFunc node_free; - - FT_UInt cache_size; - FTC_Cache_InitFunc cache_init; - FTC_Cache_DoneFunc cache_done; - - } FTC_CacheClassRec; - - - /* each cache really implements a dynamic hash table to manage its nodes */ - typedef struct FTC_CacheRec_ - { - FT_UFast p; - FT_UFast mask; - FT_Long slack; - FTC_Node* buckets; - - FTC_CacheClassRec clazz; /* local copy, for speed */ - - FTC_Manager manager; - FT_Memory memory; - FT_UInt index; /* in manager's table */ - - FTC_CacheClass org_class; /* original class pointer */ - - } FTC_CacheRec; - - -#define FTC_CACHE( x ) ( (FTC_Cache)(x) ) -#define FTC_CACHE_P( x ) ( (FTC_Cache*)(x) ) - - - /* default cache initialize */ - FT_EXPORT( FT_Error ) - FTC_Cache_Init( FTC_Cache cache ); - - /* default cache finalizer */ - FT_EXPORT( void ) - FTC_Cache_Done( FTC_Cache cache ); - - /* Call this function to lookup the cache. If no corresponding - * node is found, a new one is automatically created. This function - * is capable of flushing the cache adequately to make room for the - * new cache object. - */ - FT_EXPORT( FT_Error ) - FTC_Cache_Lookup( FTC_Cache cache, - FT_UInt32 hash, - FT_Pointer query, - FTC_Node *anode ); - - FT_EXPORT( FT_Error ) - FTC_Cache_NewNode( FTC_Cache cache, - FT_UInt32 hash, - FT_Pointer query, - FTC_Node *anode ); - - /* Remove all nodes that relate to a given face_id. This is useful - * when un-installing fonts. Note that if a cache node relates to - * the face_id, but is locked (i.e., has 'ref_count > 0'), the node - * will _not_ be destroyed, but its internal face_id reference will - * be modified. - * - * The final result will be that the node will never come back - * in further lookup requests, and will be flushed on demand from - * the cache normally when its reference count reaches 0. - */ - FT_EXPORT( void ) - FTC_Cache_RemoveFaceID( FTC_Cache cache, - FTC_FaceID face_id ); - - -#ifdef FTC_INLINE - -#define FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error ) \ - FT_BEGIN_STMNT \ - FTC_Node *_bucket, *_pnode, _node; \ - FTC_Cache _cache = FTC_CACHE(cache); \ - FT_UInt32 _hash = (FT_UInt32)(hash); \ - FTC_Node_CompareFunc _nodcomp = (FTC_Node_CompareFunc)(nodecmp); \ - FT_UInt _idx; \ - \ - \ - error = 0; \ - node = NULL; \ - _idx = _hash & _cache->mask; \ - if ( _idx < _cache->p ) \ - _idx = _hash & ( _cache->mask*2 + 1 ); \ - \ - _bucket = _pnode = _cache->buckets + _idx; \ - for (;;) \ - { \ - _node = *_pnode; \ - if ( _node == NULL ) \ - goto _NewNode; \ - \ - if ( _node->hash == _hash && _nodcomp( _node, query, _cache ) ) \ - break; \ - \ - _pnode = &_node->link; \ - } \ - \ - if ( _node != *_bucket ) \ - { \ - *_pnode = _node->link; \ - _node->link = *_bucket; \ - *_bucket = _node; \ - } \ - \ - { \ - FTC_Manager _manager = _cache->manager; \ - \ - \ - if ( _node != _manager->nodes_list ) \ - FTC_MruNode_Up( (FTC_MruNode*)&_manager->nodes_list, \ - (FTC_MruNode)_node ); \ - } \ - goto _Ok; \ - \ - _NewNode: \ - error = FTC_Cache_NewNode( _cache, _hash, query, &_node ); \ - \ - _Ok: \ - *(FTC_Node*)&(node) = _node; \ - FT_END_STMNT - -#else /* !FTC_INLINE */ - -#define FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error ) \ - FT_BEGIN_STMNT \ - error = FTC_Cache_Lookup( FTC_CACHE( cache ), hash, query, \ - (FTC_Node*)&(node) ); \ - FT_END_STMNT - -#endif /* !FTC_INLINE */ - - /* */ - -FT_END_HEADER - - -#endif /* __FTCCACHE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/cache/ftccmap.h b/nx-X11/extras/freetype2/include/freetype/cache/ftccmap.h deleted file mode 100644 index a41989b28..000000000 --- a/nx-X11/extras/freetype2/include/freetype/cache/ftccmap.h +++ /dev/null @@ -1,216 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftccmap.h */ -/* */ -/* FreeType charmap cache (specification). */ -/* */ -/* Copyright 2000-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTCCMAP_H__ -#define __FTCCMAP_H__ - -#include <ft2build.h> -#include FT_CACHE_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* @type: */ - /* FTC_CMapCache */ - /* */ - /* @description: */ - /* An opaque handle used to manager a charmap cache. This cache is */ - /* to hold character codes -> glyph indices mappings. */ - /* */ - typedef struct FTC_CMapCacheRec_* FTC_CMapCache; - - - /*************************************************************************/ - /* */ - /* @type: */ - /* FTC_CMapDesc */ - /* */ - /* @description: */ - /* A handle to an @FTC_CMapDescRec structure used to describe a given */ - /* charmap in a charmap cache. */ - /* */ - /* Each @FTC_CMapDesc describes which charmap (of which @FTC_FaceID) */ - /* we want to use in @FTC_CMapCache_Lookup. */ - /* */ - typedef struct FTC_CMapDescRec_* FTC_CMapDesc; - - - /*************************************************************************/ - /* */ - /* @enum: */ - /* FTC_CMapType */ - /* */ - /* @description: */ - /* The list of valid @FTC_CMapDesc types. They indicate how we want */ - /* to address a charmap within an @FTC_FaceID. */ - /* */ - /* @values: */ - /* FTC_CMAP_BY_INDEX :: */ - /* Address a charmap by its index in the corresponding @FT_Face. */ - /* */ - /* FTC_CMAP_BY_ENCODING :: */ - /* Use a @FT_Face charmap that corresponds to a given encoding. */ - /* */ - /* FTC_CMAP_BY_ID :: */ - /* Use an @FT_Face charmap that corresponds to a given */ - /* (platform,encoding) ID. See @FTC_CMapIdRec. */ - /* */ - typedef enum FTC_CMapType_ - { - FTC_CMAP_BY_INDEX = 0, - FTC_CMAP_BY_ENCODING = 1, - FTC_CMAP_BY_ID = 2 - - } FTC_CMapType; - - - /*************************************************************************/ - /* */ - /* @struct: */ - /* FTC_CMapIdRec */ - /* */ - /* @description: */ - /* A short structure to identify a charmap by a (platform,encoding) */ - /* pair of values. */ - /* */ - /* @fields: */ - /* platform :: The platform ID. */ - /* */ - /* encoding :: The encoding ID. */ - /* */ - typedef struct FTC_CMapIdRec_ - { - FT_UInt platform; - FT_UInt encoding; - - } FTC_CMapIdRec; - - - /*************************************************************************/ - /* */ - /* @struct: */ - /* FTC_CMapDescRec */ - /* */ - /* @description: */ - /* A structure to describe a given charmap to @FTC_CMapCache. */ - /* */ - /* @fields: */ - /* face_id :: @FTC_FaceID of the face this charmap belongs to. */ - /* */ - /* type :: The type of charmap, see @FTC_CMapType. */ - /* */ - /* u.index :: For @FTC_CMAP_BY_INDEX types, this is the charmap */ - /* index (within a @FT_Face) we want to use. */ - /* */ - /* u.encoding :: For @FTC_CMAP_BY_ENCODING types, this is the charmap */ - /* encoding we want to use. see @FT_Encoding. */ - /* */ - /* u.id :: For @FTC_CMAP_BY_ID types, this is the */ - /* (platform,encoding) pair we want to use. see */ - /* @FTC_CMapIdRec and @FT_CharMapRec. */ - /* */ - typedef struct FTC_CMapDescRec_ - { - FTC_FaceID face_id; - FTC_CMapType type; - - union - { - FT_UInt index; - FT_Encoding encoding; - FTC_CMapIdRec id; - - } u; - - } FTC_CMapDescRec; - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FTC_CMapCache_New */ - /* */ - /* @description: */ - /* Creates a new charmap cache. */ - /* */ - /* @input: */ - /* manager :: A handle to the cache manager. */ - /* */ - /* @output: */ - /* acache :: A new cache handle. NULL in case of error. */ - /* */ - /* @return: */ - /* FreeType error code. 0 means success. */ - /* */ - /* @note: */ - /* Like all other caches, this one will be destroyed with the cache */ - /* manager. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_CMapCache_New( FTC_Manager manager, - FTC_CMapCache *acache ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FTC_CMapCache_Lookup */ - /* */ - /* @description: */ - /* Translates a character code into a glyph index, using the charmap */ - /* cache. */ - /* */ - /* @input: */ - /* cache :: A charmap cache handle. */ - /* */ - /* cmap_desc :: A charmap descriptor handle. */ - /* */ - /* char_code :: The character code (in the corresponding charmap). */ - /* */ - /* @return: */ - /* Glyph index. 0 means "no glyph". */ - /* */ - /* @note: */ - /* This function doesn't return @FTC_Node handles, since there is no */ - /* real use for them with typical uses of charmaps. */ - /* */ - FT_EXPORT( FT_UInt ) - FTC_CMapCache_Lookup( FTC_CMapCache cache, - FTC_CMapDesc cmap_desc, - FT_UInt32 char_code ); - - /* */ - - -FT_END_HEADER - - -#endif /* __FTCCMAP_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/cache/ftcglyph.h b/nx-X11/extras/freetype2/include/freetype/cache/ftcglyph.h deleted file mode 100644 index be237f934..000000000 --- a/nx-X11/extras/freetype2/include/freetype/cache/ftcglyph.h +++ /dev/null @@ -1,295 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcglyph.h */ -/* */ -/* FreeType abstract glyph cache (specification). */ -/* */ -/* Copyright 2000-2001, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /* - * - * FTC_GCache is an _abstract_ cache object optimized to store glyph - * data. It works as follows: - * - * - It manages FTC_GNode objects. Each one of them can hold one or more - * glyph `items'. Item types are not specified in the FTC_GCache but - * in classes that extend it. - * - * - Glyph attributes, like face ID, character size, render mode, etc., - * can be grouped into abstract `glyph families'. This avoids storing - * the attributes within the FTC_GCache, since it is likely that many - * FTC_GNodes will belong to the same family in typical uses. - * - * - Each FTC_GNode is thus an FTC_Node with two additional fields: - * - * * gindex: A glyph index, or the first index in a glyph range. - * * family: A pointer to a glyph `family'. - * - * - Family types are not fully specific in the FTC_Family type, but - * by classes that extend it. - * - * Note that both FTC_ImageCache and FTC_SBitCache extend FTC_GCache. - * They share an FTC_Family sub-class called FTC_BasicFamily which is - * used to store the following data: face ID, pixel/point sizes, load - * flags. For more details see the file `src/cache/ftcbasic.c'. - * - * Client applications can extend FTC_GNode with their own FTC_GNode - * and FTC_Family sub-classes to implement more complex caches (e.g., - * handling automatic synthesis, like obliquing & emboldening, colored - * glyphs, etc.). - * - * See also the FTC_ICache & FTC_SCache classes in `ftcimage.h' and - * `ftcsbits.h', which both extend FTC_GCache with additional - * optimizations. - * - * A typical FTC_GCache implementation must provide at least the - * following: - * - * - FTC_GNode sub-class, e.g. MyNode, with relevant methods: - * my_node_new (must call FTC_GNode_Init) - * my_node_free (must call FTC_GNode_Done) - * my_node_compare (must call FTC_GNode_Compare) - * my_node_remove_faceid (must call ftc_gnode_unselect in case - * of match) - * - * - FTC_Family sub-class, e.g. MyFamily, with relevant methods: - * my_family_compare - * my_family_init - * my_family_reset (optional) - * my_family_done - * - * - FTC_GQuery sub-class, e.g. MyQuery, to hold cache-specific query - * data. - * - * - Constant structures for a FTC_GNodeClass. - * - * - MyCacheNew() can be implemented easily as a call to the convenience - * function FTC_GCache_New. - * - * - MyCacheLookup with a call to FTC_GCache_Lookup. This function will - * automatically: - * - * - Search for the corresponding family in the cache, or create - * a new one if necessary. Put it in FTC_GQUERY(myquery).family - * - * - Call FTC_Cache_Lookup. - * - * If it returns NULL, you should create a new node, then call - * ftc_cache_add as usual. - */ - - - /*************************************************************************/ - /* */ - /* Important: The functions defined in this file are only used to */ - /* implement an abstract glyph cache class. You need to */ - /* provide additional logic to implement a complete cache. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********* *********/ - /********* WARNING, THIS IS BETA CODE. *********/ - /********* *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#ifndef __FTCGLYPH_H__ -#define __FTCGLYPH_H__ - - -#include <ft2build.h> -#include FT_CACHE_INTERNAL_MANAGER_H - - -FT_BEGIN_HEADER - - - /* - * We can group glyphs into `families'. Each family correspond to a - * given face ID, character size, transform, etc. - * - * Families are implemented as MRU list nodes. They are - * reference-counted. - */ - - typedef struct FTC_FamilyRec_ - { - FTC_MruNodeRec mrunode; - FT_UInt num_nodes; /* current number of nodes in this family */ - FTC_Cache cache; - FTC_MruListClass clazz; - - } FTC_FamilyRec, *FTC_Family; - -#define FTC_FAMILY(x) ( (FTC_Family)(x) ) -#define FTC_FAMILY_P(x) ( (FTC_Family*)(x) ) - - - typedef struct FTC_GNodeRec_ - { - FTC_NodeRec node; - FTC_Family family; - FT_UInt gindex; - - } FTC_GNodeRec, *FTC_GNode; - -#define FTC_GNODE( x ) ( (FTC_GNode)(x) ) -#define FTC_GNODE_P( x ) ( (FTC_GNode*)(x) ) - - - typedef struct FTC_GQueryRec_ - { - FT_UInt gindex; - FTC_Family family; - - } FTC_GQueryRec, *FTC_GQuery; - -#define FTC_GQUERY( x ) ( (FTC_GQuery)(x) ) - - - /*************************************************************************/ - /* */ - /* These functions are exported so that they can be called from */ - /* user-provided cache classes; otherwise, they are really part of the */ - /* cache sub-system internals. */ - /* */ - - /* must be called by derived FTC_Node_InitFunc routines */ - FT_EXPORT( void ) - FTC_GNode_Init( FTC_GNode node, - FT_UInt gindex, /* glyph index for node */ - FTC_Family family ); - - /* returns TRUE iff the query's glyph index correspond to the node; */ - /* this assumes that the "family" and "hash" fields of the query are */ - /* already correctly set */ - FT_EXPORT( FT_Bool ) - FTC_GNode_Compare( FTC_GNode gnode, - FTC_GQuery gquery ); - - /* call this function to clear a node's family -- this is necessary */ - /* to implement the `node_remove_faceid' cache method correctly */ - FT_EXPORT( void ) - FTC_GNode_UnselectFamily( FTC_GNode gnode, - FTC_Cache cache ); - - /* must be called by derived FTC_Node_DoneFunc routines */ - FT_EXPORT( void ) - FTC_GNode_Done( FTC_GNode node, - FTC_Cache cache ); - - - FT_EXPORT( void ) - FTC_Family_Init( FTC_Family family, - FTC_Cache cache ); - - typedef struct FTC_GCacheRec_ - { - FTC_CacheRec cache; - FTC_MruListRec families; - - } FTC_GCacheRec, *FTC_GCache; - -#define FTC_GCACHE( x ) ((FTC_GCache)(x)) - - - /* can be used as @FTC_Cache_InitFunc */ - FT_EXPORT( FT_Error ) - FTC_GCache_Init( FTC_GCache cache ); - - - /* can be used as @FTC_Cache_DoneFunc */ - FT_EXPORT( void ) - FTC_GCache_Done( FTC_GCache cache ); - - - /* the glyph cache class adds fields for the family implementation */ - typedef struct FTC_GCacheClassRec_ - { - FTC_CacheClassRec clazz; - FTC_MruListClass family_class; - - } FTC_GCacheClassRec; - - typedef const FTC_GCacheClassRec* FTC_GCacheClass; - -#define FTC_GCACHE_CLASS( x ) ((FTC_GCacheClass)(x)) - -#define FTC_CACHE__GCACHE_CLASS( x ) \ - FTC_GCACHE_CLASS( FTC_CACHE(x)->org_class ) -#define FTC_CACHE__FAMILY_CLASS( x ) \ - ((FTC_MruListClass) FTC_CACHE__GCACHE_CLASS(x)->family_class) - - - /* convenience function; use it instead of FTC_Manager_Register_Cache */ - FT_EXPORT( FT_Error ) - FTC_GCache_New( FTC_Manager manager, - FTC_GCacheClass clazz, - FTC_GCache *acache ); - - FT_EXPORT( FT_Error ) - FTC_GCache_Lookup( FTC_GCache cache, - FT_UInt32 hash, - FT_UInt gindex, - FTC_GQuery query, - FTC_Node *anode ); - - -#ifdef FTC_INLINE - -#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, \ - gindex, query, node, error ) \ - FT_BEGIN_STMNT \ - FTC_GCache _gcache = FTC_GCACHE( cache ); \ - FTC_GQuery _gquery = (FTC_GQuery)( query ); \ - FTC_MruNode_CompareFunc _fcompare = (FTC_MruNode_CompareFunc)(famcmp); \ - \ - \ - _gquery->gindex = (gindex); \ - \ - FTC_MRULIST_LOOKUP_CMP( &_gcache->families, _gquery, _fcompare, \ - _gquery->family, error ); \ - if ( !error ) \ - FTC_CACHE_LOOKUP_CMP( cache, nodecmp, hash, query, node, error ); \ - FT_END_STMNT - /* */ - -#else /* !FTC_INLINE */ - -#define FTC_GCACHE_LOOKUP_CMP( cache, famcmp, nodecmp, hash, \ - gindex, query, node, error ) \ - FT_BEGIN_STMNT \ - error = FTC_GCache_Lookup( FTC_GCACHE( cache ), hash, gindex, \ - FTC_GQUERY( query ), (FTC_Node*)&(node) ); \ - FT_END_STMNT - -#endif /* !FTC_INLINE */ - - -FT_END_HEADER - - -#endif /* __FTCGLYPH_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/cache/ftcimage.h b/nx-X11/extras/freetype2/include/freetype/cache/ftcimage.h deleted file mode 100644 index 1bf12db13..000000000 --- a/nx-X11/extras/freetype2/include/freetype/cache/ftcimage.h +++ /dev/null @@ -1,104 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcimage.h */ -/* */ -/* FreeType Generic Image cache (specification) */ -/* */ -/* Copyright 2000-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /* - * FTC_ICache is an _abstract_ cache used to store a single FT_Glyph - * image per cache node. - * - * FTC_ICache extends FTC_GCache. For an implementation example, - * see FTC_ImageCache in `src/cache/ftbasic.c'. - */ - - - /*************************************************************************/ - /* */ - /* Each image cache really manages FT_Glyph objects. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCIMAGE_H__ -#define __FTCIMAGE_H__ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_GLYPH_H - -FT_BEGIN_HEADER - - - /* the FT_Glyph image node type - we store only 1 glyph per node */ - typedef struct FTC_INodeRec_ - { - FTC_GNodeRec gnode; - FT_Glyph glyph; - - } FTC_INodeRec, *FTC_INode; - -#define FTC_INODE( x ) ( (FTC_INode)( x ) ) -#define FTC_INODE_GINDEX( x ) FTC_GNODE(x)->gindex -#define FTC_INODE_FAMILY( x ) FTC_GNODE(x)->family - - typedef FT_Error - (*FTC_IFamily_LoadGlyphFunc)( FTC_Family family, - FT_UInt gindex, - FTC_Cache cache, - FT_Glyph *aglyph ); - - typedef struct FTC_IFamilyClassRec_ - { - FTC_MruListClassRec clazz; - FTC_IFamily_LoadGlyphFunc family_load_glyph; - - } FTC_IFamilyClassRec; - - typedef const FTC_IFamilyClassRec* FTC_IFamilyClass; - -#define FTC_IFAMILY_CLASS( x ) ((FTC_IFamilyClass)(x)) - -#define FTC_CACHE__IFAMILY_CLASS( x ) \ - FTC_IFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS(x)->family_class ) - - - /* can be used as a @FTC_Node_FreeFunc */ - FT_EXPORT( void ) - FTC_INode_Free( FTC_INode inode, - FTC_Cache cache ); - - /* Can be used as @FTC_Node_NewFunc. `gquery.index' and `gquery.family' - * must be set correctly. This function will call the `family_load_glyph' - * method to load the FT_Glyph into the cache node. - */ - FT_EXPORT( FT_Error ) - FTC_INode_New( FTC_INode *pinode, - FTC_GQuery gquery, - FTC_Cache cache ); - - /* can be used as @FTC_Node_WeightFunc */ - FT_EXPORT( FT_ULong ) - FTC_INode_Weight( FTC_INode inode ); - - /* */ - -FT_END_HEADER - -#endif /* __FTCIMAGE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/cache/ftcmanag.h b/nx-X11/extras/freetype2/include/freetype/cache/ftcmanag.h deleted file mode 100644 index 526584822..000000000 --- a/nx-X11/extras/freetype2/include/freetype/cache/ftcmanag.h +++ /dev/null @@ -1,175 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcmanag.h */ -/* */ -/* FreeType Cache Manager (specification). */ -/* */ -/* Copyright 2000-2001, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* A cache manager is in charge of the following: */ - /* */ - /* - Maintain a mapping between generic FTC_FaceIDs and live FT_Face */ - /* objects. The mapping itself is performed through a user-provided */ - /* callback. However, the manager maintains a small cache of FT_Face */ - /* and FT_Size objects in order to speed up things considerably. */ - /* */ - /* - Manage one or more cache objects. Each cache is in charge of */ - /* holding a varying number of `cache nodes'. Each cache node */ - /* represents a minimal amount of individually accessible cached */ - /* data. For example, a cache node can be an FT_Glyph image */ - /* containing a vector outline, or some glyph metrics, or anything */ - /* else. */ - /* */ - /* Each cache node has a certain size in bytes that is added to the */ - /* total amount of `cache memory' within the manager. */ - /* */ - /* All cache nodes are located in a global LRU list, where the oldest */ - /* node is at the tail of the list. */ - /* */ - /* Each node belongs to a single cache, and includes a reference */ - /* count to avoid destroying it (due to caching). */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********* *********/ - /********* WARNING, THIS IS BETA CODE. *********/ - /********* *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#ifndef __FTCMANAG_H__ -#define __FTCMANAG_H__ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_MRU_H -#include FT_CACHE_INTERNAL_CACHE_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - -#define FTC_MAX_FACES_DEFAULT 2 -#define FTC_MAX_SIZES_DEFAULT 4 -#define FTC_MAX_BYTES_DEFAULT 200000L /* ~200kByte by default */ - - /* maximum number of caches registered in a single manager */ -#define FTC_MAX_CACHES 16 - - - typedef struct FTC_ManagerRec_ - { - FT_Library library; - FT_Memory memory; - - FTC_Node nodes_list; - FT_ULong max_weight; - FT_ULong cur_weight; - FT_UInt num_nodes; - - FTC_Cache caches[FTC_MAX_CACHES]; - FT_UInt num_caches; - - FTC_MruListRec faces; - FTC_MruListRec sizes; - - FT_Pointer request_data; - FTC_Face_Requester request_face; - - } FTC_ManagerRec; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Compress */ - /* */ - /* <Description> */ - /* This function is used to check the state of the cache manager if */ - /* its `num_bytes' field is greater than its `max_bytes' field. It */ - /* will flush as many old cache nodes as possible (ignoring cache */ - /* nodes with a non-zero reference count). */ - /* */ - /* <InOut> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* <Note> */ - /* Client applications should not call this function directly. It is */ - /* normally invoked by specific cache implementations. */ - /* */ - /* The reason this function is exported is to allow client-specific */ - /* cache classes. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Compress( FTC_Manager manager ); - - - /* try to flush `count' old nodes from the cache; return the number - * of really flushed nodes - */ - FT_EXPORT( FT_UInt ) - FTC_Manager_FlushN( FTC_Manager manager, - FT_UInt count ); - - - /* this must be used internally for the moment */ - FT_EXPORT( FT_Error ) - FTC_Manager_RegisterCache( FTC_Manager manager, - FTC_CacheClass clazz, - FTC_Cache *acache ); - - /* */ - -#define FTC_SCALER_COMPARE( a, b ) \ - ( (a)->face_id == (b)->face_id && \ - (a)->width == (b)->width && \ - (a)->height == (b)->height && \ - ((a)->pixel != 0) == ((b)->pixel != 0) && \ - ( (a)->pixel || \ - ( (a)->x_res == (b)->x_res && \ - (a)->y_res == (b)->y_res ) ) ) - -#define FTC_SCALER_HASH( q ) \ - ( FTC_FACE_ID_HASH( (q)->face_id ) + \ - (q)->width + (q)->height*7 + \ - ( (q)->pixel ? 0 : ( (q)->x_res*33 ^ (q)->y_res*61 ) ) ) - - /* */ - -FT_END_HEADER - -#endif /* __FTCMANAG_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/cache/ftcmru.h b/nx-X11/extras/freetype2/include/freetype/cache/ftcmru.h deleted file mode 100644 index d70c5cce7..000000000 --- a/nx-X11/extras/freetype2/include/freetype/cache/ftcmru.h +++ /dev/null @@ -1,246 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcmru.h */ -/* */ -/* Simple MRU list-cache (specification). */ -/* */ -/* Copyright 2000-2001, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* An MRU is a list that cannot hold more than a certain number of */ - /* elements (`max_elements'). All elements in the list are sorted in */ - /* least-recently-used order, i.e., the `oldest' element is at the tail */ - /* of the list. */ - /* */ - /* When doing a lookup (either through `Lookup()' or `Lookup_Node()'), */ - /* the list is searched for an element with the corresponding key. If */ - /* it is found, the element is moved to the head of the list and is */ - /* returned. */ - /* */ - /* If no corresponding element is found, the lookup routine will try to */ - /* obtain a new element with the relevant key. If the list is already */ - /* full, the oldest element from the list is discarded and replaced by a */ - /* new one; a new element is added to the list otherwise. */ - /* */ - /* Note that it is possible to pre-allocate the element list nodes. */ - /* This is handy if `max_elements' is sufficiently small, as it saves */ - /* allocations/releases during the lookup process. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCMRU_H__ -#define __FTCMRU_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - -#define xxFT_DEBUG_ERROR -#define FTC_INLINE - -FT_BEGIN_HEADER - - typedef struct FTC_MruNodeRec_* FTC_MruNode; - - typedef struct FTC_MruNodeRec_ - { - FTC_MruNode next; - FTC_MruNode prev; - - } FTC_MruNodeRec; - - - FT_EXPORT( void ) - FTC_MruNode_Prepend( FTC_MruNode *plist, - FTC_MruNode node ); - - FT_EXPORT( void ) - FTC_MruNode_Up( FTC_MruNode *plist, - FTC_MruNode node ); - - FT_EXPORT( void ) - FTC_MruNode_Remove( FTC_MruNode *plist, - FTC_MruNode node ); - - - typedef struct FTC_MruListRec_* FTC_MruList; - - typedef struct FTC_MruListClassRec_ const * FTC_MruListClass; - - - typedef FT_Bool - (*FTC_MruNode_CompareFunc)( FTC_MruNode node, - FT_Pointer key ); - - typedef FT_Error - (*FTC_MruNode_InitFunc)( FTC_MruNode node, - FT_Pointer key, - FT_Pointer data ); - - typedef FT_Error - (*FTC_MruNode_ResetFunc)( FTC_MruNode node, - FT_Pointer key, - FT_Pointer data ); - - typedef void - (*FTC_MruNode_DoneFunc)( FTC_MruNode node, - FT_Pointer data ); - - - typedef struct FTC_MruListClassRec_ - { - FT_UInt node_size; - FTC_MruNode_CompareFunc node_compare; - FTC_MruNode_InitFunc node_init; - FTC_MruNode_ResetFunc node_reset; - FTC_MruNode_DoneFunc node_done; - - } FTC_MruListClassRec; - - typedef struct FTC_MruListRec_ - { - FT_UInt num_nodes; - FT_UInt max_nodes; - FTC_MruNode nodes; - FT_Pointer data; - FTC_MruListClassRec clazz; - FT_Memory memory; - - } FTC_MruListRec; - - - FT_EXPORT( void ) - FTC_MruList_Init( FTC_MruList list, - FTC_MruListClass clazz, - FT_UInt max_nodes, - FT_Pointer data, - FT_Memory memory ); - - FT_EXPORT( void ) - FTC_MruList_Reset( FTC_MruList list ); - - - FT_EXPORT( void ) - FTC_MruList_Done( FTC_MruList list ); - - FT_EXPORT( FTC_MruNode ) - FTC_MruList_Find( FTC_MruList list, - FT_Pointer key ); - - FT_EXPORT( FT_Error ) - FTC_MruList_New( FTC_MruList list, - FT_Pointer key, - FTC_MruNode *anode ); - - FT_EXPORT( FT_Error ) - FTC_MruList_Lookup( FTC_MruList list, - FT_Pointer key, - FTC_MruNode *pnode ); - - - FT_EXPORT( void ) - FTC_MruList_Remove( FTC_MruList list, - FTC_MruNode node ); - - FT_EXPORT( void ) - FTC_MruList_RemoveSelection( FTC_MruList list, - FTC_MruNode_CompareFunc selection, - FT_Pointer key ); - - -#ifdef FTC_INLINE - -#define FTC_MRULIST_LOOKUP_CMP( list, key, compare, node, error ) \ - FT_BEGIN_STMNT \ - FTC_MruNode* _pfirst = &(list)->nodes; \ - FTC_MruNode_CompareFunc _compare = (FTC_MruNode_CompareFunc)(compare); \ - FTC_MruNode _first, _node; \ - \ - \ - error = 0; \ - _first = *(_pfirst); \ - _node = NULL; \ - \ - if ( _first ) \ - { \ - _node = _first; \ - do \ - { \ - if ( _compare( _node, (key) ) ) \ - { \ - if ( _node != _first ) \ - FTC_MruNode_Up( _pfirst, _node ); \ - \ - *(FTC_MruNode*)&(node) = _node; \ - goto _MruOk; \ - } \ - _node = _node->next; \ - \ - } while ( _node != _first) ; \ - } \ - \ - error = FTC_MruList_New( (list), (key), (FTC_MruNode*)&(node) ); \ - _MruOk: \ - ; \ - FT_END_STMNT - -#define FTC_MRULIST_LOOKUP( list, key, node, error ) \ - FTC_MRULIST_LOOKUP_CMP( list, key, (list)->clazz.node_compare, node, error ) - -#else /* !FTC_INLINE */ - -#define FTC_MRULIST_LOOKUP( list, key, node, error ) \ - error = FTC_MruList_Lookup( (list), (key), (FTC_MruNode*)&(node) ) - -#endif /* !FTC_INLINE */ - - -#define FTC_MRULIST_LOOP( list, node ) \ - FT_BEGIN_STMNT \ - FTC_MruNode _first = (list)->nodes; \ - \ - \ - if ( _first ) \ - { \ - FTC_MruNode _node = _first; \ - \ - \ - do \ - { \ - *(FTC_MruNode*)&(node) = _node; - - -#define FTC_MRULIST_LOOP_END() \ - _node = _node->next; \ - \ - } while ( _node != _first ); \ - } \ - FT_END_STMNT - - /* */ - -FT_END_HEADER - - -#endif /* __FTCMRU_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/cache/ftcsbits.h b/nx-X11/extras/freetype2/include/freetype/cache/ftcsbits.h deleted file mode 100644 index b2ef0f181..000000000 --- a/nx-X11/extras/freetype2/include/freetype/cache/ftcsbits.h +++ /dev/null @@ -1,96 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcsbits.h */ -/* */ -/* A small-bitmap cache (specification). */ -/* */ -/* Copyright 2000-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTCSBITS_H__ -#define __FTCSBITS_H__ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_GLYPH_H - - -FT_BEGIN_HEADER - -#define FTC_SBIT_ITEMS_PER_NODE 16 - - typedef struct FTC_SNodeRec_ - { - FTC_GNodeRec gnode; - FT_UInt count; - FTC_SBitRec sbits[FTC_SBIT_ITEMS_PER_NODE]; - - } FTC_SNodeRec, *FTC_SNode; - - -#define FTC_SNODE( x ) ( (FTC_SNode)( x ) ) -#define FTC_SNODE_GINDEX( x ) FTC_GNODE( x )->gindex -#define FTC_SNODE_FAMILY( x ) FTC_GNODE( x )->family - - typedef FT_UInt - (*FTC_SFamily_GetCountFunc)( FTC_Family family, - FTC_Manager manager ); - - typedef FT_Error - (*FTC_SFamily_LoadGlyphFunc)( FTC_Family family, - FT_UInt gindex, - FTC_Manager manager, - FT_Face *aface ); - - typedef struct FTC_SFamilyClassRec_ - { - FTC_MruListClassRec clazz; - FTC_SFamily_GetCountFunc family_get_count; - FTC_SFamily_LoadGlyphFunc family_load_glyph; - - } FTC_SFamilyClassRec; - - typedef const FTC_SFamilyClassRec* FTC_SFamilyClass; - -#define FTC_SFAMILY_CLASS( x ) ((FTC_SFamilyClass)(x)) - -#define FTC_CACHE__SFAMILY_CLASS( x ) \ - FTC_SFAMILY_CLASS( FTC_CACHE__GCACHE_CLASS( x )->family_class ) - - - FT_EXPORT( void ) - FTC_SNode_Free( FTC_SNode snode, - FTC_Cache cache ); - - FT_EXPORT( FT_Error ) - FTC_SNode_New( FTC_SNode *psnode, - FTC_GQuery gquery, - FTC_Cache cache ); - - FT_EXPORT( FT_ULong ) - FTC_SNode_Weight( FTC_SNode inode ); - - - FT_EXPORT( FT_Bool ) - FTC_SNode_Compare( FTC_SNode snode, - FTC_GQuery gquery, - FTC_Cache cache ); - - /* */ - -FT_END_HEADER - -#endif /* __FTCSBITS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/config/ftconfig.h b/nx-X11/extras/freetype2/include/freetype/config/ftconfig.h deleted file mode 100644 index 4bd8cf617..000000000 --- a/nx-X11/extras/freetype2/include/freetype/config/ftconfig.h +++ /dev/null @@ -1,353 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftconfig.h */ -/* */ -/* ANSI-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This header file contains a number of macro definitions that are used */ - /* by the rest of the engine. Most of the macros here are automatically */ - /* determined at compile time, and you should not need to change it to */ - /* port FreeType, except to compile the library with a non-ANSI */ - /* compiler. */ - /* */ - /* Note however that if some specific modifications are needed, we */ - /* advise you to place a modified copy in your build directory. */ - /* */ - /* The build directory is usually `freetype/builds/<system>', and */ - /* contains system-specific files that are always included first when */ - /* building the library. */ - /* */ - /* This ANSI version should stay in `include/freetype/config'. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ - -#include <ft2build.h> -#include FT_CONFIG_OPTIONS_H -#include FT_CONFIG_STANDARD_LIBRARY_H - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ - /* */ - /* These macros can be toggled to suit a specific system. The current */ - /* ones are defaults used to compile FreeType in an ANSI C environment */ - /* (16bit compilers are also supported). Copy this file to your own */ - /* `freetype/builds/<system>' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ - - - /* There are systems (like the Texas Instruments 'C54x) where a `char' */ - /* has 16 bits. ANSI C says that sizeof(char) is always 1. Since an */ - /* `int' has 16 bits also for this system, sizeof(int) gives 1 which */ - /* is probably unexpected. */ - /* */ - /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a */ - /* `char' type. */ - -#ifndef FT_CHAR_BIT -#define FT_CHAR_BIT CHAR_BIT -#endif - - - /* The size of an `int' type. */ -#if FT_UINT_MAX == 0xFFFFFFFFUL -#define FT_SIZEOF_INT (32 / FT_CHAR_BIT) -#elif FT_UINT_MAX == 0xFFFFU -#define FT_SIZEOF_INT (16 / FT_CHAR_BIT) -#elif FT_UINT_MAX > 0xFFFFFFFFU && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFU -#define FT_SIZEOF_INT (64 / FT_CHAR_BIT) -#else -#error "Unsupported size of `int' type!" -#endif - - /* The size of a `long' type. */ -#if FT_ULONG_MAX == 0xFFFFFFFFUL -#define FT_SIZEOF_LONG (32 / FT_CHAR_BIT) -#elif FT_ULONG_MAX > 0xFFFFFFFFU && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFU -#define FT_SIZEOF_LONG (64 / FT_CHAR_BIT) -#else -#error "Unsupported size of `long' type!" -#endif - - - /* Preferred alignment of data */ -#define FT_ALIGNMENT 8 - - - /* FT_UNUSED is a macro used to indicate that a given parameter is not */ - /* used -- this is only used to get rid of unpleasant compiler warnings */ -#ifndef FT_UNUSED -#define FT_UNUSED( arg ) ( (arg) = (arg) ) -#endif - - - /*************************************************************************/ - /* */ - /* AUTOMATIC CONFIGURATION MACROS */ - /* */ - /* These macros are computed from the ones defined above. Don't touch */ - /* their definition, unless you know precisely what you are doing. No */ - /* porter should need to mess with them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Mac support */ - /* */ - /* This is the only necessary change, so it is defined here instead */ - /* providing a new configuration file. */ - /* */ -#if ( defined( __APPLE__ ) && !defined( DARWIN_NO_CARBON ) ) || \ - ( defined( __MWERKS__ ) && defined( macintosh ) ) -#define FT_MACINTOSH 1 -#endif - - - /*************************************************************************/ - /* */ - /* IntN types */ - /* */ - /* Used to guarantee the size of some specific integers. */ - /* */ - typedef signed short FT_Int16; - typedef unsigned short FT_UInt16; - -#if FT_SIZEOF_INT == (32 / FT_CHAR_BIT) - - typedef signed int FT_Int32; - typedef unsigned int FT_UInt32; - -#elif FT_SIZEOF_LONG == (32 / FT_CHAR_BIT) - - typedef signed long FT_Int32; - typedef unsigned long FT_UInt32; - -#else -#error "no 32bit type found -- please check your configuration files" -#endif - - /* look up an integer type that is at least 32 bits */ -#if FT_SIZEOF_INT >= (32 / FT_CHAR_BIT) - - typedef int FT_Fast; - typedef unsigned int FT_UFast; - -#elif FT_SIZEOF_LONG >= (32 / FT_CHAR_BIT) - - typedef long FT_Fast; - typedef unsigned long FT_UFast; - -#endif - - - /* determine whether we have a 64-bit int type for platforms without */ - /* Autoconf */ -#if FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) - - /* FT_LONG64 must be defined if a 64-bit type is available */ -#define FT_LONG64 -#define FT_INT64 long - -#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __BORLANDC__ ) /* Borland C++ */ - - /* XXXX: We should probably check the value of __BORLANDC__ in order */ - /* to test the compiler version. */ - - /* this compiler provides the __int64 type */ -#define FT_LONG64 -#define FT_INT64 __int64 - -#elif defined( __WATCOMC__ ) /* Watcom C++ */ - - /* Watcom doesn't provide 64-bit data types */ - -#elif defined( __MWERKS__ ) /* Metrowerks CodeWarrior */ - -#define FT_LONG64 -#define FT_INT64 long long int - -#elif defined( __GNUC__ ) - - /* GCC provides the "long long" type */ -#define FT_LONG64 -#define FT_INT64 long long int - -#endif /* FT_SIZEOF_LONG == (64 / FT_CHAR_BIT) */ - - -#define FT_BEGIN_STMNT do { -#define FT_END_STMNT } while ( 0 ) -#define FT_DUMMY_STMNT FT_BEGIN_STMNT FT_END_STMNT - - - /*************************************************************************/ - /* */ - /* A 64-bit data type will create compilation problems if you compile */ - /* in strict ANSI mode. To avoid them, we disable their use if */ - /* __STDC__ is defined. You can however ignore this rule by */ - /* defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro. */ - /* */ -#if defined( FT_LONG64 ) && !defined( FT_CONFIG_OPTION_FORCE_INT64 ) - -#ifdef __STDC__ - - /* undefine the 64-bit macros in strict ANSI compilation mode */ -#undef FT_LONG64 -#undef FT_INT64 - -#endif /* __STDC__ */ - -#endif /* FT_LONG64 && !FT_CONFIG_OPTION_FORCE_INT64 */ - - -#ifdef FT_MAKE_OPTION_SINGLE_OBJECT - -#define FT_LOCAL( x ) static x -#define FT_LOCAL_DEF( x ) static x - -#else - -#ifdef __cplusplus -#define FT_LOCAL( x ) extern "C" x -#define FT_LOCAL_DEF( x ) extern "C" x -#else -#define FT_LOCAL( x ) extern x -#define FT_LOCAL_DEF( x ) x -#endif - -#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ - - -#ifndef FT_BASE - -#ifdef __cplusplus -#define FT_BASE( x ) extern "C" x -#else -#define FT_BASE( x ) extern x -#endif - -#endif /* !FT_BASE */ - - -#ifndef FT_BASE_DEF - -#ifdef __cplusplus -#define FT_BASE_DEF( x ) extern "C" x -#else -#define FT_BASE_DEF( x ) extern x -#endif - -#endif /* !FT_BASE_DEF */ - - -#ifndef FT_EXPORT - -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ - -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ - - -FT_END_HEADER - - -#endif /* __FTCONFIG_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/config/ftheader.h b/nx-X11/extras/freetype2/include/freetype/config/ftheader.h deleted file mode 100644 index b996a7a6f..000000000 --- a/nx-X11/extras/freetype2/include/freetype/config/ftheader.h +++ /dev/null @@ -1,564 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftheader.h */ -/* */ -/* Build macros of the FreeType 2 library. */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -#ifndef __FT_HEADER_H__ -#define __FT_HEADER_H__ - - /*@***********************************************************************/ - /* */ - /* <Macro> */ - /* FT_BEGIN_HEADER */ - /* */ - /* <Description> */ - /* This macro is used in association with @FT_END_HEADER in header */ - /* files to ensure that the declarations within are properly */ - /* encapsulated in an `extern "C" { .. }' block when included from a */ - /* C++ compiler. */ - /* */ -#ifdef __cplusplus -#define FT_BEGIN_HEADER extern "C" { -#else -#define FT_BEGIN_HEADER /* nothing */ -#endif - - - /*@***********************************************************************/ - /* */ - /* <Macro> */ - /* FT_END_HEADER */ - /* */ - /* <Description> */ - /* This macro is used in association with @FT_BEGIN_HEADER in header */ - /* files to ensure that the declarations within are properly */ - /* encapsulated in an `extern "C" { .. }' block when included from a */ - /* C++ compiler. */ - /* */ -#ifdef __cplusplus -#define FT_END_HEADER } -#else -#define FT_END_HEADER /* nothing */ -#endif - - - /*************************************************************************/ - /* */ - /* Aliases for the FreeType 2 public and configuration files. */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Section> */ - /* header_file_macros */ - /* */ - /* <Title> */ - /* Header File Macros */ - /* */ - /* <Abstract> */ - /* Macro definitions used to #include specific header files. */ - /* */ - /* <Description> */ - /* The following macros are defined to the name of specific */ - /* FreeType 2 header files. They can be used directly in #include */ - /* statements as in: */ - /* */ - /* { */ - /* #include FT_FREETYPE_H */ - /* #include FT_MULTIPLE_MASTERS_H */ - /* #include FT_GLYPH_H */ - /* } */ - /* */ - /* There are several reasons why we are now using macros to name */ - /* public header files. The first one is that such macros are not */ - /* limited to the infamous 8.3 naming rule required by DOS (and */ - /* `FT_MULTIPLE_MASTERS_H' is a lot more meaningful than `ftmm.h'). */ - /* */ - /* The second reason is that is allows for more flexibility in the */ - /* way FreeType 2 is installed on a given system. */ - /* */ - /*************************************************************************/ - - /* configuration files */ - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_CONFIG_CONFIG_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* FreeType 2 configuration data. */ - /* */ -#ifndef FT_CONFIG_CONFIG_H -#define FT_CONFIG_CONFIG_H <freetype/config/ftconfig.h> -#endif - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_CONFIG_STANDARD_LIBRARY_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* FreeType 2 configuration data. */ - /* */ -#ifndef FT_CONFIG_STANDARD_LIBRARY_H -#define FT_CONFIG_STANDARD_LIBRARY_H <freetype/config/ftstdlib.h> -#endif - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_CONFIG_OPTIONS_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* FreeType 2 project-specific configuration options. */ - /* */ -#ifndef FT_CONFIG_OPTIONS_H -#define FT_CONFIG_OPTIONS_H <freetype/config/ftoption.h> -#endif - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_CONFIG_MODULES_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the list of FreeType 2 modules that are statically linked to new */ - /* library instances in @FT_Init_FreeType. */ - /* */ -#ifndef FT_CONFIG_MODULES_H -#define FT_CONFIG_MODULES_H <freetype/config/ftmodule.h> -#endif - - - /* public headers */ - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_FREETYPE_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the base FreeType 2 API. */ - /* */ -#define FT_FREETYPE_H <freetype/freetype.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_ERRORS_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the list of FreeType 2 error codes (and messages). */ - /* */ - /* It is included by @FT_FREETYPE_H. */ - /* */ -#define FT_ERRORS_H <freetype/fterrors.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_MODULE_ERRORS_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the list of FreeType 2 module error offsets (and messages). */ - /* */ -#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_SYSTEM_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the FreeType 2 interface to low-level operations (i.e. memory */ - /* management and stream i/o). */ - /* */ - /* It is included by @FT_FREETYPE_H. */ - /* */ -#define FT_SYSTEM_H <freetype/ftsystem.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_IMAGE_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* types definitions related to glyph images (i.e. bitmaps, outlines, */ - /* scan-converter parameters). */ - /* */ - /* It is included by @FT_FREETYPE_H. */ - /* */ -#define FT_IMAGE_H <freetype/ftimage.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_TYPES_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the basic data types defined by FreeType 2. */ - /* */ - /* It is included by @FT_FREETYPE_H. */ - /* */ -#define FT_TYPES_H <freetype/fttypes.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_LIST_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the list management API of FreeType 2. */ - /* */ - /* (Most applications will never need to include this file.) */ - /* */ -#define FT_LIST_H <freetype/ftlist.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_OUTLINE_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the scalable outline management API of FreeType 2. */ - /* */ -#define FT_OUTLINE_H <freetype/ftoutln.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_SIZES_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the API used to manage multiple @FT_Size objects per face. */ - /* */ -#define FT_SIZES_H <freetype/ftsizes.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_MODULE_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the module management API of FreeType 2. */ - /* */ -#define FT_MODULE_H <freetype/ftmodapi.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_RENDER_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the renderer module management API of FreeType 2. */ - /* */ -#define FT_RENDER_H <freetype/ftrender.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_TYPE1_TABLES_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the types and API specific to the Type 1 format. */ - /* */ -#define FT_TYPE1_TABLES_H <freetype/t1tables.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_TRUETYPE_IDS_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the enumeration values used to identify name strings, languages, */ - /* encodings, etc. This file really contains a _large_ set of */ - /* constant macro definitions, taken from the TrueType and OpenType */ - /* specifications. */ - /* */ -#define FT_TRUETYPE_IDS_H <freetype/ttnameid.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_TRUETYPE_TABLES_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the types and API specific to the TrueType (as well as OpenType) */ - /* format. */ - /* */ -#define FT_TRUETYPE_TABLES_H <freetype/tttables.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_TRUETYPE_TAGS_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the definitions of TrueType 4-byte `tags' used to identify blocks */ - /* in SFNT-based font formats (i.e. TrueType and OpenType). */ - /* */ -#define FT_TRUETYPE_TAGS_H <freetype/tttags.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_BDF_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the definitions of an API to access BDF-specific strings from a */ - /* face. */ - /* */ -#define FT_BDF_H <freetype/ftbdf.h> - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_GZIP_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the definitions of an API to support for gzip-compressed files. */ - /* */ -#define FT_GZIP_H <freetype/ftgzip.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_LZW_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the definitions of an API to support for LZW-compressed files. */ - /* */ -#define FT_LZW_H <freetype/ftlzw.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_WINFONTS_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the definitions of an API to support Windows .FNT files */ - /* */ -#define FT_WINFONTS_H <freetype/ftwinfnt.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_GLYPH_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the API of the optional glyph management component. */ - /* */ -#define FT_GLYPH_H <freetype/ftglyph.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_BBOX_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the API of the optional exact bounding box computation routines. */ - /* */ -#define FT_BBOX_H <freetype/ftbbox.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_CACHE_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the API of the optional FreeType 2 cache sub-system. */ - /* */ -#define FT_CACHE_H <freetype/ftcache.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_CACHE_IMAGE_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the `glyph image' API of the FreeType 2 cache sub-system. */ - /* */ - /* It is used to define a cache for @FT_Glyph elements. You can also */ - /* see the API defined in @FT_CACHE_SMALL_BITMAPS_H if you only need */ - /* to store small glyph bitmaps, as it will use less memory. */ - /* */ - /* This macro is deprecated. Simply include @FT_CACHE_H to have all */ - /* glyph image-related cache declarations. */ - /* */ -#define FT_CACHE_IMAGE_H FT_CACHE_H - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_CACHE_SMALL_BITMAPS_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the `small bitmaps' API of the FreeType 2 cache sub-system. */ - /* */ - /* It is used to define a cache for small glyph bitmaps in a */ - /* relatively memory-efficient way. You can also use the API defined */ - /* in @FT_CACHE_IMAGE_H if you want to cache arbitrary glyph images, */ - /* including scalable outlines. */ - /* */ - /* This macro is deprecated. Simply include @FT_CACHE_H to have all */ - /* small bitmaps-related cache declarations. */ - /* */ -#define FT_CACHE_SMALL_BITMAPS_H FT_CACHE_H - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_CACHE_CHARMAP_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the `charmap' API of the FreeType 2 cache sub-system. */ - /* */ - /* This macro is deprecated. Simply include @FT_CACHE_H to have all */ - /* charmap-based cache declarations. */ - /* */ -#define FT_CACHE_CHARMAP_H FT_CACHE_H - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_MAC_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the Macintosh-specific FreeType 2 API. The latter is used to */ - /* access fonts embedded in resource forks. */ - /* */ - /* This header file must be explicitly included by client */ - /* applications compiled on the Mac (note that the base API still */ - /* works though). */ - /* */ -#define FT_MAC_H <freetype/ftmac.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_MULTIPLE_MASTERS_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the optional multiple-masters management API of FreeType 2. */ - /* */ -#define FT_MULTIPLE_MASTERS_H <freetype/ftmm.h> - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_SFNT_NAMES_H */ - /* */ - /* @description: */ - /* A macro used in #include statements to name the file containing */ - /* the optional FreeType 2 API used to access embedded `name' strings */ - /* in SFNT-based font formats (i.e. TrueType and OpenType). */ - /* */ -#define FT_SFNT_NAMES_H <freetype/ftsnames.h> - - /* */ - -#define FT_TRIGONOMETRY_H <freetype/fttrigon.h> -#define FT_STROKER_H <freetype/ftstroke.h> -#define FT_SYNTHESIS_H <freetype/ftsynth.h> -#define FT_ERROR_DEFINITIONS_H <freetype/fterrdef.h> - -#define FT_CACHE_MANAGER_H <freetype/cache/ftcmanag.h> - -#define FT_CACHE_INTERNAL_MRU_H <freetype/cache/ftcmru.h> -#define FT_CACHE_INTERNAL_MANAGER_H <freetype/cache/ftcmanag.h> -#define FT_CACHE_INTERNAL_CACHE_H <freetype/cache/ftccache.h> -#define FT_CACHE_INTERNAL_GLYPH_H <freetype/cache/ftcglyph.h> -#define FT_CACHE_INTERNAL_IMAGE_H <freetype/cache/ftcimage.h> -#define FT_CACHE_INTERNAL_SBITS_H <freetype/cache/ftcsbits.h> - - -#define FT_XFREE86_H <freetype/ftxf86.h> - -#define FT_INCREMENTAL_H <freetype/ftincrem.h> - -#define FT_TRUETYPE_UNPATENTED_H <freetype/ttunpat.h> - - /* now include internal headers definitions from <freetype/internal/...> */ - -#define FT_INTERNAL_INTERNAL_H <freetype/internal/internal.h> -#include FT_INTERNAL_INTERNAL_H - - -#endif /* __FT2_BUILD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/config/ftmodule.h b/nx-X11/extras/freetype2/include/freetype/config/ftmodule.h deleted file mode 100644 index c00a489f7..000000000 --- a/nx-X11/extras/freetype2/include/freetype/config/ftmodule.h +++ /dev/null @@ -1,19 +0,0 @@ -FT_USE_MODULE(autohint_module_class) -FT_USE_MODULE(tt_driver_class) -FT_USE_MODULE(t1_driver_class) -FT_USE_MODULE(cff_driver_class) -FT_USE_MODULE(t1cid_driver_class) -FT_USE_MODULE(pcf_driver_class) -FT_USE_MODULE(bdf_driver_class) -FT_USE_MODULE(psaux_module_class) -FT_USE_MODULE(psnames_module_class) -FT_USE_MODULE(pshinter_module_class) -FT_USE_MODULE(ft_raster1_renderer_class) -FT_USE_MODULE(sfnt_module_class) -FT_USE_MODULE(ft_smooth_renderer_class) -FT_USE_MODULE(ft_smooth_lcd_renderer_class) -FT_USE_MODULE(ft_smooth_lcdv_renderer_class) -FT_USE_MODULE(t42_driver_class) -FT_USE_MODULE(pfr_driver_class) -FT_USE_MODULE(winfnt_driver_class) - diff --git a/nx-X11/extras/freetype2/include/freetype/config/ftoption.h b/nx-X11/extras/freetype2/include/freetype/config/ftoption.h deleted file mode 100644 index 028c6ea9c..000000000 --- a/nx-X11/extras/freetype2/include/freetype/config/ftoption.h +++ /dev/null @@ -1,577 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoption.h */ -/* */ -/* User-selectable configuration macros (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOPTION_H__ -#define __FTOPTION_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* USER-SELECTABLE CONFIGURATION MACROS */ - /* */ - /* This file contains the default configuration macro definitions for */ - /* a standard build of the FreeType library. There are three ways to */ - /* use this file to build project-specific versions of the library: */ - /* */ - /* - You can modify this file by hand, but this is not recommended in */ - /* cases where you would like to build several versions of the */ - /* library from a single source directory. */ - /* */ - /* - You can put a copy of this file in your build directory, more */ - /* precisely in "$BUILD/freetype/config/ftoption.h", where "$BUILD" */ - /* is the name of a directory that is included _before_ the FreeType */ - /* include path during compilation. */ - /* */ - /* The default FreeType Makefiles and Jamfiles use the build */ - /* directory "builds/<system>" by default, but you can easily change */ - /* that for your own projects. */ - /* */ - /* - Copy the file <ft2build.h> to "$BUILD/ft2build.h" and modify it */ - /* slightly to pre-define the macro FT_CONFIG_OPTIONS_H used to */ - /* locate this file during the build. For example, */ - /* */ - /* #define FT_CONFIG_OPTIONS_H <myftoptions.h> */ - /* #include <freetype/config/ftheader.h> */ - /* */ - /* will use "$BUILD/myftoptions.h" instead of this file for macro */ - /* definitions. */ - /* */ - /* Note also that you can similarly pre-define the macro */ - /* FT_CONFIG_MODULES_H used to locate the file listing of the modules */ - /* that are statically linked to the library at compile time. By */ - /* default, this file is <freetype/config/ftmodule.h>. */ - /* */ - /* We highly recommend using the third method whenever possible. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** G E N E R A L F R E E T Y P E 2 C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Many compilers provide a non-ANSI 64-bit data type that can be used */ - /* by FreeType to speed up some computations. However, this will create */ - /* some problems when compiling the library in strict ANSI mode. */ - /* */ - /* For this reason, the use of 64-bit integers is normally disabled when */ - /* the __STDC__ macro is defined. You can however disable this by */ - /* defining the macro FT_CONFIG_OPTION_FORCE_INT64 here. */ - /* */ - /* For most compilers, this will only create compilation warnings when */ - /* building the library. */ - /* */ - /* ObNote: The compiler-specific 64-bit integers are detected in the */ - /* file "ftconfig.h" either statically or through the */ - /* `configure' script on supported platforms. */ - /* */ -#undef FT_CONFIG_OPTION_FORCE_INT64 - - - /*************************************************************************/ - /* */ - /* LZW-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* 'compress' program. This is mostly used to parse many of the PCF */ - /* files that come with various X11 distributions. The implementation */ - /* uses NetBSD's `zopen' to partially uncompress the file on the fly */ - /* (see src/lzw/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. */ - /* */ -#define FT_CONFIG_OPTION_USE_LZW - - - /*************************************************************************/ - /* */ - /* Gzip-compressed file support. */ - /* */ - /* FreeType now handles font files that have been compressed with the */ - /* 'gzip' program. This is mostly used to parse many of the PCF files */ - /* that come with XFree86. The implementation uses `zlib' to */ - /* partially uncompress the file on the fly (see src/gzip/ftgzip.c). */ - /* */ - /* Define this macro if you want to enable this `feature'. See also */ - /* the macro FT_CONFIG_OPTION_SYSTEM_ZLIB below. */ - /* */ -#define FT_CONFIG_OPTION_USE_ZLIB - - - /*************************************************************************/ - /* */ - /* ZLib library selection */ - /* */ - /* This macro is only used when FT_CONFIG_OPTION_USE_ZLIB is defined. */ - /* It allows FreeType's `ftgzip' component to link to the system's */ - /* installation of the ZLib library. This is useful on systems like */ - /* Unix or VMS where it generally is already available. */ - /* */ - /* If you let it undefined, the component will use its own copy */ - /* of the zlib sources instead. These have been modified to be */ - /* included directly within the component and *not* export external */ - /* function names. This allows you to link any program with FreeType */ - /* _and_ ZLib without linking conflicts. */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ -/* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */ - - - /*************************************************************************/ - /* */ - /* DLL export compilation */ - /* */ - /* When compiling FreeType as a DLL, some systems/compilers need a */ - /* special keyword in front OR after the return type of function */ - /* declarations. */ - /* */ - /* Two macros are used within the FreeType source code to define */ - /* exported library functions: FT_EXPORT and FT_EXPORT_DEF. */ - /* */ - /* FT_EXPORT( return_type ) */ - /* */ - /* is used in a function declaration, as in */ - /* */ - /* FT_EXPORT( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ); */ - /* */ - /* */ - /* FT_EXPORT_DEF( return_type ) */ - /* */ - /* is used in a function definition, as in */ - /* */ - /* FT_EXPORT_DEF( FT_Error ) */ - /* FT_Init_FreeType( FT_Library* alibrary ) */ - /* { */ - /* ... some code ... */ - /* return FT_Err_Ok; */ - /* } */ - /* */ - /* You can provide your own implementation of FT_EXPORT and */ - /* FT_EXPORT_DEF here if you want. If you leave them undefined, they */ - /* will be later automatically defined as `extern return_type' to */ - /* allow normal compilation. */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ -/* #define FT_EXPORT(x) extern x */ -/* #define FT_EXPORT_DEF(x) x */ - - - /*************************************************************************/ - /* */ - /* Glyph Postscript Names handling */ - /* */ - /* By default, FreeType 2 is compiled with the `PSNames' module. This */ - /* module is in charge of converting a glyph name string into a */ - /* Unicode value, or return a Macintosh standard glyph name for the */ - /* use with the TrueType `post' table. */ - /* */ - /* Undefine this macro if you do not want `PSNames' compiled in your */ - /* build of FreeType. This has the following effects: */ - /* */ - /* - The TrueType driver will provide its own set of glyph names, */ - /* if you build it to support postscript names in the TrueType */ - /* `post' table. */ - /* */ - /* - The Type 1 driver will not be able to synthetize a Unicode */ - /* charmap out of the glyphs found in the fonts. */ - /* */ - /* You would normally undefine this configuration macro when building */ - /* a version of FreeType that doesn't contain a Type 1 or CFF driver. */ - /* */ -#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Postscript Names to Unicode Values support */ - /* */ - /* By default, FreeType 2 is built with the `PSNames' module compiled */ - /* in. Among other things, the module is used to convert a glyph name */ - /* into a Unicode value. This is especially useful in order to */ - /* synthetize on the fly a Unicode charmap from the CFF/Type 1 driver */ - /* through a big table named the `Adobe Glyph List' (AGL). */ - /* */ - /* Undefine this macro if you do not want the Adobe Glyph List */ - /* compiled in your `PSNames' module. The Type 1 driver will not be */ - /* able to synthetize a Unicode charmap out of the glyphs found in the */ - /* fonts. */ - /* */ -#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - - /*************************************************************************/ - /* */ - /* Support for Mac fonts */ - /* */ - /* Define this macro if you want support for outline fonts in Mac */ - /* format (mac dfont, mac resource, macbinary containing a mac */ - /* resource) on non-Mac platforms. */ - /* */ - /* Note that the `FOND' resource isn't checked. */ - /* */ -#define FT_CONFIG_OPTION_MAC_FONTS - - - /*************************************************************************/ - /* */ - /* Guessing methods to access embedded resource forks */ - /* */ - /* Enable extra Mac fonts support on non-Mac platforms (e.g. */ - /* GNU/Linux). */ - /* */ - /* Resource forks which include fonts data are stored sometimes in */ - /* locations which users or developers don't expected. In some cases, */ - /* resource forks start with some offset from the head of a file. In */ - /* other cases, the actual resource fork is stored in file different */ - /* from what the user specifies. If this option is activated, */ - /* FreeType tries to guess whether such offsets or different file */ - /* names must be used. */ - /* */ - /* Note that normal, direct access of resource forks is controlled via */ - /* the FT_CONFIG_OPTION_MAC_FONTS option. */ - /* */ -#ifdef FT_CONFIG_OPTION_MAC_FONTS -#define FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK -#endif - - - /*************************************************************************/ - /* */ - /* Allow the use of FT_Incremental_Interface to load typefaces that */ - /* contain no glyph data, but supply it via a callback function. */ - /* This allows FreeType to be used with the PostScript language, using */ - /* the GhostScript interpreter. */ - /* */ -/* #define FT_CONFIG_OPTION_INCREMENTAL */ - - - /*************************************************************************/ - /* */ - /* The size in bytes of the render pool used by the scan-line converter */ - /* to do all of its work. */ - /* */ - /* This must be greater than 4KByte. */ - /* */ -#define FT_RENDER_POOL_SIZE 16384L - - - /*************************************************************************/ - /* */ - /* FT_MAX_MODULES */ - /* */ - /* The maximum number of modules that can be registered in a single */ - /* FreeType library object. 32 is the default. */ - /* */ -#define FT_MAX_MODULES 32 - - - /*************************************************************************/ - /* */ - /* Debug level */ - /* */ - /* FreeType can be compiled in debug or trace mode. In debug mode, */ - /* errors are reported through the `ftdebug' component. In trace */ - /* mode, additional messages are sent to the standard output during */ - /* execution. */ - /* */ - /* Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode. */ - /* Define FT_DEBUG_LEVEL_TRACE to build it in trace mode. */ - /* */ - /* Don't define any of these macros to compile in `release' mode! */ - /* */ - /* Do not #undef these macros here since the build system might define */ - /* them for certain configurations only. */ - /* */ -/* #define FT_DEBUG_LEVEL_ERROR */ -/* #define FT_DEBUG_LEVEL_TRACE */ - - - /*************************************************************************/ - /* */ - /* Memory Debugging */ - /* */ - /* FreeType now comes with an integrated memory debugger that is */ - /* capable of detecting simple errors like memory leaks or double */ - /* deletes. To compile it within your build of the library, you */ - /* should define FT_DEBUG_MEMORY here. */ - /* */ - /* Note that the memory debugger is only activated at runtime when */ - /* when the _environment_ variable "FT2_DEBUG_MEMORY" is defined also! */ - /* */ - /* Do not #undef this macro here since the build system might define */ - /* it for certain configurations only. */ - /* */ -/* #define FT_DEBUG_MEMORY */ - - - /*************************************************************************/ - /* */ - /* Module errors */ - /* */ - /* If this macro is set (which is _not_ the default), the higher byte */ - /* of an error code gives the module in which the error has occurred, */ - /* while the lower byte is the real error code. */ - /* */ - /* Setting this macro makes sense for debugging purposes only, since */ - /* it would break source compatibility of certain programs that use */ - /* FreeType 2. */ - /* */ - /* More details can be found in the files ftmoderr.h and fterrors.h. */ - /* */ -#undef FT_CONFIG_OPTION_USE_MODULE_ERRORS - - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** S F N T D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_EMBEDDED_BITMAPS if you want to support */ - /* embedded bitmaps in all formats using the SFNT module (namely */ - /* TrueType & OpenType). */ - /* */ -#define TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_POSTSCRIPT_NAMES if you want to be able to */ - /* load and enumerate the glyph Postscript names in a TrueType or */ - /* OpenType file. */ - /* */ - /* Note that when you do not compile the `PSNames' module by undefining */ - /* the above FT_CONFIG_OPTION_POSTSCRIPT_NAMES, the `sfnt' module will */ - /* contain additional code used to read the PS Names table from a font. */ - /* */ - /* (By default, the module uses `PSNames' to extract glyph names.) */ - /* */ -#define TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_SFNT_NAMES if your applications need to */ - /* access the internal name table in a SFNT-based format like TrueType */ - /* or OpenType. The name table contains various strings used to */ - /* describe the font, like family name, copyright, version, etc. It */ - /* does not contain any glyph name though. */ - /* */ - /* Accessing SFNT names is done through the functions declared in */ - /* `freetype/ftnames.h'. */ - /* */ -#define TT_CONFIG_OPTION_SFNT_NAMES - - - /*************************************************************************/ - /* */ - /* TrueType CMap support */ - /* */ - /* Here you can fine-tune which TrueType CMap table format shall be */ - /* supported. */ -#define TT_CONFIG_CMAP_FORMAT_0 -#define TT_CONFIG_CMAP_FORMAT_2 -#define TT_CONFIG_CMAP_FORMAT_4 -#define TT_CONFIG_CMAP_FORMAT_6 -#define TT_CONFIG_CMAP_FORMAT_8 -#define TT_CONFIG_CMAP_FORMAT_10 -#define TT_CONFIG_CMAP_FORMAT_12 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T R U E T Y P E D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile */ - /* a bytecode interpreter in the TrueType driver. Note that there are */ - /* important patent issues related to the use of the interpreter. */ - /* */ - /* By undefining this, you will only compile the code necessary to load */ - /* TrueType glyphs without hinting. */ - /* */ - /* Do not #undef this macro here, since the build system might */ - /* define it for certain configurations only. */ - /* */ -/* #define TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_UNPATENTED_HINTING (in addition to */ - /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER) to compile the unpatented */ - /* work-around hinting system. Note that for the moment, the algorithm */ - /* is only used when selected at runtime through the parameter tag */ - /* FT_PARAM_TAG_UNPATENTED_HINTING; or when the debug hook */ - /* FT_DEBUG_HOOK_UNPATENTED_HINTING is globally actived */ - /* */ -#define TT_CONFIG_OPTION_UNPATENTED_HINTING - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_INTERPRETER_SWITCH to compile the TrueType */ - /* bytecode interpreter with a huge switch statement, rather than a call */ - /* table. This results in smaller and faster code for a number of */ - /* architectures. */ - /* */ - /* Note however that on some compiler/processor combinations, undefining */ - /* this macro will generate faster, though larger, code. */ - /* */ -#define TT_CONFIG_OPTION_INTERPRETER_SWITCH - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED to compile the */ - /* TrueType glyph loader to use Apple's definition of how to handle */ - /* component offsets in composite glyphs. */ - /* */ - /* Apple and MS disagree on the default behavior of component offsets */ - /* in composites. Apple says that they should be scaled by the scale */ - /* factors in the transformation matrix (roughly, it's more complex) */ - /* while MS says they should not. OpenType defines two bits in the */ - /* composite flags array which can be used to disambiguate, but old */ - /* fonts will not have them. */ - /* */ - /* http://partners.adobe.com/asn/developer/opentype/glyf.html */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6glyf.html */ - /* */ -#undef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED - - - /*************************************************************************/ - /* */ - /* Define TT_CONFIG_OPTION_GX_VAR_SUPPORT if you want to include */ - /* support for Apple's distortable font technology (fvar, gvar, cvar, */ - /* and avar tables). This has many similarities to Type 1 Multiple */ - /* Masters support. */ - /* */ -#define TT_CONFIG_OPTION_GX_VAR_SUPPORT - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** T Y P E 1 D R I V E R C O N F I G U R A T I O N ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* T1_MAX_DICT_DEPTH is the maximal depth of nest dictionaries and */ - /* arrays in the Type 1 stream (see t1load.c). A minimum of 4 is */ - /* required. */ - /* */ -#define T1_MAX_DICT_DEPTH 5 - - - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ -#define T1_MAX_SUBRS_CALLS 16 - - - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ - /* The Chinese font MingTiEG-Medium (CNS 11643 character set) needs 256. */ - /* */ -#define T1_MAX_CHARSTRINGS_OPERANDS 256 - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of `t1afm', which is in charge of reading Type 1 AFM */ - /* files into an existing face. Note that if set, the T1 driver will be */ - /* unable to produce kerning distances. */ - /* */ -#undef T1_CONFIG_OPTION_NO_AFM - - - /*************************************************************************/ - /* */ - /* Define this configuration macro if you want to prevent the */ - /* compilation of the Multiple Masters font support in the Type 1 */ - /* driver. */ - /* */ -#undef T1_CONFIG_OPTION_NO_MM_SUPPORT - - /* */ - -/* - * The FT_CONFIG_OPTION_CHESTER_XXXX macros are used to toggle some recent - * improvements to the auto-hinter contributed by David Chester. They will - * most likely disappear completely in the next release. For now, you - * should always keep them defined. - * - */ -#define FT_CONFIG_OPTION_CHESTER_HINTS - -#ifdef FT_CONFIG_OPTION_CHESTER_HINTS - -#define FT_CONFIG_CHESTER_SMALL_F -#define FT_CONFIG_CHESTER_ASCENDER -#define FT_CONFIG_CHESTER_SERIF -#define FT_CONFIG_CHESTER_STEM -#define FT_CONFIG_CHESTER_BLUE_SCALE - -#endif /* FT_CONFIG_OPTION_CHESTER_HINTS */ - -FT_END_HEADER - - -#endif /* __FTOPTION_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/config/ftstdlib.h b/nx-X11/extras/freetype2/include/freetype/config/ftstdlib.h deleted file mode 100644 index 297d6f017..000000000 --- a/nx-X11/extras/freetype2/include/freetype/config/ftstdlib.h +++ /dev/null @@ -1,144 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftstdlib.h */ -/* */ -/* ANSI-specific library and header configuration file (specification */ -/* only). */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to group all #includes to the ANSI C library that */ - /* FreeType normally requires. It also defines macros to rename the */ - /* standard functions within the FreeType source code. */ - /* */ - /* Load a file which defines __FTSTDLIB_H__ before this one to override */ - /* it. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTSTDLIB_H__ -#define __FTSTDLIB_H__ - - - /**********************************************************************/ - /* */ - /* integer limits */ - /* */ - /* UINT_MAX and ULONG_MAX are used to automatically compute the size */ - /* of `int' and `long' in bytes at compile-time. So far, this works */ - /* for all platforms the library has been tested on. */ - /* */ - /* Note that on the extremely rare platforms that do not provide */ - /* integer types that are _exactly_ 16 and 32 bits wide (e.g. some */ - /* old Crays where `int' is 36 bits), we do not make any guarantee */ - /* about the correct behaviour of FT2 with all fonts. */ - /* */ - /* In these case, "ftconfig.h" will refuse to compile anyway with a */ - /* message like "couldn't find 32-bit type" or something similar. */ - /* */ - /* IMPORTANT NOTE: We do not define aliases for heap management and */ - /* i/o routines (i.e. malloc/free/fopen/fread/...) */ - /* since these functions should all be encapsulated */ - /* by platform-specific implementations of */ - /* "ftsystem.c". */ - /* */ - /**********************************************************************/ - - -#include <limits.h> - -#define FT_UINT_MAX UINT_MAX -#define FT_ULONG_MAX ULONG_MAX - - - /**********************************************************************/ - /* */ - /* character and string processing */ - /* */ - /**********************************************************************/ - - -#include <ctype.h> - -#define ft_isalnum isalnum -#define ft_isupper isupper -#define ft_islower islower -#define ft_isdigit isdigit -#define ft_isxdigit isxdigit - - -#include <string.h> - -#define ft_memcmp memcmp -#define ft_memcpy memcpy -#define ft_memmove memmove -#define ft_memset memset -#define ft_strcat strcat -#define ft_strcmp strcmp -#define ft_strcpy strcpy -#define ft_strlen strlen -#define ft_strncmp strncmp -#define ft_strncpy strncpy -#define ft_strrchr strrchr - - -#include <stdio.h> - -#define ft_sprintf sprintf - - - /**********************************************************************/ - /* */ - /* sorting */ - /* */ - /**********************************************************************/ - - -#include <stdlib.h> - -#define ft_qsort qsort -#define ft_exit exit /* only used to exit from unhandled exceptions */ - -#define ft_atol atol - - - /**********************************************************************/ - /* */ - /* execution control */ - /* */ - /**********************************************************************/ - - -#include <setjmp.h> - -#define ft_jmp_buf jmp_buf /* note: this cannot be a typedef since */ - /* jmp_buf is defined as a macro */ - /* on certain platforms */ - -#define ft_setjmp setjmp /* same thing here */ -#define ft_longjmp longjmp /* " */ - - - /* the following is only used for debugging purposes, i.e. when */ - /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ - /* */ -#include <stdarg.h> - - -#endif /* __FTSTDLIB_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/freetype.h b/nx-X11/extras/freetype2/include/freetype/freetype.h deleted file mode 100644 index 3780a2836..000000000 --- a/nx-X11/extras/freetype2/include/freetype/freetype.h +++ /dev/null @@ -1,3083 +0,0 @@ -/***************************************************************************/ -/* */ -/* freetype.h */ -/* */ -/* FreeType high-level API and common types (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef FT_FREETYPE_H -#error "`ft2build.h' hasn't been included yet!" -#error "Please always use macros to include FreeType header files." -#error "Example:" -#error " #include <ft2build.h>" -#error " #include FT_FREETYPE_H" -#endif - - -#ifndef __FREETYPE_H__ -#define __FREETYPE_H__ - - - /*************************************************************************/ - /* */ - /* The `raster' component duplicates some of the declarations in */ - /* freetype.h for stand-alone use if _FREETYPE_ isn't defined. */ - /* */ - - - /*************************************************************************/ - /* */ - /* The FREETYPE_MAJOR and FREETYPE_MINOR macros are used to version the */ - /* new FreeType design, which is able to host several kinds of font */ - /* drivers. It starts at 2.0. */ - /* */ -#define FREETYPE_MAJOR 2 -#define FREETYPE_MINOR 1 -#define FREETYPE_PATCH 9 - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_ERRORS_H -#include FT_TYPES_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* B A S I C T Y P E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* base_interface */ - /* */ - /* <Title> */ - /* Base Interface */ - /* */ - /* <Abstract> */ - /* The FreeType 2 base font interface. */ - /* */ - /* <Description> */ - /* This section describes the public high-level API of FreeType 2. */ - /* */ - /* <Order> */ - /* FT_Library */ - /* FT_Face */ - /* FT_Size */ - /* FT_GlyphSlot */ - /* FT_CharMap */ - /* FT_Encoding */ - /* */ - /* FT_FaceRec */ - /* */ - /* FT_FACE_FLAG_SCALABLE */ - /* FT_FACE_FLAG_FIXED_SIZES */ - /* FT_FACE_FLAG_FIXED_WIDTH */ - /* FT_FACE_FLAG_HORIZONTAL */ - /* FT_FACE_FLAG_VERTICAL */ - /* FT_FACE_FLAG_SFNT */ - /* FT_FACE_FLAG_KERNING */ - /* FT_FACE_FLAG_MULTIPLE_MASTERS */ - /* FT_FACE_FLAG_GLYPH_NAMES */ - /* FT_FACE_FLAG_EXTERNAL_STREAM */ - /* FT_FACE_FLAG_FAST_GLYPHS */ - /* */ - /* FT_STYLE_FLAG_BOLD */ - /* FT_STYLE_FLAG_ITALIC */ - /* */ - /* FT_SizeRec */ - /* FT_Size_Metrics */ - /* */ - /* FT_GlyphSlotRec */ - /* FT_Glyph_Metrics */ - /* FT_SubGlyph */ - /* */ - /* FT_Bitmap_Size */ - /* */ - /* FT_Init_FreeType */ - /* FT_Done_FreeType */ - /* FT_Library_Version */ - /* */ - /* FT_New_Face */ - /* FT_Done_Face */ - /* FT_New_Memory_Face */ - /* FT_Open_Face */ - /* FT_Open_Args */ - /* FT_Parameter */ - /* FT_Attach_File */ - /* FT_Attach_Stream */ - /* */ - /* FT_Set_Char_Size */ - /* FT_Set_Pixel_Sizes */ - /* FT_Set_Transform */ - /* FT_Load_Glyph */ - /* FT_Get_Char_Index */ - /* FT_Get_Name_Index */ - /* FT_Load_Char */ - /* */ - /* FT_OPEN_MEMORY */ - /* FT_OPEN_STREAM */ - /* FT_OPEN_PATHNAME */ - /* FT_OPEN_DRIVER */ - /* FT_OPEN_PARAMS */ - /* */ - /* FT_LOAD_DEFAULT */ - /* FT_LOAD_RENDER */ - /* FT_LOAD_MONOCHROME */ - /* FT_LOAD_LINEAR_DESIGN */ - /* FT_LOAD_NO_SCALE */ - /* FT_LOAD_NO_HINTING */ - /* FT_LOAD_NO_BITMAP */ - /* FT_LOAD_CROP_BITMAP */ - /* */ - /* FT_LOAD_VERTICAL_LAYOUT */ - /* FT_LOAD_IGNORE_TRANSFORM */ - /* FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH */ - /* FT_LOAD_FORCE_AUTOHINT */ - /* FT_LOAD_NO_RECURSE */ - /* FT_LOAD_PEDANTIC */ - /* */ - /* FT_LOAD_TARGET_NORMAL */ - /* FT_LOAD_TARGET_LIGHT */ - /* FT_LOAD_TARGET_MONO */ - /* FT_LOAD_TARGET_LCD */ - /* FT_LOAD_TARGET_LCD_V */ - /* */ - /* FT_Render_Glyph */ - /* FT_Render_Mode */ - /* FT_Get_Kerning */ - /* FT_Kerning_Mode */ - /* FT_Get_Glyph_Name */ - /* FT_Get_Postscript_Name */ - /* */ - /* FT_CharMapRec */ - /* FT_Select_Charmap */ - /* FT_Set_Charmap */ - /* FT_Get_Charmap_Index */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Glyph_Metrics */ - /* */ - /* <Description> */ - /* A structure used to model the metrics of a single glyph. The */ - /* values are expressed in 26.6 fractional pixel format; if the flag */ - /* FT_LOAD_NO_SCALE is used, values are returned in font units */ - /* instead. */ - /* */ - /* <Fields> */ - /* width :: */ - /* The glyph's width. */ - /* */ - /* height :: */ - /* The glyph's height. */ - /* */ - /* horiBearingX :: */ - /* Left side bearing for horizontal layout. */ - /* */ - /* horiBearingY :: */ - /* Top side bearing for horizontal layout. */ - /* */ - /* horiAdvance :: */ - /* Advance width for horizontal layout. */ - /* */ - /* vertBearingX :: */ - /* Left side bearing for vertical layout. */ - /* */ - /* vertBearingY :: */ - /* Top side bearing for vertical layout. */ - /* */ - /* vertAdvance :: */ - /* Advance height for vertical layout. */ - /* */ - typedef struct FT_Glyph_Metrics_ - { - FT_Pos width; - FT_Pos height; - - FT_Pos horiBearingX; - FT_Pos horiBearingY; - FT_Pos horiAdvance; - - FT_Pos vertBearingX; - FT_Pos vertBearingY; - FT_Pos vertAdvance; - - } FT_Glyph_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Bitmap_Size */ - /* */ - /* <Description> */ - /* This structure models the size of a bitmap strike (i.e., a bitmap */ - /* instance of the font for a given resolution) in a fixed-size font */ - /* face. It is used for the `available_sizes' field of the */ - /* @FT_FaceRec structure. */ - /* */ - /* <Fields> */ - /* height :: The (vertical) baseline-to-baseline distance in pixels. */ - /* It makes most sense to define the height of a bitmap */ - /* font in this way. */ - /* */ - /* width :: The average width of the font (in pixels). Since the */ - /* algorithms to compute this value are different for the */ - /* various bitmap formats, it can only give an additional */ - /* hint if the `height' value isn't sufficient to select */ - /* the proper font. For monospaced fonts the average width */ - /* is the same as the maximum width. */ - /* */ - /* size :: The point size in 26.6 fractional format this font shall */ - /* represent (for a given vertical resolution). */ - /* */ - /* x_ppem :: The horizontal ppem value (in 26.6 fractional format). */ - /* */ - /* y_ppem :: The vertical ppem value (in 26.6 fractional format). */ - /* Usually, this is the `nominal' pixel height of the font. */ - /* */ - /* <Note> */ - /* The values in this structure are taken from the bitmap font. If */ - /* the font doesn't provide a parameter it is set to zero to indicate */ - /* that the information is not available. */ - /* */ - /* The following formula converts from dpi to ppem: */ - /* */ - /* ppem = size * dpi / 72 */ - /* */ - /* where `size' is in points. */ - /* */ - /* Windows FNT: */ - /* The `size' parameter is not reliable: There exist fonts (e.g., */ - /* app850.fon) which have a wrong size for some subfonts; x_ppem */ - /* and y_ppem are thus set equal to pixel width and height given in */ - /* in the Windows FNT header. */ - /* */ - /* TrueType embedded bitmaps: */ - /* `size', `width', and `height' values are not contained in the */ - /* bitmap strike itself. They are computed from the global font */ - /* parameters. */ - /* */ - typedef struct FT_Bitmap_Size_ - { - FT_Short height; - FT_Short width; - - FT_Pos size; - - FT_Pos x_ppem; - FT_Pos y_ppem; - - } FT_Bitmap_Size; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* O B J E C T C L A S S E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Library */ - /* */ - /* <Description> */ - /* A handle to a FreeType library instance. Each `library' is */ - /* completely independent from the others; it is the `root' of a set */ - /* of objects like fonts, faces, sizes, etc. */ - /* */ - /* It also embeds a memory manager (see @FT_Memory), as well as a */ - /* scan-line converter object (see @FT_Raster). */ - /* */ - /* <Note> */ - /* Library objects are normally created by @FT_Init_FreeType, and */ - /* destroyed with @FT_Done_FreeType. */ - /* */ - typedef struct FT_LibraryRec_ *FT_Library; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Module */ - /* */ - /* <Description> */ - /* A handle to a given FreeType module object. Each module can be a */ - /* font driver, a renderer, or anything else that provides services */ - /* to the formers. */ - /* */ - typedef struct FT_ModuleRec_* FT_Module; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Driver */ - /* */ - /* <Description> */ - /* A handle to a given FreeType font driver object. Each font driver */ - /* is a special module capable of creating faces from font files. */ - /* */ - typedef struct FT_DriverRec_* FT_Driver; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Renderer */ - /* */ - /* <Description> */ - /* A handle to a given FreeType renderer. A renderer is a special */ - /* module in charge of converting a glyph image to a bitmap, when */ - /* necessary. Each renderer supports a given glyph image format, and */ - /* one or more target surface depths. */ - /* */ - typedef struct FT_RendererRec_* FT_Renderer; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Face */ - /* */ - /* <Description> */ - /* A handle to a given typographic face object. A face object models */ - /* a given typeface, in a given style. */ - /* */ - /* <Note> */ - /* Each face object also owns a single @FT_GlyphSlot object, as well */ - /* as one or more @FT_Size objects. */ - /* */ - /* Use @FT_New_Face or @FT_Open_Face to create a new face object from */ - /* a given filepathname or a custom input stream. */ - /* */ - /* Use @FT_Done_Face to destroy it (along with its slot and sizes). */ - /* */ - /* <Also> */ - /* The @FT_FaceRec details the publicly accessible fields of a given */ - /* face object. */ - /* */ - typedef struct FT_FaceRec_* FT_Face; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Size */ - /* */ - /* <Description> */ - /* A handle to a given size object. Such an object models the data */ - /* that depends on the current _resolution_ and _character size_ in a */ - /* given @FT_Face. */ - /* */ - /* <Note> */ - /* Each face object owns one or more sizes. There is however a */ - /* single _active_ size for the face at any time that will be used by */ - /* functions like @FT_Load_Glyph, @FT_Get_Kerning, etc. */ - /* */ - /* You can use the @FT_Activate_Size API to change the current */ - /* active size of any given face. */ - /* */ - /* <Also> */ - /* The @FT_SizeRec structure details the publicly accessible fields */ - /* of a given face object. */ - /* */ - typedef struct FT_SizeRec_* FT_Size; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_GlyphSlot */ - /* */ - /* <Description> */ - /* A handle to a given `glyph slot'. A slot is a container where it */ - /* is possible to load any one of the glyphs contained in its parent */ - /* face. */ - /* */ - /* In other words, each time you call @FT_Load_Glyph or */ - /* @FT_Load_Char, the slot's content is erased by the new glyph data, */ - /* i.e. the glyph's metrics, its image (bitmap or outline), and */ - /* other control information. */ - /* */ - /* <Also> */ - /* @FT_GlyphSlotRec details the publicly accessible glyph fields. */ - /* */ - typedef struct FT_GlyphSlotRec_* FT_GlyphSlot; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_CharMap */ - /* */ - /* <Description> */ - /* A handle to a given character map. A charmap is used to translate */ - /* character codes in a given encoding into glyph indexes for its */ - /* parent's face. Some font formats may provide several charmaps per */ - /* font. */ - /* */ - /* Each face object owns zero or more charmaps, but only one of them */ - /* can be "active" and used by @FT_Get_Char_Index or @FT_Load_Char. */ - /* */ - /* The list of available charmaps in a face is available through the */ - /* "face->num_charmaps" and "face->charmaps" fields of @FT_FaceRec. */ - /* */ - /* The currently active charmap is available as "face->charmap". */ - /* You should call @FT_Set_Charmap to change it. */ - /* */ - /* <Note> */ - /* When a new face is created (either through @FT_New_Face or */ - /* @FT_Open_Face), the library looks for a Unicode charmap within */ - /* the list and automatically activates it. */ - /* */ - /* <Also> */ - /* The @FT_CharMapRec details the publicly accessible fields of a */ - /* given character map. */ - /* */ - typedef struct FT_CharMapRec_* FT_CharMap; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_ENC_TAG */ - /* */ - /* <Description> */ - /* This macro converts four letter tags into an unsigned long. It is */ - /* used to define "encoding" identifiers (see @FT_Encoding). */ - /* */ - /* <Note> */ - /* Since many 16bit compilers don't like 32bit enumerations, you */ - /* should redefine this macro in case of problems to something like */ - /* this: */ - /* */ - /* #define FT_ENC_TAG( value, a, b, c, d ) value */ - /* */ - /* to get a simple enumeration without assigning special numbers. */ - /* */ - -#ifndef FT_ENC_TAG -#define FT_ENC_TAG( value, a, b, c, d ) \ - value = ( ( (FT_UInt32)(a) << 24 ) | \ - ( (FT_UInt32)(b) << 16 ) | \ - ( (FT_UInt32)(c) << 8 ) | \ - (FT_UInt32)(d) ) - -#endif /* FT_ENC_TAG */ - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Encoding */ - /* */ - /* <Description> */ - /* An enumeration used to specify encodings supported by charmaps. */ - /* Used in the @FT_Select_Charmap API function. */ - /* */ - /* <Note> */ - /* Because of 32-bit charcodes defined in Unicode (i.e., surrogates), */ - /* all character codes must be expressed as FT_Longs. */ - /* */ - /* The values of this type correspond to specific character */ - /* repertories (i.e. charsets), and not to text encoding methods */ - /* (like UTF-8, UTF-16, GB2312_EUC, etc.). */ - /* */ - /* Other encodings might be defined in the future. */ - /* */ - /* <Values> */ - /* FT_ENCODING_NONE :: */ - /* The encoding value 0 is reserved. */ - /* */ - /* FT_ENCODING_UNICODE :: */ - /* Corresponds to the Unicode character set. This value covers */ - /* all versions of the Unicode repertoire, including ASCII and */ - /* Latin-1. Most fonts include a Unicode charmap, but not all */ - /* of them. */ - /* */ - /* FT_ENCODING_MS_SYMBOL :: */ - /* Corresponds to the Microsoft Symbol encoding, used to encode */ - /* mathematical symbols in the 32..255 character code range. For */ - /* more information, see `http://www.ceviz.net/symbol.htm'. */ - /* */ - /* FT_ENCODING_SJIS :: */ - /* Corresponds to Japanese SJIS encoding. More info at */ - /* at `http://langsupport.japanreference.com/encoding.shtml'. */ - /* See note on multi-byte encodings below. */ - /* */ - /* FT_ENCODING_GB2312 :: */ - /* Corresponds to an encoding system for Simplified Chinese as used */ - /* used in mainland China. */ - /* */ - /* FT_ENCODING_BIG5 :: */ - /* Corresponds to an encoding system for Traditional Chinese as used */ - /* in Taiwan and Hong Kong. */ - /* */ - /* FT_ENCODING_WANSUNG :: */ - /* Corresponds to the Korean encoding system known as Wansung. */ - /* For more information see */ - /* `http://www.microsoft.com/typography/unicode/949.txt'. */ - /* */ - /* FT_ENCODING_JOHAB :: */ - /* The Korean standard character set (KS C-5601-1992), which */ - /* corresponds to MS Windows code page 1361. This character set */ - /* includes all possible Hangeul character combinations. */ - /* */ - /* FT_ENCODING_ADOBE_LATIN_1 :: */ - /* Corresponds to a Latin-1 encoding as defined in a Type 1 */ - /* Postscript font. It is limited to 256 character codes. */ - /* */ - /* FT_ENCODING_ADOBE_STANDARD :: */ - /* Corresponds to the Adobe Standard encoding, as found in Type 1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ - /* */ - /* FT_ENCODING_ADOBE_EXPERT :: */ - /* Corresponds to the Adobe Expert encoding, as found in Type 1, */ - /* CFF, and OpenType/CFF fonts. It is limited to 256 character */ - /* codes. */ - /* */ - /* FT_ENCODING_ADOBE_CUSTOM :: */ - /* Corresponds to a custom encoding, as found in Type 1, CFF, and */ - /* OpenType/CFF fonts. It is limited to 256 character codes. */ - /* */ - /* FT_ENCODING_APPLE_ROMAN :: */ - /* Corresponds to the 8-bit Apple roman encoding. Many TrueType and */ - /* OpenType fonts contain a charmap for this encoding, since older */ - /* versions of Mac OS are able to use it. */ - /* */ - /* FT_ENCODING_OLD_LATIN_2 :: */ - /* This value is deprecated and was never used nor reported by */ - /* FreeType. Don't use or test for it. */ - /* */ - /* FT_ENCODING_MS_SJIS :: */ - /* Same as FT_ENCODING_SJIS. Deprecated. */ - /* */ - /* FT_ENCODING_MS_GB2312 :: */ - /* Same as FT_ENCODING_GB2312. Deprecated. */ - /* */ - /* FT_ENCODING_MS_BIG5 :: */ - /* Same as FT_ENCODING_BIG5. Deprecated. */ - /* */ - /* FT_ENCODING_MS_WANSUNG :: */ - /* Same as FT_ENCODING_WANSUNG. Deprecated. */ - /* */ - /* FT_ENCODING_MS_JOHAB :: */ - /* Same as FT_ENCODING_JOHAB. Deprecated. */ - /* */ - /* <Note> */ - /* By default, FreeType automatically synthetizes a Unicode charmap */ - /* for Postscript fonts, using their glyph names dictionaries. */ - /* However, it will also report the encodings defined explicitly in */ - /* the font file, for the cases when they are needed, with the Adobe */ - /* values as well. */ - /* */ - /* FT_ENCODING_NONE is set by the BDF and PCF drivers if the charmap */ - /* is neither Unicode nor ISO-8859-1 (otherwise it is set to */ - /* FT_ENCODING_UNICODE). Use `FT_Get_BDF_Charset_ID' to find out */ - /* which encoding is really present. If, for example, the */ - /* `cs_registry' field is `KOI8' and the `cs_encoding' field is `R', */ - /* the font is encoded in KOI8-R. */ - /* */ - /* FT_ENCODING_NONE is always set (with a single exception) by the */ - /* winfonts driver. Use `FT_Get_WinFNT_Header' and examine the */ - /* `charset' field of the `FT_WinFNT_HeaderRec' structure to find out */ - /* which encoding is really present. For example, FT_WinFNT_ID_CP1251 */ - /* (204) means Windows code page 1251 (for Russian). */ - /* */ - /* FT_ENCODING_NONE is set if `platform_id' is `TT_PLATFORM_MACINTOSH' */ - /* and `encoding_id' is not `TT_MAC_ID_ROMAN' (otherwise it is set to */ - /* FT_ENCODING_APPLE_ROMAN). */ - /* */ - /* If `platform_id' is `TT_PLATFORM_MACINTOSH', use the function */ - /* `FT_Get_CMap_Language_ID' to query the Mac language ID which may be */ - /* needed to be able to distinguish Apple encoding variants. See */ - /* */ - /* http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/README.TXT */ - /* */ - /* to get an idea how to do that. Basically, if the language ID is 0, */ - /* dont use it, otherwise subtract 1 from the language ID. Then */ - /* examine `encoding_id'. If, for example, `encoding_id' is */ - /* `TT_MAC_ID_ROMAN' and the language ID (minus 1) is */ - /* `TT_MAC_LANGID_GREEK', it is the Greek encoding, not Roman. */ - /* `TT_MAC_ID_ARABIC' with `TT_MAC_LANGID_FARSI' means the Farsi */ - /* variant the Arabic encoding. */ - /* */ - typedef enum FT_Encoding_ - { - FT_ENC_TAG( FT_ENCODING_NONE, 0, 0, 0, 0 ), - - FT_ENC_TAG( FT_ENCODING_MS_SYMBOL, 's', 'y', 'm', 'b' ), - FT_ENC_TAG( FT_ENCODING_UNICODE, 'u', 'n', 'i', 'c' ), - - FT_ENC_TAG( FT_ENCODING_SJIS, 's', 'j', 'i', 's' ), - FT_ENC_TAG( FT_ENCODING_GB2312, 'g', 'b', ' ', ' ' ), - FT_ENC_TAG( FT_ENCODING_BIG5, 'b', 'i', 'g', '5' ), - FT_ENC_TAG( FT_ENCODING_WANSUNG, 'w', 'a', 'n', 's' ), - FT_ENC_TAG( FT_ENCODING_JOHAB, 'j', 'o', 'h', 'a' ), - - /* for backwards compatibility */ - FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS, - FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312, - FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5, - FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG, - FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB, - - FT_ENC_TAG( FT_ENCODING_ADOBE_STANDARD, 'A', 'D', 'O', 'B' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_EXPERT, 'A', 'D', 'B', 'E' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_CUSTOM, 'A', 'D', 'B', 'C' ), - FT_ENC_TAG( FT_ENCODING_ADOBE_LATIN_1, 'l', 'a', 't', '1' ), - - FT_ENC_TAG( FT_ENCODING_OLD_LATIN_2, 'l', 'a', 't', '2' ), - - FT_ENC_TAG( FT_ENCODING_APPLE_ROMAN, 'a', 'r', 'm', 'n' ) - - } FT_Encoding; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_encoding_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated; use the corresponding @FT_Encoding */ - /* values instead. */ - /* */ - /* <Values> */ - /* ft_encoding_none :: see @FT_ENCODING_NONE */ - /* ft_encoding_unicode :: see @FT_ENCODING_UNICODE */ - /* ft_encoding_latin_2 :: see @FT_ENCODING_OLD_LATIN_2 */ - /* ft_encoding_symbol :: see @FT_ENCODING_MS_SYMBOL */ - /* ft_encoding_sjis :: see @FT_ENCODING_SJIS */ - /* ft_encoding_gb2312 :: see @FT_ENCODING_GB2312 */ - /* ft_encoding_big5 :: see @FT_ENCODING_BIG5 */ - /* ft_encoding_wansung :: see @FT_ENCODING_WANSUNG */ - /* ft_encoding_johab :: see @FT_ENCODING_JOHAB */ - /* */ - /* ft_encoding_adobe_standard :: see @FT_ENCODING_ADOBE_STANDARD */ - /* ft_encoding_adobe_expert :: see @FT_ENCODING_ADOBE_EXPERT */ - /* ft_encoding_adobe_custom :: see @FT_ENCODING_ADOBE_CUSTOM */ - /* ft_encoding_latin_1 :: see @FT_ENCODING_ADOBE_LATIN_1 */ - /* */ - /* ft_encoding_apple_roman :: see @FT_ENCODING_APPLE_ROMAN */ - /* */ -#define ft_encoding_none FT_ENCODING_NONE -#define ft_encoding_unicode FT_ENCODING_UNICODE -#define ft_encoding_symbol FT_ENCODING_MS_SYMBOL -#define ft_encoding_latin_1 FT_ENCODING_ADOBE_LATIN_1 -#define ft_encoding_latin_2 FT_ENCODING_OLD_LATIN_2 -#define ft_encoding_sjis FT_ENCODING_SJIS -#define ft_encoding_gb2312 FT_ENCODING_GB2312 -#define ft_encoding_big5 FT_ENCODING_BIG5 -#define ft_encoding_wansung FT_ENCODING_WANSUNG -#define ft_encoding_johab FT_ENCODING_JOHAB - -#define ft_encoding_adobe_standard FT_ENCODING_ADOBE_STANDARD -#define ft_encoding_adobe_expert FT_ENCODING_ADOBE_EXPERT -#define ft_encoding_adobe_custom FT_ENCODING_ADOBE_CUSTOM -#define ft_encoding_apple_roman FT_ENCODING_APPLE_ROMAN - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_CharMapRec */ - /* */ - /* <Description> */ - /* The base charmap structure. */ - /* */ - /* <Fields> */ - /* face :: A handle to the parent face object. */ - /* */ - /* encoding :: An @FT_Encoding tag identifying the charmap. Use */ - /* this with @FT_Select_Charmap. */ - /* */ - /* platform_id :: An ID number describing the platform for the */ - /* following encoding ID. This comes directly from */ - /* the TrueType specification and should be emulated */ - /* for other formats. */ - /* */ - /* encoding_id :: A platform specific encoding number. This also */ - /* comes from the TrueType specification and should be */ - /* emulated similarly. */ - /* */ - typedef struct FT_CharMapRec_ - { - FT_Face face; - FT_Encoding encoding; - FT_UShort platform_id; - FT_UShort encoding_id; - - } FT_CharMapRec; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* B A S E O B J E C T C L A S S E S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Face_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an FT_Face_InternalRec structure, used to */ - /* model private data of a given @FT_Face object. */ - /* */ - /* This structure might change between releases of FreeType 2 and is */ - /* not generally available to client applications. */ - /* */ - typedef struct FT_Face_InternalRec_* FT_Face_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_FaceRec */ - /* */ - /* <Description> */ - /* FreeType root face class structure. A face object models the */ - /* resolution and point-size independent data found in a font file. */ - /* */ - /* <Fields> */ - /* num_faces :: In the case where the face is located in a */ - /* collection (i.e., a file which embeds */ - /* several faces), this is the total number of */ - /* faces found in the resource. 1 by default. */ - /* Accessing non-existent face indices causes */ - /* an error. */ - /* */ - /* face_index :: The index of the face in its font file. */ - /* Usually, this is 0 for all normal font */ - /* formats. It can be > 0 in the case of */ - /* collections (which embed several fonts in a */ - /* single resource/file). */ - /* */ - /* face_flags :: A set of bit flags that give important */ - /* information about the face; see the */ - /* @FT_FACE_FLAG_XXX constants for details. */ - /* */ - /* style_flags :: A set of bit flags indicating the style of */ - /* the face (i.e., italic, bold, underline, */ - /* etc). See the @FT_STYLE_FLAG_XXX */ - /* constants. */ - /* */ - /* num_glyphs :: The total number of glyphs in the face. */ - /* */ - /* family_name :: The face's family name. This is an ASCII */ - /* string, usually in English, which describes */ - /* the typeface's family (like `Times New */ - /* Roman', `Bodoni', `Garamond', etc). This */ - /* is a least common denominator used to list */ - /* fonts. Some formats (TrueType & OpenType) */ - /* provide localized and Unicode versions of */ - /* this string. Applications should use the */ - /* format specific interface to access them. */ - /* */ - /* style_name :: The face's style name. This is an ASCII */ - /* string, usually in English, which describes */ - /* the typeface's style (like `Italic', */ - /* `Bold', `Condensed', etc). Not all font */ - /* formats provide a style name, so this field */ - /* is optional, and can be set to NULL. As */ - /* for `family_name', some formats provide */ - /* localized/Unicode versions of this string. */ - /* Applications should use the format specific */ - /* interface to access them. */ - /* */ - /* num_fixed_sizes :: The number of fixed sizes available in this */ - /* face. This should be set to 0 for scalable */ - /* fonts, unless its face includes a set of */ - /* glyphs (called a `strike') for the */ - /* specified sizes. */ - /* */ - /* available_sizes :: An array of sizes specifying the available */ - /* bitmap/graymap sizes that are contained in */ - /* in the font face. Should be set to NULL if */ - /* the field `num_fixed_sizes' is set to 0. */ - /* */ - /* num_charmaps :: The total number of character maps in the */ - /* face. */ - /* */ - /* charmaps :: A table of pointers to the face's charmaps. */ - /* Used to scan the list of available charmaps */ - /* -- this table might change after a call to */ - /* @FT_Attach_File or @FT_Attach_Stream (e.g. */ - /* if used to hook an additional encoding or */ - /* CMap to the face object). */ - /* */ - /* generic :: A field reserved for client uses. See the */ - /* @FT_Generic type description. */ - /* */ - /* bbox :: The font bounding box. Coordinates are */ - /* expressed in font units (see units_per_EM). */ - /* The box is large enough to contain any */ - /* glyph from the font. Thus, bbox.yMax can */ - /* be seen as the `maximal ascender', */ - /* bbox.yMin as the `minimal descender', and */ - /* the maximal glyph width is given by */ - /* `bbox.xMax-bbox.xMin' (not to be confused */ - /* with the maximal _advance_width_). Only */ - /* relevant for scalable formats. */ - /* */ - /* units_per_EM :: The number of font units per EM square for */ - /* this face. This is typically 2048 for */ - /* TrueType fonts, 1000 for Type1 fonts, and */ - /* should be set to the (unrealistic) value 1 */ - /* for fixed-sizes fonts. Only relevant for */ - /* scalable formats. */ - /* */ - /* ascender :: The face's ascender is the vertical */ - /* distance from the baseline to the topmost */ - /* point of any glyph in the face. This */ - /* field's value is positive, expressed in */ - /* font units. Some font designs use a value */ - /* different from `bbox.yMax'. Only relevant */ - /* for scalable formats. */ - /* */ - /* descender :: The face's descender is the vertical */ - /* distance from the baseline to the */ - /* bottommost point of any glyph in the face. */ - /* This field's value is *negative* for values */ - /* below the baseline. It is expressed in */ - /* font units. Some font designs use a value */ - /* different from `bbox.yMin'. Only relevant */ - /* for scalable formats. */ - /* */ - /* height :: The face's height is the vertical distance */ - /* from one baseline to the next when writing */ - /* several lines of text. Its value is always */ - /* positive, expressed in font units. The */ - /* value can be computed as */ - /* `ascender+descender+line_gap' where the */ - /* value of `line_gap' is also called */ - /* `external leading'. Only relevant for */ - /* scalable formats. */ - /* */ - /* max_advance_width :: The maximal advance width, in font units, */ - /* for all glyphs in this face. This can be */ - /* used to make word wrapping computations */ - /* faster. Only relevant for scalable */ - /* formats. */ - /* */ - /* max_advance_height :: The maximal advance height, in font units, */ - /* for all glyphs in this face. This is only */ - /* relevant for vertical layouts, and should */ - /* be set to the `height' for fonts that do */ - /* not provide vertical metrics. Only */ - /* relevant for scalable formats. */ - /* */ - /* underline_position :: The position, in font units, of the */ - /* underline line for this face. It's the */ - /* center of the underlining stem. Only */ - /* relevant for scalable formats. */ - /* */ - /* underline_thickness :: The thickness, in font units, of the */ - /* underline for this face. Only relevant for */ - /* scalable formats. */ - /* */ - /* glyph :: The face's associated glyph slot(s). This */ - /* object is created automatically with a new */ - /* face object. However, certain kinds of */ - /* applications (mainly tools like converters) */ - /* can need more than one slot to ease their */ - /* task. */ - /* */ - /* size :: The current active size for this face. */ - /* */ - /* charmap :: The current active charmap for this face. */ - /* */ - typedef struct FT_FaceRec_ - { - FT_Long num_faces; - FT_Long face_index; - - FT_Long face_flags; - FT_Long style_flags; - - FT_Long num_glyphs; - - FT_String* family_name; - FT_String* style_name; - - FT_Int num_fixed_sizes; - FT_Bitmap_Size* available_sizes; - - FT_Int num_charmaps; - FT_CharMap* charmaps; - - FT_Generic generic; - - /*# the following are only relevant to scalable outlines */ - FT_BBox bbox; - - FT_UShort units_per_EM; - FT_Short ascender; - FT_Short descender; - FT_Short height; - - FT_Short max_advance_width; - FT_Short max_advance_height; - - FT_Short underline_position; - FT_Short underline_thickness; - - FT_GlyphSlot glyph; - FT_Size size; - FT_CharMap charmap; - - /*@private begin */ - - FT_Driver driver; - FT_Memory memory; - FT_Stream stream; - - FT_ListRec sizes_list; - - FT_Generic autohint; - void* extensions; - - FT_Face_Internal internal; - - /*@private end */ - - } FT_FaceRec; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_FACE_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit flags used in the `face_flags' field of the */ - /* @FT_FaceRec structure. They inform client applications of */ - /* properties of the corresponding face. */ - /* */ - /* <Values> */ - /* FT_FACE_FLAG_SCALABLE :: */ - /* Indicates that the face provides vectorial outlines. This */ - /* doesn't prevent embedded bitmaps, i.e., a face can have both */ - /* this bit and @FT_FACE_FLAG_FIXED_SIZES set. */ - /* */ - /* FT_FACE_FLAG_FIXED_SIZES :: */ - /* Indicates that the face contains `fixed sizes', i.e., bitmap */ - /* strikes for some given pixel sizes. See the `num_fixed_sizes' */ - /* and `available_sizes' fields of @FT_FaceRec. */ - /* */ - /* FT_FACE_FLAG_FIXED_WIDTH :: */ - /* Indicates that the face contains fixed-width characters (like */ - /* Courier, Lucido, MonoType, etc.). */ - /* */ - /* FT_FACE_FLAG_SFNT :: */ - /* Indicates that the face uses the `sfnt' storage scheme. For */ - /* now, this means TrueType and OpenType. */ - /* */ - /* FT_FACE_FLAG_HORIZONTAL :: */ - /* Indicates that the face contains horizontal glyph metrics. This */ - /* should be set for all common formats. */ - /* */ - /* FT_FACE_FLAG_VERTICAL :: */ - /* Indicates that the face contains vertical glyph metrics. This */ - /* is only available in some formats, not all of them. */ - /* */ - /* FT_FACE_FLAG_KERNING :: */ - /* Indicates that the face contains kerning information. If set, */ - /* the kerning distance can be retrieved through the function */ - /* @FT_Get_Kerning. Note that if unset, this function will always */ - /* return the vector (0,0). */ - /* */ - /* FT_FACE_FLAG_FAST_GLYPHS :: */ - /* THIS FLAG IS DEPRECATED. DO NOT USE OR TEST IT. */ - /* */ - /* FT_FACE_FLAG_MULTIPLE_MASTERS :: */ - /* Indicates that the font contains multiple masters and is capable */ - /* of interpolating between them. See the multiple-masters */ - /* specific API for details. */ - /* */ - /* FT_FACE_FLAG_GLYPH_NAMES :: */ - /* Indicates that the font contains glyph names that can be */ - /* retrieved through @FT_Get_Glyph_Name. Note that some TrueType */ - /* fonts contain broken glyph name tables. Use the function */ - /* @FT_Has_PS_Glyph_Names when needed. */ - /* */ - /* FT_FACE_FLAG_EXTERNAL_STREAM :: */ - /* Used internally by FreeType to indicate that a face's stream was */ - /* provided by the client application and should not be destroyed */ - /* when @FT_Done_Face is called. Don't read or test this flag. */ - /* */ -#define FT_FACE_FLAG_SCALABLE ( 1L << 0 ) -#define FT_FACE_FLAG_FIXED_SIZES ( 1L << 1 ) -#define FT_FACE_FLAG_FIXED_WIDTH ( 1L << 2 ) -#define FT_FACE_FLAG_SFNT ( 1L << 3 ) -#define FT_FACE_FLAG_HORIZONTAL ( 1L << 4 ) -#define FT_FACE_FLAG_VERTICAL ( 1L << 5 ) -#define FT_FACE_FLAG_KERNING ( 1L << 6 ) -#define FT_FACE_FLAG_FAST_GLYPHS ( 1L << 7 ) -#define FT_FACE_FLAG_MULTIPLE_MASTERS ( 1L << 8 ) -#define FT_FACE_FLAG_GLYPH_NAMES ( 1L << 9 ) -#define FT_FACE_FLAG_EXTERNAL_STREAM ( 1L << 10 ) - - /* */ - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_HAS_HORIZONTAL( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains */ - /* horizontal metrics (this is true for all font formats though). */ - /* */ - /* @also: */ - /* @FT_HAS_VERTICAL can be used to check for vertical metrics. */ - /* */ -#define FT_HAS_HORIZONTAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_HORIZONTAL ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_HAS_VERTICAL( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains vertical */ - /* metrics. */ - /* */ -#define FT_HAS_VERTICAL( face ) \ - ( face->face_flags & FT_FACE_FLAG_VERTICAL ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_HAS_KERNING( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains kerning */ - /* data that can be accessed with @FT_Get_Kerning. */ - /* */ -#define FT_HAS_KERNING( face ) \ - ( face->face_flags & FT_FACE_FLAG_KERNING ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_IS_SCALABLE( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains a */ - /* scalable font face (true for TrueType, Type 1, CID, and */ - /* OpenType/CFF font formats. */ - /* */ -#define FT_IS_SCALABLE( face ) \ - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_IS_SFNT( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains a font */ - /* whose format is based on the SFNT storage scheme. This usually */ - /* means: TrueType fonts, OpenType fonts, as well as SFNT-based */ - /* embedded bitmap fonts. */ - /* */ - /* If this macro is true, all functions defined in @FT_SFNT_NAMES_H */ - /* and @FT_TRUETYPE_TABLES_H are available. */ - /* */ -#define FT_IS_SFNT( face ) \ - ( face->face_flags & FT_FACE_FLAG_SFNT ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_IS_FIXED_WIDTH( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains a font */ - /* face that contains fixed-width (or "monospace", "fixed-pitch", */ - /* etc.) glyphs. */ - /* */ -#define FT_IS_FIXED_WIDTH( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_WIDTH ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_HAS_FIXED_SIZES( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains some */ - /* embedded bitmaps. See the `available_sizes' field of the */ - /* @FT_FaceRec structure. */ - /* */ -#define FT_HAS_FIXED_SIZES( face ) \ - ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) - - - /* */ - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_HAS_FAST_GLYPHS( face ) */ - /* */ - /* @description: */ - /* Deprecated; indicates that the face contains so-called "fast" */ - /* glyph bitmaps. */ - /* */ -#define FT_HAS_FAST_GLYPHS( face ) \ - ( face->face_flags & FT_FACE_FLAG_FAST_GLYPHS ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_HAS_GLYPH_NAMES( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains some */ - /* glyph names that can be accessed through @FT_Get_Glyph_Name. */ - /* */ -#define FT_HAS_GLYPH_NAMES( face ) \ - ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_HAS_MULTIPLE_MASTERS( face ) */ - /* */ - /* @description: */ - /* A macro that returns true whenever a face object contains some */ - /* multiple masters. The functions provided by */ - /* @FT_MULTIPLE_MASTERS_H are then available to choose the exact */ - /* design you want. */ - /* */ -#define FT_HAS_MULTIPLE_MASTERS( face ) \ - ( face->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS ) - - - /*************************************************************************/ - /* */ - /* <Constant> */ - /* FT_STYLE_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit-flags used to indicate the style of a given face. */ - /* These are used in the `style_flags' field of @FT_FaceRec. */ - /* */ - /* <Values> */ - /* FT_STYLE_FLAG_ITALIC :: */ - /* Indicates that a given face is italicized. */ - /* */ - /* FT_STYLE_FLAG_BOLD :: */ - /* Indicates that a given face is bold. */ - /* */ -#define FT_STYLE_FLAG_ITALIC ( 1 << 0 ) -#define FT_STYLE_FLAG_BOLD ( 1 << 1 ) - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Size_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an FT_Size_InternalRec structure, used to */ - /* model private data of a given FT_Size object. */ - /* */ - typedef struct FT_Size_InternalRec_* FT_Size_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Size_Metrics */ - /* */ - /* <Description> */ - /* The size metrics structure returned scaled important distances for */ - /* a given size object. */ - /* */ - /* <Fields> */ - /* x_ppem :: The character width, expressed in integer pixels. */ - /* This is the width of the EM square expressed in */ - /* pixels, hence the term `ppem' (pixels per EM). */ - /* */ - /* y_ppem :: The character height, expressed in integer pixels. */ - /* This is the height of the EM square expressed in */ - /* pixels, hence the term `ppem' (pixels per EM). */ - /* */ - /* x_scale :: A simple 16.16 fixed point format coefficient used */ - /* to scale horizontal distances expressed in font */ - /* units to fractional (26.6) pixel coordinates. */ - /* */ - /* y_scale :: A simple 16.16 fixed point format coefficient used */ - /* to scale vertical distances expressed in font */ - /* units to fractional (26.6) pixel coordinates. */ - /* */ - /* ascender :: The ascender, expressed in 26.6 fixed point */ - /* pixels. Positive for ascenders above the */ - /* baseline. */ - /* */ - /* descender :: The descender, expressed in 26.6 fixed point */ - /* pixels. Negative for descenders below the */ - /* baseline. */ - /* */ - /* height :: The text height, expressed in 26.6 fixed point */ - /* pixels. Always positive. */ - /* */ - /* max_advance :: Maximum horizontal advance, expressed in 26.6 */ - /* fixed point pixels. Always positive. */ - /* */ - /* <Note> */ - /* For scalable fonts, the values of `ascender', `descender', and */ - /* `height' are scaled versions of `face->ascender', */ - /* `face->descender', and `face->height', respectively. */ - /* */ - /* Unfortunately, due to glyph hinting, these values might not be */ - /* exact for certain fonts. They thus must be treated as unreliable */ - /* with an error margin of at least one pixel! */ - /* */ - /* Indeed, the only way to get the exact pixel ascender and descender */ - /* is to render _all_ glyphs. As this would be a definite */ - /* performance hit, it is up to client applications to perform such */ - /* computations. */ - /* */ - typedef struct FT_Size_Metrics_ - { - FT_UShort x_ppem; /* horizontal pixels per EM */ - FT_UShort y_ppem; /* vertical pixels per EM */ - - FT_Fixed x_scale; /* two scales used to convert font units */ - FT_Fixed y_scale; /* to 26.6 frac. pixel coordinates */ - - FT_Pos ascender; /* ascender in 26.6 frac. pixels */ - FT_Pos descender; /* descender in 26.6 frac. pixels */ - FT_Pos height; /* text height in 26.6 frac. pixels */ - FT_Pos max_advance; /* max horizontal advance, in 26.6 pixels */ - - } FT_Size_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SizeRec */ - /* */ - /* <Description> */ - /* FreeType root size class structure. A size object models the */ - /* resolution and pointsize dependent data of a given face. */ - /* */ - /* <Fields> */ - /* face :: Handle to the parent face object. */ - /* */ - /* generic :: A typeless pointer, which is unused by the FreeType */ - /* library or any of its drivers. It can be used by */ - /* client applications to link their own data to each size */ - /* object. */ - /* */ - /* metrics :: Metrics for this size object. This field is read-only. */ - /* */ - typedef struct FT_SizeRec_ - { - FT_Face face; /* parent face object */ - FT_Generic generic; /* generic pointer for client uses */ - FT_Size_Metrics metrics; /* size metrics */ - FT_Size_Internal internal; - - } FT_SizeRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SubGlyph */ - /* */ - /* <Description> */ - /* The subglyph structure is an internal object used to describe */ - /* subglyphs (for example, in the case of composites). */ - /* */ - /* <Note> */ - /* The subglyph implementation is not part of the high-level API, */ - /* hence the forward structure declaration. */ - /* */ - typedef struct FT_SubGlyphRec_* FT_SubGlyph; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Slot_Internal */ - /* */ - /* <Description> */ - /* An opaque handle to an FT_Slot_InternalRec structure, used to */ - /* model private data of a given FT_GlyphSlot object. */ - /* */ - typedef struct FT_Slot_InternalRec_* FT_Slot_Internal; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_GlyphSlotRec */ - /* */ - /* <Description> */ - /* FreeType root glyph slot class structure. A glyph slot is a */ - /* container where individual glyphs can be loaded, be they */ - /* vectorial or bitmap/graymaps. */ - /* */ - /* <Fields> */ - /* library :: A handle to the FreeType library instance */ - /* this slot belongs to. */ - /* */ - /* face :: A handle to the parent face object. */ - /* */ - /* next :: In some cases (like some font tools), several */ - /* glyph slots per face object can be a good */ - /* thing. As this is rare, the glyph slots are */ - /* listed through a direct, single-linked list */ - /* using its `next' field. */ - /* */ - /* generic :: A typeless pointer which is unused by the */ - /* FreeType library or any of its drivers. It */ - /* can be used by client applications to link */ - /* their own data to each glyph slot object. */ - /* */ - /* metrics :: The metrics of the last loaded glyph in the */ - /* slot. The returned values depend on the last */ - /* load flags (see the @FT_Load_Glyph API */ - /* function) and can be expressed either in 26.6 */ - /* fractional pixels or font units. */ - /* */ - /* Note that even when the glyph image is */ - /* transformed, the metrics are not. */ - /* */ - /* linearHoriAdvance :: For scalable formats only, this field holds */ - /* the linearly scaled horizontal advance width */ - /* for the glyph (i.e. the scaled and unhinted */ - /* value of the hori advance). This can be */ - /* important to perform correct WYSIWYG layout. */ - /* */ - /* Note that this value is expressed by default */ - /* in 16.16 pixels. However, when the glyph is */ - /* loaded with the FT_LOAD_LINEAR_DESIGN flag, */ - /* this field contains simply the value of the */ - /* advance in original font units. */ - /* */ - /* linearVertAdvance :: For scalable formats only, this field holds */ - /* the linearly scaled vertical advance height */ - /* for the glyph. See linearHoriAdvance for */ - /* comments. */ - /* */ - /* advance :: This is the transformed advance width for the */ - /* glyph. */ - /* */ - /* format :: This field indicates the format of the image */ - /* contained in the glyph slot. Typically */ - /* FT_GLYPH_FORMAT_BITMAP, */ - /* FT_GLYPH_FORMAT_OUTLINE, and */ - /* FT_GLYPH_FORMAT_COMPOSITE, but others are */ - /* possible. */ - /* */ - /* bitmap :: This field is used as a bitmap descriptor */ - /* when the slot format is */ - /* FT_GLYPH_FORMAT_BITMAP. Note that the */ - /* address and content of the bitmap buffer can */ - /* change between calls of @FT_Load_Glyph and a */ - /* few other functions. */ - /* */ - /* bitmap_left :: This is the bitmap's left bearing expressed */ - /* in integer pixels. Of course, this is only */ - /* valid if the format is */ - /* FT_GLYPH_FORMAT_BITMAP. */ - /* */ - /* bitmap_top :: This is the bitmap's top bearing expressed in */ - /* integer pixels. Remember that this is the */ - /* distance from the baseline to the top-most */ - /* glyph scanline, upwards y-coordinates being */ - /* *positive*. */ - /* */ - /* outline :: The outline descriptor for the current glyph */ - /* image if its format is */ - /* FT_GLYPH_FORMAT_OUTLINE. */ - /* */ - /* num_subglyphs :: The number of subglyphs in a composite glyph. */ - /* This field is only valid for the composite */ - /* glyph format that should normally only be */ - /* loaded with the @FT_LOAD_NO_RECURSE flag. */ - /* For now this is internal to FreeType. */ - /* */ - /* subglyphs :: An array of subglyph descriptors for */ - /* composite glyphs. There are `num_subglyphs' */ - /* elements in there. Currently internal to */ - /* FreeType. */ - /* */ - /* control_data :: Certain font drivers can also return the */ - /* control data for a given glyph image (e.g. */ - /* TrueType bytecode, Type 1 charstrings, etc.). */ - /* This field is a pointer to such data. */ - /* */ - /* control_len :: This is the length in bytes of the control */ - /* data. */ - /* */ - /* other :: Really wicked formats can use this pointer to */ - /* present their own glyph image to client apps. */ - /* Note that the app will need to know about the */ - /* image format. */ - /* */ - /* lsb_delta :: The difference between hinted and unhinted */ - /* left side bearing while autohinting is */ - /* active. Zero otherwise. */ - /* */ - /* rsb_delta :: The difference between hinted and unhinted */ - /* right side bearing while autohinting is */ - /* active. Zero otherwise. */ - /* */ - /* <Note> */ - /* If @FT_Load_Glyph is called with default flags (see */ - /* @FT_LOAD_DEFAULT) the glyph image is loaded in the glyph slot in */ - /* its native format (e.g. a vectorial outline for TrueType and */ - /* Type 1 formats). */ - /* */ - /* This image can later be converted into a bitmap by calling */ - /* @FT_Render_Glyph. This function finds the current renderer for */ - /* the native image's format then invokes it. */ - /* */ - /* The renderer is in charge of transforming the native image through */ - /* the slot's face transformation fields, then convert it into a */ - /* bitmap that is returned in `slot->bitmap'. */ - /* */ - /* Note that `slot->bitmap_left' and `slot->bitmap_top' are also used */ - /* to specify the position of the bitmap relative to the current pen */ - /* position (e.g. coordinates [0,0] on the baseline). Of course, */ - /* `slot->format' is also changed to `FT_GLYPH_FORMAT_BITMAP' . */ - /* */ - /* <Note> */ - /* Here a small pseudo code fragment which shows how to use */ - /* `lsb_delta' and `rsb_delta': */ - /* */ - /* { */ - /* FT_Pos origin_x = 0; */ - /* FT_Pos prev_rsb_delta = 0; */ - /* */ - /* */ - /* for all glyphs do */ - /* <compute kern between current and previous glyph and add it to */ - /* `origin_x'> */ - /* */ - /* <load glyph with `FT_Load_Glyph'> */ - /* */ - /* if ( prev_rsb_delta - face->glyph->lsb_delta >= 32 ) */ - /* origin_x -= 64; */ - /* else if ( prev_rsb_delta - face->glyph->lsb_delta < -32 ) */ - /* origin_x += 64; */ - /* */ - /* prev_rsb_delta = face->glyph->rsb_delta; */ - /* */ - /* <save glyph image, or render glyph, or ...> */ - /* */ - /* origin_x += face->glyph->advance.x; */ - /* endfor */ - /* } */ - /* */ - typedef struct FT_GlyphSlotRec_ - { - FT_Library library; - FT_Face face; - FT_GlyphSlot next; - FT_UInt reserved; /* retained for binary compatibility */ - FT_Generic generic; - - FT_Glyph_Metrics metrics; - FT_Fixed linearHoriAdvance; - FT_Fixed linearVertAdvance; - FT_Vector advance; - - FT_Glyph_Format format; - - FT_Bitmap bitmap; - FT_Int bitmap_left; - FT_Int bitmap_top; - - FT_Outline outline; - - FT_UInt num_subglyphs; - FT_SubGlyph subglyphs; - - void* control_data; - long control_len; - - FT_Pos lsb_delta; - FT_Pos rsb_delta; - - void* other; - - FT_Slot_Internal internal; - - } FT_GlyphSlotRec; - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* F U N C T I O N S */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Init_FreeType */ - /* */ - /* <Description> */ - /* Initializes a new FreeType library object. The set of modules */ - /* that are registered by this function is determined at build time. */ - /* */ - /* <Output> */ - /* alibrary :: A handle to a new library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Init_FreeType( FT_Library *alibrary ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Library_Version */ - /* */ - /* <Description> */ - /* Return the version of the FreeType library being used. This is */ - /* useful when dynamically linking to the library, since one cannot */ - /* use the macros FT_FREETYPE_MAJOR, FT_FREETYPE_MINOR, and */ - /* FT_FREETYPE_PATCH. */ - /* */ - /* <Input> */ - /* library :: A source library handle. */ - /* */ - /* <Output> */ - /* amajor :: The major version number. */ - /* */ - /* aminor :: The minor version number. */ - /* */ - /* apatch :: The patch version number. */ - /* */ - /* <Note> */ - /* The reason why this function takes a 'library' argument is because */ - /* certain programs implement library initialization in a custom way */ - /* that doesn't use `FT_Init_FreeType'. */ - /* */ - /* In such cases, the library version might not be available before */ - /* the library object has been created. */ - /* */ - FT_EXPORT( void ) - FT_Library_Version( FT_Library library, - FT_Int *amajor, - FT_Int *aminor, - FT_Int *apatch ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_FreeType */ - /* */ - /* <Description> */ - /* Destroys a given FreeType library object and all of its childs, */ - /* including resources, drivers, faces, sizes, etc. */ - /* */ - /* <Input> */ - /* library :: A handle to the target library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_FreeType( FT_Library library ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_OPEN_XXX */ - /* */ - /* <Description> */ - /* A list of bit-field constants used within the `flags' field of the */ - /* @FT_Open_Args structure. */ - /* */ - /* <Values> */ - /* FT_OPEN_MEMORY :: This is a memory-based stream. */ - /* */ - /* FT_OPEN_STREAM :: Copy the stream from the `stream' field. */ - /* */ - /* FT_OPEN_PATHNAME :: Create a new input stream from a C */ - /* path name. */ - /* */ - /* FT_OPEN_DRIVER :: Use the `driver' field. */ - /* */ - /* FT_OPEN_PARAMS :: Use the `num_params' & `params' field. */ - /* */ - /* ft_open_memory :: Deprecated; use @FT_OPEN_MEMORY instead. */ - /* */ - /* ft_open_stream :: Deprecated; use @FT_OPEN_STREAM instead. */ - /* */ - /* ft_open_pathname :: Deprecated; use @FT_OPEN_PATHNAME instead. */ - /* */ - /* ft_open_driver :: Deprecated; use @FT_OPEN_DRIVER instead. */ - /* */ - /* ft_open_params :: Deprecated; use @FT_OPEN_PARAMS instead. */ - /* */ - /* <Note> */ - /* The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME' */ - /* flags are mutually exclusive. */ - /* */ -#define FT_OPEN_MEMORY 0x1 -#define FT_OPEN_STREAM 0x2 -#define FT_OPEN_PATHNAME 0x4 -#define FT_OPEN_DRIVER 0x8 -#define FT_OPEN_PARAMS 0x10 - -#define ft_open_memory FT_OPEN_MEMORY /* deprecated */ -#define ft_open_stream FT_OPEN_STREAM /* deprecated */ -#define ft_open_pathname FT_OPEN_PATHNAME /* deprecated */ -#define ft_open_driver FT_OPEN_DRIVER /* deprecated */ -#define ft_open_params FT_OPEN_PARAMS /* deprecated */ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Parameter */ - /* */ - /* <Description> */ - /* A simple structure used to pass more or less generic parameters */ - /* to @FT_Open_Face. */ - /* */ - /* <Fields> */ - /* tag :: A 4-byte identification tag. */ - /* */ - /* data :: A pointer to the parameter data. */ - /* */ - /* <Note> */ - /* The id and function of parameters are driver-specific. */ - /* */ - typedef struct FT_Parameter_ - { - FT_ULong tag; - FT_Pointer data; - - } FT_Parameter; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Open_Args */ - /* */ - /* <Description> */ - /* A structure used to indicate how to open a new font file/stream. */ - /* A pointer to such a structure can be used as a parameter for the */ - /* functions @FT_Open_Face and @FT_Attach_Stream. */ - /* */ - /* <Fields> */ - /* flags :: A set of bit flags indicating how to use the */ - /* structure. */ - /* */ - /* memory_base :: The first byte of the file in memory. */ - /* */ - /* memory_size :: The size in bytes of the file in memory. */ - /* */ - /* pathname :: A pointer to an 8-bit file pathname. */ - /* */ - /* stream :: A handle to a source stream object. */ - /* */ - /* driver :: This field is exclusively used by @FT_Open_Face; */ - /* it simply specifies the font driver to use to open */ - /* the face. If set to 0, FreeType will try to load */ - /* the face with each one of the drivers in its list. */ - /* */ - /* num_params :: The number of extra parameters. */ - /* */ - /* params :: Extra parameters passed to the font driver when */ - /* opening a new face. */ - /* */ - /* <Note> */ - /* The stream type is determined by the contents of `flags' which */ - /* are tested in the following order by @FT_Open_Face: */ - /* */ - /* If the `FT_OPEN_MEMORY' bit is set, assume that this is a */ - /* memory file of `memory_size' bytes,located at `memory_address'. */ - /* */ - /* Otherwise, if the `FT_OPEN_STREAM' bit is set, assume that a */ - /* custom input stream `stream' is used. */ - /* */ - /* Otherwise, if the `FT_OPEN_PATHNAME' bit is set, assume that this */ - /* is a normal file and use `pathname' to open it. */ - /* */ - /* If the `FT_OPEN_DRIVER' bit is set, @FT_Open_Face will only try to */ - /* open the file with the driver whose handler is in `driver'. */ - /* */ - /* If the `FT_OPEN_PARAMS' bit is set, the parameters given by */ - /* `num_params' and `params' will be used. They are ignored */ - /* otherwise. */ - /* */ - typedef struct FT_Open_Args_ - { - FT_UInt flags; - const FT_Byte* memory_base; - FT_Long memory_size; - FT_String* pathname; - FT_Stream stream; - FT_Module driver; - FT_Int num_params; - FT_Parameter* params; - - } FT_Open_Args; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face */ - /* */ - /* <Description> */ - /* Creates a new face object from a given resource and typeface index */ - /* using a pathname to the font file. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* pathname :: A path to the font file. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Unlike FreeType 1.x, this function automatically creates a glyph */ - /* slot for the face object which can be accessed directly through */ - /* `face->glyph'. */ - /* */ - /* @FT_New_Face can be used to determine and/or check the font format */ - /* of a given font resource. If the `face_index' field is negative, */ - /* the function will _not_ return any face handle in `aface'; the */ - /* return value is 0 if the font format is recognized, or non-zero */ - /* otherwise. */ - /* */ - /* Each new face object created with this function also owns a */ - /* default @FT_Size object, accessible as `face->size'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face( FT_Library library, - const char* filepathname, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Memory_Face */ - /* */ - /* <Description> */ - /* Creates a new face object from a given resource and typeface index */ - /* using a font file already loaded into memory. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* file_base :: A pointer to the beginning of the font data. */ - /* */ - /* file_size :: The size of the memory chunk used by the font data. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The font data bytes are used _directly_ by the @FT_Face object. */ - /* This means that they are not copied, and that the client is */ - /* responsible for releasing/destroying them _after_ the */ - /* corresponding call to @FT_Done_Face . */ - /* */ - /* Unlike FreeType 1.x, this function automatically creates a glyph */ - /* slot for the face object which can be accessed directly through */ - /* `face->glyph'. */ - /* */ - /* @FT_New_Memory_Face can be used to determine and/or check the font */ - /* format of a given font resource. If the `face_index' field is */ - /* negative, the function will _not_ return any face handle in */ - /* `aface'; the return value is 0 if the font format is recognized, */ - /* or non-zero otherwise. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Memory_Face( FT_Library library, - const FT_Byte* file_base, - FT_Long file_size, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Open_Face */ - /* */ - /* <Description> */ - /* Opens a face object from a given resource and typeface index using */ - /* an `FT_Open_Args' structure. If the face object doesn't exist, it */ - /* will be created. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* args :: A pointer to an `FT_Open_Args' structure which must */ - /* be filled by the caller. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Unlike FreeType 1.x, this function automatically creates a glyph */ - /* slot for the face object which can be accessed directly through */ - /* `face->glyph'. */ - /* */ - /* @FT_Open_Face can be used to determine and/or check the font */ - /* format of a given font resource. If the `face_index' field is */ - /* negative, the function will _not_ return any face handle in */ - /* `*face'; the return value is 0 if the font format is recognized, */ - /* or non-zero otherwise. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Open_Face( FT_Library library, - const FT_Open_Args* args, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Attach_File */ - /* */ - /* <Description> */ - /* `Attaches' a given font file to an existing face. This is usually */ - /* to read additional information for a single face object. For */ - /* example, it is used to read the AFM files that come with Type 1 */ - /* fonts in order to add kerning data and other metrics. */ - /* */ - /* <InOut> */ - /* face :: The target face object. */ - /* */ - /* <Input> */ - /* filepathname :: An 8-bit pathname naming the `metrics' file. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* If your font file is in memory, or if you want to provide your */ - /* own input stream object, use @FT_Attach_Stream. */ - /* */ - /* The meaning of the `attach' action (i.e., what really happens when */ - /* the new file is read) is not fixed by FreeType itself. It really */ - /* depends on the font format (and thus the font driver). */ - /* */ - /* Client applications are expected to know what they are doing */ - /* when invoking this function. Most drivers simply do not implement */ - /* file attachments. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Attach_File( FT_Face face, - const char* filepathname ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Attach_Stream */ - /* */ - /* <Description> */ - /* This function is similar to @FT_Attach_File with the exception */ - /* that it reads the attachment from an arbitrary stream. */ - /* */ - /* <InOut> */ - /* face :: The target face object. */ - /* */ - /* <Input> */ - /* parameters :: A pointer to an FT_Open_Args structure used to */ - /* describe the input stream to FreeType. */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The meaning of the `attach' (i.e. what really happens when the */ - /* new file is read) is not fixed by FreeType itself. It really */ - /* depends on the font format (and thus the font driver). */ - /* */ - /* Client applications are expected to know what they are doing */ - /* when invoking this function. Most drivers simply do not implement */ - /* file attachments. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Attach_Stream( FT_Face face, - FT_Open_Args* parameters ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Face */ - /* */ - /* <Description> */ - /* Discards a given face object, as well as all of its child slots */ - /* and sizes. */ - /* */ - /* <Input> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Face( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Char_Size */ - /* */ - /* <Description> */ - /* Sets the character dimensions of a given face object. The */ - /* `char_width' and `char_height' values are used for the width and */ - /* height, respectively, expressed in 26.6 fractional points. */ - /* */ - /* If the horizontal or vertical resolution values are zero, a */ - /* default value of 72dpi is used. Similarly, if one of the */ - /* character dimensions is zero, its value is set equal to the other. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object. */ - /* */ - /* <Input> */ - /* char_width :: The character width, in 26.6 fractional points. */ - /* */ - /* char_height :: The character height, in 26.6 fractional */ - /* points. */ - /* */ - /* horz_resolution :: The horizontal resolution. */ - /* */ - /* vert_resolution :: The vertical resolution. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* When dealing with fixed-size faces (i.e., non-scalable formats), */ - /* @FT_Set_Pixel_Sizes provides a more convenient interface. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Char_Size( FT_Face face, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Pixel_Sizes */ - /* */ - /* <Description> */ - /* Sets the character dimensions of a given face object. The width */ - /* and height are expressed in integer pixels. */ - /* */ - /* If one of the character dimensions is zero, its value is set equal */ - /* to the other. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* pixel_width :: The character width, in integer pixels. */ - /* */ - /* pixel_height :: The character height, in integer pixels. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The values of `pixel_width' and `pixel_height' correspond to the */ - /* pixel values of the _typographic_ character size, which are NOT */ - /* necessarily the same as the dimensions of the glyph `bitmap */ - /* cells'. */ - /* */ - /* The `character size' is really the size of an abstract square */ - /* called the `EM', used to design the font. However, depending */ - /* on the font design, glyphs will be smaller or greater than the */ - /* EM. */ - /* */ - /* This means that setting the pixel size to, say, 8x8 doesn't */ - /* guarantee in any way that you will get glyph bitmaps that all fit */ - /* within an 8x8 cell (sometimes even far from it). */ - /* */ - /* For bitmap fonts, `pixel_height' usually is a reliable value for */ - /* the height of the bitmap cell. Drivers for bitmap font formats */ - /* which contain a single bitmap strike only (BDF, PCF, FNT) ignore */ - /* `pixel_width'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Pixel_Sizes( FT_Face face, - FT_UInt pixel_width, - FT_UInt pixel_height ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Load_Glyph */ - /* */ - /* <Description> */ - /* A function used to load a single glyph within a given glyph slot, */ - /* for a given size. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object where the glyph */ - /* will be loaded. */ - /* */ - /* <Input> */ - /* glyph_index :: The index of the glyph in the font file. For */ - /* CID-keyed fonts (either in PS or in CFF format) */ - /* this argument specifies the CID value. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* @FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* If the glyph image is not a bitmap, and if the bit flag */ - /* FT_LOAD_IGNORE_TRANSFORM is unset, the glyph image will be */ - /* transformed with the information passed to a previous call to */ - /* @FT_Set_Transform. */ - /* */ - /* Note that this also transforms the `face.glyph.advance' field, but */ - /* *not* the values in `face.glyph.metrics'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Load_Glyph( FT_Face face, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Load_Char */ - /* */ - /* <Description> */ - /* A function used to load a single glyph within a given glyph slot, */ - /* for a given size, according to its character code. */ - /* */ - /* <InOut> */ - /* face :: A handle to a target face object where the glyph */ - /* will be loaded. */ - /* */ - /* <Input> */ - /* char_code :: The glyph's character code, according to the */ - /* current charmap used in the face. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* @FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* If the face has no current charmap, or if the character code */ - /* is not defined in the charmap, this function will return an */ - /* error. */ - /* */ - /* If the glyph image is not a bitmap, and if the bit flag */ - /* FT_LOAD_IGNORE_TRANSFORM is unset, the glyph image will be */ - /* transformed with the information passed to a previous call to */ - /* @FT_Set_Transform. */ - /* */ - /* Note that this also transforms the `face.glyph.advance' field, but */ - /* *not* the values in `face.glyph.metrics'. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Load_Char( FT_Face face, - FT_ULong char_code, - FT_Int32 load_flags ); - - - /*************************************************************************** - * - * @enum: - * FT_LOAD_XXX - * - * @description: - * A list of bit-field constants, used with @FT_Load_Glyph to indicate - * what kind of operations to perform during glyph loading. - * - * @values: - * FT_LOAD_DEFAULT :: - * Corresponding to 0, this value is used a default glyph load. In this - * case, the following will happen: - * - * 1. FreeType looks for a bitmap for the glyph corresponding to the - * face's current size. If one is found, the function returns. The - * bitmap data can be accessed from the glyph slot (see note below). - * - * 2. If no embedded bitmap is searched or found, FreeType looks for a - * scalable outline. If one is found, it is loaded from the font - * file, scaled to device pixels, then "hinted" to the pixel grid in - * order to optimize it. The outline data can be accessed from the - * glyph slot (see note below). - * - * Note that by default, the glyph loader doesn't render outlines into - * bitmaps. The following flags are used to modify this default - * behaviour to more specific and useful cases. - * - * FT_LOAD_NO_SCALE :: - * Don't scale the vector outline being loaded to 26.6 fractional - * pixels, but kept in font units. Note that this also disables - * hinting and the loading of embedded bitmaps. You should only use it - * when you want to retrieve the original glyph outlines in font units. - * - * FT_LOAD_NO_HINTING :: - * Don't hint glyph outlines after their scaling to device pixels. - * This generally generates "blurrier" glyphs in anti-aliased modes. - * - * This flag is ignored if @FT_LOAD_NO_SCALE is set. - * - * FT_LOAD_RENDER :: - * Render the glyph outline immediately into a bitmap before the glyph - * loader returns. By default, the glyph is rendered for the - * @FT_RENDER_MODE_NORMAL mode, which corresponds to 8-bit anti-aliased - * bitmaps using 256 opacity levels. You can use either - * @FT_LOAD_TARGET_MONO or @FT_LOAD_MONOCHROME to render 1-bit - * monochrome bitmaps. - * - * This flag is ignored if @FT_LOAD_NO_SCALE is set. - * - * FT_LOAD_NO_BITMAP :: - * Don't look for bitmaps when loading the glyph. Only scalable - * outlines will be loaded when available, and scaled, hinted, or - * rendered depending on other bit flags. - * - * This does not prevent you from rendering outlines to bitmaps - * with @FT_LOAD_RENDER, however. - * - * FT_LOAD_VERTICAL_LAYOUT :: - * Prepare the glyph image for vertical text layout. This basically - * means that `face.glyph.advance' will correspond to the vertical - * advance height (instead of the default horizontal advance width), - * and that the glyph image will be translated to match the vertical - * bearings positions. - * - * FT_LOAD_FORCE_AUTOHINT :: - * Force the use of the FreeType auto-hinter when a glyph outline is - * loaded. You shouldn't need this in a typical application, since it - * is mostly used to experiment with its algorithm. - * - * FT_LOAD_CROP_BITMAP :: - * Indicates that the glyph loader should try to crop the bitmap (i.e., - * remove all space around its black bits) when loading it. This is - * only useful when loading embedded bitmaps in certain fonts, since - * bitmaps rendered with @FT_LOAD_RENDER are always cropped by default. - * - * FT_LOAD_PEDANTIC :: - * Indicates that the glyph loader should perform pedantic - * verifications during glyph loading, rejecting invalid fonts. This - * is mostly used to detect broken glyphs in fonts. By default, - * FreeType tries to handle broken fonts also. - * - * FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH :: - * Indicates that the glyph loader should ignore the global advance - * width defined in the font. As far as we know, this is only used by - * the X-TrueType font server, in order to deal correctly with the - * incorrect metrics contained in DynaLab's TrueType CJK fonts. - * - * FT_LOAD_NO_RECURSE :: - * This flag is only used internally. It merely indicates that the - * glyph loader should not load composite glyphs recursively. Instead, - * it should set the `num_subglyph' and `subglyphs' values of the glyph - * slot accordingly, and set "glyph->format" to - * @FT_GLYPH_FORMAT_COMPOSITE. - * - * The description of sub-glyphs is not available to client - * applications for now. - * - * FT_LOAD_IGNORE_TRANSFORM :: - * Indicates that the glyph loader should not try to transform the - * loaded glyph image. This doesn't prevent scaling, hinting, or - * rendering. - * - * FT_LOAD_MONOCHROME :: - * This flag is used with @FT_LOAD_RENDER to indicate that you want - * to render a 1-bit monochrome glyph bitmap from a vectorial outline. - * - * Note that this has no effect on the hinting algorithm used by the - * glyph loader. You should better use @FT_LOAD_TARGET_MONO if you - * want to render monochrome-optimized glyph images instead. - * - * FT_LOAD_LINEAR_DESIGN :: - * Return the linearly scaled metrics expressed in original font units - * instead of the default 16.16 pixel values. - * - * FT_LOAD_NO_AUTOHINT :: - * Indicates that the auto-hinter should never be used to hint glyph - * outlines. This doesn't prevent native format-specific hinters from - * being used. This can be important for certain fonts where unhinted - * output is better than auto-hinted one. - * - * FT_LOAD_TARGET_NORMAL :: - * Use hinting for @FT_RENDER_MODE_NORMAL. - * - * FT_LOAD_TARGET_LIGHT :: - * Use hinting for @FT_RENDER_MODE_LIGHT. - * - * FT_LOAD_TARGET_MONO :: - * Use hinting for @FT_RENDER_MODE_MONO. - * - * FT_LOAD_TARGET_LCD :: - * Use hinting for @FT_RENDER_MODE_LCD. - * - * FT_LOAD_TARGET_LCD_V :: - * Use hinting for @FT_RENDER_MODE_LCD_V. - */ -#define FT_LOAD_DEFAULT 0x0 -#define FT_LOAD_NO_SCALE 0x1 -#define FT_LOAD_NO_HINTING 0x2 -#define FT_LOAD_RENDER 0x4 -#define FT_LOAD_NO_BITMAP 0x8 -#define FT_LOAD_VERTICAL_LAYOUT 0x10 -#define FT_LOAD_FORCE_AUTOHINT 0x20 -#define FT_LOAD_CROP_BITMAP 0x40 -#define FT_LOAD_PEDANTIC 0x80 -#define FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH 0x200 -#define FT_LOAD_NO_RECURSE 0x400 -#define FT_LOAD_IGNORE_TRANSFORM 0x800 -#define FT_LOAD_MONOCHROME 0x1000 -#define FT_LOAD_LINEAR_DESIGN 0x2000 - - /* temporary hack! */ -#define FT_LOAD_SBITS_ONLY 0x4000 -#define FT_LOAD_NO_AUTOHINT 0x8000U - - /* */ - -#define FT_LOAD_TARGET_( x ) ( (FT_Int32)( (x) & 15 ) << 16 ) -#define FT_LOAD_TARGET_MODE( x ) ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) ) - -#define FT_LOAD_TARGET_NORMAL FT_LOAD_TARGET_( FT_RENDER_MODE_NORMAL ) -#define FT_LOAD_TARGET_LIGHT FT_LOAD_TARGET_( FT_RENDER_MODE_LIGHT ) -#define FT_LOAD_TARGET_MONO FT_LOAD_TARGET_( FT_RENDER_MODE_MONO ) -#define FT_LOAD_TARGET_LCD FT_LOAD_TARGET_( FT_RENDER_MODE_LCD ) -#define FT_LOAD_TARGET_LCD_V FT_LOAD_TARGET_( FT_RENDER_MODE_LCD_V ) - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Transform */ - /* */ - /* <Description> */ - /* A function used to set the transformation that is applied to glyph */ - /* images just before they are converted to bitmaps in a glyph slot */ - /* when @FT_Render_Glyph is called. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the transformation's 2x2 matrix. Use 0 for */ - /* the identity matrix. */ - /* delta :: A pointer to the translation vector. Use 0 for the null */ - /* vector. */ - /* */ - /* <Note> */ - /* The transformation is only applied to scalable image formats after */ - /* the glyph has been loaded. It means that hinting is unaltered by */ - /* the transformation and is performed on the character size given in */ - /* the last call to @FT_Set_Char_Size or @FT_Set_Pixel_Sizes. */ - /* */ - FT_EXPORT( void ) - FT_Set_Transform( FT_Face face, - FT_Matrix* matrix, - FT_Vector* delta ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Render_Mode */ - /* */ - /* <Description> */ - /* An enumeration type that lists the render modes supported by */ - /* FreeType 2. Each mode corresponds to a specific type of scanline */ - /* conversion performed on the outline, as well as specific */ - /* hinting optimizations. */ - /* */ - /* For bitmap fonts the `bitmap->pixel_mode' field in the */ - /* @FT_GlyphSlotRec structure gives the format of the returned */ - /* bitmap. */ - /* */ - /* <Values> */ - /* FT_RENDER_MODE_NORMAL :: */ - /* This is the default render mode; it corresponds to 8-bit */ - /* anti-aliased bitmaps, using 256 levels of opacity. */ - /* */ - /* FT_RENDER_MODE_LIGHT :: */ - /* This is similar to @FT_RENDER_MODE_NORMAL -- you have to use */ - /* @FT_LOAD_TARGET_LIGHT in calls to @FT_Load_Glyph to get any */ - /* effect since the rendering process no longer influences the */ - /* positioning of glyph outlines. */ - /* */ - /* The resulting glyph shapes are more similar to the original, */ - /* while being a bit more fuzzy (`better shapes' instead of `better */ - /* contrast', so to say. */ - /* */ - /* FT_RENDER_MODE_MONO :: */ - /* This mode corresponds to 1-bit bitmaps. */ - /* */ - /* FT_RENDER_MODE_LCD :: */ - /* This mode corresponds to horizontal RGB/BGR sub-pixel displays, */ - /* like LCD-screens. It produces 8-bit bitmaps that are 3 times */ - /* the width of the original glyph outline in pixels, and which use */ - /* the @FT_PIXEL_MODE_LCD mode. */ - /* */ - /* FT_RENDER_MODE_LCD_V :: */ - /* This mode corresponds to vertical RGB/BGR sub-pixel displays */ - /* (like PDA screens, rotated LCD displays, etc.). It produces */ - /* 8-bit bitmaps that are 3 times the height of the original */ - /* glyph outline in pixels and use the @FT_PIXEL_MODE_LCD_V mode. */ - /* */ - /* <Note> */ - /* The LCD-optimized glyph bitmaps produced by FT_Render_Glyph are */ - /* _not filtered_ to reduce color-fringes. It is up to the caller to */ - /* perform this pass. */ - /* */ - typedef enum FT_Render_Mode_ - { - FT_RENDER_MODE_NORMAL = 0, - FT_RENDER_MODE_LIGHT, - FT_RENDER_MODE_MONO, - FT_RENDER_MODE_LCD, - FT_RENDER_MODE_LCD_V, - - FT_RENDER_MODE_MAX - - } FT_Render_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_render_mode_xxx */ - /* */ - /* <Description> */ - /* These constats are deprecated. Use the corresponding */ - /* @FT_Render_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_render_mode_normal :: see @FT_RENDER_MODE_NORMAL */ - /* ft_render_mode_mono :: see @FT_RENDER_MODE_MONO */ - /* */ -#define ft_render_mode_normal FT_RENDER_MODE_NORMAL -#define ft_render_mode_mono FT_RENDER_MODE_MONO - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Render_Glyph */ - /* */ - /* <Description> */ - /* Converts a given glyph image to a bitmap. It does so by */ - /* inspecting the glyph image format, find the relevant renderer, and */ - /* invoke it. */ - /* */ - /* <InOut> */ - /* slot :: A handle to the glyph slot containing the image to */ - /* convert. */ - /* */ - /* <Input> */ - /* render_mode :: This is the render mode used to render the glyph */ - /* image into a bitmap. See FT_Render_Mode for a list */ - /* of possible values. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Render_Glyph( FT_GlyphSlot slot, - FT_Render_Mode render_mode ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Kerning_Mode */ - /* */ - /* <Description> */ - /* An enumeration used to specify which kerning values to return in */ - /* @FT_Get_Kerning. */ - /* */ - /* <Values> */ - /* FT_KERNING_DEFAULT :: Return scaled and grid-fitted kerning */ - /* distances (value is 0). */ - /* */ - /* FT_KERNING_UNFITTED :: Return scaled but un-grid-fitted kerning */ - /* distances. */ - /* */ - /* FT_KERNING_UNSCALED :: Return the kerning vector in original font */ - /* units. */ - /* */ - typedef enum FT_Kerning_Mode_ - { - FT_KERNING_DEFAULT = 0, - FT_KERNING_UNFITTED, - FT_KERNING_UNSCALED - - } FT_Kerning_Mode; - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_default */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_DEFAULT */ - /* instead. */ - /* */ -#define ft_kerning_default FT_KERNING_DEFAULT - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_unfitted */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_UNFITTED */ - /* instead. */ - /* */ -#define ft_kerning_unfitted FT_KERNING_UNFITTED - - - /*************************************************************************/ - /* */ - /* <Const> */ - /* ft_kerning_unscaled */ - /* */ - /* <Description> */ - /* This constant is deprecated. Please use @FT_KERNING_UNSCALED */ - /* instead. */ - /* */ -#define ft_kerning_unscaled FT_KERNING_UNSCALED - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Kerning */ - /* */ - /* <Description> */ - /* Returns the kerning vector between two glyphs of a same face. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* left_glyph :: The index of the left glyph in the kern pair. */ - /* */ - /* right_glyph :: The index of the right glyph in the kern pair. */ - /* */ - /* kern_mode :: See @FT_Kerning_Mode for more information. */ - /* Determines the scale/dimension of the returned */ - /* kerning vector. */ - /* */ - /* <Output> */ - /* akerning :: The kerning vector. This is in font units for */ - /* scalable formats, and in pixels for fixed-sizes */ - /* formats. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only horizontal layouts (left-to-right & right-to-left) are */ - /* supported by this method. Other layouts, or more sophisticated */ - /* kernings, are out of the scope of this API function -- they can be */ - /* implemented through format-specific interfaces. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Kerning( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_UInt kern_mode, - FT_Vector *akerning ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Glyph_Name */ - /* */ - /* <Description> */ - /* Retrieves the ASCII name of a given glyph in a face. This only */ - /* works for those faces where FT_HAS_GLYPH_NAME(face) returns true. */ - /* */ - /* <Input> */ - /* face :: A handle to a source face object. */ - /* */ - /* glyph_index :: The glyph index. */ - /* */ - /* buffer_max :: The maximal number of bytes available in the */ - /* buffer. */ - /* */ - /* <Output> */ - /* buffer :: A pointer to a target buffer where the name will be */ - /* copied to. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* An error is returned if the face doesn't provide glyph names or if */ - /* the glyph index is invalid. In all cases of failure, the first */ - /* byte of `buffer' will be set to 0 to indicate an empty name. */ - /* */ - /* The glyph name is truncated to fit within the buffer if it is too */ - /* long. The returned string is always zero-terminated. */ - /* */ - /* This function is not compiled within the library if the config */ - /* macro FT_CONFIG_OPTION_NO_GLYPH_NAMES is defined in */ - /* `include/freetype/config/ftoptions.h' */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Glyph_Name( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Postscript_Name */ - /* */ - /* <Description> */ - /* Retrieves the ASCII Postscript name of a given face, if available. */ - /* This should only work with Postscript and TrueType fonts. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Return> */ - /* A pointer to the face's Postscript name. NULL if un-available. */ - /* */ - /* <Note> */ - /* The returned pointer is owned by the face and will be destroyed */ - /* with it. */ - /* */ - FT_EXPORT( const char* ) - FT_Get_Postscript_Name( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Select_Charmap */ - /* */ - /* <Description> */ - /* Selects a given charmap by its encoding tag (as listed in */ - /* `freetype.h'). */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* encoding :: A handle to the selected charmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function will return an error if no charmap in the face */ - /* corresponds to the encoding queried here. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Select_Charmap( FT_Face face, - FT_Encoding encoding ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Charmap */ - /* */ - /* <Description> */ - /* Selects a given charmap for character code to glyph index */ - /* decoding. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Input> */ - /* charmap :: A handle to the selected charmap. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function will return an error if the charmap is not part of */ - /* the face (i.e., if it is not listed in the face->charmaps[] */ - /* table). */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Charmap( FT_Face face, - FT_CharMap charmap ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Get_Charmap_Index */ - /* */ - /* @description: */ - /* Retrieve index of a given charmap. */ - /* */ - /* @input: */ - /* charmap :: A handle to a charmap. */ - /* */ - /* @return: */ - /* The index into the array of character maps within the face to */ - /* which `charmap' belongs. */ - /* */ - FT_EXPORT( FT_Int ) - FT_Get_Charmap_Index( FT_CharMap charmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Char_Index */ - /* */ - /* <Description> */ - /* Returns the glyph index of a given character code. This function */ - /* uses a charmap object to do the translation. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* charcode :: The character code. */ - /* */ - /* <Return> */ - /* The glyph index. 0 means `undefined character code'. */ - /* */ - /* <Note> */ - /* FreeType computes its own glyph indices which are not necessarily */ - /* the same as used in the font in case the font is based on glyph */ - /* indices. Reason for this behaviour is to assure that index 0 is */ - /* never used, representing the missing glyph. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Char_Index( FT_Face face, - FT_ULong charcode ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_First_Char */ - /* */ - /* <Description> */ - /* This function is used to return the first character code in the */ - /* current charmap of a given face. It will also return the */ - /* corresponding glyph index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Output> */ - /* agindex :: Glyph index of first character code. 0 if charmap is */ - /* empty. */ - /* */ - /* <Return> */ - /* The charmap's first character code. */ - /* */ - /* <Note> */ - /* You should use this function with @FT_Get_Next_Char to be able to */ - /* parse all character codes available in a given charmap. The code */ - /* should look like this: */ - /* */ - /* { */ - /* FT_ULong charcode; */ - /* FT_UInt gindex; */ - /* */ - /* */ - /* charcode = FT_Get_First_Char( face, &gindex ); */ - /* while ( gindex != 0 ) */ - /* { */ - /* ... do something with (charcode,gindex) pair ... */ - /* */ - /* charcode = FT_Get_Next_Char( face, charcode, &gindex ); */ - /* } */ - /* } */ - /* */ - /* Note that `*agindex' will be set to 0 if the charmap is empty. */ - /* The result itself can be 0 in two cases: if the charmap is empty */ - /* or when the value 0 is the first valid character code. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_First_Char( FT_Face face, - FT_UInt *agindex ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Next_Char */ - /* */ - /* <Description> */ - /* This function is used to return the next character code in the */ - /* current charmap of a given face following the value 'char_code', */ - /* as well as the corresponding glyph index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* char_code :: The starting character code. */ - /* */ - /* <Output> */ - /* agindex :: Glyph index of first character code. 0 if charmap */ - /* is empty. */ - /* */ - /* <Return> */ - /* The charmap's next character code. */ - /* */ - /* <Note> */ - /* You should use this function with @FT_Get_First_Char to walk */ - /* through all character codes available in a given charmap. See */ - /* the note for this function for a simple code example. */ - /* */ - /* Note that `*agindex' will be set to 0 when there are no more codes */ - /* in the charmap. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_Next_Char( FT_Face face, - FT_ULong char_code, - FT_UInt *agindex ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Name_Index */ - /* */ - /* <Description> */ - /* Returns the glyph index of a given glyph name. This function uses */ - /* driver specific objects to do the translation. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* glyph_name :: The glyph name. */ - /* */ - /* <Return> */ - /* The glyph index. 0 means `undefined character code'. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Name_Index( FT_Face face, - FT_String* glyph_name ); - - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /* <Title> */ - /* Computations */ - /* */ - /* <Abstract> */ - /* Crunching fixed numbers and vectors */ - /* */ - /* <Description> */ - /* This section contains various functions used to perform */ - /* computations on 16.16 fixed-float numbers or 2d vectors. */ - /* */ - /* <Order> */ - /* FT_MulDiv */ - /* FT_MulFix */ - /* FT_DivFix */ - /* FT_RoundFix */ - /* FT_CeilFix */ - /* FT_FloorFix */ - /* FT_Vector_Transform */ - /* FT_Matrix_Multiply */ - /* FT_Matrix_Invert */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulDiv */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation `(a*b)/c' */ - /* with maximal accuracy (it uses a 64-bit intermediate integer */ - /* whenever necessary). */ - /* */ - /* This function isn't necessarily as fast as some processor specific */ - /* operations, but is at least completely portable. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. */ - /* c :: The divisor. */ - /* */ - /* <Return> */ - /* The result of `(a*b)/c'. This function never traps when trying to */ - /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ - /* on the signs of `a' and `b'. */ - /* */ - FT_EXPORT( FT_Long ) - FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulFix */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation */ - /* `(a*b)/0x10000' with maximal accuracy. Most of the time this is */ - /* used to multiply a given value by a 16.16 fixed float factor. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ - /* */ - /* <Return> */ - /* The result of `(a*b)/0x10000'. */ - /* */ - /* <Note> */ - /* This function has been optimized for the case where the absolute */ - /* value of `a' is less than 2048, and `b' is a 16.16 scaling factor. */ - /* As this happens mainly when scaling from notional units to */ - /* fractional pixels in FreeType, it resulted in noticeable speed */ - /* improvements between versions 2.x and 1.x. */ - /* */ - /* As a conclusion, always try to place a 16.16 factor as the */ - /* _second_ argument of this function; this can make a great */ - /* difference. */ - /* */ - FT_EXPORT( FT_Long ) - FT_MulFix( FT_Long a, - FT_Long b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_DivFix */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation */ - /* `(a*0x10000)/b' with maximal accuracy. Most of the time, this is */ - /* used to divide a given value by a 16.16 fixed float factor. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. Use a 16.16 factor here whenever */ - /* possible (see note below). */ - /* */ - /* <Return> */ - /* The result of `(a*0x10000)/b'. */ - /* */ - /* <Note> */ - /* The optimization for FT_DivFix() is simple: If (a << 16) fits in */ - /* 32 bits, then the division is computed directly. Otherwise, we */ - /* use a specialized version of @FT_MulDiv. */ - /* */ - FT_EXPORT( FT_Long ) - FT_DivFix( FT_Long a, - FT_Long b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_RoundFix */ - /* */ - /* <Description> */ - /* A very simple function used to round a 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number to be rounded. */ - /* */ - /* <Return> */ - /* The result of `(a + 0x8000) & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_RoundFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_CeilFix */ - /* */ - /* <Description> */ - /* A very simple function used to compute the ceiling function of a */ - /* 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number for which the ceiling function is to be computed. */ - /* */ - /* <Return> */ - /* The result of `(a + 0x10000 - 1) & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_CeilFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_FloorFix */ - /* */ - /* <Description> */ - /* A very simple function used to compute the floor function of a */ - /* 16.16 fixed number. */ - /* */ - /* <Input> */ - /* a :: The number for which the floor function is to be computed. */ - /* */ - /* <Return> */ - /* The result of `a & -0x10000'. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_FloorFix( FT_Fixed a ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Vector_Transform */ - /* */ - /* <Description> */ - /* Transforms a single vector through a 2x2 matrix. */ - /* */ - /* <InOut> */ - /* vector :: The target vector to transform. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the source 2x2 matrix. */ - /* */ - /* <Note> */ - /* The result is undefined if either `vector' or `matrix' is invalid. */ - /* */ - FT_EXPORT( void ) - FT_Vector_Transform( FT_Vector* vec, - FT_Matrix* matrix ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FREETYPE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftbbox.h b/nx-X11/extras/freetype2/include/freetype/ftbbox.h deleted file mode 100644 index f98c89eb2..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftbbox.h +++ /dev/null @@ -1,89 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbbox.h */ -/* */ -/* FreeType exact bbox computation (specification). */ -/* */ -/* Copyright 1996-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This component has a _single_ role: to compute exact outline bounding */ - /* boxes. */ - /* */ - /* It is separated from the rest of the engine for various technical */ - /* reasons. It may well be integrated in `ftoutln' later. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTBBOX_H__ -#define __FTBBOX_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_BBox */ - /* */ - /* <Description> */ - /* Computes the exact bounding box of an outline. This is slower */ - /* than computing the control box. However, it uses an advanced */ - /* algorithm which returns _very_ quickly when the two boxes */ - /* coincide. Otherwise, the outline Bezier arcs are walked over to */ - /* extract their extrema. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source outline. */ - /* */ - /* <Output> */ - /* abbox :: The outline's exact bounding box. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Get_BBox( FT_Outline* outline, - FT_BBox *abbox ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTBBOX_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftbdf.h b/nx-X11/extras/freetype2/include/freetype/ftbdf.h deleted file mode 100644 index aa411440d..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftbdf.h +++ /dev/null @@ -1,200 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbdf.h */ -/* */ -/* FreeType API for accessing BDF-specific strings (specification). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTBDF_H__ -#define __FTBDF_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* bdf_fonts */ - /* */ - /* <Title> */ - /* BDF Fonts */ - /* */ - /* <Abstract> */ - /* BDF-specific APIs */ - /* */ - /* <Description> */ - /* This section contains the declaration of BDF-specific functions. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @enum: - * FT_PropertyType - * - * @description: - * A list of BDF property types. - * - * @values: - * BDF_PROPERTY_TYPE_NONE :: - * Value 0 is used to indicate a missing property. - * - * BDF_PROPERTY_TYPE_ATOM :: - * Property is a string atom. - * - * BDF_PROPERTY_TYPE_INTEGER :: - * Property is a 32-bit signed integer. - * - * BDF_PROPERTY_TYPE_CARDINAL :: - * Property is a 32-bit unsigned integer. - */ - typedef enum BDF_PropertyType_ - { - BDF_PROPERTY_TYPE_NONE = 0, - BDF_PROPERTY_TYPE_ATOM = 1, - BDF_PROPERTY_TYPE_INTEGER = 2, - BDF_PROPERTY_TYPE_CARDINAL = 3 - - } BDF_PropertyType; - - - /********************************************************************** - * - * @type: - * BDF_Property - * - * @description: - * A handle to a @BDF_PropertyRec structure to model a given - * BDF/PCF property. - */ - typedef struct BDF_PropertyRec_* BDF_Property; - - - /********************************************************************** - * - * @struct: - * BDF_PropertyRec - * - * @description: - * This structure models a given BDF/PCF property. - * - * @fields: - * type :: - * The property type. - * - * u.atom :: - * The atom string, if type is @BDF_PROPERTY_TYPE_ATOM. - * - * u.integer :: - * A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER. - * - * u.cardinal :: - * An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL. - */ - typedef struct BDF_PropertyRec_ - { - BDF_PropertyType type; - union { - const char* atom; - FT_Int32 integer; - FT_UInt32 cardinal; - - } u; - - } BDF_PropertyRec; - - - /********************************************************************** - * - * @function: - * FT_Get_BDF_Charset_ID - * - * @description: - * Retrieves a BDF font character set identity, according to - * the BDF specification. - * - * @input: - * face :: - * A handle to the input face. - * - * @output: - * acharset_encoding :: - * Charset encoding, as a C string, owned by the face. - * - * acharset_registry :: - * Charset registry, as a C string, owned by the face. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function only works with BDF faces, returning an error otherwise. - */ - FT_EXPORT( FT_Error ) - FT_Get_BDF_Charset_ID( FT_Face face, - const char* *acharset_encoding, - const char* *acharset_registry ); - - - /********************************************************************** - * - * @function: - * FT_Get_BDF_Property - * - * @description: - * Retrieves a BDF property from a BDF or PCF font file. - * - * @input: - * face :: A handle to the input face. - * - * name :: The property name. - * - * @output: - * aproperty :: The property. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function works with BDF _and_ PCF fonts. It returns an error - * otherwise. It also returns an error if the property is not in the - * font. - * - * In case of error, "aproperty->type" is always set to - * @BDF_PROPERTY_TYPE_NONE. - */ - FT_EXPORT( FT_Error ) - FT_Get_BDF_Property( FT_Face face, - const char* prop_name, - BDF_PropertyRec *aproperty ); - - /* */ - -FT_END_HEADER - -#endif /* __FTBDF_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftcache.h b/nx-X11/extras/freetype2/include/freetype/ftcache.h deleted file mode 100644 index c26ce6b1b..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftcache.h +++ /dev/null @@ -1,825 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcache.h */ -/* */ -/* FreeType Cache subsystem (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********* *********/ - /********* WARNING, THIS IS BETA CODE. *********/ - /********* *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#ifndef __FTCACHE_H__ -#define __FTCACHE_H__ - - -#include <ft2build.h> -#include FT_GLYPH_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /* <Title> */ - /* Cache Sub-System */ - /* */ - /* <Abstract> */ - /* How to cache face, size, and glyph data with FreeType 2. */ - /* */ - /* <Description> */ - /* This section describes the FreeType 2 cache sub-system which is */ - /* still in beta. */ - /* */ - /* <Order> */ - /* FTC_Manager */ - /* FTC_FaceID */ - /* FTC_Face_Requester */ - /* */ - /* FTC_Manager_New */ - /* FTC_Manager_Reset */ - /* FTC_Manager_Done */ - /* FTC_Manager_LookupFace */ - /* FTC_Manager_LookupSize */ - /* FTC_Manager_RemoveFaceID */ - /* */ - /* FTC_Node */ - /* FTC_Node_Unref */ - /* */ - /* FTC_Font */ - /* FTC_ImageCache */ - /* FTC_ImageCache_New */ - /* FTC_ImageCache_Lookup */ - /* */ - /* FTC_SBit */ - /* FTC_SBitCache */ - /* FTC_SBitCache_New */ - /* FTC_SBitCache_Lookup */ - /* */ - /* FTC_CMapCache */ - /* FTC_CMapCache_New */ - /* FTC_CMapCache_Lookup */ - /* */ - /* */ - /* FTC_Image_Desc */ - /* FTC_Image_Cache */ - /* FTC_Image_Cache_Lookup */ - /* */ - /* FTC_SBit_Cache */ - /* FTC_SBit_Cache_Lookup */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** BASIC TYPE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_FaceID */ - /* */ - /* <Description> */ - /* An opaque pointer type that is used to identity face objects. The */ - /* contents of such objects is application-dependent. */ - /* */ - typedef struct FTC_FaceIDRec_* FTC_FaceID; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FTC_Face_Requester */ - /* */ - /* <Description> */ - /* A callback function provided by client applications. It is used */ - /* to translate a given @FTC_FaceID into a new valid @FT_Face object. */ - /* */ - /* <Input> */ - /* face_id :: The face ID to resolve. */ - /* */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* data :: Application-provided request data. */ - /* */ - /* <Output> */ - /* aface :: A new @FT_Face handle. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The face requester should not perform funny things on the returned */ - /* face object, like creating a new @FT_Size for it, or setting a */ - /* transformation through @FT_Set_Transform! */ - /* */ - typedef FT_Error - (*FTC_Face_Requester)( FTC_FaceID face_id, - FT_Library library, - FT_Pointer request_data, - FT_Face* aface ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_FontRec */ - /* */ - /* <Description> */ - /* A simple structure used to describe a given `font' to the cache */ - /* manager. Note that a `font' is the combination of a given face */ - /* with a given character size. */ - /* */ - /* <Fields> */ - /* face_id :: The ID of the face to use. */ - /* */ - /* pix_width :: The character width in integer pixels. */ - /* */ - /* pix_height :: The character height in integer pixels. */ - /* */ - typedef struct FTC_FontRec_ - { - FTC_FaceID face_id; - FT_UShort pix_width; - FT_UShort pix_height; - - } FTC_FontRec; - - - /* */ - - -#define FTC_FONT_COMPARE( f1, f2 ) \ - ( (f1)->face_id == (f2)->face_id && \ - (f1)->pix_width == (f2)->pix_width && \ - (f1)->pix_height == (f2)->pix_height ) - -#define FT_POINTER_TO_ULONG( p ) ((FT_ULong)(FT_Pointer)(p)) - -#define FTC_FACE_ID_HASH( i ) \ - ((FT_UInt32)(( FT_POINTER_TO_ULONG( i ) >> 3 ) ^ \ - ( FT_POINTER_TO_ULONG( i ) << 7 ) ) ) - -#define FTC_FONT_HASH( f ) \ - (FT_UInt32)( FTC_FACE_ID_HASH((f)->face_id) ^ \ - ((f)->pix_width << 8) ^ \ - ((f)->pix_height) ) - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Font */ - /* */ - /* <Description> */ - /* A simple handle to an @FTC_FontRec structure. */ - /* */ - typedef FTC_FontRec* FTC_Font; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE MANAGER OBJECT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Manager */ - /* */ - /* <Description> */ - /* This object is used to cache one or more @FT_Face objects, along */ - /* with corresponding @FT_Size objects. */ - /* */ - typedef struct FTC_ManagerRec_* FTC_Manager; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_Node */ - /* */ - /* <Description> */ - /* An opaque handle to a cache node object. Each cache node is */ - /* reference-counted. A node with a count of 0 might be flushed */ - /* out of a full cache whenever a lookup request is performed. */ - /* */ - /* If you lookup nodes, you have the ability to "acquire" them, i.e., */ - /* to increment their reference count. This will prevent the node */ - /* from being flushed out of the cache until you explicitly "release" */ - /* it (see @FTC_Node_Unref). */ - /* */ - /* See also @FTC_SBitCache_Lookup and @FTC_ImageCache_Lookup. */ - /* */ - typedef struct FTC_NodeRec_* FTC_Node; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_New */ - /* */ - /* <Description> */ - /* Creates a new cache manager. */ - /* */ - /* <Input> */ - /* library :: The parent FreeType library handle to use. */ - /* */ - /* max_bytes :: Maximum number of bytes to use for cached data. */ - /* Use 0 for defaults. */ - /* */ - /* requester :: An application-provided callback used to translate */ - /* face IDs into real @FT_Face objects. */ - /* */ - /* req_data :: A generic pointer that is passed to the requester */ - /* each time it is called (see @FTC_Face_Requester). */ - /* */ - /* <Output> */ - /* amanager :: A handle to a new manager object. 0 in case of */ - /* failure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_New( FT_Library library, - FT_UInt max_faces, - FT_UInt max_sizes, - FT_ULong max_bytes, - FTC_Face_Requester requester, - FT_Pointer req_data, - FTC_Manager *amanager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Reset */ - /* */ - /* <Description> */ - /* Empties a given cache manager. This simply gets rid of all the */ - /* currently cached @FT_Face and @FT_Size objects within the manager. */ - /* */ - /* <InOut> */ - /* manager :: A handle to the manager. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Reset( FTC_Manager manager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_Done */ - /* */ - /* <Description> */ - /* Destroys a given manager after emptying it. */ - /* */ - /* <Input> */ - /* manager :: A handle to the target cache manager object. */ - /* */ - FT_EXPORT( void ) - FTC_Manager_Done( FTC_Manager manager ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_LookupFace */ - /* */ - /* <Description> */ - /* Retrieves the @FT_Face object that corresponds to a given face ID */ - /* through a cache manager. */ - /* */ - /* <Input> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* face_id :: The ID of the face object. */ - /* */ - /* <Output> */ - /* aface :: A handle to the face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The returned @FT_Face object is always owned by the manager. You */ - /* should never try to discard it yourself. */ - /* */ - /* The @FT_Face object doesn't necessarily have a current size object */ - /* (i.e., face->size can be 0). If you need a specific `font size', */ - /* use @FTC_Manager_LookupSize instead. */ - /* */ - /* Never change the face's transformation matrix (i.e., never call */ - /* the @FT_Set_Transform function) on a returned face! If you need */ - /* to transform glyphs, do it yourself after glyph loading. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_LookupFace( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_ScalerRec */ - /* */ - /* <Description> */ - /* A structure used to describe a given character size in either */ - /* pixels or points to the cache manager. See */ - /* @FTC_Manager_LookupSize. */ - /* */ - /* <Fields> */ - /* face_id :: The source face ID. */ - /* */ - /* width :: The character width. */ - /* */ - /* height :: The character height. */ - /* */ - /* pixel :: A Boolean. If TRUE, the `width' and `height' fields */ - /* are interpreted as integer pixel character sizes. */ - /* Otherwise, they are expressed as 1/64th of points. */ - /* */ - /* x_res :: Only used when `pixel' is FALSE to indicate the */ - /* horizontal resolution in dpi. */ - /* */ - /* y_res :: Only used when `pixel' is FALSE to indicate the */ - /* vertical resolution in dpi. */ - /* */ - /* <Note> */ - /* This type is mainly used to retrieve @FT_Size objects through the */ - /* cache manager. */ - /* */ - typedef struct FTC_ScalerRec_ - { - FTC_FaceID face_id; - FT_UInt width; - FT_UInt height; - FT_Int pixel; - FT_UInt x_res; - FT_UInt y_res; - - } FTC_ScalerRec, *FTC_Scaler; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Manager_LookupSize */ - /* */ - /* <Description> */ - /* Retrieve the @FT_Size object that corresponds to a given */ - /* @FTC_Scaler through a cache manager. */ - /* */ - /* <Input> */ - /* manager :: A handle to the cache manager. */ - /* */ - /* scaler :: A scaler handle. */ - /* */ - /* <Output> */ - /* asize :: A handle to the size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The returned @FT_Size object is always owned by the manager. You */ - /* should never try to discard it by yourself. */ - /* */ - /* You can access the parent @FT_Face object simply as `size->face' */ - /* if you need it. Note that this object is also owned by the */ - /* manager. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_Manager_LookupSize( FTC_Manager manager, - FTC_Scaler scaler, - FT_Size *asize ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_Node_Unref */ - /* */ - /* <Description> */ - /* Decrement a cache node's internal reference count. When the count */ - /* reaches 0, it is not destroyed but becomes eligible for subsequent */ - /* cache flushes. */ - /* */ - /* <Input> */ - /* node :: The cache node handle. */ - /* */ - /* manager :: The cache manager handle. */ - /* */ - FT_EXPORT( void ) - FTC_Node_Unref( FTC_Node node, - FTC_Manager manager ); - - - /* remove all nodes belonging to a given face_id */ - FT_EXPORT( void ) - FTC_Manager_RemoveFaceID( FTC_Manager manager, - FTC_FaceID face_id ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - /************************************************************************ - * - * @type: - * FTC_CMapCache - * - * @description: - * An opaque handle used to manager a charmap cache. This cache is - * to hold character codes -> glyph indices mappings. - */ - typedef struct FTC_CMapCacheRec_* FTC_CMapCache; - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FTC_CMapCache_New */ - /* */ - /* @description: */ - /* Create a new charmap cache. */ - /* */ - /* @input: */ - /* manager :: A handle to the cache manager. */ - /* */ - /* @output: */ - /* acache :: A new cache handle. NULL in case of error. */ - /* */ - /* @return: */ - /* FreeType error code. 0 means success. */ - /* */ - /* @note: */ - /* Like all other caches, this one will be destroyed with the cache */ - /* manager. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_CMapCache_New( FTC_Manager manager, - FTC_CMapCache *acache ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FTC_CMapCache_Lookup */ - /* */ - /* @description: */ - /* Translate a character code into a glyph index, using the charmap */ - /* cache. */ - /* */ - /* @input: */ - /* cache :: A charmap cache handle. */ - /* */ - /* face_id :: The source face ID. */ - /* */ - /* cmap_index :: The index of the charmap in the source face. */ - /* */ - /* char_code :: The character code (in the corresponding charmap). */ - /* */ - /* @return: */ - /* Glyph index. 0 means `no glyph'. */ - /* */ - FT_EXPORT( FT_UInt ) - FTC_CMapCache_Lookup( FTC_CMapCache cache, - FTC_FaceID face_id, - FT_Int cmap_index, - FT_UInt32 char_code ); - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* cache_subsystem */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** IMAGE CACHE OBJECT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - typedef struct FTC_ImageTypeRec_ - { - FTC_FaceID face_id; - FT_Int width; - FT_Int height; - FT_Int32 flags; - - } FTC_ImageTypeRec; - - typedef struct FTC_ImageTypeRec_* FTC_ImageType; - - /* */ - -#define FTC_IMAGE_TYPE_COMPARE( d1, d2 ) \ - ( FTC_FONT_COMPARE( &(d1)->font, &(d2)->font ) && \ - (d1)->flags == (d2)->flags ) - -#define FTC_IMAGE_TYPE_HASH( d ) \ - (FT_UFast)( FTC_FONT_HASH( &(d)->font ) ^ \ - ( (d)->flags << 4 ) ) - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_ImageCache */ - /* */ - /* <Description> */ - /* A handle to an glyph image cache object. They are designed to */ - /* hold many distinct glyph images while not exceeding a certain */ - /* memory threshold. */ - /* */ - typedef struct FTC_ImageCacheRec_* FTC_ImageCache; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_New */ - /* */ - /* <Description> */ - /* Creates a new glyph image cache. */ - /* */ - /* <Input> */ - /* manager :: The parent manager for the image cache. */ - /* */ - /* <Output> */ - /* acache :: A handle to the new glyph image cache object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_New( FTC_Manager manager, - FTC_ImageCache *acache ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_ImageCache_Lookup */ - /* */ - /* <Description> */ - /* Retrieves a given glyph image from a glyph image cache. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source glyph image cache. */ - /* */ - /* type :: A pointer to a glyph image type descriptor. */ - /* */ - /* gindex :: The glyph index to retrieve. */ - /* */ - /* <Output> */ - /* aglyph :: The corresponding @FT_Glyph object. 0 in case of */ - /* failure. */ - /* */ - /* anode :: Used to return the address of of the corresponding cache */ - /* node after incrementing its reference count (see note */ - /* below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The returned glyph is owned and managed by the glyph image cache. */ - /* Never try to transform or discard it manually! You can however */ - /* create a copy with @FT_Glyph_Copy and modify the new one. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the glyph image, after increasing its reference */ - /* count. This ensures that the node (as well as the FT_Glyph) will */ - /* always be kept in the cache until you call @FTC_Node_Unref to */ - /* `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the FT_Glyph could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_ImageCache_Lookup( FTC_ImageCache cache, - FTC_ImageType type, - FT_UInt gindex, - FT_Glyph *aglyph, - FTC_Node *anode ); - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_SBit */ - /* */ - /* <Description> */ - /* A handle to a small bitmap descriptor. See the @FTC_SBitRec */ - /* structure for details. */ - /* */ - typedef struct FTC_SBitRec_* FTC_SBit; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FTC_SBitRec */ - /* */ - /* <Description> */ - /* A very compact structure used to describe a small glyph bitmap. */ - /* */ - /* <Fields> */ - /* width :: The bitmap width in pixels. */ - /* */ - /* height :: The bitmap height in pixels. */ - /* */ - /* left :: The horizontal distance from the pen position to the */ - /* left bitmap border (a.k.a. `left side bearing', or */ - /* `lsb'). */ - /* */ - /* top :: The vertical distance from the pen position (on the */ - /* baseline) to the upper bitmap border (a.k.a. `top */ - /* side bearing'). The distance is positive for upwards */ - /* Y coordinates. */ - /* */ - /* format :: The format of the glyph bitmap (monochrome or gray). */ - /* */ - /* max_grays :: Maximum gray level value (in the range 1 to 255). */ - /* */ - /* pitch :: The number of bytes per bitmap line. May be positive */ - /* or negative. */ - /* */ - /* xadvance :: The horizontal advance width in pixels. */ - /* */ - /* yadvance :: The vertical advance height in pixels. */ - /* */ - /* buffer :: A pointer to the bitmap pixels. */ - /* */ - typedef struct FTC_SBitRec_ - { - FT_Byte width; - FT_Byte height; - FT_Char left; - FT_Char top; - - FT_Byte format; - FT_Byte max_grays; - FT_Short pitch; - FT_Char xadvance; - FT_Char yadvance; - - FT_Byte* buffer; - - } FTC_SBitRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FTC_SBitCache */ - /* */ - /* <Description> */ - /* A handle to a small bitmap cache. These are special cache objects */ - /* used to store small glyph bitmaps (and anti-aliased pixmaps) in a */ - /* much more efficient way than the traditional glyph image cache */ - /* implemented by @FTC_ImageCache. */ - /* */ - typedef struct FTC_SBitCacheRec_* FTC_SBitCache; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_New */ - /* */ - /* <Description> */ - /* Creates a new cache to store small glyph bitmaps. */ - /* */ - /* <Input> */ - /* manager :: A handle to the source cache manager. */ - /* */ - /* <Output> */ - /* acache :: A handle to the new sbit cache. NULL in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_New( FTC_Manager manager, - FTC_SBitCache *acache ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FTC_SBitCache_Lookup */ - /* */ - /* <Description> */ - /* Looks up a given small glyph bitmap in a given sbit cache and */ - /* `lock' it to prevent its flushing from the cache until needed. */ - /* */ - /* <Input> */ - /* cache :: A handle to the source sbit cache. */ - /* */ - /* type :: A pointer to the glyph image type descriptor. */ - /* */ - /* gindex :: The glyph index. */ - /* */ - /* <Output> */ - /* sbit :: A handle to a small bitmap descriptor. */ - /* */ - /* anode :: Used to return the address of of the corresponding cache */ - /* node after incrementing its reference count (see note */ - /* below). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The small bitmap descriptor and its bit buffer are owned by the */ - /* cache and should never be freed by the application. They might */ - /* as well disappear from memory on the next cache lookup, so don't */ - /* treat them as persistent data. */ - /* */ - /* The descriptor's `buffer' field is set to 0 to indicate a missing */ - /* glyph bitmap. */ - /* */ - /* If `anode' is _not_ NULL, it receives the address of the cache */ - /* node containing the bitmap, after increasing its reference count. */ - /* This ensures that the node (as well as the image) will always be */ - /* kept in the cache until you call @FTC_Node_Unref to `release' it. */ - /* */ - /* If `anode' is NULL, the cache node is left unchanged, which means */ - /* that the bitmap could be flushed out of the cache on the next */ - /* call to one of the caching sub-system APIs. Don't assume that it */ - /* is persistent! */ - /* */ - FT_EXPORT( FT_Error ) - FTC_SBitCache_Lookup( FTC_SBitCache cache, - FTC_ImageType type, - FT_UInt gindex, - FTC_SBit *sbit, - FTC_Node *anode ); - - - /* */ - -FT_END_HEADER - -#endif /* __FTCACHE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftchapters.h b/nx-X11/extras/freetype2/include/freetype/ftchapters.h deleted file mode 100644 index c134ec122..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftchapters.h +++ /dev/null @@ -1,69 +0,0 @@ -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* core_api */ -/* */ -/* <Title> */ -/* Core API */ -/* */ -/* <Sections> */ -/* basic_types */ -/* base_interface */ -/* glyph_management */ -/* mac_specific */ -/* sizes_management */ -/* header_file_macros */ -/* */ -/***************************************************************************/ - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* format_specific */ -/* */ -/* <Title> */ -/* Format-Specific API */ -/* */ -/* <Sections> */ -/* multiple_masters */ -/* truetype_tables */ -/* type1_tables */ -/* sfnt_names */ -/* bdf_fonts */ -/* pfr_fonts */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* cache_subsystem */ -/* */ -/* <Title> */ -/* Cache Sub-System */ -/* */ -/* <Sections> */ -/* cache_subsystem */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* <Chapter> */ -/* support_api */ -/* */ -/* <Title> */ -/* Support API */ -/* */ -/* <Sections> */ -/* computations */ -/* list_processing */ -/* outline_processing */ -/* raster */ -/* system_interface */ -/* module_management */ -/* */ -/***************************************************************************/ - diff --git a/nx-X11/extras/freetype2/include/freetype/fterrdef.h b/nx-X11/extras/freetype2/include/freetype/fterrdef.h deleted file mode 100644 index 2f73c0858..000000000 --- a/nx-X11/extras/freetype2/include/freetype/fterrdef.h +++ /dev/null @@ -1,231 +0,0 @@ -/***************************************************************************/ -/* */ -/* fterrdef.h */ -/* */ -/* FreeType error codes (specification). */ -/* */ -/* Copyright 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST OF ERROR CODES/MESSAGES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - - /* You need to define both FT_ERRORDEF_ and FT_NOERRORDEF_ before */ - /* including this file. */ - - - /* generic errors */ - - FT_NOERRORDEF_( Ok, 0x00, \ - "no error" ) - - FT_ERRORDEF_( Cannot_Open_Resource, 0x01, \ - "cannot open resource" ) - FT_ERRORDEF_( Unknown_File_Format, 0x02, \ - "unknown file format" ) - FT_ERRORDEF_( Invalid_File_Format, 0x03, \ - "broken file" ) - FT_ERRORDEF_( Invalid_Version, 0x04, \ - "invalid FreeType version" ) - FT_ERRORDEF_( Lower_Module_Version, 0x05, \ - "module version is too low" ) - FT_ERRORDEF_( Invalid_Argument, 0x06, \ - "invalid argument" ) - FT_ERRORDEF_( Unimplemented_Feature, 0x07, \ - "unimplemented feature" ) - FT_ERRORDEF_( Invalid_Table, 0x08, \ - "broken table" ) - FT_ERRORDEF_( Invalid_Offset, 0x09, \ - "broken offset within table" ) - - /* glyph/character errors */ - - FT_ERRORDEF_( Invalid_Glyph_Index, 0x10, \ - "invalid glyph index" ) - FT_ERRORDEF_( Invalid_Character_Code, 0x11, \ - "invalid character code" ) - FT_ERRORDEF_( Invalid_Glyph_Format, 0x12, \ - "unsupported glyph image format" ) - FT_ERRORDEF_( Cannot_Render_Glyph, 0x13, \ - "cannot render this glyph format" ) - FT_ERRORDEF_( Invalid_Outline, 0x14, \ - "invalid outline" ) - FT_ERRORDEF_( Invalid_Composite, 0x15, \ - "invalid composite glyph" ) - FT_ERRORDEF_( Too_Many_Hints, 0x16, \ - "too many hints" ) - FT_ERRORDEF_( Invalid_Pixel_Size, 0x17, \ - "invalid pixel size" ) - - /* handle errors */ - - FT_ERRORDEF_( Invalid_Handle, 0x20, \ - "invalid object handle" ) - FT_ERRORDEF_( Invalid_Library_Handle, 0x21, \ - "invalid library handle" ) - FT_ERRORDEF_( Invalid_Driver_Handle, 0x22, \ - "invalid module handle" ) - FT_ERRORDEF_( Invalid_Face_Handle, 0x23, \ - "invalid face handle" ) - FT_ERRORDEF_( Invalid_Size_Handle, 0x24, \ - "invalid size handle" ) - FT_ERRORDEF_( Invalid_Slot_Handle, 0x25, \ - "invalid glyph slot handle" ) - FT_ERRORDEF_( Invalid_CharMap_Handle, 0x26, \ - "invalid charmap handle" ) - FT_ERRORDEF_( Invalid_Cache_Handle, 0x27, \ - "invalid cache manager handle" ) - FT_ERRORDEF_( Invalid_Stream_Handle, 0x28, \ - "invalid stream handle" ) - - /* driver errors */ - - FT_ERRORDEF_( Too_Many_Drivers, 0x30, \ - "too many modules" ) - FT_ERRORDEF_( Too_Many_Extensions, 0x31, \ - "too many extensions" ) - - /* memory errors */ - - FT_ERRORDEF_( Out_Of_Memory, 0x40, \ - "out of memory" ) - FT_ERRORDEF_( Unlisted_Object, 0x41, \ - "unlisted object" ) - - /* stream errors */ - - FT_ERRORDEF_( Cannot_Open_Stream, 0x51, \ - "cannot open stream" ) - FT_ERRORDEF_( Invalid_Stream_Seek, 0x52, \ - "invalid stream seek" ) - FT_ERRORDEF_( Invalid_Stream_Skip, 0x53, \ - "invalid stream skip" ) - FT_ERRORDEF_( Invalid_Stream_Read, 0x54, \ - "invalid stream read" ) - FT_ERRORDEF_( Invalid_Stream_Operation, 0x55, \ - "invalid stream operation" ) - FT_ERRORDEF_( Invalid_Frame_Operation, 0x56, \ - "invalid frame operation" ) - FT_ERRORDEF_( Nested_Frame_Access, 0x57, \ - "nested frame access" ) - FT_ERRORDEF_( Invalid_Frame_Read, 0x58, \ - "invalid frame read" ) - - /* raster errors */ - - FT_ERRORDEF_( Raster_Uninitialized, 0x60, \ - "raster uninitialized" ) - FT_ERRORDEF_( Raster_Corrupted, 0x61, \ - "raster corrupted" ) - FT_ERRORDEF_( Raster_Overflow, 0x62, \ - "raster overflow" ) - FT_ERRORDEF_( Raster_Negative_Height, 0x63, \ - "negative height while rastering" ) - - /* cache errors */ - - FT_ERRORDEF_( Too_Many_Caches, 0x70, \ - "too many registered caches" ) - - /* TrueType and SFNT errors */ - - FT_ERRORDEF_( Invalid_Opcode, 0x80, \ - "invalid opcode" ) - FT_ERRORDEF_( Too_Few_Arguments, 0x81, \ - "too few arguments" ) - FT_ERRORDEF_( Stack_Overflow, 0x82, \ - "stack overflow" ) - FT_ERRORDEF_( Code_Overflow, 0x83, \ - "code overflow" ) - FT_ERRORDEF_( Bad_Argument, 0x84, \ - "bad argument" ) - FT_ERRORDEF_( Divide_By_Zero, 0x85, \ - "division by zero" ) - FT_ERRORDEF_( Invalid_Reference, 0x86, \ - "invalid reference" ) - FT_ERRORDEF_( Debug_OpCode, 0x87, \ - "found debug opcode" ) - FT_ERRORDEF_( ENDF_In_Exec_Stream, 0x88, \ - "found ENDF opcode in execution stream" ) - FT_ERRORDEF_( Nested_DEFS, 0x89, \ - "nested DEFS" ) - FT_ERRORDEF_( Invalid_CodeRange, 0x8A, \ - "invalid code range" ) - FT_ERRORDEF_( Execution_Too_Long, 0x8B, \ - "execution context too long" ) - FT_ERRORDEF_( Too_Many_Function_Defs, 0x8C, \ - "too many function definitions" ) - FT_ERRORDEF_( Too_Many_Instruction_Defs, 0x8D, \ - "too many instruction definitions" ) - FT_ERRORDEF_( Table_Missing, 0x8E, \ - "SFNT font table missing" ) - FT_ERRORDEF_( Horiz_Header_Missing, 0x8F, \ - "horizontal header (hhea) table missing" ) - FT_ERRORDEF_( Locations_Missing, 0x90, \ - "locations (loca) table missing" ) - FT_ERRORDEF_( Name_Table_Missing, 0x91, \ - "name table missing" ) - FT_ERRORDEF_( CMap_Table_Missing, 0x92, \ - "character map (cmap) table missing" ) - FT_ERRORDEF_( Hmtx_Table_Missing, 0x93, \ - "horizontal metrics (hmtx) table missing" ) - FT_ERRORDEF_( Post_Table_Missing, 0x94, \ - "PostScript (post) table missing" ) - FT_ERRORDEF_( Invalid_Horiz_Metrics, 0x95, \ - "invalid horizontal metrics" ) - FT_ERRORDEF_( Invalid_CharMap_Format, 0x96, \ - "invalid character map (cmap) format" ) - FT_ERRORDEF_( Invalid_PPem, 0x97, \ - "invalid ppem value" ) - FT_ERRORDEF_( Invalid_Vert_Metrics, 0x98, \ - "invalid vertical metrics" ) - FT_ERRORDEF_( Could_Not_Find_Context, 0x99, \ - "could not find context" ) - FT_ERRORDEF_( Invalid_Post_Table_Format, 0x9A, \ - "invalid PostScript (post) table format" ) - FT_ERRORDEF_( Invalid_Post_Table, 0x9B, \ - "invalid PostScript (post) table" ) - - /* CFF, CID, and Type 1 errors */ - - FT_ERRORDEF_( Syntax_Error, 0xA0, \ - "opcode syntax error" ) - FT_ERRORDEF_( Stack_Underflow, 0xA1, \ - "argument stack underflow" ) - FT_ERRORDEF_( Ignore, 0xA2, \ - "ignore" ) - - /* BDF errors */ - - FT_ERRORDEF_( Missing_Startfont_Field, 0xB0, \ - "`STARTFONT' field missing" ) - FT_ERRORDEF_( Missing_Font_Field, 0xB1, \ - "`FONT' field missing" ) - FT_ERRORDEF_( Missing_Size_Field, 0xB2, \ - "`SIZE' field missing" ) - FT_ERRORDEF_( Missing_Chars_Field, 0xB3, \ - "`CHARS' field missing" ) - FT_ERRORDEF_( Missing_Startchar_Field, 0xB4, \ - "`STARTCHAR' field missing" ) - FT_ERRORDEF_( Missing_Encoding_Field, 0xB5, \ - "`ENCODING' field missing" ) - FT_ERRORDEF_( Missing_Bbx_Field, 0xB6, \ - "`BBX' field missing" ) - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/fterrors.h b/nx-X11/extras/freetype2/include/freetype/fterrors.h deleted file mode 100644 index 1def4f9ce..000000000 --- a/nx-X11/extras/freetype2/include/freetype/fterrors.h +++ /dev/null @@ -1,207 +0,0 @@ -/***************************************************************************/ -/* */ -/* fterrors.h */ -/* */ -/* FreeType error code handling (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This special header file is used to define the handling of FT2 */ - /* enumeration constants. It can also be used to generate error message */ - /* strings with a small macro trick explained below. */ - /* */ - /* I - Error Formats */ - /* ----------------- */ - /* */ - /* Since release 2.1, the error constants have changed. The lower */ - /* byte of the error value gives the "generic" error code, while the */ - /* higher byte indicates in which module the error occurred. */ - /* */ - /* You can use the macro FT_ERROR_BASE(x) macro to extract the generic */ - /* error code from an FT_Error value. */ - /* */ - /* The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be */ - /* undefined in ftoption.h in order to make the higher byte always */ - /* zero, in case you need to be compatible with previous versions of */ - /* FreeType 2. */ - /* */ - /* */ - /* II - Error Message strings */ - /* -------------------------- */ - /* */ - /* The error definitions below are made through special macros that */ - /* allow client applications to build a table of error message strings */ - /* if they need it. The strings are not included in a normal build of */ - /* FreeType 2 to save space (most client applications do not use */ - /* them). */ - /* */ - /* To do so, you have to define the following macros before including */ - /* this file: */ - /* */ - /* FT_ERROR_START_LIST :: */ - /* This macro is called before anything else to define the start of */ - /* the error list. It is followed by several FT_ERROR_DEF calls */ - /* (see below). */ - /* */ - /* FT_ERROR_DEF( e, v, s ) :: */ - /* This macro is called to define one single error. */ - /* `e' is the error code identifier (e.g. FT_Err_Invalid_Argument). */ - /* `v' is the error numerical value. */ - /* `s' is the corresponding error string. */ - /* */ - /* FT_ERROR_END_LIST :: */ - /* This macro ends the list. */ - /* */ - /* Additionally, you have to undefine __FTERRORS_H__ before #including */ - /* this file. */ - /* */ - /* Here is a simple example: */ - /* */ - /* { */ - /* #undef __FTERRORS_H__ */ - /* #define FT_ERRORDEF( e, v, s ) { e, s }, */ - /* #define FT_ERROR_START_LIST { */ - /* #define FT_ERROR_END_LIST { 0, 0 } }; */ - /* */ - /* const struct */ - /* { */ - /* int err_code; */ - /* const char* err_msg */ - /* } ft_errors[] = */ - /* */ - /* #include FT_ERRORS_H */ - /* } */ - /* */ - /*************************************************************************/ - - -#ifndef __FTERRORS_H__ -#define __FTERRORS_H__ - - - /* include module base error codes */ -#include FT_MODULE_ERRORS_H - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SETUP MACROS *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#undef FT_NEED_EXTERN_C - -#undef FT_ERR_XCAT -#undef FT_ERR_CAT - -#define FT_ERR_XCAT( x, y ) x ## y -#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) - - - /* FT_ERR_PREFIX is used as a prefix for error identifiers. */ - /* By default, we use `FT_Err_'. */ - /* */ -#ifndef FT_ERR_PREFIX -#define FT_ERR_PREFIX FT_Err_ -#endif - - - /* FT_ERR_BASE is used as the base for module-specific errors. */ - /* */ -#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS - -#ifndef FT_ERR_BASE -#define FT_ERR_BASE FT_Mod_Err_Base -#endif - -#else - -#undef FT_ERR_BASE -#define FT_ERR_BASE 0 - -#endif /* FT_CONFIG_OPTION_USE_MODULE_ERRORS */ - - - /* If FT_ERRORDEF is not defined, we need to define a simple */ - /* enumeration type. */ - /* */ -#ifndef FT_ERRORDEF - -#define FT_ERRORDEF( e, v, s ) e = v, -#define FT_ERROR_START_LIST enum { -#define FT_ERROR_END_LIST FT_ERR_CAT( FT_ERR_PREFIX, Max ) }; - -#ifdef __cplusplus -#define FT_NEED_EXTERN_C - extern "C" { -#endif - -#endif /* !FT_ERRORDEF */ - - - /* this macro is used to define an error */ -#define FT_ERRORDEF_( e, v, s ) \ - FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v + FT_ERR_BASE, s ) - - /* this is only used for FT_Err_Ok, which must be 0! */ -#define FT_NOERRORDEF_( e, v, s ) \ - FT_ERRORDEF( FT_ERR_CAT( FT_ERR_PREFIX, e ), v, s ) - - -#ifdef FT_ERROR_START_LIST - FT_ERROR_START_LIST -#endif - - - /* no include the error codes */ -#include FT_ERROR_DEFINITIONS_H - - -#ifdef FT_ERROR_END_LIST - FT_ERROR_END_LIST -#endif - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SIMPLE CLEANUP *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - -#ifdef FT_NEED_EXTERN_C - } -#endif - -#undef FT_ERROR_START_LIST -#undef FT_ERROR_END_LIST - -#undef FT_ERRORDEF -#undef FT_ERRORDEF_ -#undef FT_NOERRORDEF_ - -#undef FT_NEED_EXTERN_C -#undef FT_ERR_PREFIX -#undef FT_ERR_BASE -#undef FT_ERR_CONCAT - -#endif /* __FTERRORS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftglyph.h b/nx-X11/extras/freetype2/include/freetype/ftglyph.h deleted file mode 100644 index 14050a21d..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftglyph.h +++ /dev/null @@ -1,565 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftglyph.h */ -/* */ -/* FreeType convenience functions to handle glyphs (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file contains the definition of several convenience functions */ - /* that can be used by client applications to easily retrieve glyph */ - /* bitmaps and outlines from a given face. */ - /* */ - /* These functions should be optional if you are writing a font server */ - /* or text layout engine on top of FreeType. However, they are pretty */ - /* handy for many other simple uses of the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTGLYPH_H__ -#define __FTGLYPH_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* glyph_management */ - /* */ - /* <Title> */ - /* Glyph Management */ - /* */ - /* <Abstract> */ - /* Generic interface to manage individual glyph data. */ - /* */ - /* <Description> */ - /* This section contains definitions used to manage glyph data */ - /* through generic FT_Glyph objects. Each of them can contain a */ - /* bitmap, a vector outline, or even images in other formats. */ - /* */ - /*************************************************************************/ - - - /* forward declaration to a private type */ - typedef struct FT_Glyph_Class_ FT_Glyph_Class; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Glyph */ - /* */ - /* <Description> */ - /* Handle to an object used to model generic glyph images. It is a */ - /* pointer to the @FT_GlyphRec structure and can contain a glyph */ - /* bitmap or pointer. */ - /* */ - /* <Note> */ - /* Glyph objects are not owned by the library. You must thus release */ - /* them manually (through @FT_Done_Glyph) _before_ calling */ - /* @FT_Done_FreeType. */ - /* */ - typedef struct FT_GlyphRec_* FT_Glyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_GlyphRec */ - /* */ - /* <Description> */ - /* The root glyph structure contains a given glyph image plus its */ - /* advance width in 16.16 fixed float format. */ - /* */ - /* <Fields> */ - /* library :: A handle to the FreeType library object. */ - /* */ - /* clazz :: A pointer to the glyph's class. Private. */ - /* */ - /* format :: The format of the glyph's image. */ - /* */ - /* advance :: A 16.16 vector that gives the glyph's advance width. */ - /* */ - typedef struct FT_GlyphRec_ - { - FT_Library library; - const FT_Glyph_Class* clazz; - FT_Glyph_Format format; - FT_Vector advance; - - } FT_GlyphRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_BitmapGlyph */ - /* */ - /* <Description> */ - /* A handle to an object used to model a bitmap glyph image. This is */ - /* a sub-class of @FT_Glyph, and a pointer to @FT_BitmapGlyphRec. */ - /* */ - typedef struct FT_BitmapGlyphRec_* FT_BitmapGlyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_BitmapGlyphRec */ - /* */ - /* <Description> */ - /* A structure used for bitmap glyph images. This really is a */ - /* `sub-class' of `FT_GlyphRec'. */ - /* */ - /* <Fields> */ - /* root :: The root FT_Glyph fields. */ - /* */ - /* left :: The left-side bearing, i.e., the horizontal distance */ - /* from the current pen position to the left border of the */ - /* glyph bitmap. */ - /* */ - /* top :: The top-side bearing, i.e., the vertical distance from */ - /* the current pen position to the top border of the glyph */ - /* bitmap. This distance is positive for upwards-y! */ - /* */ - /* bitmap :: A descriptor for the bitmap. */ - /* */ - /* <Note> */ - /* You can typecast FT_Glyph to FT_BitmapGlyph if you have */ - /* glyph->format == FT_GLYPH_FORMAT_BITMAP. This lets you access */ - /* the bitmap's contents easily. */ - /* */ - /* The corresponding pixel buffer is always owned by the BitmapGlyph */ - /* and is thus created and destroyed with it. */ - /* */ - typedef struct FT_BitmapGlyphRec_ - { - FT_GlyphRec root; - FT_Int left; - FT_Int top; - FT_Bitmap bitmap; - - } FT_BitmapGlyphRec; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_OutlineGlyph */ - /* */ - /* <Description> */ - /* A handle to an object used to model an outline glyph image. This */ - /* is a sub-class of @FT_Glyph, and a pointer to @FT_OutlineGlyphRec. */ - /* */ - typedef struct FT_OutlineGlyphRec_* FT_OutlineGlyph; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_OutlineGlyphRec */ - /* */ - /* <Description> */ - /* A structure used for outline (vectorial) glyph images. This */ - /* really is a `sub-class' of `FT_GlyphRec'. */ - /* */ - /* <Fields> */ - /* root :: The root FT_Glyph fields. */ - /* */ - /* outline :: A descriptor for the outline. */ - /* */ - /* <Note> */ - /* You can typecast FT_Glyph to FT_OutlineGlyph if you have */ - /* glyph->format == FT_GLYPH_FORMAT_OUTLINE. This lets you access */ - /* the outline's content easily. */ - /* */ - /* As the outline is extracted from a glyph slot, its coordinates are */ - /* expressed normally in 26.6 pixels, unless the flag */ - /* FT_LOAD_NO_SCALE was used in FT_Load_Glyph() or FT_Load_Char(). */ - /* */ - /* The outline's tables are always owned by the object and are */ - /* destroyed with it. */ - /* */ - typedef struct FT_OutlineGlyphRec_ - { - FT_GlyphRec root; - FT_Outline outline; - - } FT_OutlineGlyphRec; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Glyph */ - /* */ - /* <Description> */ - /* A function used to extract a glyph image from a slot. */ - /* */ - /* <Input> */ - /* slot :: A handle to the source glyph slot. */ - /* */ - /* <Output> */ - /* aglyph :: A handle to the glyph object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Glyph( FT_GlyphSlot slot, - FT_Glyph *aglyph ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Copy */ - /* */ - /* <Description> */ - /* A function used to copy a glyph image. Note that the created */ - /* @FT_Glyph object must be released with @FT_Done_Glyph. */ - /* */ - /* <Input> */ - /* source :: A handle to the source glyph object. */ - /* */ - /* <Output> */ - /* target :: A handle to the target glyph object. 0 in case of */ - /* error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_Copy( FT_Glyph source, - FT_Glyph *target ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Transform */ - /* */ - /* <Description> */ - /* Transforms a glyph image if its format is scalable. */ - /* */ - /* <InOut> */ - /* glyph :: A handle to the target glyph object. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to a 2x2 matrix to apply. */ - /* */ - /* delta :: A pointer to a 2d vector to apply. Coordinates are */ - /* expressed in 1/64th of a pixel. */ - /* */ - /* <Return> */ - /* FreeType error code (the glyph format is not scalable if it is */ - /* not zero). */ - /* */ - /* <Note> */ - /* The 2x2 transformation matrix is also applied to the glyph's */ - /* advance vector. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_Transform( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Glyph_BBox_Mode */ - /* */ - /* <Description> */ - /* The mode how the values of @FT_Glyph_Get_CBox are returned. */ - /* */ - /* <Values> */ - /* FT_GLYPH_BBOX_UNSCALED :: */ - /* Return unscaled font units. */ - /* */ - /* FT_GLYPH_BBOX_SUBPIXELS :: */ - /* Return unfitted 26.6 coordinates. */ - /* */ - /* FT_GLYPH_BBOX_GRIDFIT :: */ - /* Return grid-fitted 26.6 coordinates. */ - /* */ - /* FT_GLYPH_BBOX_TRUNCATE :: */ - /* Return coordinates in integer pixels. */ - /* */ - /* FT_GLYPH_BBOX_PIXELS :: */ - /* Return grid-fitted pixel coordinates. */ - /* */ - typedef enum FT_Glyph_BBox_Mode_ - { - FT_GLYPH_BBOX_UNSCALED = 0, - FT_GLYPH_BBOX_SUBPIXELS = 0, - FT_GLYPH_BBOX_GRIDFIT = 1, - FT_GLYPH_BBOX_TRUNCATE = 2, - FT_GLYPH_BBOX_PIXELS = 3 - - } FT_Glyph_BBox_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_glyph_bbox_xxx */ - /* */ - /* <Description> */ - /* These constants are deprecated. Use the corresponding */ - /* @FT_Glyph_BBox_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_glyph_bbox_unscaled :: see @FT_GLYPH_BBOX_UNSCALED */ - /* ft_glyph_bbox_subpixels :: see @FT_GLYPH_BBOX_SUBPIXELS */ - /* ft_glyph_bbox_gridfit :: see @FT_GLYPH_BBOX_GRIDFIT */ - /* ft_glyph_bbox_truncate :: see @FT_GLYPH_BBOX_TRUNCATE */ - /* ft_glyph_bbox_pixels :: see @FT_GLYPH_BBOX_PIXELS */ - /* */ -#define ft_glyph_bbox_unscaled FT_GLYPH_BBOX_UNSCALED -#define ft_glyph_bbox_subpixels FT_GLYPH_BBOX_SUBPIXELS -#define ft_glyph_bbox_gridfit FT_GLYPH_BBOX_GRIDFIT -#define ft_glyph_bbox_truncate FT_GLYPH_BBOX_TRUNCATE -#define ft_glyph_bbox_pixels FT_GLYPH_BBOX_PIXELS - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_Get_CBox */ - /* */ - /* <Description> */ - /* Returns a glyph's `control box'. The control box encloses all the */ - /* outline's points, including Bezier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bezier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ - /* and arcs in the outline. To get the latter, you can use the */ - /* `ftbbox' component which is dedicated to this single task. */ - /* */ - /* <Input> */ - /* glyph :: A handle to the source glyph object. */ - /* */ - /* mode :: The mode which indicates how to interpret the returned */ - /* bounding box values. */ - /* */ - /* <Output> */ - /* acbox :: The glyph coordinate bounding box. Coordinates are */ - /* expressed in 1/64th of pixels if it is grid-fitted. */ - /* */ - /* <Note> */ - /* Coordinates are relative to the glyph origin, using the Y-upwards */ - /* convention. */ - /* */ - /* If the glyph has been loaded with FT_LOAD_NO_SCALE, `bbox_mode' */ - /* must be set to `FT_GLYPH_BBOX_UNSCALED' to get unscaled font */ - /* units in 26.6 pixel format. The value `FT_GLYPH_BBOX_SUBPIXELS' */ - /* is another name for this constant. */ - /* */ - /* Note that the maximum coordinates are exclusive, which means that */ - /* one can compute the width and height of the glyph image (be it in */ - /* integer or 26.6 pixels) as: */ - /* */ - /* width = bbox.xMax - bbox.xMin; */ - /* height = bbox.yMax - bbox.yMin; */ - /* */ - /* Note also that for 26.6 coordinates, if `bbox_mode' is set to */ - /* `FT_GLYPH_BBOX_GRIDFIT', the coordinates will also be grid-fitted, */ - /* which corresponds to: */ - /* */ - /* bbox.xMin = FLOOR(bbox.xMin); */ - /* bbox.yMin = FLOOR(bbox.yMin); */ - /* bbox.xMax = CEILING(bbox.xMax); */ - /* bbox.yMax = CEILING(bbox.yMax); */ - /* */ - /* To get the bbox in pixel coordinates, set `bbox_mode' to */ - /* `FT_GLYPH_BBOX_TRUNCATE'. */ - /* */ - /* To get the bbox in grid-fitted pixel coordinates, set `bbox_mode' */ - /* to `FT_GLYPH_BBOX_PIXELS'. */ - /* */ - FT_EXPORT( void ) - FT_Glyph_Get_CBox( FT_Glyph glyph, - FT_UInt bbox_mode, - FT_BBox *acbox ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Glyph_To_Bitmap */ - /* */ - /* <Description> */ - /* Converts a given glyph object to a bitmap glyph object. */ - /* */ - /* <InOut> */ - /* the_glyph :: A pointer to a handle to the target glyph. */ - /* */ - /* <Input> */ - /* render_mode :: An enumeration that describe how the data is */ - /* rendered. */ - /* */ - /* origin :: A pointer to a vector used to translate the glyph */ - /* image before rendering. Can be 0 (if no */ - /* translation). The origin is expressed in */ - /* 26.6 pixels. */ - /* */ - /* destroy :: A boolean that indicates that the original glyph */ - /* image should be destroyed by this function. It is */ - /* never destroyed in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The glyph image is translated with the `origin' vector before */ - /* rendering. */ - /* */ - /* The first parameter is a pointer to a FT_Glyph handle, that will */ - /* be replaced by this function. Typically, you would use (omitting */ - /* error handling): */ - /* */ - /* */ - /* { */ - /* FT_Glyph glyph; */ - /* FT_BitmapGlyph glyph_bitmap; */ - /* */ - /* */ - /* // load glyph */ - /* error = FT_Load_Char( face, glyph_index, FT_LOAD_DEFAUT ); */ - /* */ - /* // extract glyph image */ - /* error = FT_Get_Glyph( face->glyph, &glyph ); */ - /* */ - /* // convert to a bitmap (default render mode + destroy old) */ - /* if ( glyph->format != FT_GLYPH_FORMAT_BITMAP ) */ - /* { */ - /* error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_DEFAULT, */ - /* 0, 1 ); */ - /* if ( error ) // glyph unchanged */ - /* ... */ - /* } */ - /* */ - /* // access bitmap content by typecasting */ - /* glyph_bitmap = (FT_BitmapGlyph)glyph; */ - /* */ - /* // do funny stuff with it, like blitting/drawing */ - /* ... */ - /* */ - /* // discard glyph image (bitmap or not) */ - /* FT_Done_Glyph( glyph ); */ - /* } */ - /* */ - /* */ - /* This function does nothing if the glyph format isn't scalable. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, - FT_Render_Mode render_mode, - FT_Vector* origin, - FT_Bool destroy ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Glyph */ - /* */ - /* <Description> */ - /* Destroys a given glyph. */ - /* */ - /* <Input> */ - /* glyph :: A handle to the target glyph object. */ - /* */ - FT_EXPORT( void ) - FT_Done_Glyph( FT_Glyph glyph ); - - - /* other helpful functions */ - - /*************************************************************************/ - /* */ - /* <Section> */ - /* computations */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Matrix_Multiply */ - /* */ - /* <Description> */ - /* Performs the matrix operation `b = a*b'. */ - /* */ - /* <Input> */ - /* a :: A pointer to matrix `a'. */ - /* */ - /* <InOut> */ - /* b :: A pointer to matrix `b'. */ - /* */ - /* <Note> */ - /* The result is undefined if either `a' or `b' is zero. */ - /* */ - FT_EXPORT( void ) - FT_Matrix_Multiply( const FT_Matrix* a, - FT_Matrix* b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Matrix_Invert */ - /* */ - /* <Description> */ - /* Inverts a 2x2 matrix. Returns an error if it can't be inverted. */ - /* */ - /* <InOut> */ - /* matrix :: A pointer to the target matrix. Remains untouched in */ - /* case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Matrix_Invert( FT_Matrix* matrix ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTGLYPH_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftgzip.h b/nx-X11/extras/freetype2/include/freetype/ftgzip.h deleted file mode 100644 index 5d7228bb4..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftgzip.h +++ /dev/null @@ -1,100 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgzip.h */ -/* */ -/* Gzip-compressed stream support. */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTGZIP_H__ -#define __FTGZIP_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* gzip */ - /* */ - /* <Title> */ - /* GZIP Streams */ - /* */ - /* <Abstract> */ - /* Using gzip-compressed font files */ - /* */ - /* <Description> */ - /* This section contains the declaration of Gzip-specific functions. */ - /* */ - /*************************************************************************/ - - - /************************************************************************ - * - * @function: - * FT_Stream_OpenGzip - * - * @description: - * Open a new stream to parse gzip-compressed font files. This is - * mainly used to support the compressed *.pcf.gz fonts that come - * with XFree86. - * - * @input: - * stream :: The target embedding stream. - * - * source :: The source stream. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function FT_Stream_Close on the new stream will - * *not* call FT_Stream_Close on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream. - * - * In certain builds of the library, gzip compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a gzipped stream from - * it and re-open the face with it. - * - * This function may return "FT_Err_Unimplemented" if your build of - * FreeType was not compiled with zlib support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenGzip( FT_Stream stream, - FT_Stream source ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTGZIP_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftimage.h b/nx-X11/extras/freetype2/include/freetype/ftimage.h deleted file mode 100644 index 4682a4cad..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftimage.h +++ /dev/null @@ -1,1236 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftimage.h */ -/* */ -/* FreeType glyph image formats and default raster interface */ -/* (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* Note: A `raster' is simply a scan-line converter, used to render */ - /* FT_Outlines into FT_Bitmaps. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTIMAGE_H__ -#define __FTIMAGE_H__ - - -/* _STANDALONE_ is from ftgrays.c */ -#ifndef _STANDALONE_ -#include <ft2build.h> -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Pos */ - /* */ - /* <Description> */ - /* The type FT_Pos is a 32-bit integer used to store vectorial */ - /* coordinates. Depending on the context, these can represent */ - /* distances in integer font units, or 16,16, or 26.6 fixed float */ - /* pixel coordinates. */ - /* */ - typedef signed long FT_Pos; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Vector */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2D vector; coordinates are of */ - /* the FT_Pos type. */ - /* */ - /* <Fields> */ - /* x :: The horizontal coordinate. */ - /* y :: The vertical coordinate. */ - /* */ - typedef struct FT_Vector_ - { - FT_Pos x; - FT_Pos y; - - } FT_Vector; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_BBox */ - /* */ - /* <Description> */ - /* A structure used to hold an outline's bounding box, i.e., the */ - /* coordinates of its extrema in the horizontal and vertical */ - /* directions. */ - /* */ - /* <Fields> */ - /* xMin :: The horizontal minimum (left-most). */ - /* */ - /* yMin :: The vertical minimum (bottom-most). */ - /* */ - /* xMax :: The horizontal maximum (right-most). */ - /* */ - /* yMax :: The vertical maximum (top-most). */ - /* */ - typedef struct FT_BBox_ - { - FT_Pos xMin, yMin; - FT_Pos xMax, yMax; - - } FT_BBox; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Pixel_Mode */ - /* */ - /* <Description> */ - /* An enumeration type used to describe the format of pixels in a */ - /* given bitmap. Note that additional formats may be added in the */ - /* future. */ - /* */ - /* <Values> */ - /* FT_PIXEL_MODE_NONE :: */ - /* Value 0 is reserved. */ - /* */ - /* FT_PIXEL_MODE_MONO :: */ - /* A monochrome bitmap, using 1 bit per pixel. Note that pixels */ - /* are stored in most-significant order (MSB), which means that */ - /* the left-most pixel in a byte has value 128. */ - /* */ - /* FT_PIXEL_MODE_GRAY :: */ - /* An 8-bit bitmap, generally used to represent anti-aliased glyph */ - /* images. Each pixel is stored in one byte. Note that the number */ - /* of value "gray" levels is stored in the `num_bytes' field of */ - /* the @FT_Bitmap structure (it generally is 256). */ - /* */ - /* FT_PIXEL_MODE_GRAY2 :: */ - /* A 2-bit/pixel bitmap, used to represent embedded anti-aliased */ - /* bitmaps in font files according to the OpenType specification. */ - /* We haven't found a single font using this format, however. */ - /* */ - /* FT_PIXEL_MODE_GRAY4 :: */ - /* A 4-bit/pixel bitmap, used to represent embedded anti-aliased */ - /* bitmaps in font files according to the OpenType specification. */ - /* We haven't found a single font using this format, however. */ - /* */ - /* FT_PIXEL_MODE_LCD :: */ - /* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */ - /* images used for display on LCD displays; the bitmap's width is */ - /* three times wider than the original glyph image. See also */ - /* @FT_RENDER_MODE_LCD. */ - /* */ - /* FT_PIXEL_MODE_LCD_V :: */ - /* An 8-bit bitmap, used to represent RGB or BGR decimated glyph */ - /* images used for display on rotated LCD displays; the bitmap's */ - /* height is three times taller than the original glyph image. */ - /* See also @FT_RENDER_MODE_LCD_V. */ - /* */ - typedef enum FT_Pixel_Mode_ - { - FT_PIXEL_MODE_NONE = 0, - FT_PIXEL_MODE_MONO, - FT_PIXEL_MODE_GRAY, - FT_PIXEL_MODE_GRAY2, - FT_PIXEL_MODE_GRAY4, - FT_PIXEL_MODE_LCD, - FT_PIXEL_MODE_LCD_V, - - FT_PIXEL_MODE_MAX /* do not remove */ - - } FT_Pixel_Mode; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_pixel_mode_xxx */ - /* */ - /* <Description> */ - /* A list of deprecated constants. Use the corresponding */ - /* @FT_Pixel_Mode values instead. */ - /* */ - /* <Values> */ - /* ft_pixel_mode_none :: see @FT_PIXEL_MODE_NONE */ - /* ft_pixel_mode_mono :: see @FT_PIXEL_MODE_MONO */ - /* ft_pixel_mode_grays :: see @FT_PIXEL_MODE_GRAY */ - /* ft_pixel_mode_pal2 :: see @FT_PIXEL_MODE_GRAY2 */ - /* ft_pixel_mode_pal4 :: see @FT_PIXEL_MODE_GRAY4 */ - /* */ -#define ft_pixel_mode_none FT_PIXEL_MODE_NONE -#define ft_pixel_mode_mono FT_PIXEL_MODE_MONO -#define ft_pixel_mode_grays FT_PIXEL_MODE_GRAY -#define ft_pixel_mode_pal2 FT_PIXEL_MODE_GRAY2 -#define ft_pixel_mode_pal4 FT_PIXEL_MODE_GRAY4 - - /* */ - -#if 0 - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Palette_Mode */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT! */ - /* */ - /* An enumeration type used to describe the format of a bitmap */ - /* palette, used with ft_pixel_mode_pal4 and ft_pixel_mode_pal8. */ - /* */ - /* <Fields> */ - /* ft_palette_mode_rgb :: The palette is an array of 3-bytes RGB */ - /* records. */ - /* */ - /* ft_palette_mode_rgba :: The palette is an array of 4-bytes RGBA */ - /* records. */ - /* */ - /* <Note> */ - /* As ft_pixel_mode_pal2, pal4 and pal8 are currently unused by */ - /* FreeType, these types are not handled by the library itself. */ - /* */ - typedef enum FT_Palette_Mode_ - { - ft_palette_mode_rgb = 0, - ft_palette_mode_rgba, - - ft_palettte_mode_max /* do not remove */ - - } FT_Palette_Mode; - - /* */ - -#endif - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Bitmap */ - /* */ - /* <Description> */ - /* A structure used to describe a bitmap or pixmap to the raster. */ - /* Note that we now manage pixmaps of various depths through the */ - /* `pixel_mode' field. */ - /* */ - /* <Fields> */ - /* rows :: The number of bitmap rows. */ - /* */ - /* width :: The number of pixels in bitmap row. */ - /* */ - /* pitch :: The pitch's absolute value is the number of bytes */ - /* taken by one bitmap row, including padding. */ - /* However, the pitch is positive when the bitmap has */ - /* a `down' flow, and negative when it has an `up' */ - /* flow. In all cases, the pitch is an offset to add */ - /* to a bitmap pointer in order to go down one row. */ - /* */ - /* buffer :: A typeless pointer to the bitmap buffer. This */ - /* value should be aligned on 32-bit boundaries in */ - /* most cases. */ - /* */ - /* num_grays :: This field is only used with */ - /* `FT_PIXEL_MODE_GRAY'; it gives the number of gray */ - /* levels used in the bitmap. */ - /* */ - /* pixel_mode :: The pixel mode, i.e., how pixel bits are stored. */ - /* See @FT_Pixel_Mode for possible values. */ - /* */ - /* palette_mode :: This field is only used with paletted pixel modes; */ - /* it indicates how the palette is stored. */ - /* */ - /* palette :: A typeless pointer to the bitmap palette; only */ - /* used for paletted pixel modes. */ - /* */ - /* <Note> */ - /* For now, the only pixel mode supported by FreeType are mono and */ - /* grays. However, drivers might be added in the future to support */ - /* more `colorful' options. */ - /* */ - /* When using pixel modes pal2, pal4 and pal8 with a void `palette' */ - /* field, a gray pixmap with respectively 4, 16, and 256 levels of */ - /* gray is assumed. This, in order to be compatible with some */ - /* embedded bitmap formats defined in the TrueType specification. */ - /* */ - /* Note that no font was found presenting such embedded bitmaps, so */ - /* this is currently completely unhandled by the library. */ - /* */ - typedef struct FT_Bitmap_ - { - int rows; - int width; - int pitch; - unsigned char* buffer; - short num_grays; - char pixel_mode; - char palette_mode; - void* palette; - - } FT_Bitmap; - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Outline */ - /* */ - /* <Description> */ - /* This structure is used to describe an outline to the scan-line */ - /* converter. */ - /* */ - /* <Fields> */ - /* n_contours :: The number of contours in the outline. */ - /* */ - /* n_points :: The number of points in the outline. */ - /* */ - /* points :: A pointer to an array of `n_points' FT_Vector */ - /* elements, giving the outline's point coordinates. */ - /* */ - /* tags :: A pointer to an array of `n_points' chars, giving */ - /* each outline point's type. If bit 0 is unset, the */ - /* point is `off' the curve, i.e. a Bezier control */ - /* point, while it is `on' when set. */ - /* */ - /* Bit 1 is meaningful for `off' points only. If set, */ - /* it indicates a third-order Bezier arc control point; */ - /* and a second-order control point if unset. */ - /* */ - /* contours :: An array of `n_contours' shorts, giving the end */ - /* point of each contour within the outline. For */ - /* example, the first contour is defined by the points */ - /* `0' to `contours[0]', the second one is defined by */ - /* the points `contours[0]+1' to `contours[1]', etc. */ - /* */ - /* flags :: A set of bit flags used to characterize the outline */ - /* and give hints to the scan-converter and hinter on */ - /* how to convert/grid-fit it. See FT_Outline_Flags. */ - /* */ - typedef struct FT_Outline_ - { - short n_contours; /* number of contours in glyph */ - short n_points; /* number of points in the glyph */ - - FT_Vector* points; /* the outline's points */ - char* tags; /* the points flags */ - short* contours; /* the contour end points */ - - int flags; /* outline masks */ - - } FT_Outline; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_OUTLINE_FLAGS */ - /* */ - /* <Description> */ - /* A list of bit-field constants use for the flags in an outline's */ - /* `flags' field. */ - /* */ - /* <Values> */ - /* FT_OUTLINE_NONE :: Value 0 is reserved. */ - /* */ - /* FT_OUTLINE_OWNER :: If set, this flag indicates that the */ - /* outline's field arrays (i.e. */ - /* `points', `flags' & `contours') are */ - /* `owned' by the outline object, and */ - /* should thus be freed when it is */ - /* destroyed. */ - /* */ - /* FT_OUTLINE_EVEN_ODD_FILL :: By default, outlines are filled using */ - /* the non-zero winding rule. If set to */ - /* 1, the outline will be filled using */ - /* the even-odd fill rule (only works */ - /* with the smooth raster). */ - /* */ - /* FT_OUTLINE_REVERSE_FILL :: By default, outside contours of an */ - /* outline are oriented in clock-wise */ - /* direction, as defined in the TrueType */ - /* specification. This flag is set if */ - /* the outline uses the opposite */ - /* direction (typically for Type 1 */ - /* fonts). This flag is ignored by the */ - /* scan-converter. However, it is very */ - /* important for the auto-hinter. */ - /* */ - /* FT_OUTLINE_IGNORE_DROPOUTS :: By default, the scan converter will */ - /* try to detect drop-outs in an outline */ - /* and correct the glyph bitmap to */ - /* ensure consistent shape continuity. */ - /* If set, this flag hints the scan-line */ - /* converter to ignore such cases. */ - /* */ - /* FT_OUTLINE_HIGH_PRECISION :: This flag indicates that the */ - /* scan-line converter should try to */ - /* convert this outline to bitmaps with */ - /* the highest possible quality. It is */ - /* typically set for small character */ - /* sizes. Note that this is only a */ - /* hint, that might be completely */ - /* ignored by a given scan-converter. */ - /* */ - /* FT_OUTLINE_SINGLE_PASS :: This flag is set to force a given */ - /* scan-converter to only use a single */ - /* pass over the outline to render a */ - /* bitmap glyph image. Normally, it is */ - /* set for very large character sizes. */ - /* It is only a hint, that might be */ - /* completely ignored by a given */ - /* scan-converter. */ - /* */ -#define FT_OUTLINE_NONE 0x0 -#define FT_OUTLINE_OWNER 0x1 -#define FT_OUTLINE_EVEN_ODD_FILL 0x2 -#define FT_OUTLINE_REVERSE_FILL 0x4 -#define FT_OUTLINE_IGNORE_DROPOUTS 0x8 - -#define FT_OUTLINE_HIGH_PRECISION 0x100 -#define FT_OUTLINE_SINGLE_PASS 0x200 - - - /************************************************************************* - * - * @enum: - * ft_outline_flags - * - * @description: - * These constants are deprecated. Please use the corresponding - * @FT_OUTLINE_FLAGS values. - * - * @values: - * ft_outline_none :: See @FT_OUTLINE_NONE. - * ft_outline_owner :: See @FT_OUTLINE_OWNER. - * ft_outline_even_odd_fill :: See @FT_OUTLINE_EVEN_ODD_FILL. - * ft_outline_reverse_fill :: See @FT_OUTLINE_REVERSE_FILL. - * ft_outline_ignore_dropouts :: See @FT_OUTLINE_IGNORE_DROPOUTS. - * ft_outline_high_precision :: See @FT_OUTLINE_HIGH_PRECISION. - * ft_outline_single_pass :: See @FT_OUTLINE_SINGLE_PASS. - */ -#define ft_outline_none FT_OUTLINE_NONE -#define ft_outline_owner FT_OUTLINE_OWNER -#define ft_outline_even_odd_fill FT_OUTLINE_EVEN_ODD_FILL -#define ft_outline_reverse_fill FT_OUTLINE_REVERSE_FILL -#define ft_outline_ignore_dropouts FT_OUTLINE_IGNORE_DROPOUTS -#define ft_outline_high_precision FT_OUTLINE_HIGH_PRECISION -#define ft_outline_single_pass FT_OUTLINE_SINGLE_PASS - - /* */ - -#define FT_CURVE_TAG( flag ) ( flag & 3 ) - -#define FT_CURVE_TAG_ON 1 -#define FT_CURVE_TAG_CONIC 0 -#define FT_CURVE_TAG_CUBIC 2 - -#define FT_CURVE_TAG_TOUCH_X 8 /* reserved for the TrueType hinter */ -#define FT_CURVE_TAG_TOUCH_Y 16 /* reserved for the TrueType hinter */ - -#define FT_CURVE_TAG_TOUCH_BOTH ( FT_CURVE_TAG_TOUCH_X | \ - FT_CURVE_TAG_TOUCH_Y ) - -#define FT_Curve_Tag_On FT_CURVE_TAG_ON -#define FT_Curve_Tag_Conic FT_CURVE_TAG_CONIC -#define FT_Curve_Tag_Cubic FT_CURVE_TAG_CUBIC -#define FT_Curve_Tag_Touch_X FT_CURVE_TAG_TOUCH_X -#define FT_Curve_Tag_Touch_Y FT_CURVE_TAG_TOUCH_Y - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_MoveToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `move */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `move to' is emitted to start a new contour in an outline. */ - /* */ - /* <Input> */ - /* to :: A pointer to the target point of the `move to'. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of the */ - /* decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - typedef int - (*FT_Outline_MoveToFunc)( FT_Vector* to, - void* user ); - -#define FT_Outline_MoveTo_Func FT_Outline_MoveToFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_LineToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `line */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `line to' is emitted to indicate a segment in the outline. */ - /* */ - /* <Input> */ - /* to :: A pointer to the target point of the `line to'. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of the */ - /* decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - typedef int - (*FT_Outline_LineToFunc)( FT_Vector* to, - void* user ); - -#define FT_Outline_LineTo_Func FT_Outline_LineToFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_ConicToFunc */ - /* */ - /* <Description> */ - /* A function pointer type use to describe the signature of a `conic */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `conic to' is emitted to indicate a second-order Bezier arc in */ - /* the outline. */ - /* */ - /* <Input> */ - /* control :: An intermediate control point between the last position */ - /* and the new target in `to'. */ - /* */ - /* to :: A pointer to the target end point of the conic arc. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of */ - /* the decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - typedef int - (*FT_Outline_ConicToFunc)( FT_Vector* control, - FT_Vector* to, - void* user ); - -#define FT_Outline_ConicTo_Func FT_Outline_ConicToFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Outline_CubicToFunc */ - /* */ - /* <Description> */ - /* A function pointer type used to describe the signature of a `cubic */ - /* to' function during outline walking/decomposition. */ - /* */ - /* A `cubic to' is emitted to indicate a third-order Bezier arc. */ - /* */ - /* <Input> */ - /* control1 :: A pointer to the first Bezier control point. */ - /* */ - /* control2 :: A pointer to the second Bezier control point. */ - /* */ - /* to :: A pointer to the target end point. */ - /* */ - /* user :: A typeless pointer which is passed from the caller of */ - /* the decomposition function. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - typedef int - (*FT_Outline_CubicToFunc)( FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to, - void* user ); - -#define FT_Outline_CubicTo_Func FT_Outline_CubicToFunc - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Outline_Funcs */ - /* */ - /* <Description> */ - /* A structure to hold various function pointers used during outline */ - /* decomposition in order to emit segments, conic, and cubic Beziers, */ - /* as well as `move to' and `close to' operations. */ - /* */ - /* <Fields> */ - /* move_to :: The `move to' emitter. */ - /* */ - /* line_to :: The segment emitter. */ - /* */ - /* conic_to :: The second-order Bezier arc emitter. */ - /* */ - /* cubic_to :: The third-order Bezier arc emitter. */ - /* */ - /* shift :: The shift that is applied to coordinates before they */ - /* are sent to the emitter. */ - /* */ - /* delta :: The delta that is applied to coordinates before they */ - /* are sent to the emitter, but after the shift. */ - /* */ - /* <Note> */ - /* The point coordinates sent to the emitters are the transformed */ - /* version of the original coordinates (this is important for high */ - /* accuracy during scan-conversion). The transformation is simple: */ - /* */ - /* x' = (x << shift) - delta */ - /* y' = (x << shift) - delta */ - /* */ - /* Set the value of `shift' and `delta' to 0 to get the original */ - /* point coordinates. */ - /* */ - typedef struct FT_Outline_Funcs_ - { - FT_Outline_MoveToFunc move_to; - FT_Outline_LineToFunc line_to; - FT_Outline_ConicToFunc conic_to; - FT_Outline_CubicToFunc cubic_to; - - int shift; - FT_Pos delta; - - } FT_Outline_Funcs; - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_IMAGE_TAG */ - /* */ - /* <Description> */ - /* This macro converts four letter tags into an unsigned long. */ - /* */ - /* <Note> */ - /* Since many 16bit compilers don't like 32bit enumerations, you */ - /* should redefine this macro in case of problems to something like */ - /* this: */ - /* */ - /* #define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) value */ - /* */ - /* to get a simple enumeration without assigning special numbers. */ - /* */ -#ifndef FT_IMAGE_TAG -#define FT_IMAGE_TAG( value, _x1, _x2, _x3, _x4 ) \ - value = ( ( (unsigned long)_x1 << 24 ) | \ - ( (unsigned long)_x2 << 16 ) | \ - ( (unsigned long)_x3 << 8 ) | \ - (unsigned long)_x4 ) -#endif /* FT_IMAGE_TAG */ - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Glyph_Format */ - /* */ - /* <Description> */ - /* An enumeration type used to describe the format of a given glyph */ - /* image. Note that this version of FreeType only supports two image */ - /* formats, even though future font drivers will be able to register */ - /* their own format. */ - /* */ - /* <Values> */ - /* FT_GLYPH_FORMAT_NONE :: */ - /* The value 0 is reserved and does describe a glyph format. */ - /* */ - /* FT_GLYPH_FORMAT_COMPOSITE :: */ - /* The glyph image is a composite of several other images. This */ - /* format is _only_ used with @FT_LOAD_NO_RECURSE, and is used to */ - /* report compound glyphs (like accented characters). */ - /* */ - /* FT_GLYPH_FORMAT_BITMAP :: */ - /* The glyph image is a bitmap, and can be described as an */ - /* @FT_Bitmap. You generally need to access the `bitmap' field of */ - /* the @FT_GlyphSlotRec structure to read it. */ - /* */ - /* FT_GLYPH_FORMAT_OUTLINE :: */ - /* The glyph image is a vertorial outline made of line segments */ - /* and Bezier arcs; it can be described as an @FT_Outline; you */ - /* generally want to access the `outline' field of the */ - /* @FT_GlyphSlotRec structure to read it. */ - /* */ - /* FT_GLYPH_FORMAT_PLOTTER :: */ - /* The glyph image is a vectorial path with no inside/outside */ - /* contours. Some Type 1 fonts, like those in the Hershey family, */ - /* contain glyphs in this format. These are described as */ - /* @FT_Outline, but FreeType isn't currently capable of rendering */ - /* them correctly. */ - /* */ - typedef enum FT_Glyph_Format_ - { - FT_IMAGE_TAG( FT_GLYPH_FORMAT_NONE, 0, 0, 0, 0 ), - - FT_IMAGE_TAG( FT_GLYPH_FORMAT_COMPOSITE, 'c', 'o', 'm', 'p' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_BITMAP, 'b', 'i', 't', 's' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_OUTLINE, 'o', 'u', 't', 'l' ), - FT_IMAGE_TAG( FT_GLYPH_FORMAT_PLOTTER, 'p', 'l', 'o', 't' ) - - } FT_Glyph_Format; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* ft_glyph_format_xxx */ - /* */ - /* <Description> */ - /* A list of decprecated constants. Use the corresponding */ - /* @FT_Glyph_Format values instead. */ - /* */ - /* <Values> */ - /* ft_glyph_format_none :: see @FT_GLYPH_FORMAT_NONE */ - /* ft_glyph_format_composite :: see @FT_GLYPH_FORMAT_COMPOSITE */ - /* ft_glyph_format_bitmap :: see @FT_GLYPH_FORMAT_BITMAP */ - /* ft_glyph_format_outline :: see @FT_GLYPH_FORMAT_OUTLINE */ - /* ft_glyph_format_plotter :: see @FT_GLYPH_FORMAT_PLOTTER */ - /* */ -#define ft_glyph_format_none FT_GLYPH_FORMAT_NONE -#define ft_glyph_format_composite FT_GLYPH_FORMAT_COMPOSITE -#define ft_glyph_format_bitmap FT_GLYPH_FORMAT_BITMAP -#define ft_glyph_format_outline FT_GLYPH_FORMAT_OUTLINE -#define ft_glyph_format_plotter FT_GLYPH_FORMAT_PLOTTER - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** R A S T E R D E F I N I T I O N S *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* A raster is a scan converter, in charge of rendering an outline into */ - /* a a bitmap. This section contains the public API for rasters. */ - /* */ - /* Note that in FreeType 2, all rasters are now encapsulated within */ - /* specific modules called `renderers'. See `freetype/ftrender.h' for */ - /* more details on renderers. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* raster */ - /* */ - /* <Title> */ - /* Scanline converter */ - /* */ - /* <Abstract> */ - /* How vectorial outlines are converted into bitmaps and pixmaps. */ - /* */ - /* <Description> */ - /* This section contains technical definitions. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Raster */ - /* */ - /* <Description> */ - /* A handle (pointer) to a raster object. Each object can be used */ - /* independently to convert an outline into a bitmap or pixmap. */ - /* */ - typedef struct FT_RasterRec_* FT_Raster; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Span */ - /* */ - /* <Description> */ - /* A structure used to model a single span of gray (or black) pixels */ - /* when rendering a monochrome or anti-aliased bitmap. */ - /* */ - /* <Fields> */ - /* x :: The span's horizontal start position. */ - /* */ - /* len :: The span's length in pixels. */ - /* */ - /* coverage :: The span color/coverage, ranging from 0 (background) */ - /* to 255 (foreground). Only used for anti-aliased */ - /* rendering. */ - /* */ - /* <Note> */ - /* This structure is used by the span drawing callback type named */ - /* FT_SpanFunc which takes the y-coordinate of the span as a */ - /* a parameter. */ - /* */ - /* The coverage value is always between 0 and 255, even if the number */ - /* of gray levels have been set through FT_Set_Gray_Levels(). */ - /* */ - typedef struct FT_Span_ - { - short x; - unsigned short len; - unsigned char coverage; - - } FT_Span; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_SpanFunc */ - /* */ - /* <Description> */ - /* A function used as a call-back by the anti-aliased renderer in */ - /* order to let client applications draw themselves the gray pixel */ - /* spans on each scan line. */ - /* */ - /* <Input> */ - /* y :: The scanline's y-coordinate. */ - /* */ - /* count :: The number of spans to draw on this scanline. */ - /* */ - /* spans :: A table of `count' spans to draw on the scanline. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Note> */ - /* This callback allows client applications to directly render the */ - /* gray spans of the anti-aliased bitmap to any kind of surfaces. */ - /* */ - /* This can be used to write anti-aliased outlines directly to a */ - /* given background bitmap, and even perform translucency. */ - /* */ - /* Note that the `count' field cannot be greater than a fixed value */ - /* defined by the FT_MAX_GRAY_SPANS configuration macro in */ - /* ftoption.h. By default, this value is set to 32, which means that */ - /* if there are more than 32 spans on a given scanline, the callback */ - /* will be called several times with the same `y' parameter in order */ - /* to draw all callbacks. */ - /* */ - /* Otherwise, the callback is only called once per scan-line, and */ - /* only for those scanlines that do have `gray' pixels on them. */ - /* */ - typedef void - (*FT_SpanFunc)( int y, - int count, - FT_Span* spans, - void* user ); - -#define FT_Raster_Span_Func FT_SpanFunc - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_BitTest_Func */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ - /* */ - /* A function used as a call-back by the monochrome scan-converter */ - /* to test whether a given target pixel is already set to the drawing */ - /* `color'. These tests are crucial to implement drop-out control */ - /* per-se the TrueType spec. */ - /* */ - /* <Input> */ - /* y :: The pixel's y-coordinate. */ - /* */ - /* x :: The pixel's x-coordinate. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Return> */ - /* 1 if the pixel is `set', 0 otherwise. */ - /* */ - typedef int - (*FT_Raster_BitTest_Func)( int y, - int x, - void* user ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_BitSet_Func */ - /* */ - /* <Description> */ - /* THIS TYPE IS DEPRECATED. DO NOT USE IT. */ - /* */ - /* A function used as a call-back by the monochrome scan-converter */ - /* to set an individual target pixel. This is crucial to implement */ - /* drop-out control according to the TrueType specification. */ - /* */ - /* <Input> */ - /* y :: The pixel's y-coordinate. */ - /* */ - /* x :: The pixel's x-coordinate. */ - /* */ - /* user :: User-supplied data that is passed to the callback. */ - /* */ - /* <Return> */ - /* 1 if the pixel is `set', 0 otherwise. */ - /* */ - typedef void - (*FT_Raster_BitSet_Func)( int y, - int x, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_RASTER_FLAG_XXX */ - /* */ - /* <Description> */ - /* A list of bit flag constants as used in the `flags' field of a */ - /* @FT_Raster_Params structure. */ - /* */ - /* <Values> */ - /* FT_RASTER_FLAG_DEFAULT :: This value is 0. */ - /* */ - /* FT_RASTER_FLAG_AA :: This flag is set to indicate that an */ - /* anti-aliased glyph image should be */ - /* generated. Otherwise, it will be */ - /* monochrome (1-bit). */ - /* */ - /* FT_RASTER_FLAG_DIRECT :: This flag is set to indicate direct */ - /* rendering. In this mode, client */ - /* applications must provide their own span */ - /* callback. This lets them directly */ - /* draw or compose over an existing bitmap. */ - /* If this bit is not set, the target */ - /* pixmap's buffer _must_ be zeroed before */ - /* rendering. */ - /* */ - /* Note that for now, direct rendering is */ - /* only possible with anti-aliased glyphs. */ - /* */ - /* FT_RASTER_FLAG_CLIP :: This flag is only used in direct */ - /* rendering mode. If set, the output will */ - /* be clipped to a box specified in the */ - /* "clip_box" field of the FT_Raster_Params */ - /* structure. */ - /* */ - /* Note that by default, the glyph bitmap */ - /* is clipped to the target pixmap, except */ - /* in direct rendering mode where all spans */ - /* are generated if no clipping box is set. */ - /* */ -#define FT_RASTER_FLAG_DEFAULT 0x0 -#define FT_RASTER_FLAG_AA 0x1 -#define FT_RASTER_FLAG_DIRECT 0x2 -#define FT_RASTER_FLAG_CLIP 0x4 - - /* deprecated */ -#define ft_raster_flag_default FT_RASTER_FLAG_DEFAULT -#define ft_raster_flag_aa FT_RASTER_FLAG_AA -#define ft_raster_flag_direct FT_RASTER_FLAG_DIRECT -#define ft_raster_flag_clip FT_RASTER_FLAG_CLIP - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Raster_Params */ - /* */ - /* <Description> */ - /* A structure to hold the arguments used by a raster's render */ - /* function. */ - /* */ - /* <Fields> */ - /* target :: The target bitmap. */ - /* */ - /* source :: A pointer to the source glyph image (e.g. an */ - /* FT_Outline). */ - /* */ - /* flags :: The rendering flags. */ - /* */ - /* gray_spans :: The gray span drawing callback. */ - /* */ - /* black_spans :: The black span drawing callback. */ - /* */ - /* bit_test :: The bit test callback. UNIMPLEMENTED! */ - /* */ - /* bit_set :: The bit set callback. UNIMPLEMENTED! */ - /* */ - /* user :: User-supplied data that is passed to each drawing */ - /* callback. */ - /* */ - /* clip_box :: An optional clipping box. It is only used in */ - /* direct rendering mode. Note that coordinates here */ - /* should be expressed in _integer_ pixels (and not in */ - /* 26.6 fixed-point units). */ - /* */ - /* <Note> */ - /* An anti-aliased glyph bitmap is drawn if the FT_RASTER_FLAG_AA bit */ - /* flag is set in the `flags' field, otherwise a monochrome bitmap */ - /* will be generated. */ - /* */ - /* If the FT_RASTER_FLAG_DIRECT bit flag is set in `flags', the */ - /* raster will call the `gray_spans' callback to draw gray pixel */ - /* spans, in the case of an aa glyph bitmap, it will call */ - /* `black_spans', and `bit_test' and `bit_set' in the case of a */ - /* monochrome bitmap. This allows direct composition over a */ - /* pre-existing bitmap through user-provided callbacks to perform the */ - /* span drawing/composition. */ - /* */ - /* Note that the `bit_test' and `bit_set' callbacks are required when */ - /* rendering a monochrome bitmap, as they are crucial to implement */ - /* correct drop-out control as defined in the TrueType specification. */ - /* */ - typedef struct FT_Raster_Params_ - { - FT_Bitmap* target; - void* source; - int flags; - FT_SpanFunc gray_spans; - FT_SpanFunc black_spans; - FT_Raster_BitTest_Func bit_test; /* doesn't work! */ - FT_Raster_BitSet_Func bit_set; /* doesn't work! */ - void* user; - FT_BBox clip_box; - - } FT_Raster_Params; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_NewFunc */ - /* */ - /* <Description> */ - /* A function used to create a new raster object. */ - /* */ - /* <Input> */ - /* memory :: A handle to the memory allocator. */ - /* */ - /* <Output> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - /* <Note> */ - /* The `memory' parameter is a typeless pointer in order to avoid */ - /* un-wanted dependencies on the rest of the FreeType code. In */ - /* practice, it is a FT_Memory, i.e., a handle to the standard */ - /* FreeType memory allocator. However, this field can be completely */ - /* ignored by a given raster implementation. */ - /* */ - typedef int - (*FT_Raster_NewFunc)( void* memory, - FT_Raster* raster ); - -#define FT_Raster_New_Func FT_Raster_NewFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_DoneFunc */ - /* */ - /* <Description> */ - /* A function used to destroy a given raster object. */ - /* */ - /* <Input> */ - /* raster :: A handle to the raster object. */ - /* */ - typedef void - (*FT_Raster_DoneFunc)( FT_Raster raster ); - -#define FT_Raster_Done_Func FT_Raster_DoneFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_ResetFunc */ - /* */ - /* <Description> */ - /* FreeType provides an area of memory called the `render pool', */ - /* available to all registered rasters. This pool can be freely used */ - /* during a given scan-conversion but is shared by all rasters. Its */ - /* content is thus transient. */ - /* */ - /* This function is called each time the render pool changes, or just */ - /* after a new raster object is created. */ - /* */ - /* <Input> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* pool_base :: The address in memory of the render pool. */ - /* */ - /* pool_size :: The size in bytes of the render pool. */ - /* */ - /* <Note> */ - /* Rasters can ignore the render pool and rely on dynamic memory */ - /* allocation if they want to (a handle to the memory allocator is */ - /* passed to the raster constructor). However, this is not */ - /* recommended for efficiency purposes. */ - /* */ - typedef void - (*FT_Raster_ResetFunc)( FT_Raster raster, - unsigned char* pool_base, - unsigned long pool_size ); - -#define FT_Raster_Reset_Func FT_Raster_ResetFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_SetModeFunc */ - /* */ - /* <Description> */ - /* This function is a generic facility to change modes or attributes */ - /* in a given raster. This can be used for debugging purposes, or */ - /* simply to allow implementation-specific `features' in a given */ - /* raster module. */ - /* */ - /* <Input> */ - /* raster :: A handle to the new raster object. */ - /* */ - /* mode :: A 4-byte tag used to name the mode or property. */ - /* */ - /* args :: A pointer to the new mode/property to use. */ - /* */ - typedef int - (*FT_Raster_SetModeFunc)( FT_Raster raster, - unsigned long mode, - void* args ); - -#define FT_Raster_Set_Mode_Func FT_Raster_SetModeFunc - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Raster_RenderFunc */ - /* */ - /* <Description> */ - /* Invokes a given raster to scan-convert a given glyph image into a */ - /* target bitmap. */ - /* */ - /* <Input> */ - /* raster :: A handle to the raster object. */ - /* */ - /* params :: A pointer to a FT_Raster_Params structure used to store */ - /* the rendering parameters. */ - /* */ - /* <Return> */ - /* Error code. 0 means success. */ - /* */ - /* <Note> */ - /* The exact format of the source image depends on the raster's glyph */ - /* format defined in its FT_Raster_Funcs structure. It can be an */ - /* FT_Outline or anything else in order to support a large array of */ - /* glyph formats. */ - /* */ - /* Note also that the render function can fail and return a */ - /* FT_Err_Unimplemented_Feature error code if the raster used does */ - /* not support direct composition. */ - /* */ - /* XXX: For now, the standard raster doesn't support direct */ - /* composition but this should change for the final release (see */ - /* the files demos/src/ftgrays.c and demos/src/ftgrays2.c for */ - /* examples of distinct implementations which support direct */ - /* composition). */ - /* */ - typedef int - (*FT_Raster_RenderFunc)( FT_Raster raster, - FT_Raster_Params* params ); - -#define FT_Raster_Render_Func FT_Raster_RenderFunc - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Raster_Funcs */ - /* */ - /* <Description> */ - /* A structure used to describe a given raster class to the library. */ - /* */ - /* <Fields> */ - /* glyph_format :: The supported glyph format for this raster. */ - /* */ - /* raster_new :: The raster constructor. */ - /* */ - /* raster_reset :: Used to reset the render pool within the raster. */ - /* */ - /* raster_render :: A function to render a glyph into a given bitmap. */ - /* */ - /* raster_done :: The raster destructor. */ - /* */ - typedef struct FT_Raster_Funcs_ - { - FT_Glyph_Format glyph_format; - FT_Raster_NewFunc raster_new; - FT_Raster_ResetFunc raster_reset; - FT_Raster_SetModeFunc raster_set_mode; - FT_Raster_RenderFunc raster_render; - FT_Raster_DoneFunc raster_done; - - } FT_Raster_Funcs; - - - /* */ - - -FT_END_HEADER - -#endif /* __FTIMAGE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftincrem.h b/nx-X11/extras/freetype2/include/freetype/ftincrem.h deleted file mode 100644 index 6a1aa1fc3..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftincrem.h +++ /dev/null @@ -1,292 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftincrem.h */ -/* */ -/* FreeType incremental loading (specification). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTINCREM_H__ -#define __FTINCREM_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************** - * - * @type: - * FT_Incremental - * - * @description: - * An opaque type describing a user-provided object used to implement - * "incremental" glyph loading within FreeType. This is used to support - * embedded fonts in certain environments (e.g. Postscript interpreters), - * where the glyph data isn't in the font file, or must be overridden by - * different values. - * - * @note: - * It is up to client applications to create and implement @FT_Incremental - * objects, as long as they provide implementations for the methods - * @FT_Incremental_GetGlyphDataFunc, @FT_Incremental_FreeGlyphDataFunc - * and @FT_Incremental_GetGlyphMetricsFunc. - * - * See the description of @FT_Incremental_InterfaceRec to understand how - * to use incremental objects with FreeType. - */ - typedef struct FT_IncrementalRec_* FT_Incremental; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_Metrics - * - * @description: - * A small structure used to contain the basic glyph metrics returned - * by the @FT_Incremental_GetGlyphMetricsFunc method. - * - * @fields: - * bearing_x :: - * Left bearing, in font units. - * - * bearing_y :: - * Top bearing, in font units. - * - * advance :: - * Glyph advance, in font units. - * - * @note: - * These correspond to horizontal or vertical metrics depending on the - * value of the 'vertical' argument to the function - * @FT_Incremental_GetGlyphMetricsFunc. - */ - typedef struct FT_Incremental_MetricsRec_ - { - FT_Long bearing_x; - FT_Long bearing_y; - FT_Long advance; - - } FT_Incremental_MetricsRec, *FT_Incremental_Metrics; - - - /*************************************************************************** - * - * @type: - * FT_Incremental_GetGlyphDataFunc - * - * @description: - * A function called by FreeType to access a given glyph's data bytes - * during @FT_Load_Glyph or @FT_Load_Char if incremental loading is - * enabled. - * - * Note that the format of the glyph's data bytes depends on the font - * file format. For TrueType, it must correspond to the raw bytes within - * the 'glyf' table. For Postscript formats, it must correspond to the - * *unencrypted* charstring bytes, without any 'lenIV' header. It is - * undefined for any other format. - * - * @input: - * incremental :: - * Handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * glyph_index :: - * Index of relevant glyph. - * - * @output: - * adata :: - * A structure describing the returned glyph data bytes (which will be - * accessed as a read-only byte block). - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * If this function returns succesfully the method - * @FT_Incremental_FreeGlyphDataFunc will be called later to release - * the data bytes. - * - * Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for - * compound glyphs. - */ - typedef FT_Error - (*FT_Incremental_GetGlyphDataFunc)( FT_Incremental incremental, - FT_UInt glyph_index, - FT_Data* adata ); - - - /*************************************************************************** - * - * @type: - * FT_Incremental_FreeGlyphDataFunc - * - * @description: - * A function used to release the glyph data bytes returned by a - * successful call to @FT_Incremental_GetGlyphDataFunc. - * - * @input: - * incremental :: - * A handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * data :: - * A structure describing the glyph data bytes (which will be accessed - * as a read-only byte block). - */ - typedef void - (*FT_Incremental_FreeGlyphDataFunc)( FT_Incremental incremental, - FT_Data* data ); - - - /*************************************************************************** - * - * @type: - * FT_Incremental_GetGlyphMetricsFunc - * - * @description: - * A function used to retrieve the basic metrics of a given glyph index - * before accessing its data. This is necessary because, in certain - * formats like TrueType, the metrics are stored in a different place from - * the glyph images proper. - * - * @input: - * incremental :: - * A handle to an opaque @FT_Incremental handle provided by the client - * application. - * - * glyph_index :: - * Index of relevant glyph. - * - * vertical :: - * If true, return vertical metrics. - * - * ametrics :: - * This parameter is used for both input and output. - * The original glyph metrics, if any, in font units. If metrics are - * not available all the values must be set to zero. - * - * @output: - * ametrics :: - * The replacement glyph metrics in font units. - * - */ - typedef FT_Error - (*FT_Incremental_GetGlyphMetricsFunc) - ( FT_Incremental incremental, - FT_UInt glyph_index, - FT_Bool vertical, - FT_Incremental_MetricsRec *ametrics ); - - - /************************************************************************** - * - * @struct: - * FT_Incremental_FuncsRec - * - * @description: - * A table of functions for accessing fonts that load data - * incrementally. Used in @FT_Incremental_InterfaceRec. - * - * @fields: - * get_glyph_data :: - * The function to get glyph data. Must not be null. - * - * free_glyph_data :: - * The function to release glyph data. Must not be null. - * - * get_glyph_metrics :: - * The function to get glyph metrics. May be null if the font does - * not provide overriding glyph metrics. - */ - typedef struct FT_Incremental_FuncsRec_ - { - FT_Incremental_GetGlyphDataFunc get_glyph_data; - FT_Incremental_FreeGlyphDataFunc free_glyph_data; - FT_Incremental_GetGlyphMetricsFunc get_glyph_metrics; - - } FT_Incremental_FuncsRec; - - - /*************************************************************************** - * - * @struct: - * FT_Incremental_InterfaceRec - * - * @description: - * A structure to be used with @FT_Open_Face to indicate that the user - * wants to support incremental glyph loading. You should use it with - * @FT_PARAM_TAG_INCREMENTAL as in the following example: - * - * { - * FT_Incremental_InterfaceRec inc_int; - * FT_Parameter parameter; - * FT_Open_Args open_args; - * - * - * // set up incremental descriptor - * inc_int.funcs = my_funcs; - * inc_int.object = my_object; - * - * // set up optional parameter - * parameter.tag = FT_PARAM_TAG_INCREMENTAL; - * parameter.data = &inc_int; - * - * // set up FT_Open_Args structure - * open_args.flags = FT_OPEN_PATHNAME | FT_OPEN_PARAMS; - * open_args.pathname = my_font_pathname; - * open_args.num_params = 1; - * open_args.params = ¶meter; // we use one optional argument - * - * // open the font - * error = FT_Open_Face( library, &open_args, index, &face ); - * ... - * } - */ - typedef struct FT_Incremental_InterfaceRec_ - { - const FT_Incremental_FuncsRec* funcs; - FT_Incremental object; - - } FT_Incremental_InterfaceRec; - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_INCREMENTAL - * - * @description: - * A constant used as the tag of @FT_Parameter structures to indicate - * an incremental loading object to be used by FreeType. - * - */ -#define FT_PARAM_TAG_INCREMENTAL FT_MAKE_TAG( 'i', 'n', 'c', 'r' ) - - /* */ - -FT_END_HEADER - -#endif /* __FTINCREM_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftlist.h b/nx-X11/extras/freetype2/include/freetype/ftlist.h deleted file mode 100644 index ae9801b9d..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftlist.h +++ /dev/null @@ -1,274 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlist.h */ -/* */ -/* Generic list support for FreeType (specification). */ -/* */ -/* Copyright 1996-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file implements functions relative to list processing. Its */ - /* data structures are defined in `freetype.h'. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTLIST_H__ -#define __FTLIST_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* list_processing */ - /* */ - /* <Title> */ - /* List Processing */ - /* */ - /* <Abstract> */ - /* Simple management of lists. */ - /* */ - /* <Description> */ - /* This section contains various definitions related to list */ - /* processing using doubly-linked nodes. */ - /* */ - /* <Order> */ - /* FT_List */ - /* FT_ListNode */ - /* FT_ListRec */ - /* FT_ListNodeRec */ - /* */ - /* FT_List_Add */ - /* FT_List_Insert */ - /* FT_List_Find */ - /* FT_List_Remove */ - /* FT_List_Up */ - /* FT_List_Iterate */ - /* FT_List_Iterator */ - /* FT_List_Finalize */ - /* FT_List_Destructor */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Find */ - /* */ - /* <Description> */ - /* Finds the list node for a given listed object. */ - /* */ - /* <Input> */ - /* list :: A pointer to the parent list. */ - /* data :: The address of the listed object. */ - /* */ - /* <Return> */ - /* List node. NULL if it wasn't found. */ - /* */ - FT_EXPORT( FT_ListNode ) - FT_List_Find( FT_List list, - void* data ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Add */ - /* */ - /* <Description> */ - /* Appends an element to the end of a list. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* node :: The node to append. */ - /* */ - FT_EXPORT( void ) - FT_List_Add( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Insert */ - /* */ - /* <Description> */ - /* Inserts an element at the head of a list. */ - /* */ - /* <InOut> */ - /* list :: A pointer to parent list. */ - /* node :: The node to insert. */ - /* */ - FT_EXPORT( void ) - FT_List_Insert( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Remove */ - /* */ - /* <Description> */ - /* Removes a node from a list. This function doesn't check whether */ - /* the node is in the list! */ - /* */ - /* <Input> */ - /* node :: The node to remove. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* */ - FT_EXPORT( void ) - FT_List_Remove( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Up */ - /* */ - /* <Description> */ - /* Moves a node to the head/top of a list. Used to maintain LRU */ - /* lists. */ - /* */ - /* <InOut> */ - /* list :: A pointer to the parent list. */ - /* node :: The node to move. */ - /* */ - FT_EXPORT( void ) - FT_List_Up( FT_List list, - FT_ListNode node ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_List_Iterator */ - /* */ - /* <Description> */ - /* An FT_List iterator function which is called during a list parse */ - /* by FT_List_Iterate(). */ - /* */ - /* <Input> */ - /* node :: The current iteration list node. */ - /* */ - /* user :: A typeless pointer passed to FT_List_Iterate(). */ - /* Can be used to point to the iteration's state. */ - /* */ - typedef FT_Error - (*FT_List_Iterator)( FT_ListNode node, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Iterate */ - /* */ - /* <Description> */ - /* Parses a list and calls a given iterator function on each element. */ - /* Note that parsing is stopped as soon as one of the iterator calls */ - /* returns a non-zero value. */ - /* */ - /* <Input> */ - /* list :: A handle to the list. */ - /* iterator :: An interator function, called on each node of the */ - /* list. */ - /* user :: A user-supplied field which is passed as the second */ - /* argument to the iterator. */ - /* */ - /* <Return> */ - /* The result (a FreeType error code) of the last iterator call. */ - /* */ - FT_EXPORT( FT_Error ) - FT_List_Iterate( FT_List list, - FT_List_Iterator iterator, - void* user ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_List_Destructor */ - /* */ - /* <Description> */ - /* An FT_List iterator function which is called during a list */ - /* finalization by FT_List_Finalize() to destroy all elements in a */ - /* given list. */ - /* */ - /* <Input> */ - /* system :: The current system object. */ - /* */ - /* data :: The current object to destroy. */ - /* */ - /* user :: A typeless pointer passed to FT_List_Iterate(). It can */ - /* be used to point to the iteration's state. */ - /* */ - typedef void - (*FT_List_Destructor)( FT_Memory memory, - void* data, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_List_Finalize */ - /* */ - /* <Description> */ - /* Destroys all elements in the list as well as the list itself. */ - /* */ - /* <Input> */ - /* list :: A handle to the list. */ - /* */ - /* destroy :: A list destructor that will be applied to each element */ - /* of the list. */ - /* */ - /* memory :: The current memory object which handles deallocation. */ - /* */ - /* user :: A user-supplied field which is passed as the last */ - /* argument to the destructor. */ - /* */ - FT_EXPORT( void ) - FT_List_Finalize( FT_List list, - FT_List_Destructor destroy, - FT_Memory memory, - void* user ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTLIST_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftlzw.h b/nx-X11/extras/freetype2/include/freetype/ftlzw.h deleted file mode 100644 index a0a042ea0..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftlzw.h +++ /dev/null @@ -1,99 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlzw.h */ -/* */ -/* LZW-compressed stream support. */ -/* */ -/* Copyright 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTLZW_H__ -#define __FTLZW_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* lzw */ - /* */ - /* <Title> */ - /* LZW Streams */ - /* */ - /* <Abstract> */ - /* Using LZW-compressed font files */ - /* */ - /* <Description> */ - /* This section contains the declaration of LZW-specific functions. */ - /* */ - /*************************************************************************/ - - /************************************************************************ - * - * @function: - * FT_Stream_OpenLZW - * - * @description: - * Open a new stream to parse LZW-compressed font files. This is - * mainly used to support the compressed *.pcf.Z fonts that come - * with XFree86. - * - * @input: - * stream :: The target embedding stream. - * - * source :: The source stream. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source stream must be opened _before_ calling this function. - * - * Calling the internal function FT_Stream_Close on the new stream will - * *not* call FT_Stream_Close on the source stream. None of the stream - * objects will be released to the heap. - * - * The stream implementation is very basic and resets the decompression - * process each time seeking backwards is needed within the stream - * - * In certain builds of the library, LZW compression recognition is - * automatically handled when calling @FT_New_Face or @FT_Open_Face. - * This means that if no font driver is capable of handling the raw - * compressed file, the library will try to open a LZW stream from it - * and re-open the face with it. - * - * This function may return "FT_Err_Unimplemented" if your build of - * FreeType was not compiled with LZW support. - */ - FT_EXPORT( FT_Error ) - FT_Stream_OpenLZW( FT_Stream stream, - FT_Stream source ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTLZW_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftmac.h b/nx-X11/extras/freetype2/include/freetype/ftmac.h deleted file mode 100644 index 78ed77947..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftmac.h +++ /dev/null @@ -1,162 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmac.h */ -/* */ -/* Additional Mac-specific API. */ -/* */ -/* Copyright 1996-2001, 2004 by */ -/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* NOTE: Include this file after <freetype/freetype.h> and after the */ -/* Mac-specific <Types.h> header (or any other Mac header that */ -/* includes <Types.h>); we use Handle type. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMAC_H__ -#define __FTMAC_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* mac_specific */ - /* */ - /* <Title> */ - /* Mac-Specific Interface */ - /* */ - /* <Abstract> */ - /* Only available on the Macintosh. */ - /* */ - /* <Description> */ - /* The following definitions are only available if FreeType is */ - /* compiled on a Macintosh. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FOND */ - /* */ - /* <Description> */ - /* Creates a new face object from an FOND resource. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* fond :: An FOND resource. */ - /* */ - /* face_index :: Only supported for the -1 `sanity check' special */ - /* case. */ - /* */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Notes> */ - /* This function can be used to create FT_Face abjects from fonts */ - /* that are installed in the system like so: */ - /* */ - /* { */ - /* fond = GetResource( 'FOND', fontName ); */ - /* error = FT_New_Face_From_FOND( library, fond, 0, &face ); */ - /* } */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FOND( FT_Library library, - Handle fond, - FT_Long face_index, - FT_Face *aface ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_GetFile_From_Mac_Name */ - /* */ - /* <Description> */ - /* Returns an FSSpec for the disk file containing the named font. */ - /* */ - /* <Input> */ - /* fontName :: Mac OS name of the font (eg. Times New Roman Bold). */ - /* */ - /* <Output> */ - /* pathSpec :: FSSpec to the file. For passing to @FT_New_Face. */ - /* */ - /* face_index :: Index of the face. For passing to @FT_New_Face. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_GetFile_From_Mac_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FSSpec */ - /* */ - /* <Description> */ - /* Creates a new face object from a given resource and typeface index */ - /* using an FSSpec to the font file. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library resource. */ - /* */ - /* <Input> */ - /* spec :: FSSpec to the font file. */ - /* */ - /* face_index :: The index of the face within the resource. The */ - /* first face has index 0. */ - /* <Output> */ - /* aface :: A handle to a new face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* @FT_New_Face_From_FSSpec is identical to @FT_New_Face except */ - /* it accepts an FSSpec instead of a path. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Face_From_FSSpec( FT_Library library, - const FSSpec *spec, - FT_Long face_index, - FT_Face *aface ); - - /* */ - - -FT_END_HEADER - - -#endif /* __FTMAC_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftmm.h b/nx-X11/extras/freetype2/include/freetype/ftmm.h deleted file mode 100644 index 525b5c08e..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftmm.h +++ /dev/null @@ -1,378 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmm.h */ -/* */ -/* FreeType Multiple Master font interface (specification). */ -/* */ -/* Copyright 1996-2001, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMM_H__ -#define __FTMM_H__ - - -#include <ft2build.h> -#include FT_TYPE1_TABLES_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* multiple_masters */ - /* */ - /* <Title> */ - /* Multiple Masters */ - /* */ - /* <Abstract> */ - /* How to manage Multiple Masters fonts. */ - /* */ - /* <Description> */ - /* The following types and functions are used to manage Multiple */ - /* Master fonts, i.e. the selection of specific design instances by */ - /* setting design axis coordinates. */ - /* */ - /* George Williams has extended this interface to make it work with */ - /* both Type 1 Multiple Masters fonts, and GX distortable (var) */ - /* fonts. Some of these routines only work with MM fonts, others */ - /* will work with both types. They are similar enough that a */ - /* consistent interface makes sense. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_MM_Axis */ - /* */ - /* <Description> */ - /* A simple structure used to model a given axis in design space for */ - /* Multiple Masters fonts. */ - /* */ - /* This structure can't be used for GX var fonts. */ - /* */ - /* <Fields> */ - /* name :: The axis's name. */ - /* */ - /* minimum :: The axis's minimum design coordinate. */ - /* */ - /* maximum :: The axis's maximum design coordinate. */ - /* */ - typedef struct FT_MM_Axis_ - { - FT_String* name; - FT_Long minimum; - FT_Long maximum; - - } FT_MM_Axis; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Multi_Master */ - /* */ - /* <Description> */ - /* A structure used to model the axes and space of a Multiple Masters */ - /* font. */ - /* */ - /* This structure can't be used for GX var fonts. */ - /* */ - /* <Fields> */ - /* num_axis :: Number of axes. Cannot exceed 4. */ - /* */ - /* num_designs :: Number of designs; should ne normally 2^num_axis */ - /* even though the Type 1 specification strangely */ - /* allows for intermediate designs to be present. This */ - /* number cannot exceed 16. */ - /* */ - /* axis :: A table of axis descriptors. */ - /* */ - typedef struct FT_Multi_Master_ - { - FT_UInt num_axis; - FT_UInt num_designs; - FT_MM_Axis axis[T1_MAX_MM_AXIS]; - - } FT_Multi_Master; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Var_Axis */ - /* */ - /* <Description> */ - /* A simple structure used to model a given axis in design space for */ - /* Multiple Masters and GX var fonts. */ - /* */ - /* <Fields> */ - /* name :: The axis's name. */ - /* Not always meaningful for GX. */ - /* */ - /* minimum :: The axis's minimum design coordinate. */ - /* */ - /* def :: The axis's default design coordinate. */ - /* FreeType computes meaningful default values for MM; it */ - /* is then an integer value, not in 16.16 format. */ - /* */ - /* maximum :: The axis's maximum design coordinate. */ - /* */ - /* tag :: The axis's tag (the GX equivalent to `name'). */ - /* FreeType provides default values for MM if possible. */ - /* */ - /* strid :: The entry in `name' table (another GX version of */ - /* `name'). */ - /* Not meaningful for MM. */ - /* */ - typedef struct FT_Var_Axis_ - { - FT_String* name; - - FT_Fixed minimum; - FT_Fixed def; - FT_Fixed maximum; - - FT_ULong tag; - FT_UInt strid; - - } FT_Var_Axis; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Var_Named_Style */ - /* */ - /* <Description> */ - /* A simple structure used to model a named style in a GX var font. */ - /* */ - /* This structure can't be used for MM fonts. */ - /* */ - /* <Fields> */ - /* coords :: The design coordinates for this style. */ - /* This is an array with one entry for each axis. */ - /* */ - /* strid :: The entry in `name' table identifying this style. */ - /* */ - typedef struct FT_Var_Named_Style_ - { - FT_Fixed* coords; - FT_UInt strid; - - } FT_Var_Named_Style; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_MM_Var */ - /* */ - /* <Description> */ - /* A structure used to model the axes and space of a Multiple Masters */ - /* or GX var distortable font. */ - /* */ - /* Some fields are specific to one format and not to the other. */ - /* */ - /* <Fields> */ - /* num_axis :: The number of axes. The maximum value is 4 for */ - /* MM; no limit in GX. */ - /* */ - /* num_designs :: The number of designs; should be normally */ - /* 2^num_axis for MM fonts. Not meaningful for GX */ - /* (where every glyph could have a different */ - /* number of designs). */ - /* */ - /* num_namedstyles :: The number of named styles; only meaningful for */ - /* GX which allows certain design coordinates to */ - /* have a string ID (in the `name' table) */ - /* associated with them. The font can tell the */ - /* user that, for example, Weight=1.5 is `Bold'. */ - /* */ - /* axis :: A table of axis descriptors. */ - /* GX fonts contain slightly more data than MM. */ - /* */ - /* namedstyles :: A table of named styles. */ - /* Only meaningful with GX. */ - /* */ - typedef struct FT_MM_Var_ - { - FT_UInt num_axis; - FT_UInt num_designs; - FT_UInt num_namedstyles; - FT_Var_Axis* axis; - FT_Var_Named_Style* namedstyle; - - } FT_MM_Var; - - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Multi_Master */ - /* */ - /* <Description> */ - /* Retrieves the Multiple Master descriptor of a given font. */ - /* */ - /* This function can't be used with GX fonts. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Output> */ - /* amaster :: The Multiple Masters descriptor. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Multi_Master( FT_Face face, - FT_Multi_Master *amaster ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_MM_Var */ - /* */ - /* <Description> */ - /* Retrieves the Multiple Master/GX var descriptor of a given font. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Output> */ - /* amaster :: The Multiple Masters descriptor. */ - /* Allocates a data structure, which the user must free */ - /* (a single call to FT_FREE will do it). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_MM_Var( FT_Face face, - FT_MM_Var* *amaster ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_MM_Design_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Masters fonts, choose an interpolated font design */ - /* through design coordinates. */ - /* */ - /* This function can't be used with GX fonts. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: An array of design coordinates. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_MM_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Long* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Var_Design_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Master or GX Var fonts, choose an interpolated font */ - /* design through design coordinates. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: An array of design coordinates. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Var_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_MM_Blend_Coordinates */ - /* */ - /* <Description> */ - /* For Multiple Masters and GX var fonts, choose an interpolated font */ - /* design through normalized blend coordinates. */ - /* */ - /* <InOut> */ - /* face :: A handle to the source face. */ - /* */ - /* <Input> */ - /* num_coords :: The number of design coordinates (must be equal to */ - /* the number of axes in the font). */ - /* */ - /* coords :: The design coordinates array (each element must be */ - /* between 0 and 1.0). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_MM_Blend_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Var_Blend_Coordinates */ - /* */ - /* <Description> */ - /* This is another name of @FT_Set_MM_Blend_Coordinates. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Var_Blend_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTMM_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftmodapi.h b/nx-X11/extras/freetype2/include/freetype/ftmodapi.h deleted file mode 100644 index 1929ca025..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftmodapi.h +++ /dev/null @@ -1,319 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmodapi.h */ -/* */ -/* FreeType modules public interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMODAPI_H__ -#define __FTMODAPI_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* module_management */ - /* */ - /* <Title> */ - /* Module Management */ - /* */ - /* <Abstract> */ - /* How to add, upgrade, and remove modules from FreeType. */ - /* */ - /* <Description> */ - /* The definitions below are used to manage modules within FreeType. */ - /* Modules can be added, upgraded, and removed at runtime. */ - /* */ - /*************************************************************************/ - - - /* module bit flags */ -#define FT_MODULE_FONT_DRIVER 1 /* this module is a font driver */ -#define FT_MODULE_RENDERER 2 /* this module is a renderer */ -#define FT_MODULE_HINTER 4 /* this module is a glyph hinter */ -#define FT_MODULE_STYLER 8 /* this module is a styler */ - -#define FT_MODULE_DRIVER_SCALABLE 0x100 /* the driver supports */ - /* scalable fonts */ -#define FT_MODULE_DRIVER_NO_OUTLINES 0x200 /* the driver does not */ - /* support vector outlines */ -#define FT_MODULE_DRIVER_HAS_HINTER 0x400 /* the driver provides its */ - /* own hinter */ - - - /* deprecated values */ -#define ft_module_font_driver FT_MODULE_FONT_DRIVER -#define ft_module_renderer FT_MODULE_RENDERER -#define ft_module_hinter FT_MODULE_HINTER -#define ft_module_styler FT_MODULE_STYLER - -#define ft_module_driver_scalable FT_MODULE_DRIVER_SCALABLE -#define ft_module_driver_no_outlines FT_MODULE_DRIVER_NO_OUTLINES -#define ft_module_driver_has_hinter FT_MODULE_DRIVER_HAS_HINTER - - - typedef FT_Pointer FT_Module_Interface; - - typedef FT_Error - (*FT_Module_Constructor)( FT_Module module ); - - typedef void - (*FT_Module_Destructor)( FT_Module module ); - - typedef FT_Module_Interface - (*FT_Module_Requester)( FT_Module module, - const char* name ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Module_Class */ - /* */ - /* <Description> */ - /* The module class descriptor. */ - /* */ - /* <Fields> */ - /* module_flags :: Bit flags describing the module. */ - /* */ - /* module_size :: The size of one module object/instance in */ - /* bytes. */ - /* */ - /* module_name :: The name of the module. */ - /* */ - /* module_version :: The version, as a 16.16 fixed number */ - /* (major.minor). */ - /* */ - /* module_requires :: The version of FreeType this module requires */ - /* (starts at version 2.0, i.e 0x20000) */ - /* */ - /* module_init :: A function used to initialize (not create) a */ - /* new module object. */ - /* */ - /* module_done :: A function used to finalize (not destroy) a */ - /* given module object */ - /* */ - /* get_interface :: Queries a given module for a specific */ - /* interface by name. */ - /* */ - typedef struct FT_Module_Class_ - { - FT_ULong module_flags; - FT_Long module_size; - const FT_String* module_name; - FT_Fixed module_version; - FT_Fixed module_requires; - - const void* module_interface; - - FT_Module_Constructor module_init; - FT_Module_Destructor module_done; - FT_Module_Requester get_interface; - - } FT_Module_Class; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Add_Module */ - /* */ - /* <Description> */ - /* Adds a new module to a given library instance. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* clazz :: A pointer to class descriptor for the module. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* An error will be returned if a module already exists by that name, */ - /* or if the module requires a version of FreeType that is too great. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Add_Module( FT_Library library, - const FT_Module_Class* clazz ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Module */ - /* */ - /* <Description> */ - /* Finds a module by its name. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* module_name :: The module's name (as an ASCII string). */ - /* */ - /* <Return> */ - /* A module handle. 0 if none was found. */ - /* */ - /* <Note> */ - /* You should better be familiar with FreeType internals to know */ - /* which module to look for :-) */ - /* */ - FT_EXPORT( FT_Module ) - FT_Get_Module( FT_Library library, - const char* module_name ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Remove_Module */ - /* */ - /* <Description> */ - /* Removes a given module from a library instance. */ - /* */ - /* <InOut> */ - /* library :: A handle to a library object. */ - /* */ - /* <Input> */ - /* module :: A handle to a module object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The module object is destroyed by the function in case of success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Remove_Module( FT_Library library, - FT_Module module ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Library */ - /* */ - /* <Description> */ - /* This function is used to create a new FreeType library instance */ - /* from a given memory object. It is thus possible to use libraries */ - /* with distinct memory allocators within the same program. */ - /* */ - /* <Input> */ - /* memory :: A handle to the original memory object. */ - /* */ - /* <Output> */ - /* alibrary :: A pointer to handle of a new library object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Library( FT_Memory memory, - FT_Library *alibrary ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Library */ - /* */ - /* <Description> */ - /* Discards a given library object. This closes all drivers and */ - /* discards all resource objects. */ - /* */ - /* <Input> */ - /* library :: A handle to the target library. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Library( FT_Library library ); - - - - typedef void - (*FT_DebugHook_Func)( void* arg ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Debug_Hook */ - /* */ - /* <Description> */ - /* Sets a debug hook function for debugging the interpreter of a font */ - /* format. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* hook_index :: The index of the debug hook. You should use the */ - /* values defined in ftobjs.h, e.g. */ - /* FT_DEBUG_HOOK_TRUETYPE. */ - /* */ - /* debug_hook :: The function used to debug the interpreter. */ - /* */ - /* <Note> */ - /* Currently, four debug hook slots are available, but only two (for */ - /* the TrueType and the Type 1 interpreter) are defined. */ - /* */ - FT_EXPORT( void ) - FT_Set_Debug_Hook( FT_Library library, - FT_UInt hook_index, - FT_DebugHook_Func debug_hook ); - - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Add_Default_Modules */ - /* */ - /* <Description> */ - /* Adds the set of default drivers to a given library object. */ - /* This is only useful when you create a library object with */ - /* FT_New_Library() (usually to plug a custom memory manager). */ - /* */ - /* <InOut> */ - /* library :: A handle to a new library object. */ - /* */ - FT_EXPORT( void ) - FT_Add_Default_Modules( FT_Library library ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTMODAPI_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftmoderr.h b/nx-X11/extras/freetype2/include/freetype/ftmoderr.h deleted file mode 100644 index d190167fa..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftmoderr.h +++ /dev/null @@ -1,154 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmoderr.h */ -/* */ -/* FreeType module error offsets (specification). */ -/* */ -/* Copyright 2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the FreeType module error offsets. */ - /* */ - /* The lower byte gives the error code, the higher byte gives the */ - /* module. The base module has error offset 0. For example, the error */ - /* `FT_Err_Invalid_File_Format' has value 0x003, the error */ - /* `TT_Err_Invalid_File_Format' has value 0x1003, the error */ - /* `T1_Err_Invalid_File_Format' has value 0x1103, etc. */ - /* */ - /* Undefine the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in ftoption.h */ - /* to make the higher byte always zero (disabling the module error */ - /* mechanism). */ - /* */ - /* It can also be used to create a module error message table easily */ - /* with something like */ - /* */ - /* { */ - /* #undef __FTMODERR_H__ */ - /* #define FT_MODERRDEF( e, v, s ) { FT_Mod_Err_ ## e, s }, */ - /* #define FT_MODERR_START_LIST { */ - /* #define FT_MODERR_END_LIST { 0, 0 } }; */ - /* */ - /* const struct */ - /* { */ - /* int mod_err_offset; */ - /* const char* mod_err_msg */ - /* } ft_mod_errors[] = */ - /* */ - /* #include FT_MODULE_ERRORS_H */ - /* } */ - /* */ - /* To use such a table, all errors must be ANDed with 0xFF00 to remove */ - /* the error code. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTMODERR_H__ -#define __FTMODERR_H__ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** SETUP MACROS *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#undef FT_NEED_EXTERN_C - -#ifndef FT_MODERRDEF - -#ifdef FT_CONFIG_OPTION_USE_MODULE_ERRORS -#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = v, -#else -#define FT_MODERRDEF( e, v, s ) FT_Mod_Err_ ## e = 0, -#endif - -#define FT_MODERR_START_LIST enum { -#define FT_MODERR_END_LIST FT_Mod_Err_Max }; - -#ifdef __cplusplus -#define FT_NEED_EXTERN_C - extern "C" { -#endif - -#endif /* !FT_MODERRDEF */ - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** LIST MODULE ERROR BASES *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#ifdef FT_MODERR_START_LIST - FT_MODERR_START_LIST -#endif - - - FT_MODERRDEF( Base, 0x000, "base module" ) - FT_MODERRDEF( Autohint, 0x100, "autohinter module" ) - FT_MODERRDEF( BDF, 0x200, "BDF module" ) - FT_MODERRDEF( Cache, 0x300, "cache module" ) - FT_MODERRDEF( CFF, 0x400, "CFF module" ) - FT_MODERRDEF( CID, 0x500, "CID module" ) - FT_MODERRDEF( Gzip, 0x600, "Gzip module" ) - FT_MODERRDEF( LZW, 0x700, "LZW module" ) - FT_MODERRDEF( PCF, 0x800, "PCF module" ) - FT_MODERRDEF( PFR, 0x900, "PFR module" ) - FT_MODERRDEF( PSaux, 0xA00, "PS auxiliary module" ) - FT_MODERRDEF( PShinter, 0xB00, "PS hinter module" ) - FT_MODERRDEF( PSnames, 0xC00, "PS names module" ) - FT_MODERRDEF( Raster, 0xD00, "raster module" ) - FT_MODERRDEF( SFNT, 0xE00, "SFNT module" ) - FT_MODERRDEF( Smooth, 0xF00, "smooth raster module" ) - FT_MODERRDEF( TrueType, 0x1000, "TrueType module" ) - FT_MODERRDEF( Type1, 0x1100, "Type 1 module" ) - FT_MODERRDEF( Type42, 0x1200, "Type 42 module" ) - FT_MODERRDEF( Winfonts, 0x1300, "Windows FON/FNT module" ) - - -#ifdef FT_MODERR_END_LIST - FT_MODERR_END_LIST -#endif - - - /*******************************************************************/ - /*******************************************************************/ - /***** *****/ - /***** CLEANUP *****/ - /***** *****/ - /*******************************************************************/ - /*******************************************************************/ - - -#ifdef FT_NEED_EXTERN_C - } -#endif - -#undef FT_MODERR_START_LIST -#undef FT_MODERR_END_LIST -#undef FT_MODERRDEF -#undef FT_NEED_EXTERN_C - - -#endif /* __FTMODERR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftoutln.h b/nx-X11/extras/freetype2/include/freetype/ftoutln.h deleted file mode 100644 index 79ed35b59..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftoutln.h +++ /dev/null @@ -1,472 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoutln.h */ -/* */ -/* Support for the FT_Outline type used to store glyph shapes of */ -/* most scalable font formats (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTOUTLN_H__ -#define __FTOUTLN_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* outline_processing */ - /* */ - /* <Title> */ - /* Outline Processing */ - /* */ - /* <Abstract> */ - /* Functions to create, transform, and render vectorial glyph images. */ - /* */ - /* <Description> */ - /* This section contains routines used to create and destroy scalable */ - /* glyph images known as `outlines'. These can also be measured, */ - /* transformed, and converted into bitmaps and pixmaps. */ - /* */ - /* <Order> */ - /* FT_Outline */ - /* FT_OUTLINE_FLAGS */ - /* FT_Outline_New */ - /* FT_Outline_Done */ - /* FT_Outline_Copy */ - /* FT_Outline_Translate */ - /* FT_Outline_Transform */ - /* FT_Outline_Reverse */ - /* FT_Outline_Check */ - /* */ - /* FT_Outline_Get_CBox */ - /* FT_Outline_Get_BBox */ - /* */ - /* FT_Outline_Get_Bitmap */ - /* FT_Outline_Render */ - /* */ - /* FT_Outline_Decompose */ - /* FT_Outline_Funcs */ - /* FT_Outline_MoveTo_Func */ - /* FT_Outline_LineTo_Func */ - /* FT_Outline_ConicTo_Func */ - /* FT_Outline_CubicTo_Func */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Decompose */ - /* */ - /* <Description> */ - /* Walks over an outline's structure to decompose it into individual */ - /* segments and Bezier arcs. This function is also able to emit */ - /* `move to' and `close to' operations to indicate the start and end */ - /* of new contours in the outline. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source target. */ - /* */ - /* func_interface :: A table of `emitters', i.e,. function pointers */ - /* called during decomposition to indicate path */ - /* operations. */ - /* */ - /* <InOut> */ - /* user :: A typeless pointer which is passed to each */ - /* emitter during the decomposition. It can be */ - /* used to store the state during the */ - /* decomposition. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means sucess. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Decompose( FT_Outline* outline, - const FT_Outline_Funcs* func_interface, - void* user ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_New */ - /* */ - /* <Description> */ - /* Creates a new outline of a given size. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object from where the */ - /* outline is allocated. Note however that the new */ - /* outline will NOT necessarily be FREED, when */ - /* destroying the library, by FT_Done_FreeType(). */ - /* */ - /* numPoints :: The maximal number of points within the outline. */ - /* */ - /* numContours :: The maximal number of contours within the outline. */ - /* */ - /* <Output> */ - /* anoutline :: A handle to the new outline. NULL in case of */ - /* error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The reason why this function takes a `library' parameter is simply */ - /* to use the library's memory allocator. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_New( FT_Library library, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); - - - FT_EXPORT( FT_Error ) - FT_Outline_New_Internal( FT_Memory memory, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Done */ - /* */ - /* <Description> */ - /* Destroys an outline created with FT_Outline_New(). */ - /* */ - /* <Input> */ - /* library :: A handle of the library object used to allocate the */ - /* outline. */ - /* */ - /* outline :: A pointer to the outline object to be discarded. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* If the outline's `owner' field is not set, only the outline */ - /* descriptor will be released. */ - /* */ - /* The reason why this function takes an `library' parameter is */ - /* simply to use FT_Free(). */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Done( FT_Library library, - FT_Outline* outline ); - - - FT_EXPORT( FT_Error ) - FT_Outline_Done_Internal( FT_Memory memory, - FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Check */ - /* */ - /* <Description> */ - /* Check the contents of an outline descriptor. */ - /* */ - /* <Input> */ - /* outline :: A handle to a source outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Check( FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_CBox */ - /* */ - /* <Description> */ - /* Returns an outline's `control box'. The control box encloses all */ - /* the outline's points, including Bezier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ - /* which contains Bezier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ - /* and arcs in the outline. To get the latter, you can use the */ - /* `ftbbox' component which is dedicated to this single task. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <Output> */ - /* acbox :: The outline's control box. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Get_CBox( FT_Outline* outline, - FT_BBox *acbox ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Translate */ - /* */ - /* <Description> */ - /* Applies a simple translation to the points of an outline. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Input> */ - /* xOffset :: The horizontal offset. */ - /* */ - /* yOffset :: The vertical offset. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Translate( FT_Outline* outline, - FT_Pos xOffset, - FT_Pos yOffset ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Copy */ - /* */ - /* <Description> */ - /* Copies an outline into another one. Both objects must have the */ - /* same sizes (number of points & number of contours) when this */ - /* function is called. */ - /* */ - /* <Input> */ - /* source :: A handle to the source outline. */ - /* */ - /* <Output> */ - /* target :: A handle to the target outline. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Copy( FT_Outline* source, - FT_Outline *target ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Transform */ - /* */ - /* <Description> */ - /* Applies a simple 2x2 matrix to all of an outline's points. Useful */ - /* for applying rotations, slanting, flipping, etc. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Input> */ - /* matrix :: A pointer to the transformation matrix. */ - /* */ - /* <Note> */ - /* You can use FT_Outline_Translate() if you need to translate the */ - /* outline's points. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Transform( FT_Outline* outline, - FT_Matrix* matrix ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Reverse */ - /* */ - /* <Description> */ - /* Reverses the drawing direction of an outline. This is used to */ - /* ensure consistent fill conventions for mirrored glyphs. */ - /* */ - /* <InOut> */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* <Note> */ - /* This functions toggles the bit flag `FT_OUTLINE_REVERSE_FILL' in */ - /* the outline's `flags' field. */ - /* */ - /* It shouldn't be used by a normal client application, unless it */ - /* knows what it is doing. */ - /* */ - FT_EXPORT( void ) - FT_Outline_Reverse( FT_Outline* outline ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Get_Bitmap */ - /* */ - /* <Description> */ - /* Renders an outline within a bitmap. The outline's image is simply */ - /* OR-ed to the target bitmap. */ - /* */ - /* <Input> */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <Output> */ - /* abitmap :: A pointer to the target bitmap descriptor. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function does NOT CREATE the bitmap, it only renders an */ - /* outline image within the one you pass to it! */ - /* */ - /* It will use the raster correponding to the default glyph format. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Get_Bitmap( FT_Library library, - FT_Outline* outline, - FT_Bitmap *abitmap ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Render */ - /* */ - /* <Description> */ - /* Renders an outline within a bitmap using the current scan-convert. */ - /* This functions uses an FT_Raster_Params structure as an argument, */ - /* allowing advanced features like direct composition, translucency, */ - /* etc. */ - /* */ - /* <Input> */ - /* library :: A handle to a FreeType library object. */ - /* */ - /* outline :: A pointer to the source outline descriptor. */ - /* */ - /* <InOut> */ - /* params :: A pointer to a FT_Raster_Params structure used to */ - /* describe the rendering operation. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* You should know what you are doing and how FT_Raster_Params works */ - /* to use this function. */ - /* */ - /* The field `params.source' will be set to `outline' before the scan */ - /* converter is called, which means that the value you give to it is */ - /* actually ignored. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Outline_Render( FT_Library library, - FT_Outline* outline, - FT_Raster_Params* params ); - - - /************************************************************************** - * - * @enum: - * FT_Orientation - * - * @description: - * A list of values used to describe an outline's contour orientation. - * - * The TrueType and Postscript specifications use different conventions - * to determine whether outline contours should be filled or unfilled. - * - * @values: - * FT_ORIENTATION_TRUETYPE :: - * According to the TrueType specification, clockwise contours must - * be filled, and counter-clockwise ones must be unfilled. - * - * FT_ORIENTATION_POSTSCRIPT :: - * According to the Postscript specification, counter-clockwise contours - * must be filled, and clockwise ones must be unfilled. - * - * FT_ORIENTATION_FILL_RIGHT :: - * This is identical to @FT_ORIENTATION_TRUETYPE, but is used to - * remember that in TrueType, everything that is to the right of - * the drawing direction of a contour must be filled. - * - * FT_ORIENTATION_FILL_LEFT :: - * This is identical to @FT_ORIENTATION_POSTSCRIPT, but is used to - * remember that in Postscript, everything that is to the left of - * the drawing direction of a contour must be filled. - */ - typedef enum - { - FT_ORIENTATION_TRUETYPE = 0, - FT_ORIENTATION_POSTSCRIPT = 1, - FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE, - FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT - - } FT_Orientation; - - - /************************************************************************** - * - * @function: - * FT_Outline_Get_Orientation - * - * @description: - * This function analyzes a glyph outline and tries to compute its - * fill orientation (see @FT_Orientation). This is done by computing - * the direction of each global horizontal and/or vertical extrema - * within the outline. - * - * Note that this will return @FT_ORIENTATION_TRUETYPE for empty - * outlines. - * - * @input: - * outline :: - * A handle to the source outline. - * - * @return: - * The orientation. - * - */ - FT_EXPORT( FT_Orientation ) - FT_Outline_Get_Orientation( FT_Outline* outline ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTOUTLN_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftpfr.h b/nx-X11/extras/freetype2/include/freetype/ftpfr.h deleted file mode 100644 index c9a567544..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftpfr.h +++ /dev/null @@ -1,172 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftpfr.h */ -/* */ -/* FreeType API for accessing PFR-specific data (specification only). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTPFR_H__ -#define __FTPFR_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* pfr_fonts */ - /* */ - /* <Title> */ - /* PFR Fonts */ - /* */ - /* <Abstract> */ - /* PFR/TrueDoc specific APIs */ - /* */ - /* <Description> */ - /* This section contains the declaration of PFR-specific functions. */ - /* */ - /*************************************************************************/ - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Metrics - * - * @description: - * Return the outline and metrics resolutions of a given PFR face. - * - * @input: - * face :: Handle to the input face. It can be a non-PFR face. - * - * @output: - * aoutline_resolution :: - * Outline resolution. This is equivalent to `face->units_per_EM'. - * Optional (parameter can be NULL). - * - * ametrics_resolution :: - * Metrics resolution. This is equivalent to `outline_resolution' - * for non-PFR fonts. Optional (parameter can be NULL). - * - * ametrics_x_scale :: - * A 16.16 fixed-point number used to scale distance expressed - * in metrics units to device sub-pixels. This is equivalent to - * `face->size->x_scale', but for metrics only. Optional (parameter - * can be NULL) - * - * ametrics_y_scale :: - * Same as `ametrics_x_scale' but for the vertical direction. - * optional (parameter can be NULL) - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * If the input face is not a PFR, this function will return an error. - * However, in all cases, it will return valid values. - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Metrics( FT_Face face, - FT_UInt *aoutline_resolution, - FT_UInt *ametrics_resolution, - FT_Fixed *ametrics_x_scale, - FT_Fixed *ametrics_y_scale ); - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Kerning - * - * @description: - * Return the kerning pair corresponding to two glyphs in a PFR face. - * The distance is expressed in metrics units, unlike the result of - * @FT_Get_Kerning. - * - * @input: - * face :: A handle to the input face. - * - * left :: Index of the left glyph. - * - * right :: Index of the right glyph. - * - * @output: - * avector :: A kerning vector. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function always return distances in original PFR metrics - * units. This is unlike @FT_Get_Kerning with the @FT_KERNING_UNSCALED - * mode, which always returns distances converted to outline units. - * - * You can use the value of the `x_scale' and `y_scale' parameters - * returned by @FT_Get_PFR_Metrics to scale these to device sub-pixels. - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Kerning( FT_Face face, - FT_UInt left, - FT_UInt right, - FT_Vector *avector ); - - - /********************************************************************** - * - * @function: - * FT_Get_PFR_Advance - * - * @description: - * Return a given glyph advance, expressed in original metrics units, - * from a PFR font. - * - * @input: - * face :: A handle to the input face. - * - * gindex :: The glyph index. - * - * @output: - * aadvance :: The glyph advance in metrics units. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You can use the `x_scale' or `y_scale' results of @FT_Get_PFR_Metrics - * to convert the advance to device sub-pixels (i.e. 1/64th of pixels). - */ - FT_EXPORT( FT_Error ) - FT_Get_PFR_Advance( FT_Face face, - FT_UInt gindex, - FT_Pos *aadvance ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTBDF_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftrender.h b/nx-X11/extras/freetype2/include/freetype/ftrender.h deleted file mode 100644 index db3ca94dd..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftrender.h +++ /dev/null @@ -1,229 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftrender.h */ -/* */ -/* FreeType renderer modules public interface (specification). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTRENDER_H__ -#define __FTRENDER_H__ - - -#include <ft2build.h> -#include FT_MODULE_H -#include FT_GLYPH_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* module_management */ - /* */ - /*************************************************************************/ - - - /* create a new glyph object */ - typedef FT_Error - (*FT_Glyph_InitFunc)( FT_Glyph glyph, - FT_GlyphSlot slot ); - - /* destroys a given glyph object */ - typedef void - (*FT_Glyph_DoneFunc)( FT_Glyph glyph ); - - typedef void - (*FT_Glyph_TransformFunc)( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ); - - typedef void - (*FT_Glyph_GetBBoxFunc)( FT_Glyph glyph, - FT_BBox* abbox ); - - typedef FT_Error - (*FT_Glyph_CopyFunc)( FT_Glyph source, - FT_Glyph target ); - - typedef FT_Error - (*FT_Glyph_PrepareFunc)( FT_Glyph glyph, - FT_GlyphSlot slot ); - -/* deprecated */ -#define FT_Glyph_Init_Func FT_Glyph_InitFunc -#define FT_Glyph_Done_Func FT_Glyph_DoneFunc -#define FT_Glyph_Transform_Func FT_Glyph_TransformFunc -#define FT_Glyph_BBox_Func FT_Glyph_GetBBoxFunc -#define FT_Glyph_Copy_Func FT_Glyph_CopyFunc -#define FT_Glyph_Prepare_Func FT_Glyph_PrepareFunc - - - struct FT_Glyph_Class_ - { - FT_Long glyph_size; - FT_Glyph_Format glyph_format; - FT_Glyph_InitFunc glyph_init; - FT_Glyph_DoneFunc glyph_done; - FT_Glyph_CopyFunc glyph_copy; - FT_Glyph_TransformFunc glyph_transform; - FT_Glyph_GetBBoxFunc glyph_bbox; - FT_Glyph_PrepareFunc glyph_prepare; - }; - - - typedef FT_Error - (*FT_Renderer_RenderFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_UInt mode, - FT_Vector* origin ); - - typedef FT_Error - (*FT_Renderer_TransformFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_Matrix* matrix, - FT_Vector* delta ); - - - typedef void - (*FT_Renderer_GetCBoxFunc)( FT_Renderer renderer, - FT_GlyphSlot slot, - FT_BBox* cbox ); - - - typedef FT_Error - (*FT_Renderer_SetModeFunc)( FT_Renderer renderer, - FT_ULong mode_tag, - FT_Pointer mode_ptr ); - -/* deprecated identifiers */ -#define FTRenderer_render FT_Renderer_RenderFunc -#define FTRenderer_transform FT_Renderer_TransformFunc -#define FTRenderer_getCBox FT_Renderer_GetCBoxFunc -#define FTRenderer_setMode FT_Renderer_SetModeFunc - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Renderer_Class */ - /* */ - /* <Description> */ - /* The renderer module class descriptor. */ - /* */ - /* <Fields> */ - /* root :: The root FT_Module_Class fields. */ - /* */ - /* glyph_format :: The glyph image format this renderer handles. */ - /* */ - /* render_glyph :: A method used to render the image that is in a */ - /* given glyph slot into a bitmap. */ - /* */ - /* set_mode :: A method used to pass additional parameters. */ - /* */ - /* raster_class :: For `FT_GLYPH_FORMAT_OUTLINE' renderers only, this */ - /* is a pointer to its raster's class. */ - /* */ - /* raster :: For `FT_GLYPH_FORMAT_OUTLINE' renderers only. this */ - /* is a pointer to the corresponding raster object, */ - /* if any. */ - /* */ - typedef struct FT_Renderer_Class_ - { - FT_Module_Class root; - - FT_Glyph_Format glyph_format; - - FT_Renderer_RenderFunc render_glyph; - FT_Renderer_TransformFunc transform_glyph; - FT_Renderer_GetCBoxFunc get_glyph_cbox; - FT_Renderer_SetModeFunc set_mode; - - FT_Raster_Funcs* raster_class; - - } FT_Renderer_Class; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Renderer */ - /* */ - /* <Description> */ - /* Retrieves the current renderer for a given glyph format. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* format :: The glyph format. */ - /* */ - /* <Return> */ - /* A renderer handle. 0 if none found. */ - /* */ - /* <Note> */ - /* An error will be returned if a module already exists by that name, */ - /* or if the module requires a version of FreeType that is too great. */ - /* */ - /* To add a new renderer, simply use FT_Add_Module(). To retrieve a */ - /* renderer by its name, use FT_Get_Module(). */ - /* */ - FT_EXPORT( FT_Renderer ) - FT_Get_Renderer( FT_Library library, - FT_Glyph_Format format ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Set_Renderer */ - /* */ - /* <Description> */ - /* Sets the current renderer to use, and set additional mode. */ - /* */ - /* <InOut> */ - /* library :: A handle to the library object. */ - /* */ - /* <Input> */ - /* renderer :: A handle to the renderer object. */ - /* */ - /* num_params :: The number of additional parameters. */ - /* */ - /* parameters :: Additional parameters. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* In case of success, the renderer will be used to convert glyph */ - /* images in the renderer's known format into bitmaps. */ - /* */ - /* This doesn't change the current renderer for other formats. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Set_Renderer( FT_Library library, - FT_Renderer renderer, - FT_UInt num_params, - FT_Parameter* parameters ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FTRENDER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftsizes.h b/nx-X11/extras/freetype2/include/freetype/ftsizes.h deleted file mode 100644 index f0ec91599..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftsizes.h +++ /dev/null @@ -1,159 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsizes.h */ -/* */ -/* FreeType size objects management (specification). */ -/* */ -/* Copyright 1996-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Typical application would normally not need to use these functions. */ - /* However, they have been placed in a public API for the rare cases */ - /* where they are needed. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTSIZES_H__ -#define __FTSIZES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* sizes_management */ - /* */ - /* <Title> */ - /* Size management */ - /* */ - /* <Abstract> */ - /* Managing multiple sizes per face */ - /* */ - /* <Description> */ - /* When creating a new face object (e.g. with @FT_New_Face), an */ - /* @FT_Size object is automatically created and used to store all */ - /* pixel-size dependent information, available in the "face->size" */ - /* field. */ - /* */ - /* It is however possible to create more sizes for a given face, */ - /* mostly in order to manage several character pixel sizes of the */ - /* same font family and style. See @FT_New_Size and @FT_Done_Size. */ - /* */ - /* Note that @FT_Set_Pixel_Sizes and @FT_Set_Char_Size only */ - /* modify the contents of the current "active" size; you thus need */ - /* to use @FT_Activate_Size to change it. */ - /* */ - /* 99% of applications won't need the functions provided here, */ - /* especially if they use the caching sub-system, so be cautious */ - /* when using these. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Size */ - /* */ - /* <Description> */ - /* Creates a new size object from a given face object. */ - /* */ - /* <Input> */ - /* face :: A handle to a parent face object. */ - /* */ - /* <Output> */ - /* asize :: A handle to a new size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* You need to call @FT_Activate_Size in order to select the new size */ - /* for upcoming calls to @FT_Set_Pixel_Sizes, @FT_Set_Char_Size, */ - /* @FT_Load_Glyph, @FT_Load_Char, etc. */ - /* */ - FT_EXPORT( FT_Error ) - FT_New_Size( FT_Face face, - FT_Size* size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Size */ - /* */ - /* <Description> */ - /* Discards a given size object. Note that @FT_Done_Face */ - /* automatically discards all size objects allocated with */ - /* @FT_New_Size. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Done_Size( FT_Size size ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Activate_Size */ - /* */ - /* <Description> */ - /* Even though it is possible to create several size objects for a */ - /* given face (see @FT_New_Size for details), functions like */ - /* @FT_Load_Glyph or @FT_Load_Char only use the last-created one to */ - /* determine the "current character pixel size". */ - /* */ - /* This function can be used to "activate" a previously created size */ - /* object. */ - /* */ - /* <Input> */ - /* size :: A handle to a target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* If "face" is the size's parent face object, this function changes */ - /* the value of "face->size" to the input size handle. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Activate_Size( FT_Size size ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTSIZES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftsnames.h b/nx-X11/extras/freetype2/include/freetype/ftsnames.h deleted file mode 100644 index 0e2d9a4ad..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftsnames.h +++ /dev/null @@ -1,167 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsnames.h */ -/* */ -/* Simple interface to access SFNT name tables (which are used */ -/* to hold font names, copyright info, notices, etc.) (specification). */ -/* */ -/* This is _not_ used to retrieve glyph names! */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FT_SFNT_NAMES_H__ -#define __FT_SFNT_NAMES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* sfnt_names */ - /* */ - /* <Title> */ - /* SFNT Names */ - /* */ - /* <Abstract> */ - /* Access the names embedded in TrueType and OpenType files. */ - /* */ - /* <Description> */ - /* The TrueType and OpenType specification allow the inclusion of */ - /* a special `names table' in font files. This table contains */ - /* textual (and internationalized) information regarding the font, */ - /* like family name, copyright, version, etc. */ - /* */ - /* The definitions below are used to access them if available. */ - /* */ - /* Note that this has nothing to do with glyph names! */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_SfntName */ - /* */ - /* <Description> */ - /* A structure used to model an SFNT `name' table entry. */ - /* */ - /* <Fields> */ - /* platform_id :: The platform ID for `string'. */ - /* */ - /* encoding_id :: The encoding ID for `string'. */ - /* */ - /* language_id :: The language ID for `string'. */ - /* */ - /* name_id :: An identifier for `string'. */ - /* */ - /* string :: The `name' string. Note that its format differs */ - /* depending on the (platform,encoding) pair. It can */ - /* be a Pascal String, a UTF-16 one, etc.. */ - /* */ - /* Generally speaking, the string is not */ - /* zero-terminated. Please refer to the TrueType */ - /* specification for details.. */ - /* */ - /* string_len :: The length of `string' in bytes. */ - /* */ - /* <Note> */ - /* Possible values for `platform_id', `encoding_id', `language_id', */ - /* and `name_id' are given in the file `ttnameid.h'. For details */ - /* please refer to the TrueType or OpenType specification. */ - /* */ - typedef struct FT_SfntName_ - { - FT_UShort platform_id; - FT_UShort encoding_id; - FT_UShort language_id; - FT_UShort name_id; - - FT_Byte* string; /* this string is *not* null-terminated! */ - FT_UInt string_len; /* in bytes */ - - } FT_SfntName; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Name_Count */ - /* */ - /* <Description> */ - /* Retrieves the number of name strings in the SFNT `name' table. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* <Return> */ - /* The number of strings in the `name' table. */ - /* */ - FT_EXPORT( FT_UInt ) - FT_Get_Sfnt_Name_Count( FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Name */ - /* */ - /* <Description> */ - /* Retrieves a string of the SFNT `name' table for a given index. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face. */ - /* */ - /* idx :: The index of the `name' string. */ - /* */ - /* <Output> */ - /* aname :: The indexed FT_SfntName structure. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The `string' array returned in the `aname' structure is not */ - /* null-terminated. */ - /* */ - /* Use FT_Get_Sfnt_Name_Count() to get the total number of available */ - /* `name' table entries, then do a loop until you get the right */ - /* platform, encoding, and name ID. */ - /* */ - FT_EXPORT( FT_Error ) - FT_Get_Sfnt_Name( FT_Face face, - FT_UInt idx, - FT_SfntName *aname ); - - - /* */ - - -FT_END_HEADER - -#endif /* __FT_SFNT_NAMES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftstroke.h b/nx-X11/extras/freetype2/include/freetype/ftstroke.h deleted file mode 100644 index a3052e858..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftstroke.h +++ /dev/null @@ -1,686 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftstroke.h */ -/* */ -/* FreeType path stroker (specification). */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FT_STROKE_H__ -#define __FT_STROKE_H__ - -#include <ft2build.h> -#include FT_OUTLINE_H -#include FT_GLYPH_H - -FT_BEGIN_HEADER - - /*@************************************************************* - * - * @type: - * FT_Stroker - * - * @description: - * Opaque handler to a path stroker object. - */ - typedef struct FT_StrokerRec_* FT_Stroker; - - - /*@************************************************************* - * - * @enum: - * FT_Stroker_LineJoin - * - * @description: - * These values determine how two joining lines are rendered - * in a stroker. - * - * @values: - * FT_STROKER_LINEJOIN_ROUND :: - * Used to render rounded line joins. Circular arcs are used - * to join two lines smoothly. - * - * FT_STROKER_LINEJOIN_BEVEL :: - * Used to render beveled line joins; i.e., the two joining lines - * are extended until they intersect. - * - * FT_STROKER_LINEJOIN_MITER :: - * Same as beveled rendering, except that an additional line - * break is added if the angle between the two joining lines - * is too closed (this is useful to avoid unpleasant spikes - * in beveled rendering). - */ - typedef enum - { - FT_STROKER_LINEJOIN_ROUND = 0, - FT_STROKER_LINEJOIN_BEVEL, - FT_STROKER_LINEJOIN_MITER - - } FT_Stroker_LineJoin; - - - /*@************************************************************* - * - * @enum: - * FT_Stroker_LineCap - * - * @description: - * These values determine how the end of opened sub-paths are - * rendered in a stroke. - * - * @values: - * FT_STROKER_LINECAP_BUTT :: - * The end of lines is rendered as a full stop on the last - * point itself. - * - * FT_STROKER_LINECAP_ROUND :: - * The end of lines is rendered as a half-circle around the - * last point. - * - * FT_STROKER_LINECAP_SQUARE :: - * The end of lines is rendered as a square around the - * last point. - */ - typedef enum - { - FT_STROKER_LINECAP_BUTT = 0, - FT_STROKER_LINECAP_ROUND, - FT_STROKER_LINECAP_SQUARE - - } FT_Stroker_LineCap; - - - /************************************************************** - * - * @enum: - * FT_StrokerBorder - * - * @description: - * These values are used to select a given stroke border - * in @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder. - * - * @values: - * FT_STROKER_BORDER_LEFT :: - * Select the left border, relative to the drawing direction. - * - * FT_STROKER_BORDER_RIGHT :: - * Select the right border, relative to the drawing direction. - * - * @note: - * Applications are generally interested in the `inside' and `outside' - * borders. However, there is no direct mapping between these and - * the `left' / `right' ones, since this really depends on the glyph's - * drawing orientation, which varies between font formats. - * - * You can however use @FT_Outline_GetInsideBorder and - * @FT_Outline_GetOutsideBorder to get these. - */ - typedef enum - { - FT_STROKER_BORDER_LEFT = 0, - FT_STROKER_BORDER_RIGHT - - } FT_StrokerBorder; - - - /************************************************************** - * - * @function: - * FT_Outline_GetInsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `inside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid - * outlines. - */ - FT_EXPORT( FT_StrokerBorder ) - FT_Outline_GetInsideBorder( FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Outline_GetOutsideBorder - * - * @description: - * Retrieve the @FT_StrokerBorder value corresponding to the - * `outside' borders of a given outline. - * - * @input: - * outline :: - * The source outline handle. - * - * @return: - * The border index. @FT_STROKER_BORDER_LEFT for empty or invalid - * outlines. - */ - FT_EXPORT( FT_StrokerBorder ) - FT_Outline_GetOutsideBorder( FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_New - * - * @description: - * Create a new stroker object. - * - * @input: - * memory :: - * The memory manager handle. - * - * @output: - * A new stroker object handle. NULL in case of error. - * - * @return: - * FreeType error code. 0 means success. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_New( FT_Memory memory, - FT_Stroker *astroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Set - * - * @description: - * Reset a stroker object's attributes. - * - * @input: - * stroker :: - * The target stroker handle. - * - * radius :: - * The border radius. - * - * line_cap :: - * The line cap style. - * - * line_join :: - * The line join style. - * - * miter_limit :: - * The miter limit for the FT_STROKER_LINEJOIN_MITER style, - * expressed as 16.16 fixed point value. - * - * @note: - * The radius is expressed in the same units that the outline - * coordinates. - */ - FT_EXPORT( void ) - FT_Stroker_Set( FT_Stroker stroker, - FT_Fixed radius, - FT_Stroker_LineCap line_cap, - FT_Stroker_LineJoin line_join, - FT_Fixed miter_limit ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Rewind - * - * @description: - * Reset a stroker object without changing its attributes. - * You should call this function before beginning a new - * series of calls to @FT_Stroker_BeginSubPath or - * @FT_Stroker_EndSubPath. - * - * @input: - * stroker :: - * The target stroker handle. - */ - FT_EXPORT( void ) - FT_Stroker_Rewind( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ParseOutline - * - * @description: - * A convenience function used to parse a whole outline with - * the stroker. The resulting outline(s) can be retrieved - * later by functions like @FT_Stroker_GetCounts and @FT_Stroker_Export. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The source outline. - * - * opened :: - * A boolean. If TRUE, the outline is treated as an open path - * instead of a closed one. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * If `opened' is 0 (the default), the outline is treated as a closed - * path, and the stroker will generate two distinct `border' outlines. - * - * If `opened' is 1, the outline is processed as an open path, and the - * stroker will generate a single `stroke' outline. - * - * This function calls @FT_Stroker_Rewind automatically. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_ParseOutline( FT_Stroker stroker, - FT_Outline* outline, - FT_Bool opened ); - - - /************************************************************** - * - * @function: - * FT_Stroker_BeginSubPath - * - * @description: - * Start a new sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the start vector. - * - * open :: - * A boolean. If TRUE, the sub-path is treated as an open one. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function is useful when you need to stroke a path that is - * not stored as a @FT_Outline object. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_BeginSubPath( FT_Stroker stroker, - FT_Vector* to, - FT_Bool open ); - - - /************************************************************** - * - * @function: - * FT_Stroker_EndSubPath - * - * @description: - * Close the current sub-path in the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function after @FT_Stroker_BeginSubPath. - * If the subpath was not `opened', this function will `draw' a - * single line segment to the start position when needed. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_EndSubPath( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Stroker_LineTo - * - * @description: - * `Draw' a single line segment in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_LineTo( FT_Stroker stroker, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ConicTo - * - * @description: - * `Draw; a single quadratic bezier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control :: - * A pointer to a B�zier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_ConicTo( FT_Stroker stroker, - FT_Vector* control, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_CubicTo - * - * @description: - * `Draw' a single cubic B�zier in the stroker's current sub-path, - * from the last position. - * - * @input: - * stroker :: - * The target stroker handle. - * - * control1 :: - * A pointer to the first B�zier control point. - * - * control2 :: - * A pointer to second B�zier control point. - * - * to :: - * A pointer to the destination point. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * You should call this function between @FT_Stroker_BeginSubPath and - * @FT_Stroker_EndSubPath. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_CubicTo( FT_Stroker stroker, - FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to ); - - - /************************************************************** - * - * @function: - * FT_Stroker_GetBorderCounts - * - * @description: - * Vall this function once you have finished parsing your paths - * with the stroker. It will return the number of points and - * contours necessary to export one of the `border' or `stroke' - * outlines generated by the stroker. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right'. - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_GetCounts instead if you want to - * retrieve the counts associated to both borders. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_GetBorderCounts( FT_Stroker stroker, - FT_StrokerBorder border, - FT_UInt *anum_points, - FT_UInt *anum_contours ); - - - /************************************************************** - * - * @function: - * FT_Stroker_ExportBorder - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the corresponding border to your own @FT_Outline - * structure. - * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * border :: - * The border index. - * - * outline :: - * The target outline handle. - * - * @note: - * Always call this function after @FT_Stroker_GetBorderCounts to - * get sure that there is enough room in your @FT_Outline object to - * receive all new data. - * - * When an outline, or a sub-path, is `closed', the stroker generates - * two independent `border' outlines, named `left' and `right' - * - * When the outline, or a sub-path, is `opened', the stroker merges - * the `border' outlines with caps. The `left' border receives all - * points, while the `right' border becomes empty. - * - * Use the function @FT_Stroker_Export instead if you want to - * retrieve all borders at once. - */ - FT_EXPORT( void ) - FT_Stroker_ExportBorder( FT_Stroker stroker, - FT_StrokerBorder border, - FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_GetCounts - * - * @description: - * Call this function once you have finished parsing your paths - * with the stroker. It returns the number of points and - * contours necessary to export all points/borders from the stroked - * outline/path. - * - * @input: - * stroker :: - * The target stroker handle. - * - * @output: - * anum_points :: - * The number of points. - * - * anum_contours :: - * The number of contours. - * - * @return: - * FreeType error code. 0 means success. - */ - FT_EXPORT( FT_Error ) - FT_Stroker_GetCounts( FT_Stroker stroker, - FT_UInt *anum_points, - FT_UInt *anum_contours ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Export - * - * @description: - * Call this function after @FT_Stroker_GetBorderCounts to - * export the all borders to your own @FT_Outline structure. - * - * Note that this function will append the border points and - * contours to your outline, but will not try to resize its - * arrays. - * - * @input: - * stroker :: - * The target stroker handle. - * - * outline :: - * The target outline handle. - */ - FT_EXPORT( void ) - FT_Stroker_Export( FT_Stroker stroker, - FT_Outline* outline ); - - - /************************************************************** - * - * @function: - * FT_Stroker_Done - * - * @description: - * Destroy a stroker object. - * - * @input: - * stroker :: - * A stroker handle. Can be NULL. - */ - FT_EXPORT( void ) - FT_Stroker_Done( FT_Stroker stroker ); - - - /************************************************************** - * - * @function: - * FT_Glyph_Stroke - * - * @description: - * Stroke a given outline glyph object with a given stroker. - * - * @inout: - * pglyph :: Source glyph handle on input, new glyph handle - * on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * destroy :: - * A Boolean. If TRUE, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source glyph is untouched in case of error. - */ - FT_EXPORT( FT_Error ) - FT_Glyph_Stroke( FT_Glyph *pglyph, - FT_Stroker stroker, - FT_Bool destroy ); - - - /************************************************************** - * - * @function: - * FT_Glyph_StrokeBorder - * - * @description: - * Stroke a given outline glyph object with a given stroker, but - * only return either its inside or outside border. - * - * @inout: - * pglyph :: - * Source glyph handle on input, new glyph handle on output. - * - * @input: - * stroker :: - * A stroker handle. - * - * inside :: - * A Boolean. If TRUE, return the inside border, otherwise - * the outside border. - * - * destroy :: - * A Boolean. If TRUE, the source glyph object is destroyed - * on success. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The source glyph is untouched in case of error. - */ - FT_EXPORT( FT_Error ) - FT_Glyph_StrokeBorder( FT_Glyph *pglyph, - FT_Stroker stroker, - FT_Bool inside, - FT_Bool destroy ); - - /* */ - -FT_END_HEADER - -#endif /* __FT_STROKE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftsynth.h b/nx-X11/extras/freetype2/include/freetype/ftsynth.h deleted file mode 100644 index f0c738532..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftsynth.h +++ /dev/null @@ -1,71 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsynth.h */ -/* */ -/* FreeType synthesizing code for emboldening and slanting */ -/* (specification). */ -/* */ -/* Copyright 2000-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********* *********/ - /********* WARNING, THIS IS ALPHA CODE, THIS API *********/ - /********* IS DUE TO CHANGE UNTIL STRICTLY NOTIFIED BY THE *********/ - /********* FREETYPE DEVELOPMENT TEAM *********/ - /********* *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#ifndef __FTSYNTH_H__ -#define __FTSYNTH_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /* This code is completely experimental -- use with care! */ - /* It will probably be completely rewritten in the future */ - /* or even integrated into the library. */ - FT_EXPORT( void ) - FT_GlyphSlot_Embolden( FT_GlyphSlot slot ); - - - FT_EXPORT( void ) - FT_GlyphSlot_Oblique( FT_GlyphSlot slot ); - - /* */ - -FT_END_HEADER - -#endif /* __FTSYNTH_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftsysio.h b/nx-X11/extras/freetype2/include/freetype/ftsysio.h deleted file mode 100644 index f8e49543f..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftsysio.h +++ /dev/null @@ -1,195 +0,0 @@ -#ifndef __FT_SYSTEM_IO_H__ -#define __FT_SYSTEM_IO_H__ - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** NOTE: THE CONTENT OF THIS FILE IS NOT CURRENTLY USED *****/ - /***** IN NORMAL BUILDS. CONSIDER IT EXPERIMENTAL. *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - - /******************************************************************** - * - * designing custom streams is a bit different now - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - * - */ - -#include <ft2build.h> -#include FT_INTERNAL_OBJECT_H - -FT_BEGIN_HEADER - - /*@******************************************************************* - * - * @type: FT_Stream - * - * @description: - * handle to an input stream object. These are also @FT_Object handles - */ - typedef struct FT_StreamRec_* FT_Stream; - - - /*@******************************************************************* - * - * @type: FT_Stream_Class - * - * @description: - * opaque handle to a @FT_Stream_ClassRec class structure describing - * the methods of input streams - */ - typedef const struct FT_Stream_ClassRec_* FT_Stream_Class; - - - /*@******************************************************************* - * - * @functype: FT_Stream_ReadFunc - * - * @description: - * a method used to read bytes from an input stream into memory - * - * @input: - * stream :: target stream handle - * buffer :: target buffer address - * size :: number of bytes to read - * - * @return: - * number of bytes effectively read. Must be <= 'size'. - */ - typedef FT_ULong (*FT_Stream_ReadFunc)( FT_Stream stream, - FT_Byte* buffer, - FT_ULong size ); - - - /*@******************************************************************* - * - * @functype: FT_Stream_SeekFunc - * - * @description: - * a method used to seek to a new position within a stream - * - * @input: - * stream :: target stream handle - * pos :: new read position, from start of stream - * - * @return: - * error code. 0 means success - */ - typedef FT_Error (*FT_Stream_SeekFunc)( FT_Stream stream, - FT_ULong pos ); - - - /*@******************************************************************* - * - * @struct: FT_Stream_ClassRec - * - * @description: - * a structure used to describe an input stream class - * - * @input: - * clazz :: root @FT_ClassRec fields - * stream_read :: stream byte read method - * stream_seek :: stream seek method - */ - typedef struct FT_Stream_ClassRec_ - { - FT_ClassRec clazz; - FT_Stream_ReadFunc stream_read; - FT_Stream_SeekFunc stream_seek; - - } FT_Stream_ClassRec; - - /* */ - -#define FT_STREAM_CLASS(x) ((FT_Stream_Class)(x)) -#define FT_STREAM_CLASS__READ(x) FT_STREAM_CLASS(x)->stream_read -#define FT_STREAM_CLASS__SEEK(x) FT_STREAM_CLASS(x)->stream_seek; - - /*@******************************************************************* - * - * @struct: FT_StreamRec - * - * @description: - * the input stream object structure. See @FT_Stream_ClassRec for - * its class descriptor - * - * @fields: - * object :: root @FT_ObjectRec fields - * size :: size of stream in bytes (0 if unknown) - * pos :: current position within stream - * base :: for memory-based streams, the address of the stream's - * first data byte in memory. NULL otherwise - * - * cursor :: the current cursor position within an input stream - * frame. Only valid within a FT_FRAME_ENTER .. FT_FRAME_EXIT - * block; NULL otherwise - * - * limit :: the current frame limit within a FT_FRAME_ENTER .. - * FT_FRAME_EXIT block. NULL otherwise - */ - typedef struct FT_StreamRec_ - { - FT_ObjectRec object; - FT_ULong size; - FT_ULong pos; - const FT_Byte* base; - const FT_Byte* cursor; - const FT_Byte* limit; - - } FT_StreamRec; - - /* some useful macros */ -#define FT_STREAM(x) ((FT_Stream)(x)) -#define FT_STREAM_P(x) ((FT_Stream*)(x)) - -#define FT_STREAM__READ(x) FT_STREAM_CLASS__READ(FT_OBJECT__CLASS(x)) -#define FT_STREAM__SEEK(x) FT_STREAM_CLASS__SEEK(FT_OBJECT__CLASS(x)) - -#define FT_STREAM_IS_BASED(x) ( FT_STREAM(x)->base != NULL ) - - /* */ - - /* create new memory-based stream */ - FT_BASE( FT_Error ) ft_stream_new_memory( const FT_Byte* stream_base, - FT_ULong stream_size, - FT_Memory memory, - FT_Stream *astream ); - - FT_BASE( FT_Error ) ft_stream_new_iso( const char* pathanme, - FT_Memory memory, - FT_Stream *astream ); - - - /* handle to default stream class implementation for a given build */ - /* this is used by "FT_New_Face" */ - /* */ - FT_APIVAR( FT_Type ) ft_stream_default_type; - -FT_END_HEADER - -#endif /* __FT_SYSTEM_STREAM_H__ */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftsysmem.h b/nx-X11/extras/freetype2/include/freetype/ftsysmem.h deleted file mode 100644 index 8de0c4db0..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftsysmem.h +++ /dev/null @@ -1,202 +0,0 @@ -#ifndef __FT_SYSTEM_MEMORY_H__ -#define __FT_SYSTEM_MEMORY_H__ - -#include <ft2build.h> - -FT_BEGIN_HEADER - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** NOTE: THE CONTENT OF THIS FILE IS NOT CURRENTLY USED *****/ - /***** IN NORMAL BUILDS. CONSIDER IT EXPERIMENTAL. *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - - /*@********************************************************************** - * - * @type: FT_Memory - * - * @description: - * opaque handle to a memory manager handle. Note that since FreeType - * 2.2, the memory manager structure FT_MemoryRec is hidden to client - * applications. - * - * however, you can still define custom allocators easily using the - * @ft_memory_new API - */ - typedef struct FT_MemoryRec_* FT_Memory; - - - /*@********************************************************************** - * - * @functype: FT_Memory_AllocFunc - * - * @description: - * a function used to allocate a block of memory. - * - * @input: - * size :: size of blocks in bytes. Always > 0 !! - * mem_data :: memory-manager specific optional argument - * (see @ft_memory_new) - * - * @return: - * address of new block. NULL in case of memory exhaustion - */ - typedef FT_Pointer (*FT_Memory_AllocFunc)( FT_ULong size, - FT_Pointer mem_data ); - - - /*@********************************************************************** - * - * @functype: FT_Memory_FreeFunc - * - * @description: - * a function used to release a block of memory created through - * @FT_Memory_AllocFunc or @FT_Memory_ReallocFunc - * - * @input: - * block :: address of target memory block. cannot be NULL !! - * mem_data :: memory-manager specific optional argument - * (see @ft_memory_new) - */ - typedef void (*FT_Memory_FreeFunc) ( FT_Pointer block, - FT_Pointer mem_data ); - - - /*@********************************************************************** - * - * @functype: FT_Memory_ReallocFunc - * - * @description: - * a function used to reallocate a memory block. - * - * @input: - * block :: address of target memory block. cannot be NULL !! - * new_size :: new requested size in bytes - * cur_size :: current block size in bytes - * mem_data :: memory-manager specific optional argument - * (see @ft_memory_new) - */ - typedef FT_Pointer (*FT_Memory_ReallocFunc)( FT_Pointer block, - FT_ULong new_size, - FT_ULong cur_size, - FT_Pointer mem_data ); - - - /*@********************************************************************** - * - * @functype: FT_Memory_CreateFunc - * - * @description: - * a function used to create a @FT_Memory object to model a - * memory manager - * - * @input: - * size :: size of memory manager structure in bytes - * init_data :: optional initialisation argument - * - * @output: - * amem_data :: memory-manager specific argument to block management - * routines. - * - * @return: - * handle to new memory manager object. NULL in case of failure - */ - typedef FT_Pointer (*FT_Memory_CreateFunc)( FT_UInt size, - FT_Pointer init_data, - FT_Pointer *amem_data ); - - - /*@********************************************************************** - * - * @functype: FT_Memory_DestroyFunc - * - * @description: - * a function used to destroy a given @FT_Memory manager - * - * @input: - * memory :: target memory manager handle - * mem_data :: option manager-specific argument - */ - typedef void (*FT_Memory_DestroyFunc)( FT_Memory memory, - FT_Pointer mem_data ); - - - /*@********************************************************************** - * - * @struct: FT_Memory_FuncsRec - * - * @description: - * a function used to hold all methods of a given memory manager - * implementation. - * - * @fields: - * mem_alloc :: block allocation routine - * mem_free :: block release routine - * mem_realloc :: block re-allocation routine - * mem_create :: manager creation routine - * mem_destroy :: manager destruction routine - */ - typedef struct FT_Memory_FuncsRec_ - { - FT_Memory_AllocFunc mem_alloc; - FT_Memory_FreeFunc mem_free; - FT_Memory_ReallocFunc mem_realloc; - FT_Memory_CreateFunc mem_create; - FT_Memory_DestroyFunc mem_destroy; - - } FT_Memory_FuncsRec, *FT_Memory_Funcs; - - - /*@********************************************************************** - * - * @type: FT_Memory_Funcs - * - * @description: - * a pointer to a constant @FT_Memory_FuncsRec structure used to - * describe a given memory manager implementation. - */ - typedef const FT_Memory_FuncsRec* FT_Memory_Funcs; - - - /*@********************************************************************** - * - * @function: ft_memory_new - * - * @description: - * create a new memory manager, given a set of memory methods - * - * @input: - * mem_funcs :: handle to memory manager implementation descriptor - * mem_init_data :: optional initialisation argument, passed to - * @FT_Memory_CreateFunc - * - * @return: - * new memory manager handle. NULL in case of failure - */ - FT_BASE( FT_Memory ) - ft_memory_new( FT_Memory_Funcs mem_funcs, - FT_Pointer mem_init_data ); - - - /*@********************************************************************** - * - * @function: ft_memory_destroy - * - * @description: - * destroy a given memory manager - * - * @input: - * memory :: handle to target memory manager - */ - FT_BASE( void ) - ft_memory_destroy( FT_Memory memory ); - -/* */ - -FT_END_HEADER - -#endif /* __FT_SYSTEM_MEMORY_H__ */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftsystem.h b/nx-X11/extras/freetype2/include/freetype/ftsystem.h deleted file mode 100644 index d1c55f7ae..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftsystem.h +++ /dev/null @@ -1,309 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.h */ -/* */ -/* FreeType low-level system interface definition (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTSYSTEM_H__ -#define __FTSYSTEM_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* system_interface */ - /* */ - /* <Title> */ - /* System Interface */ - /* */ - /* <Abstract> */ - /* How FreeType manages memory and i/o. */ - /* */ - /* <Description> */ - /* This section contains various definitions related to memory */ - /* management and i/o access. You need to understand this */ - /* information if you want to use a custom memory manager or you own */ - /* input i/o streams. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* M E M O R Y M A N A G E M E N T */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* @type: */ - /* FT_Memory */ - /* */ - /* @description: */ - /* A handle to a given memory manager object, defined with a */ - /* @FT_MemoryRec structure. */ - /* */ - typedef struct FT_MemoryRec_* FT_Memory; - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* FT_Alloc_Func */ - /* */ - /* @description: */ - /* A function used to allocate `size' bytes from `memory'. */ - /* */ - /* @input: */ - /* memory :: A handle to the source memory manager. */ - /* */ - /* size :: The size in bytes to allocate. */ - /* */ - /* @return: */ - /* Address of new memory block. 0 in case of failure. */ - /* */ - typedef void* - (*FT_Alloc_Func)( FT_Memory memory, - long size ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* FT_Free_Func */ - /* */ - /* @description: */ - /* A function used to release a given block of memory. */ - /* */ - /* @input: */ - /* memory :: A handle to the source memory manager. */ - /* */ - /* block :: The address of the target memory block. */ - /* */ - typedef void - (*FT_Free_Func)( FT_Memory memory, - void* block ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* FT_Realloc_Func */ - /* */ - /* @description: */ - /* a function used to re-allocate a given block of memory. */ - /* */ - /* @input: */ - /* memory :: A handle to the source memory manager. */ - /* */ - /* cur_size :: The block's current size in bytes. */ - /* */ - /* new_size :: The block's requested new size. */ - /* */ - /* block :: The block's current address. */ - /* */ - /* @return: */ - /* New block address. 0 in case of memory shortage. */ - /* */ - /* @note: */ - /* In case of error, the old block must still be available. */ - /* */ - typedef void* - (*FT_Realloc_Func)( FT_Memory memory, - long cur_size, - long new_size, - void* block ); - - - /*************************************************************************/ - /* */ - /* @struct: */ - /* FT_MemoryRec */ - /* */ - /* @description: */ - /* A structure used to describe a given memory manager to FreeType 2. */ - /* */ - /* @fields: */ - /* user :: A generic typeless pointer for user data. */ - /* */ - /* alloc :: A pointer type to an allocation function. */ - /* */ - /* free :: A pointer type to an memory freeing function. */ - /* */ - /* realloc :: A pointer type to a reallocation function. */ - /* */ - struct FT_MemoryRec_ - { - void* user; - FT_Alloc_Func alloc; - FT_Free_Func free; - FT_Realloc_Func realloc; - }; - - - /*************************************************************************/ - /* */ - /* I / O M A N A G E M E N T */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* @type: */ - /* FT_Stream */ - /* */ - /* @description: */ - /* A handle to an input stream. */ - /* */ - typedef struct FT_StreamRec_* FT_Stream; - - - /*************************************************************************/ - /* */ - /* @struct: */ - /* FT_StreamDesc */ - /* */ - /* @description: */ - /* A union type used to store either a long or a pointer. This is */ - /* used to store a file descriptor or a FILE* in an input stream. */ - /* */ - typedef union FT_StreamDesc_ - { - long value; - void* pointer; - - } FT_StreamDesc; - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* FT_Stream_IoFunc */ - /* */ - /* @description: */ - /* A function used to seek and read data from a given input stream. */ - /* */ - /* @input: */ - /* stream :: A handle to the source stream. */ - /* */ - /* offset :: The offset of read in stream (always from start). */ - /* */ - /* buffer :: The address of the read buffer. */ - /* */ - /* count :: The number of bytes to read from the stream. */ - /* */ - /* @return: */ - /* The number of bytes effectively read by the stream. */ - /* */ - /* @note: */ - /* This function might be called to perform a seek or skip operation */ - /* with a `count' of 0. */ - /* */ - typedef unsigned long - (*FT_Stream_IoFunc)( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* FT_Stream_CloseFunc */ - /* */ - /* @description: */ - /* A function used to close a given input stream. */ - /* */ - /* @input: */ - /* stream :: A handle to the target stream. */ - /* */ - typedef void - (*FT_Stream_CloseFunc)( FT_Stream stream ); - - - /*************************************************************************/ - /* */ - /* @struct: */ - /* FT_StreamRec */ - /* */ - /* @description: */ - /* A structure used to describe an input stream. */ - /* */ - /* @input: */ - /* base :: For memory-based streams, this is the address of the */ - /* first stream byte in memory. This field should */ - /* always be set to NULL for disk-based streams. */ - /* */ - /* size :: The stream size in bytes. */ - /* */ - /* pos :: The current position within the stream. */ - /* */ - /* descriptor :: This field is a union that can hold an integer or a */ - /* pointer. It is used by stream implementations to */ - /* store file descriptors or FILE* pointers. */ - /* */ - /* pathname :: This field is completely ignored by FreeType. */ - /* However, it is often useful during debugging to use */ - /* it to store the stream's filename (where available). */ - /* */ - /* read :: The stream's input function. */ - /* */ - /* close :: The stream;s close function. */ - /* */ - /* memory :: The memory manager to use to preload frames. This is */ - /* set internally by FreeType and shouldn't be touched */ - /* by stream implementations. */ - /* */ - /* cursor :: This field is set and used internally by FreeType */ - /* when parsing frames. */ - /* */ - /* limit :: This field is set and used internally by FreeType */ - /* when parsing frames. */ - /* */ - typedef struct FT_StreamRec_ - { - unsigned char* base; - unsigned long size; - unsigned long pos; - - FT_StreamDesc descriptor; - FT_StreamDesc pathname; - FT_Stream_IoFunc read; - FT_Stream_CloseFunc close; - - FT_Memory memory; - unsigned char* cursor; - unsigned char* limit; - - } FT_StreamRec; - - - /* */ - - -FT_END_HEADER - -#endif /* __FTSYSTEM_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/fttrigon.h b/nx-X11/extras/freetype2/include/freetype/fttrigon.h deleted file mode 100644 index 0462265e3..000000000 --- a/nx-X11/extras/freetype2/include/freetype/fttrigon.h +++ /dev/null @@ -1,315 +0,0 @@ -/***************************************************************************/ -/* */ -/* fttrigon.h */ -/* */ -/* FreeType trigonometric functions (specification). */ -/* */ -/* Copyright 2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTTRIGON_H__ -#define __FTTRIGON_H__ - -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* @section: */ - /* computations */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* @type: */ - /* FT_Angle */ - /* */ - /* @description: */ - /* This type is used to model angle values in FreeType. Note that */ - /* the angle is a 16.16 fixed float value expressed in degrees. */ - /* */ - typedef FT_Fixed FT_Angle; - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_ANGLE_PI */ - /* */ - /* @description: */ - /* The angle pi expressed in @FT_Angle units. */ - /* */ -#define FT_ANGLE_PI ( 180L << 16 ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_ANGLE_2PI */ - /* */ - /* @description: */ - /* The angle 2*pi expressed in @FT_Angle units. */ - /* */ -#define FT_ANGLE_2PI ( FT_ANGLE_PI * 2 ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_ANGLE_PI2 */ - /* */ - /* @description: */ - /* The angle pi/2 expressed in @FT_Angle units. */ - /* */ -#define FT_ANGLE_PI2 ( FT_ANGLE_PI / 2 ) - - - /*************************************************************************/ - /* */ - /* @macro: */ - /* FT_ANGLE_PI4 */ - /* */ - /* @description: */ - /* The angle pi/4 expressed in @FT_Angle units. */ - /* */ -#define FT_ANGLE_PI4 ( FT_ANGLE_PI / 4 ) - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Sin */ - /* */ - /* @description: */ - /* Return the sinus of a given angle in fixed point format. */ - /* */ - /* @input: */ - /* angle :: The input angle. */ - /* */ - /* @return: */ - /* The sinus value. */ - /* */ - /* @note: */ - /* If you need both the sinus and cosinus for a given angle, use the */ - /* function @FT_Vector_Unit. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_Sin( FT_Angle angle ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Cos */ - /* */ - /* @description: */ - /* Return the cosinus of a given angle in fixed point format. */ - /* */ - /* @input: */ - /* angle :: The input angle. */ - /* */ - /* @return: */ - /* The cosinus value. */ - /* */ - /* @note: */ - /* If you need both the sinus and cosinus for a given angle, use the */ - /* function @FT_Vector_Unit. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_Cos( FT_Angle angle ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Tan */ - /* */ - /* @description: */ - /* Return the tangent of a given angle in fixed point format. */ - /* */ - /* @input: */ - /* angle :: The input angle. */ - /* */ - /* @return: */ - /* The tangent value. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_Tan( FT_Angle angle ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Atan2 */ - /* */ - /* @description: */ - /* Return the arc-tangent corresponding to a given vector (x,y) in */ - /* the 2d plane. */ - /* */ - /* @input: */ - /* x :: The horizontal vector coordinate. */ - /* */ - /* y :: The vertical vector coordinate. */ - /* */ - /* @return: */ - /* The arc-tangent value (i.e. angle). */ - /* */ - FT_EXPORT( FT_Angle ) - FT_Atan2( FT_Fixed x, - FT_Fixed y ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Angle_Diff */ - /* */ - /* @description: */ - /* Return the difference between two angles. The result is always */ - /* constrained to the ]-PI..PI] interval. */ - /* */ - /* @input: */ - /* angle1 :: First angle. */ - /* */ - /* angle2 :: Second angle. */ - /* */ - /* @return: */ - /* Contrainted value of `value2-value1'. */ - /* */ - FT_EXPORT( FT_Angle ) - FT_Angle_Diff( FT_Angle angle1, - FT_Angle angle2 ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Vector_Unit */ - /* */ - /* @description: */ - /* Return the unit vector corresponding to a given angle. After the */ - /* call, the value of `vec.x' will be `sin(angle)', and the value of */ - /* `vec.y' will be `cos(angle)'. */ - /* */ - /* This function is useful to retrieve both the sinus and cosinus of */ - /* a given angle quickly. */ - /* */ - /* @output: */ - /* vec :: The address of target vector. */ - /* */ - /* @input: */ - /* angle :: The address of angle. */ - /* */ - FT_EXPORT( void ) - FT_Vector_Unit( FT_Vector* vec, - FT_Angle angle ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Vector_Rotate */ - /* */ - /* @description: */ - /* Rotate a vector by a given angle. */ - /* */ - /* @inout: */ - /* vec :: The address of target vector. */ - /* */ - /* @input: */ - /* angle :: The address of angle. */ - /* */ - FT_EXPORT( void ) - FT_Vector_Rotate( FT_Vector* vec, - FT_Angle angle ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Vector_Length */ - /* */ - /* @description: */ - /* Return the length of a given vector. */ - /* */ - /* @input: */ - /* vec :: The address of target vector. */ - /* */ - /* @return: */ - /* The vector length, expressed in the same units that the original */ - /* vector coordinates. */ - /* */ - FT_EXPORT( FT_Fixed ) - FT_Vector_Length( FT_Vector* vec ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Vector_Polarize */ - /* */ - /* @description: */ - /* Compute both the length and angle of a given vector. */ - /* */ - /* @input: */ - /* vec :: The address of source vector. */ - /* */ - /* @output: */ - /* length :: The vector length. */ - /* angle :: The vector angle. */ - /* */ - FT_EXPORT( void ) - FT_Vector_Polarize( FT_Vector* vec, - FT_Fixed *length, - FT_Angle *angle ); - - - /*************************************************************************/ - /* */ - /* @function: */ - /* FT_Vector_From_Polar */ - /* */ - /* @description: */ - /* Compute vector coordinates from a length and angle. */ - /* */ - /* @output: */ - /* vec :: The address of source vector. */ - /* */ - /* @input: */ - /* length :: The vector length. */ - /* angle :: The vector angle. */ - /* */ - FT_EXPORT( void ) - FT_Vector_From_Polar( FT_Vector* vec, - FT_Fixed length, - FT_Angle angle ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTTRIGON_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/fttypes.h b/nx-X11/extras/freetype2/include/freetype/fttypes.h deleted file mode 100644 index 2782f74d5..000000000 --- a/nx-X11/extras/freetype2/include/freetype/fttypes.h +++ /dev/null @@ -1,558 +0,0 @@ -/***************************************************************************/ -/* */ -/* fttypes.h */ -/* */ -/* FreeType simple types definitions (specification only). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTTYPES_H__ -#define __FTTYPES_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_SYSTEM_H -#include FT_IMAGE_H - -#include <stddef.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* basic_types */ - /* */ - /* <Title> */ - /* Basic Data Types */ - /* */ - /* <Abstract> */ - /* The basic data types defined by the library. */ - /* */ - /* <Description> */ - /* This section contains the basic data types defined by FreeType 2, */ - /* ranging from simple scalar types to bitmap descriptors. More */ - /* font-specific structures are defined in a different section. */ - /* */ - /* <Order> */ - /* FT_Byte */ - /* FT_Char */ - /* FT_Int */ - /* FT_UInt */ - /* FT_Short */ - /* FT_UShort */ - /* FT_Long */ - /* FT_ULong */ - /* FT_Bool */ - /* FT_Offset */ - /* FT_PtrDist */ - /* FT_String */ - /* FT_Error */ - /* FT_Fixed */ - /* FT_Pointer */ - /* FT_Pos */ - /* FT_Vector */ - /* FT_BBox */ - /* FT_Matrix */ - /* FT_FWord */ - /* FT_UFWord */ - /* FT_F2Dot14 */ - /* FT_UnitVector */ - /* FT_F26Dot6 */ - /* */ - /* */ - /* FT_Generic */ - /* FT_Generic_Finalizer */ - /* */ - /* FT_Bitmap */ - /* FT_Pixel_Mode */ - /* FT_Palette_Mode */ - /* FT_Glyph_Format */ - /* FT_IMAGE_TAG */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Bool */ - /* */ - /* <Description> */ - /* A typedef of unsigned char, used for simple booleans. */ - /* */ - typedef unsigned char FT_Bool; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_FWord */ - /* */ - /* <Description> */ - /* A signed 16-bit integer used to store a distance in original font */ - /* units. */ - /* */ - typedef signed short FT_FWord; /* distance in FUnits */ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UFWord */ - /* */ - /* <Description> */ - /* An unsigned 16-bit integer used to store a distance in original */ - /* font units. */ - /* */ - typedef unsigned short FT_UFWord; /* unsigned distance */ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Char */ - /* */ - /* <Description> */ - /* A simple typedef for the _signed_ char type. */ - /* */ - typedef signed char FT_Char; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Byte */ - /* */ - /* <Description> */ - /* A simple typedef for the _unsigned_ char type. */ - /* */ - typedef unsigned char FT_Byte; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_String */ - /* */ - /* <Description> */ - /* A simple typedef for the char type, usually used for strings. */ - /* */ - typedef char FT_String; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Short */ - /* */ - /* <Description> */ - /* A typedef for signed short. */ - /* */ - typedef signed short FT_Short; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UShort */ - /* */ - /* <Description> */ - /* A typedef for unsigned short. */ - /* */ - typedef unsigned short FT_UShort; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Int */ - /* */ - /* <Description> */ - /* A typedef for the int type. */ - /* */ - typedef int FT_Int; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_UInt */ - /* */ - /* <Description> */ - /* A typedef for the unsigned int type. */ - /* */ - typedef unsigned int FT_UInt; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Long */ - /* */ - /* <Description> */ - /* A typedef for signed long. */ - /* */ - typedef signed long FT_Long; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_ULong */ - /* */ - /* <Description> */ - /* A typedef for unsigned long. */ - /* */ - typedef unsigned long FT_ULong; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_F2Dot14 */ - /* */ - /* <Description> */ - /* A signed 2.14 fixed float type used for unit vectors. */ - /* */ - typedef signed short FT_F2Dot14; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_F26Dot6 */ - /* */ - /* <Description> */ - /* A signed 26.6 fixed float type used for vectorial pixel */ - /* coordinates. */ - /* */ - typedef signed long FT_F26Dot6; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Fixed */ - /* */ - /* <Description> */ - /* This type is used to store 16.16 fixed float values, like scales */ - /* or matrix coefficients. */ - /* */ - typedef signed long FT_Fixed; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Error */ - /* */ - /* <Description> */ - /* The FreeType error code type. A value of 0 is always interpreted */ - /* as a successful operation. */ - /* */ - typedef int FT_Error; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Pointer */ - /* */ - /* <Description> */ - /* A simple typedef for a typeless pointer. */ - /* */ - typedef void* FT_Pointer; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_Offset */ - /* */ - /* <Description> */ - /* This is equivalent to the ANSI C `size_t' type, i.e. the largest */ - /* _unsigned_ integer type used to express a file size or position, */ - /* or a memory block size. */ - /* */ - typedef size_t FT_Offset; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_PtrDist */ - /* */ - /* <Description> */ - /* This is equivalent to the ANSI C `ptrdiff_t' type, i.e. the */ - /* largest _signed_ integer type used to express the distance */ - /* between two pointers. */ - /* */ - typedef size_t FT_PtrDist; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_UnitVector */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2D vector unit vector. Uses */ - /* FT_F2Dot14 types. */ - /* */ - /* <Fields> */ - /* x :: Horizontal coordinate. */ - /* */ - /* y :: Vertical coordinate. */ - /* */ - typedef struct FT_UnitVector_ - { - FT_F2Dot14 x; - FT_F2Dot14 y; - - } FT_UnitVector; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Matrix */ - /* */ - /* <Description> */ - /* A simple structure used to store a 2x2 matrix. Coefficients are */ - /* in 16.16 fixed float format. The computation performed is: */ - /* */ - /* { */ - /* x' = x*xx + y*xy */ - /* y' = x*yx + y*yy */ - /* } */ - /* */ - /* <Fields> */ - /* xx :: Matrix coefficient. */ - /* */ - /* xy :: Matrix coefficient. */ - /* */ - /* yx :: Matrix coefficient. */ - /* */ - /* yy :: Matrix coefficient. */ - /* */ - typedef struct FT_Matrix_ - { - FT_Fixed xx, xy; - FT_Fixed yx, yy; - - } FT_Matrix; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Data */ - /* */ - /* <Description> */ - /* Read-only binary data represented as a pointer and a length. */ - /* */ - /* <Fields> */ - /* pointer :: The data. */ - /* */ - /* length :: The length of the data in bytes. */ - /* */ - typedef struct FT_Data_ - { - const FT_Byte* pointer; - FT_Int length; - - } FT_Data; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_Generic_Finalizer */ - /* */ - /* <Description> */ - /* Describes a function used to destroy the `client' data of any */ - /* FreeType object. See the description of the FT_Generic type for */ - /* details of usage. */ - /* */ - /* <Input> */ - /* The address of the FreeType object which is under finalization. */ - /* Its client data is accessed through its `generic' field. */ - /* */ - typedef void (*FT_Generic_Finalizer)(void* object); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Generic */ - /* */ - /* <Description> */ - /* Client applications often need to associate their own data to a */ - /* variety of FreeType core objects. For example, a text layout API */ - /* might want to associate a glyph cache to a given size object. */ - /* */ - /* Most FreeType object contains a `generic' field, of type */ - /* FT_Generic, which usage is left to client applications and font */ - /* servers. */ - /* */ - /* It can be used to store a pointer to client-specific data, as well */ - /* as the address of a `finalizer' function, which will be called by */ - /* FreeType when the object is destroyed (for example, the previous */ - /* client example would put the address of the glyph cache destructor */ - /* in the `finalizer' field). */ - /* */ - /* <Fields> */ - /* data :: A typeless pointer to any client-specified data. This */ - /* field is completely ignored by the FreeType library. */ - /* */ - /* finalizer :: A pointer to a `generic finalizer' function, which */ - /* will be called when the object is destroyed. If this */ - /* field is set to NULL, no code will be called. */ - /* */ - typedef struct FT_Generic_ - { - void* data; - FT_Generic_Finalizer finalizer; - - } FT_Generic; - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_MAKE_TAG */ - /* */ - /* <Description> */ - /* This macro converts four letter tags which are used to label */ - /* TrueType tables into an unsigned long to be used within FreeType. */ - /* */ - /* <Note> */ - /* The produced values *must* be 32bit integers. Don't redefine this */ - /* macro. */ - /* */ -#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ - ( ( (FT_ULong)_x1 << 24 ) | \ - ( (FT_ULong)_x2 << 16 ) | \ - ( (FT_ULong)_x3 << 8 ) | \ - (FT_ULong)_x4 ) - - - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* L I S T M A N A G E M E N T */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* list_processing */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_ListNode */ - /* */ - /* <Description> */ - /* Many elements and objects in FreeType are listed through a */ - /* FT_List record (see FT_ListRec). As its name suggests, a */ - /* FT_ListNode is a handle to a single list element. */ - /* */ - typedef struct FT_ListNodeRec_* FT_ListNode; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* FT_List */ - /* */ - /* <Description> */ - /* A handle to a list record (see FT_ListRec). */ - /* */ - typedef struct FT_ListRec_* FT_List; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ListNodeRec */ - /* */ - /* <Description> */ - /* A structure used to hold a single list element. */ - /* */ - /* <Fields> */ - /* prev :: The previous element in the list. NULL if first. */ - /* */ - /* next :: The next element in the list. NULL if last. */ - /* */ - /* data :: A typeless pointer to the listed object. */ - /* */ - typedef struct FT_ListNodeRec_ - { - FT_ListNode prev; - FT_ListNode next; - void* data; - - } FT_ListNodeRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ListRec */ - /* */ - /* <Description> */ - /* A structure used to hold a simple doubly-linked list. These are */ - /* used in many parts of FreeType. */ - /* */ - /* <Fields> */ - /* head :: The head (first element) of doubly-linked list. */ - /* */ - /* tail :: The tail (last element) of doubly-linked list. */ - /* */ - typedef struct FT_ListRec_ - { - FT_ListNode head; - FT_ListNode tail; - - } FT_ListRec; - - - /* */ - -#define FT_IS_EMPTY( list ) ( (list).head == 0 ) - - /* return base error code (without module-specific prefix) */ -#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) - - /* return module error code */ -#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) - -#define FT_BOOL( x ) ( (FT_Bool)( x ) ) - -FT_END_HEADER - -#endif /* __FTTYPES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftwinfnt.h b/nx-X11/extras/freetype2/include/freetype/ftwinfnt.h deleted file mode 100644 index a19a12d97..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftwinfnt.h +++ /dev/null @@ -1,257 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftwinfnt.h */ -/* */ -/* FreeType API for accessing Windows fnt-specific data. */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTWINFNT_H__ -#define __FTWINFNT_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* winfnt_fonts */ - /* */ - /* <Title> */ - /* Window FNT Fonts */ - /* */ - /* <Abstract> */ - /* Windows FNT specific APIs */ - /* */ - /* <Description> */ - /* This section contains the declaration of Windows FNT specific */ - /* functions. */ - /* */ - /*************************************************************************/ - - - /************************************************************************* - * - * @enum: - * FT_WinFNT_ID_XXX - * - * @description: - * A list of valid values for the `charset' byte in - * @FT_WinFNT_HeaderRec. Exact mapping tables for the various cpXXXX - * encodings (except for cp1361) can be found at ftp://ftp.unicode.org - * in the MAPPINGS/VENDORS/MICSFT/WINDOWS subdirectory. cp1361 is - * roughly a superset of MAPPINGS/OBSOLETE/EASTASIA/KSC/JOHAB.TXT. - * - * @values: - * FT_WinFNT_ID_DEFAULT :: - * This is used for font enumeration and font creation as a - * `don't care' value. Valid font files don't contain this value. - * When querying for information about the character set of the font - * that is currently selected into a specified device context, this - * return value (of the related Windows API) simply denotes failure. - * - * FT_WinFNT_ID_SYMBOL :: - * There is no known mapping table available. - * - * FT_WinFNT_ID_MAC :: - * Mac Roman encoding. - * - * FT_WinFNT_ID_OEM :: - * From Michael P�ttgen <michael@poettgen.de>: - * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM - * is used for the charset of vector fonts, like `modern.fon', - * `roman.fon', and `script.fon' on Windows. - * - * The `CreateFont' documentation says: The FT_WinFNT_ID_OEM value - * specifies a character set that is operating-system dependent. - * - * The `IFIMETRICS' documentation from the `Windows Driver - * Development Kit' says: This font supports an OEM-specific - * character set. The OEM character set is system dependent. - * - * In general OEM, as opposed to ANSI (i.e., cp1252), denotes the - * second default codepage that most international versions of - * Windows have. It is one of the OEM codepages from - * - * http://www.microsoft.com/globaldev/reference/cphome.mspx, - * - * and is used for the `DOS boxes', to support legacy applications. - * A German Windows version for example usually uses ANSI codepage - * 1252 and OEM codepage 850. - * - * FT_WinFNT_ID_CP874 :: - * A superset of Thai TIS 620 and ISO 8859-11. - * - * FT_WinFNT_ID_CP932 :: - * A superset of Japanese Shift-JIS (with minor deviations). - * - * FT_WinFNT_ID_CP936 :: - * A superset of simplified Chinese GB 2312-1980 (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP949 :: - * A superset of Korean Hangul KS C 5601-1987 (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP950 :: - * A superset of traditional Chinese Big 5 ETen (with different - * ordering and minor deviations). - * - * FT_WinFNT_ID_CP1250 :: - * A superset of East European ISO 8859-2 (with slightly different - * ordering). - * - * FT_WinFNT_ID_CP1251 :: - * A superset of Russian ISO 8859-5 (with different ordering). - * - * FT_WinFNT_ID_CP1252 :: - * ANSI encoding. A superset of ISO 8859-1. - * - * FT_WinFNT_ID_CP1253 :: - * A superset of Greek ISO 8859-7 (with minor modifications). - * - * FT_WinFNT_ID_CP1254 :: - * A superset of Turkish ISO 8859-9. - * - * FT_WinFNT_ID_CP1255 :: - * A superset of Hebrew ISO 8859-8 (with some modifications). - * - * FT_WinFNT_ID_CP1256 :: - * A superset of Arabic ISO 8859-6 (with different ordering). - * - * FT_WinFNT_ID_CP1257 :: - * A superset of Baltic ISO 8859-13 (with some deviations). - * - * FT_WinFNT_ID_CP1258 :: - * For Vietnamese. This encoding doesn't cover all necessary - * characters. - * - * FT_WinFNT_ID_CP1361 :: - * Korean (Johab). - */ - -#define FT_WinFNT_ID_CP1252 0 -#define FT_WinFNT_ID_DEFAULT 1 -#define FT_WinFNT_ID_SYMBOL 2 -#define FT_WinFNT_ID_MAC 77 -#define FT_WinFNT_ID_CP932 128 -#define FT_WinFNT_ID_CP949 129 -#define FT_WinFNT_ID_CP1361 130 -#define FT_WinFNT_ID_CP936 134 -#define FT_WinFNT_ID_CP950 136 -#define FT_WinFNT_ID_CP1253 161 -#define FT_WinFNT_ID_CP1254 162 -#define FT_WinFNT_ID_CP1258 163 -#define FT_WinFNT_ID_CP1255 177 -#define FT_WinFNT_ID_CP1256 178 -#define FT_WinFNT_ID_CP1257 186 -#define FT_WinFNT_ID_CP1251 204 -#define FT_WinFNT_ID_CP874 222 -#define FT_WinFNT_ID_CP1250 238 -#define FT_WinFNT_ID_OEM 255 - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_WinFNT_HeaderRec */ - /* */ - /* <Description> */ - /* Windows FNT Header info. */ - /* */ - typedef struct FT_WinFNT_HeaderRec_ - { - FT_UShort version; - FT_ULong file_size; - FT_Byte copyright[60]; - FT_UShort file_type; - FT_UShort nominal_point_size; - FT_UShort vertical_resolution; - FT_UShort horizontal_resolution; - FT_UShort ascent; - FT_UShort internal_leading; - FT_UShort external_leading; - FT_Byte italic; - FT_Byte underline; - FT_Byte strike_out; - FT_UShort weight; - FT_Byte charset; - FT_UShort pixel_width; - FT_UShort pixel_height; - FT_Byte pitch_and_family; - FT_UShort avg_width; - FT_UShort max_width; - FT_Byte first_char; - FT_Byte last_char; - FT_Byte default_char; - FT_Byte break_char; - FT_UShort bytes_per_row; - FT_ULong device_offset; - FT_ULong face_name_offset; - FT_ULong bits_pointer; - FT_ULong bits_offset; - FT_Byte reserved; - FT_ULong flags; - FT_UShort A_space; - FT_UShort B_space; - FT_UShort C_space; - FT_UShort color_table_offset; - FT_ULong reserved1[4]; - - } FT_WinFNT_HeaderRec, *FT_WinFNT_Header; - - - /********************************************************************** - * - * @function: - * FT_Get_WinFNT_Header - * - * @description: - * Retrieve a Windows FNT font info header. - * - * @input: - * face :: A handle to the input face. - * - * @output: - * aheader :: The WinFNT header. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * This function only works with Windows FNT faces, returning an error - * otherwise. - */ - FT_EXPORT( FT_Error ) - FT_Get_WinFNT_Header( FT_Face face, - FT_WinFNT_HeaderRec *aheader ); - - - /* */ - -FT_END_HEADER - -#endif /* __FTWINFNT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ftxf86.h b/nx-X11/extras/freetype2/include/freetype/ftxf86.h deleted file mode 100644 index 3362883cb..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ftxf86.h +++ /dev/null @@ -1,60 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftxf86.h */ -/* */ -/* Support functions for X11. */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTXF86_H__ -#define __FTXF86_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /* this comment is intentionally disabled for now, to prevent this */ - /* function from appearing in the API Reference. */ - - /*@***********************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_X11_Font_Format */ - /* */ - /* <Description> */ - /* Return a string describing the format of a given face as an X11 */ - /* FONT_PROPERTY. It should only be used by the FreeType 2 font */ - /* backend of the XFree86 font server. */ - /* */ - /* <Input> */ - /* face :: Input face handle. */ - /* */ - /* <Return> */ - /* Font format string. NULL in case of error. */ - /* */ - FT_EXPORT( const char* ) - FT_Get_X11_Font_Format( FT_Face face ); - - /* */ - -FT_END_HEADER - -#endif /* __FTXF86_H__ */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/autohint.h b/nx-X11/extras/freetype2/include/freetype/internal/autohint.h deleted file mode 100644 index 22340afc3..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/autohint.h +++ /dev/null @@ -1,205 +0,0 @@ -/***************************************************************************/ -/* */ -/* autohint.h */ -/* */ -/* High-level `autohint' module-specific interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The auto-hinter is used to load and automatically hint glyphs if a */ - /* format-specific hinter isn't available. */ - /* */ - /*************************************************************************/ - - -#ifndef __AUTOHINT_H__ -#define __AUTOHINT_H__ - - - /*************************************************************************/ - /* */ - /* A small technical note regarding automatic hinting in order to */ - /* clarify this module interface. */ - /* */ - /* An automatic hinter might compute two kinds of data for a given face: */ - /* */ - /* - global hints: Usually some metrics that describe global properties */ - /* of the face. It is computed by scanning more or less */ - /* agressively the glyphs in the face, and thus can be */ - /* very slow to compute (even if the size of global */ - /* hints is really small). */ - /* */ - /* - glyph hints: These describe some important features of the glyph */ - /* outline, as well as how to align them. They are */ - /* generally much faster to compute than global hints. */ - /* */ - /* The current FreeType auto-hinter does a pretty good job while */ - /* performing fast computations for both global and glyph hints. */ - /* However, we might be interested in introducing more complex and */ - /* powerful algorithms in the future, like the one described in the John */ - /* D. Hobby paper, which unfortunately requires a lot more horsepower. */ - /* */ - /* Because a sufficiently sophisticated font management system would */ - /* typically implement an LRU cache of opened face objects to reduce */ - /* memory usage, it is a good idea to be able to avoid recomputing */ - /* global hints every time the same face is re-opened. */ - /* */ - /* We thus provide the ability to cache global hints outside of the face */ - /* object, in order to speed up font re-opening time. Of course, this */ - /* feature is purely optional, so most client programs won't even notice */ - /* it. */ - /* */ - /* I initially thought that it would be a good idea to cache the glyph */ - /* hints too. However, my general idea now is that if you really need */ - /* to cache these too, you are simply in need of a new font format, */ - /* where all this information could be stored within the font file and */ - /* decoded on the fly. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H - - -FT_BEGIN_HEADER - - - typedef struct FT_AutoHinterRec_ *FT_AutoHinter; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_AutoHinter_GlobalGetFunc */ - /* */ - /* <Description> */ - /* Retrieves the global hints computed for a given face object the */ - /* resulting data is dissociated from the face and will survive a */ - /* call to FT_Done_Face(). It must be discarded through the API */ - /* FT_AutoHinter_GlobalDoneFunc(). */ - /* */ - /* <Input> */ - /* hinter :: A handle to the source auto-hinter. */ - /* */ - /* face :: A handle to the source face object. */ - /* */ - /* <Output> */ - /* global_hints :: A typeless pointer to the global hints. */ - /* */ - /* global_len :: The size in bytes of the global hints. */ - /* */ - typedef void - (*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter hinter, - FT_Face face, - void** global_hints, - long* global_len ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_AutoHinter_GlobalDoneFunc */ - /* */ - /* <Description> */ - /* Discards the global hints retrieved through */ - /* FT_AutoHinter_GlobalGetFunc(). This is the only way these hints */ - /* are freed from memory. */ - /* */ - /* <Input> */ - /* hinter :: A handle to the auto-hinter module. */ - /* */ - /* global :: A pointer to retrieved global hints to discard. */ - /* */ - typedef void - (*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter hinter, - void* global ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_AutoHinter_GlobalResetFunc */ - /* */ - /* <Description> */ - /* This function is used to recompute the global metrics in a given */ - /* font. This is useful when global font data changes (e.g. Multiple */ - /* Masters fonts where blend coordinates change). */ - /* */ - /* <Input> */ - /* hinter :: A handle to the source auto-hinter. */ - /* */ - /* face :: A handle to the face. */ - /* */ - typedef void - (*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter hinter, - FT_Face face ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* FT_AutoHinter_GlyphLoadFunc */ - /* */ - /* <Description> */ - /* This function is used to load, scale, and automatically hint a */ - /* glyph from a given face. */ - /* */ - /* <Input> */ - /* face :: A handle to the face. */ - /* */ - /* glyph_index :: The glyph index. */ - /* */ - /* load_flags :: The load flags. */ - /* */ - /* <Note> */ - /* This function is capable of loading composite glyphs by hinting */ - /* each sub-glyph independently (which improves quality). */ - /* */ - /* It will call the font driver with FT_Load_Glyph(), with */ - /* FT_LOAD_NO_SCALE set. */ - /* */ - typedef FT_Error - (*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter hinter, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_AutoHinter_ServiceRec */ - /* */ - /* <Description> */ - /* The auto-hinter module's interface. */ - /* */ - typedef struct FT_AutoHinter_ServiceRec_ - { - FT_AutoHinter_GlobalResetFunc reset_face; - FT_AutoHinter_GlobalGetFunc get_global_hints; - FT_AutoHinter_GlobalDoneFunc done_global_hints; - FT_AutoHinter_GlyphLoadFunc load_glyph; - - } FT_AutoHinter_ServiceRec, *FT_AutoHinter_Service; - - -FT_END_HEADER - -#endif /* __AUTOHINT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftcalc.h b/nx-X11/extras/freetype2/include/freetype/internal/ftcalc.h deleted file mode 100644 index 7866c4627..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftcalc.h +++ /dev/null @@ -1,111 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcalc.h */ -/* */ -/* Arithmetic computations (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTCALC_H__ -#define __FTCALC_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - - -FT_BEGIN_HEADER - - - FT_EXPORT( FT_Int32 ) - FT_SqrtFixed( FT_Int32 x ); - - -#define SQRT_32( x ) FT_Sqrt32( x ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Sqrt32 */ - /* */ - /* <Description> */ - /* Computes the square root of an Int32 integer (which will be */ - /* handled as an unsigned long value). */ - /* */ - /* <Input> */ - /* x :: The value to compute the root for. */ - /* */ - /* <Return> */ - /* The result of `sqrt(x)'. */ - /* */ - FT_EXPORT( FT_Int32 ) - FT_Sqrt32( FT_Int32 x ); - - - /*************************************************************************/ - /* */ - /* FT_MulDiv() and FT_MulFix() are declared in freetype.h. */ - /* */ - /*************************************************************************/ - - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_MulDiv_No_Round */ - /* */ - /* <Description> */ - /* A very simple function used to perform the computation `(a*b)/c' */ - /* (without rounding) with maximal accuracy (it uses a 64-bit */ - /* intermediate integer whenever necessary). */ - /* */ - /* This function isn't necessarily as fast as some processor specific */ - /* operations, but is at least completely portable. */ - /* */ - /* <Input> */ - /* a :: The first multiplier. */ - /* b :: The second multiplier. */ - /* c :: The divisor. */ - /* */ - /* <Return> */ - /* The result of `(a*b)/c'. This function never traps when trying to */ - /* divide by zero; it simply returns `MaxInt' or `MinInt' depending */ - /* on the signs of `a' and `b'. */ - /* */ - FT_BASE( FT_Long ) - FT_MulDiv_No_Round( FT_Long a, - FT_Long b, - FT_Long c ); - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - -#define INT_TO_F26DOT6( x ) ( (FT_Long)(x) << 6 ) -#define INT_TO_F2DOT14( x ) ( (FT_Long)(x) << 14 ) -#define INT_TO_FIXED( x ) ( (FT_Long)(x) << 16 ) -#define F2DOT14_TO_FIXED( x ) ( (FT_Long)(x) << 2 ) -#define FLOAT_TO_FIXED( x ) ( (FT_Long)( x * 65536.0 ) ) - -#define ROUND_F26DOT6( x ) ( x >= 0 ? ( ( (x) + 32 ) & -64 ) \ - : ( -( ( 32 - (x) ) & -64 ) ) ) - - -FT_END_HEADER - -#endif /* __FTCALC_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftdebug.h b/nx-X11/extras/freetype2/include/freetype/internal/ftdebug.h deleted file mode 100644 index ce142c54c..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftdebug.h +++ /dev/null @@ -1,244 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftdebug.h */ -/* */ -/* Debugging and logging component (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* */ -/* IMPORTANT: A description of FreeType's debugging support can be */ -/* found in "docs/DEBUG.TXT". Read it if you need to use or */ -/* understand this code. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTDEBUG_H__ -#define __FTDEBUG_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_FREETYPE_H - - -FT_BEGIN_HEADER - - - /* force the definition of FT_DEBUG_LEVEL_ERROR if FT_DEBUG_LEVEL_TRACE */ - /* is already defined; this simplifies the following #ifdefs */ - /* */ -#ifdef FT_DEBUG_LEVEL_TRACE -#undef FT_DEBUG_LEVEL_ERROR -#define FT_DEBUG_LEVEL_ERROR -#endif - - - /*************************************************************************/ - /* */ - /* Define the trace enums as well as the trace levels array when they */ - /* are needed. */ - /* */ - /*************************************************************************/ - -#ifdef FT_DEBUG_LEVEL_TRACE - -#define FT_TRACE_DEF( x ) trace_ ## x , - - /* defining the enumeration */ - typedef enum - { -#include FT_INTERNAL_TRACE_H - trace_count - - } FT_Trace; - - - /* defining the array of trace levels, provided by `src/base/ftdebug.c' */ - extern int ft_trace_levels[trace_count]; - -#undef FT_TRACE_DEF - -#endif /* FT_DEBUG_LEVEL_TRACE */ - - - /*************************************************************************/ - /* */ - /* Define the FT_TRACE macro */ - /* */ - /* IMPORTANT! */ - /* */ - /* Each component must define the macro FT_COMPONENT to a valid FT_Trace */ - /* value before using any TRACE macro. */ - /* */ - /*************************************************************************/ - -#ifdef FT_DEBUG_LEVEL_TRACE - -#define FT_TRACE( level, varformat ) \ - do \ - { \ - if ( ft_trace_levels[FT_COMPONENT] >= level ) \ - FT_Message varformat; \ - } while ( 0 ) - -#else /* !FT_DEBUG_LEVEL_TRACE */ - -#define FT_TRACE( level, varformat ) do ; while ( 0 ) /* nothing */ - -#endif /* !FT_DEBUG_LEVEL_TRACE */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Trace_Get_Count */ - /* */ - /* <Description> */ - /* Return the number of available trace components. */ - /* */ - /* <Return> */ - /* The number of trace components. 0 if FreeType 2 is not built with */ - /* FT_DEBUG_LEVEL_TRACE definition. */ - /* */ - /* <Note> */ - /* This function may be useful if you want to access elements of */ - /* the internal `ft_trace_levels' array by an index. */ - /* */ - FT_EXPORT( FT_Int ) - FT_Trace_Get_Count( void ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Trace_Get_Name */ - /* */ - /* <Description> */ - /* Return the name of a trace component. */ - /* */ - /* <Input> */ - /* The index of the trace component. */ - /* */ - /* <Return> */ - /* The name of the trace component. This is a statically allocated */ - /* C string, so do not free it after use. NULL if FreeType 2 is not */ - /* built with FT_DEBUG_LEVEL_TRACE definition. */ - /* */ - /* <Note> */ - /* Use @FT_Trace_Get_Count to get the number of available trace */ - /* components. */ - /* */ - /* This function may be useful if you want to control FreeType 2's */ - /* debug level in your appliaciton. */ - /* */ - FT_EXPORT( const char * ) - FT_Trace_Get_Name( FT_Int idx ); - - - /*************************************************************************/ - /* */ - /* You need two opening resp. closing parentheses! */ - /* */ - /* Example: FT_TRACE0(( "Value is %i", foo )) */ - /* */ - /*************************************************************************/ - -#define FT_TRACE0( varformat ) FT_TRACE( 0, varformat ) -#define FT_TRACE1( varformat ) FT_TRACE( 1, varformat ) -#define FT_TRACE2( varformat ) FT_TRACE( 2, varformat ) -#define FT_TRACE3( varformat ) FT_TRACE( 3, varformat ) -#define FT_TRACE4( varformat ) FT_TRACE( 4, varformat ) -#define FT_TRACE5( varformat ) FT_TRACE( 5, varformat ) -#define FT_TRACE6( varformat ) FT_TRACE( 6, varformat ) -#define FT_TRACE7( varformat ) FT_TRACE( 7, varformat ) - - - /*************************************************************************/ - /* */ - /* Define the FT_ERROR macro */ - /* */ - /*************************************************************************/ - -#ifdef FT_DEBUG_LEVEL_ERROR - -#define FT_ERROR( varformat ) FT_Message varformat - -#else /* !FT_DEBUG_LEVEL_ERROR */ - -#define FT_ERROR( varformat ) do ; while ( 0 ) /* nothing */ - -#endif /* !FT_DEBUG_LEVEL_ERROR */ - - - /*************************************************************************/ - /* */ - /* Define the FT_ASSERT macro */ - /* */ - /*************************************************************************/ - -#ifdef FT_DEBUG_LEVEL_ERROR - -#define FT_ASSERT( condition ) \ - do \ - { \ - if ( !( condition ) ) \ - FT_Panic( "assertion failed on line %d of file %s\n", \ - __LINE__, __FILE__ ); \ - } while ( 0 ) - -#else /* !FT_DEBUG_LEVEL_ERROR */ - -#define FT_ASSERT( condition ) do ; while ( 0 ) - -#endif /* !FT_DEBUG_LEVEL_ERROR */ - - - /*************************************************************************/ - /* */ - /* Define 'FT_Message' and 'FT_Panic' when needed */ - /* */ - /*************************************************************************/ - -#ifdef FT_DEBUG_LEVEL_ERROR - -#include "stdio.h" /* for vprintf() */ - - /* print a message */ - FT_EXPORT( void ) - FT_Message( const char* fmt, ... ); - - /* print a message and exit */ - FT_EXPORT( void ) - FT_Panic( const char* fmt, ... ); - -#endif /* FT_DEBUG_LEVEL_ERROR */ - - - FT_BASE( void ) - ft_debug_init( void ); - - -#if defined( _MSC_VER ) /* Visual C++ (and Intel C++) */ - - /* we disable the warning `conditional expression is constant' here */ - /* in order to compile cleanly with the maximum level of warnings */ -#pragma warning( disable : 4127 ) - -#endif /* _MSC_VER */ - - -FT_END_HEADER - -#endif /* __FTDEBUG_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftdriver.h b/nx-X11/extras/freetype2/include/freetype/internal/ftdriver.h deleted file mode 100644 index 02f585d6b..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftdriver.h +++ /dev/null @@ -1,206 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftdriver.h */ -/* */ -/* FreeType font driver interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTDRIVER_H__ -#define __FTDRIVER_H__ - - -#include <ft2build.h> -#include FT_MODULE_H - - -FT_BEGIN_HEADER - - - typedef FT_Error - (*FT_Face_InitFunc)( FT_Stream stream, - FT_Face face, - FT_Int typeface_index, - FT_Int num_params, - FT_Parameter* parameters ); - - typedef void - (*FT_Face_DoneFunc)( FT_Face face ); - - - typedef FT_Error - (*FT_Size_InitFunc)( FT_Size size ); - - typedef void - (*FT_Size_DoneFunc)( FT_Size size ); - - - typedef FT_Error - (*FT_Slot_InitFunc)( FT_GlyphSlot slot ); - - typedef void - (*FT_Slot_DoneFunc)( FT_GlyphSlot slot ); - - - typedef FT_Error - (*FT_Size_ResetPointsFunc)( FT_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); - - typedef FT_Error - (*FT_Size_ResetPixelsFunc)( FT_Size size, - FT_UInt pixel_width, - FT_UInt pixel_height ); - - typedef FT_Error - (*FT_Slot_LoadFunc)( FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - - typedef FT_UInt - (*FT_CharMap_CharIndexFunc)( FT_CharMap charmap, - FT_Long charcode ); - - typedef FT_Long - (*FT_CharMap_CharNextFunc)( FT_CharMap charmap, - FT_Long charcode ); - - typedef FT_Error - (*FT_Face_GetKerningFunc)( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ); - - - typedef FT_Error - (*FT_Face_AttachFunc)( FT_Face face, - FT_Stream stream ); - - - typedef FT_Error - (*FT_Face_GetAdvancesFunc)( FT_Face face, - FT_UInt first, - FT_UInt count, - FT_Bool vertical, - FT_UShort* advances ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Driver_ClassRec */ - /* */ - /* <Description> */ - /* The font driver class. This structure mostly contains pointers to */ - /* driver methods. */ - /* */ - /* <Fields> */ - /* root :: The parent module. */ - /* */ - /* face_object_size :: The size of a face object in bytes. */ - /* */ - /* size_object_size :: The size of a size object in bytes. */ - /* */ - /* slot_object_size :: The size of a glyph object in bytes. */ - /* */ - /* init_face :: The format-specific face constructor. */ - /* */ - /* done_face :: The format-specific face destructor. */ - /* */ - /* init_size :: The format-specific size constructor. */ - /* */ - /* done_size :: The format-specific size destructor. */ - /* */ - /* init_slot :: The format-specific slot constructor. */ - /* */ - /* done_slot :: The format-specific slot destructor. */ - /* */ - /* set_char_sizes :: A handle to a function used to set the new */ - /* character size in points + resolution. Can be */ - /* set to 0 to indicate default behaviour. */ - /* */ - /* set_pixel_sizes :: A handle to a function used to set the new */ - /* character size in pixels. Can be set to 0 to */ - /* indicate default behaviour. */ - /* */ - /* load_glyph :: A function handle to load a given glyph image */ - /* in a slot. This field is mandatory! */ - /* */ - /* get_char_index :: A function handle to return the glyph index of */ - /* a given character for a given charmap. This */ - /* field is mandatory! */ - /* */ - /* get_kerning :: A function handle to return the unscaled */ - /* kerning for a given pair of glyphs. Can be */ - /* set to 0 if the format doesn't support */ - /* kerning. */ - /* */ - /* attach_file :: This function handle is used to read */ - /* additional data for a face from another */ - /* file/stream. For example, this can be used to */ - /* add data from AFM or PFM files on a Type 1 */ - /* face, or a CIDMap on a CID-keyed face. */ - /* */ - /* get_advances :: A function handle used to return advance */ - /* widths of 'count' glyphs (in font units), */ - /* starting at `first'. The `vertical' flag must */ - /* be set to get vertical advance heights. The */ - /* `advances' buffer is caller-allocated. */ - /* Currently not implemented. The idea of this */ - /* function is to be able to perform */ - /* device-independent text layout without loading */ - /* a single glyph image. */ - /* */ - /* <Note> */ - /* Most function pointers, with the exception of `load_glyph' and */ - /* `get_char_index' can be set to 0 to indicate a default behaviour. */ - /* */ - typedef struct FT_Driver_ClassRec_ - { - FT_Module_Class root; - - FT_Long face_object_size; - FT_Long size_object_size; - FT_Long slot_object_size; - - FT_Face_InitFunc init_face; - FT_Face_DoneFunc done_face; - - FT_Size_InitFunc init_size; - FT_Size_DoneFunc done_size; - - FT_Slot_InitFunc init_slot; - FT_Slot_DoneFunc done_slot; - - FT_Size_ResetPointsFunc set_char_sizes; - FT_Size_ResetPixelsFunc set_pixel_sizes; - - FT_Slot_LoadFunc load_glyph; - - FT_Face_GetKerningFunc get_kerning; - FT_Face_AttachFunc attach_file; - FT_Face_GetAdvancesFunc get_advances; - - } FT_Driver_ClassRec, *FT_Driver_Class; - - -FT_END_HEADER - -#endif /* __FTDRIVER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftgloadr.h b/nx-X11/extras/freetype2/include/freetype/internal/ftgloadr.h deleted file mode 100644 index abc56e256..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftgloadr.h +++ /dev/null @@ -1,147 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgloadr.h */ -/* */ -/* The FreeType glyph loader (specification). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTGLOADR_H__ -#define __FTGLOADR_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_GlyphLoader */ - /* */ - /* <Description> */ - /* The glyph loader is an internal object used to load several glyphs */ - /* together (for example, in the case of composites). */ - /* */ - /* <Note> */ - /* The glyph loader implementation is not part of the high-level API, */ - /* hence the forward structure declaration. */ - /* */ - typedef struct FT_GlyphLoaderRec_* FT_GlyphLoader ; - - -#define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 -#define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 -#define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 -#define FT_SUBGLYPH_FLAG_SCALE 8 -#define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 -#define FT_SUBGLYPH_FLAG_2X2 0x80 -#define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 - - - typedef struct FT_SubGlyphRec_ - { - FT_Int index; - FT_UShort flags; - FT_Int arg1; - FT_Int arg2; - FT_Matrix transform; - - } FT_SubGlyphRec; - - - typedef struct FT_GlyphLoadRec_ - { - FT_Outline outline; /* outline */ - FT_Vector* extra_points; /* extra points table */ - FT_UInt num_subglyphs; /* number of subglyphs */ - FT_SubGlyph subglyphs; /* subglyphs */ - - } FT_GlyphLoadRec, *FT_GlyphLoad; - - - typedef struct FT_GlyphLoaderRec_ - { - FT_Memory memory; - FT_UInt max_points; - FT_UInt max_contours; - FT_UInt max_subglyphs; - FT_Bool use_extra; - - FT_GlyphLoadRec base; - FT_GlyphLoadRec current; - - void* other; /* for possible future extension? */ - - } FT_GlyphLoaderRec; - - - /* create new empty glyph loader */ - FT_BASE( FT_Error ) - FT_GlyphLoader_New( FT_Memory memory, - FT_GlyphLoader *aloader ); - - /* add an extra points table to a glyph loader */ - FT_BASE( FT_Error ) - FT_GlyphLoader_CreateExtra( FT_GlyphLoader loader ); - - /* destroy a glyph loader */ - FT_BASE( void ) - FT_GlyphLoader_Done( FT_GlyphLoader loader ); - - /* reset a glyph loader (frees everything int it) */ - FT_BASE( void ) - FT_GlyphLoader_Reset( FT_GlyphLoader loader ); - - /* rewind a glyph loader */ - FT_BASE( void ) - FT_GlyphLoader_Rewind( FT_GlyphLoader loader ); - - /* check that there is enough space to add `n_points' and `n_contours' */ - /* to the glyph loader */ - FT_BASE( FT_Error ) - FT_GlyphLoader_CheckPoints( FT_GlyphLoader loader, - FT_UInt n_points, - FT_UInt n_contours ); - - /* check that there is enough space to add `n_subs' sub-glyphs to */ - /* a glyph loader */ - FT_BASE( FT_Error ) - FT_GlyphLoader_CheckSubGlyphs( FT_GlyphLoader loader, - FT_UInt n_subs ); - - /* prepare a glyph loader, i.e. empty the current glyph */ - FT_BASE( void ) - FT_GlyphLoader_Prepare( FT_GlyphLoader loader ); - - /* add the current glyph to the base glyph */ - FT_BASE( void ) - FT_GlyphLoader_Add( FT_GlyphLoader loader ); - - /* copy points from one glyph loader to another */ - FT_BASE( FT_Error ) - FT_GlyphLoader_CopyPoints( FT_GlyphLoader target, - FT_GlyphLoader source ); - - /* */ - - -FT_END_HEADER - -#endif /* __FTGLOADR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftmemory.h b/nx-X11/extras/freetype2/include/freetype/internal/ftmemory.h deleted file mode 100644 index ea9870f47..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftmemory.h +++ /dev/null @@ -1,367 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmemory.h */ -/* */ -/* The FreeType memory management macros (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTMEMORY_H__ -#define __FTMEMORY_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_TYPES_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Macro> */ - /* FT_SET_ERROR */ - /* */ - /* <Description> */ - /* This macro is used to set an implicit `error' variable to a given */ - /* expression's value (usually a function call), and convert it to a */ - /* boolean which is set whenever the value is != 0. */ - /* */ -#undef FT_SET_ERROR -#define FT_SET_ERROR( expression ) \ - ( ( error = (expression) ) != 0 ) - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** M E M O R Y ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - -#ifdef FT_DEBUG_MEMORY - - FT_BASE( FT_Error ) - FT_Alloc_Debug( FT_Memory memory, - FT_Long size, - void* *P, - const char* file_name, - FT_Long line_no ); - - FT_BASE( FT_Error ) - FT_QAlloc_Debug( FT_Memory memory, - FT_Long size, - void* *P, - const char* file_name, - FT_Long line_no ); - - FT_BASE( FT_Error ) - FT_Realloc_Debug( FT_Memory memory, - FT_Long current, - FT_Long size, - void* *P, - const char* file_name, - FT_Long line_no ); - - FT_BASE( FT_Error ) - FT_QRealloc_Debug( FT_Memory memory, - FT_Long current, - FT_Long size, - void* *P, - const char* file_name, - FT_Long line_no ); - - FT_BASE( void ) - FT_Free_Debug( FT_Memory memory, - FT_Pointer block, - const char* file_name, - FT_Long line_no ); - -#endif - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Alloc */ - /* */ - /* <Description> */ - /* Allocates a new block of memory. The returned area is always */ - /* zero-filled; this is a strong convention in many FreeType parts. */ - /* */ - /* <Input> */ - /* memory :: A handle to a given `memory object' which handles */ - /* allocation. */ - /* */ - /* size :: The size in bytes of the block to allocate. */ - /* */ - /* <Output> */ - /* P :: A pointer to the fresh new block. It should be set to */ - /* NULL if `size' is 0, or in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_BASE( FT_Error ) - FT_Alloc( FT_Memory memory, - FT_Long size, - void* *P ); - - - FT_BASE( FT_Error ) - FT_QAlloc( FT_Memory memory, - FT_Long size, - void* *p ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Realloc */ - /* */ - /* <Description> */ - /* Reallocates a block of memory pointed to by `*P' to `Size' bytes */ - /* from the heap, possibly changing `*P'. */ - /* */ - /* <Input> */ - /* memory :: A handle to a given `memory object' which handles */ - /* reallocation. */ - /* */ - /* current :: The current block size in bytes. */ - /* */ - /* size :: The new block size in bytes. */ - /* */ - /* <InOut> */ - /* P :: A pointer to the fresh new block. It should be set to */ - /* NULL if `size' is 0, or in case of error. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* All callers of FT_Realloc() _must_ provide the current block size */ - /* as well as the new one. */ - /* */ - FT_BASE( FT_Error ) - FT_Realloc( FT_Memory memory, - FT_Long current, - FT_Long size, - void* *P ); - - - FT_BASE( FT_Error ) - FT_QRealloc( FT_Memory memory, - FT_Long current, - FT_Long size, - void* *p ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Free */ - /* */ - /* <Description> */ - /* Releases a given block of memory allocated through FT_Alloc(). */ - /* */ - /* <Input> */ - /* memory :: A handle to a given `memory object' which handles */ - /* memory deallocation */ - /* */ - /* P :: This is the _address_ of a _pointer_ which points to the */ - /* allocated block. It is always set to NULL on exit. */ - /* */ - /* <Note> */ - /* If P or *P is NULL, this function should return successfully. */ - /* This is a strong convention within all of FreeType and its */ - /* drivers. */ - /* */ - FT_BASE( void ) - FT_Free( FT_Memory memory, - void* *P ); - - -#define FT_MEM_SET( dest, byte, count ) ft_memset( dest, byte, count ) - -#define FT_MEM_COPY( dest, source, count ) ft_memcpy( dest, source, count ) - -#define FT_MEM_MOVE( dest, source, count ) ft_memmove( dest, source, count ) - - -#define FT_MEM_ZERO( dest, count ) FT_MEM_SET( dest, 0, count ) - -#define FT_ZERO( p ) FT_MEM_ZERO( p, sizeof ( *(p) ) ) - -#define FT_ARRAY_COPY( dest, source, count ) \ - FT_MEM_COPY( dest, source, (count) * sizeof( *(dest) ) ) - -#define FT_ARRAY_MOVE( dest, source, count ) \ - FT_MEM_MOVE( dest, source, (count) * sizeof( *(dest) ) ) - - - /*************************************************************************/ - /* */ - /* We first define FT_MEM_ALLOC, FT_MEM_REALLOC, and FT_MEM_FREE. All */ - /* macros use an _implicit_ `memory' parameter to access the current */ - /* memory allocator. */ - /* */ - -#ifdef FT_DEBUG_MEMORY - -#define FT_MEM_ALLOC( _pointer_, _size_ ) \ - FT_Alloc_Debug( memory, _size_, \ - (void**)&(_pointer_), __FILE__, __LINE__ ) - -#define FT_MEM_REALLOC( _pointer_, _current_, _size_ ) \ - FT_Realloc_Debug( memory, _current_, _size_, \ - (void**)&(_pointer_), __FILE__, __LINE__ ) - -#define FT_MEM_QALLOC( _pointer_, _size_ ) \ - FT_QAlloc_Debug( memory, _size_, \ - (void**)&(_pointer_), __FILE__, __LINE__ ) - -#define FT_MEM_QREALLOC( _pointer_, _current_, _size_ ) \ - FT_QRealloc_Debug( memory, _current_, _size_, \ - (void**)&(_pointer_), __FILE__, __LINE__ ) - -#define FT_MEM_FREE( _pointer_ ) \ - FT_Free_Debug( memory, (void**)&(_pointer_), __FILE__, __LINE__ ) - - -#else /* !FT_DEBUG_MEMORY */ - - -#define FT_MEM_ALLOC( _pointer_, _size_ ) \ - FT_Alloc( memory, _size_, (void**)&(_pointer_) ) - -#define FT_MEM_FREE( _pointer_ ) \ - FT_Free( memory, (void**)&(_pointer_) ) - -#define FT_MEM_REALLOC( _pointer_, _current_, _size_ ) \ - FT_Realloc( memory, _current_, _size_, (void**)&(_pointer_) ) - -#define FT_MEM_QALLOC( _pointer_, _size_ ) \ - FT_QAlloc( memory, _size_, (void**)&(_pointer_) ) - -#define FT_MEM_QREALLOC( _pointer_, _current_, _size_ ) \ - FT_QRealloc( memory, _current_, _size_, (void**)&(_pointer_) ) - -#endif /* !FT_DEBUG_MEMORY */ - - - /*************************************************************************/ - /* */ - /* The following functions macros expect that their pointer argument is */ - /* _typed_ in order to automatically compute array element sizes. */ - /* */ - -#define FT_MEM_NEW( _pointer_ ) \ - FT_MEM_ALLOC( _pointer_, sizeof ( *(_pointer_) ) ) - -#define FT_MEM_NEW_ARRAY( _pointer_, _count_ ) \ - FT_MEM_ALLOC( _pointer_, (_count_) * sizeof ( *(_pointer_) ) ) - -#define FT_MEM_RENEW_ARRAY( _pointer_, _old_, _new_ ) \ - FT_MEM_REALLOC( _pointer_, (_old_) * sizeof ( *(_pointer_) ), \ - (_new_) * sizeof ( *(_pointer_) ) ) - -#define FT_MEM_QNEW( _pointer_ ) \ - FT_MEM_QALLOC( _pointer_, sizeof ( *(_pointer_) ) ) - -#define FT_MEM_QNEW_ARRAY( _pointer_, _count_ ) \ - FT_MEM_QALLOC( _pointer_, (_count_) * sizeof ( *(_pointer_) ) ) - -#define FT_MEM_QRENEW_ARRAY( _pointer_, _old_, _new_ ) \ - FT_MEM_QREALLOC( _pointer_, (_old_) * sizeof ( *(_pointer_) ), \ - (_new_) * sizeof ( *(_pointer_) ) ) - - - /*************************************************************************/ - /* */ - /* the following macros are obsolete but kept for compatibility reasons */ - /* */ - -#define FT_MEM_ALLOC_ARRAY( _pointer_, _count_, _type_ ) \ - FT_MEM_ALLOC( _pointer_, (_count_) * sizeof ( _type_ ) ) - -#define FT_MEM_REALLOC_ARRAY( _pointer_, _old_, _new_, _type_ ) \ - FT_MEM_REALLOC( _pointer_, (_old_) * sizeof ( _type ), \ - (_new_) * sizeof ( _type_ ) ) - - - /*************************************************************************/ - /* */ - /* The following macros are variants of their FT_MEM_XXXX equivalents; */ - /* they are used to set an _implicit_ `error' variable and return TRUE */ - /* if an error occured (i.e. if 'error != 0'). */ - /* */ - -#define FT_ALLOC( _pointer_, _size_ ) \ - FT_SET_ERROR( FT_MEM_ALLOC( _pointer_, _size_ ) ) - -#define FT_REALLOC( _pointer_, _current_, _size_ ) \ - FT_SET_ERROR( FT_MEM_REALLOC( _pointer_, _current_, _size_ ) ) - -#define FT_FREE( _pointer_ ) \ - FT_MEM_FREE( _pointer_ ) - -#define FT_QALLOC( _pointer_, _size_ ) \ - FT_SET_ERROR( FT_MEM_QALLOC( _pointer_, _size_ ) ) - -#define FT_QREALLOC( _pointer_, _current_, _size_ ) \ - FT_SET_ERROR( FT_MEM_QREALLOC( _pointer_, _current_, _size_ ) ) - - -#define FT_NEW( _pointer_ ) \ - FT_SET_ERROR( FT_MEM_NEW( _pointer_ ) ) - -#define FT_NEW_ARRAY( _pointer_, _count_ ) \ - FT_SET_ERROR( FT_MEM_NEW_ARRAY( _pointer_, _count_ ) ) - -#define FT_RENEW_ARRAY( _pointer_, _old_, _new_ ) \ - FT_SET_ERROR( FT_MEM_RENEW_ARRAY( _pointer_, _old_, _new_ ) ) - -#define FT_QNEW( _pointer_ ) \ - FT_SET_ERROR( FT_MEM_QNEW( _pointer_ ) ) - -#define FT_QNEW_ARRAY( _pointer_, _count_ ) \ - FT_SET_ERROR( FT_MEM_QNEW_ARRAY( _pointer_, _count_ ) ) - -#define FT_QRENEW_ARRAY( _pointer_, _old_, _new_ ) \ - FT_SET_ERROR( FT_MEM_QRENEW_ARRAY( _pointer_, _old_, _new_ ) ) - - -#define FT_ALLOC_ARRAY( _pointer_, _count_, _type_ ) \ - FT_SET_ERROR( FT_MEM_ALLOC( _pointer_, \ - (_count_) * sizeof ( _type_ ) ) ) - -#define FT_REALLOC_ARRAY( _pointer_, _old_, _new_, _type_ ) \ - FT_SET_ERROR( FT_MEM_REALLOC( _pointer_, \ - (_old_) * sizeof ( _type_ ), \ - (_new_) * sizeof ( _type_ ) ) ) - - /* */ - - -FT_END_HEADER - -#endif /* __FTMEMORY_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftobjs.h b/nx-X11/extras/freetype2/include/freetype/internal/ftobjs.h deleted file mode 100644 index 3a28119af..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftobjs.h +++ /dev/null @@ -1,847 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftobjs.h */ -/* */ -/* The FreeType private base classes (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file contains the definition of all internal FreeType classes. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTOBJS_H__ -#define __FTOBJS_H__ - -#include <ft2build.h> -#include FT_CONFIG_STANDARD_LIBRARY_H /* for ft_setjmp and ft_longjmp */ -#include FT_RENDER_H -#include FT_SIZES_H -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_GLYPH_LOADER_H -#include FT_INTERNAL_DRIVER_H -#include FT_INTERNAL_AUTOHINT_H -#include FT_INTERNAL_SERVICE_H - -#ifdef FT_CONFIG_OPTION_INCREMENTAL -#include FT_INCREMENTAL_H -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* Some generic definitions. */ - /* */ -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef NULL -#define NULL (void*)0 -#endif - - - /*************************************************************************/ - /* */ - /* The min and max functions missing in C. As usual, be careful not to */ - /* write things like FT_MIN( a++, b++ ) to avoid side effects. */ - /* */ -#define FT_MIN( a, b ) ( (a) < (b) ? (a) : (b) ) -#define FT_MAX( a, b ) ( (a) > (b) ? (a) : (b) ) - -#define FT_ABS( a ) ( (a) < 0 ? -(a) : (a) ) - - -#define FT_PAD_FLOOR( x, n ) ( (x) & ~((n)-1) ) -#define FT_PAD_ROUND( x, n ) FT_PAD_FLOOR( (x) + ((n)/2), n ) -#define FT_PAD_CEIL( x, n ) FT_PAD_FLOOR( (x) + ((n)-1), n ) - -#define FT_PIX_FLOOR( x ) ( (x) & ~63 ) -#define FT_PIX_ROUND( x ) FT_PIX_FLOOR( (x) + 32 ) -#define FT_PIX_CEIL( x ) FT_PIX_FLOOR( (x) + 63 ) - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** V A L I D A T I O N ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /* handle to a validation object */ - typedef struct FT_ValidatorRec_* FT_Validator; - - - /*************************************************************************/ - /* */ - /* There are three distinct validation levels defined here: */ - /* */ - /* FT_VALIDATE_DEFAULT :: */ - /* A table that passes this validation level can be used reliably by */ - /* FreeType. It generally means that all offsets have been checked to */ - /* prevent out-of-bound reads, array counts are correct, etc. */ - /* */ - /* FT_VALIDATE_TIGHT :: */ - /* A table that passes this validation level can be used reliably and */ - /* doesn't contain invalid data. For example, a charmap table that */ - /* returns invalid glyph indices will not pass, even though it can */ - /* be used with FreeType in default mode (the library will simply */ - /* return an error later when trying to load the glyph). */ - /* */ - /* It also check that fields that must be a multiple of 2, 4, or 8 */ - /* don't have incorrect values, etc. */ - /* */ - /* FT_VALIDATE_PARANOID :: */ - /* Only for font debugging. Checks that a table follows the */ - /* specification by 100%. Very few fonts will be able to pass this */ - /* level anyway but it can be useful for certain tools like font */ - /* editors/converters. */ - /* */ - typedef enum FT_ValidationLevel_ - { - FT_VALIDATE_DEFAULT = 0, - FT_VALIDATE_TIGHT, - FT_VALIDATE_PARANOID - - } FT_ValidationLevel; - - - /* validator structure */ - typedef struct FT_ValidatorRec_ - { - const FT_Byte* base; /* address of table in memory */ - const FT_Byte* limit; /* `base' + sizeof(table) in memory */ - FT_ValidationLevel level; /* validation level */ - FT_Error error; /* error returned. 0 means success */ - - ft_jmp_buf jump_buffer; /* used for exception handling */ - - } FT_ValidatorRec; - - -#define FT_VALIDATOR( x ) ((FT_Validator)( x )) - - - FT_BASE( void ) - ft_validator_init( FT_Validator valid, - const FT_Byte* base, - const FT_Byte* limit, - FT_ValidationLevel level ); - - FT_BASE( FT_Int ) - ft_validator_run( FT_Validator valid ); - - /* Sets the error field in a validator, then calls `longjmp' to return */ - /* to high-level caller. Using `setjmp/longjmp' avoids many stupid */ - /* error checks within the validation routines. */ - /* */ - FT_BASE( void ) - ft_validator_error( FT_Validator valid, - FT_Error error ); - - - /* Calls ft_validate_error. Assumes that the `valid' local variable */ - /* holds a pointer to the current validator object. */ - /* */ -#define FT_INVALID( _error ) ft_validator_error( valid, _error ) - - /* called when a broken table is detected */ -#define FT_INVALID_TOO_SHORT FT_INVALID( FT_Err_Invalid_Table ) - - /* called when an invalid offset is detected */ -#define FT_INVALID_OFFSET FT_INVALID( FT_Err_Invalid_Offset ) - - /* called when an invalid format/value is detected */ -#define FT_INVALID_FORMAT FT_INVALID( FT_Err_Invalid_Table ) - - /* called when an invalid glyph index is detected */ -#define FT_INVALID_GLYPH_ID FT_INVALID( FT_Err_Invalid_Glyph_Index ) - - /* called when an invalid field value is detected */ -#define FT_INVALID_DATA FT_INVALID( FT_Err_Invalid_Table ) - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** C H A R M A P S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /* handle to internal charmap object */ - typedef struct FT_CMapRec_* FT_CMap; - - /* handle to charmap class structure */ - typedef const struct FT_CMap_ClassRec_* FT_CMap_Class; - - /* internal charmap object structure */ - typedef struct FT_CMapRec_ - { - FT_CharMapRec charmap; - FT_CMap_Class clazz; - - } FT_CMapRec; - - /* typecase any pointer to a charmap handle */ -#define FT_CMAP( x ) ((FT_CMap)( x )) - - /* obvious macros */ -#define FT_CMAP_PLATFORM_ID( x ) FT_CMAP( x )->charmap.platform_id -#define FT_CMAP_ENCODING_ID( x ) FT_CMAP( x )->charmap.encoding_id -#define FT_CMAP_ENCODING( x ) FT_CMAP( x )->charmap.encoding -#define FT_CMAP_FACE( x ) FT_CMAP( x )->charmap.face - - - /* class method definitions */ - typedef FT_Error - (*FT_CMap_InitFunc)( FT_CMap cmap, - FT_Pointer init_data ); - - typedef void - (*FT_CMap_DoneFunc)( FT_CMap cmap ); - - typedef FT_UInt - (*FT_CMap_CharIndexFunc)( FT_CMap cmap, - FT_UInt32 char_code ); - - typedef FT_UInt - (*FT_CMap_CharNextFunc)( FT_CMap cmap, - FT_UInt32 *achar_code ); - - - typedef struct FT_CMap_ClassRec_ - { - FT_ULong size; - FT_CMap_InitFunc init; - FT_CMap_DoneFunc done; - FT_CMap_CharIndexFunc char_index; - FT_CMap_CharNextFunc char_next; - - } FT_CMap_ClassRec; - - - /* create a new charmap and add it to charmap->face */ - FT_BASE( FT_Error ) - FT_CMap_New( FT_CMap_Class clazz, - FT_Pointer init_data, - FT_CharMap charmap, - FT_CMap *acmap ); - - /* destroy a charmap (don't remove it from face's list though) */ - FT_BASE( void ) - FT_CMap_Done( FT_CMap cmap ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Face_InternalRec */ - /* */ - /* <Description> */ - /* This structure contains the internal fields of each FT_Face */ - /* object. These fields may change between different releases of */ - /* FreeType. */ - /* */ - /* <Fields> */ - /* max_points :: */ - /* The maximal number of points used to store the vectorial outline */ - /* of any glyph in this face. If this value cannot be known in */ - /* advance, or if the face isn't scalable, this should be set to 0. */ - /* Only relevant for scalable formats. */ - /* */ - /* max_contours :: */ - /* The maximal number of contours used to store the vectorial */ - /* outline of any glyph in this face. If this value cannot be */ - /* known in advance, or if the face isn't scalable, this should be */ - /* set to 0. Only relevant for scalable formats. */ - /* */ - /* transform_matrix :: */ - /* A 2x2 matrix of 16.16 coefficients used to transform glyph */ - /* outlines after they are loaded from the font. Only used by the */ - /* convenience functions. */ - /* */ - /* transform_delta :: */ - /* A translation vector used to transform glyph outlines after they */ - /* are loaded from the font. Only used by the convenience */ - /* functions. */ - /* */ - /* transform_flags :: */ - /* Some flags used to classify the transform. Only used by the */ - /* convenience functions. */ - /* */ - /* services :: */ - /* A cache for frequently used services. It should be only */ - /* accessed with the macro `FT_FACE_LOOKUP_SERVICE'. */ - /* */ - /* incremental_interface :: */ - /* If non-null, the interface through which glyph data and metrics */ - /* are loaded incrementally for faces that do not provide all of */ - /* this data when first opened. This field exists only if */ - /* @FT_CONFIG_OPTION_INCREMENTAL is defined. */ - /* */ - typedef struct FT_Face_InternalRec_ - { - FT_UShort max_points; - FT_Short max_contours; - - FT_Matrix transform_matrix; - FT_Vector transform_delta; - FT_Int transform_flags; - - FT_ServiceCacheRec services; - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - FT_Incremental_InterfaceRec* incremental_interface; -#endif - - } FT_Face_InternalRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_Slot_InternalRec */ - /* */ - /* <Description> */ - /* This structure contains the internal fields of each FT_GlyphSlot */ - /* object. These fields may change between different releases of */ - /* FreeType. */ - /* */ - /* <Fields> */ - /* loader :: The glyph loader object used to load outlines */ - /* into the glyph slot. */ - /* */ - /* flags :: Possible values are zero or */ - /* FT_GLYPH_OWN_BITMAP. The latter indicates */ - /* that the FT_GlyphSlot structure owns the */ - /* bitmap buffer. */ - /* */ - /* glyph_transformed :: Boolean. Set to TRUE when the loaded glyph */ - /* must be transformed through a specific */ - /* font transformation. This is _not_ the same */ - /* as the face transform set through */ - /* FT_Set_Transform(). */ - /* */ - /* glyph_matrix :: The 2x2 matrix corresponding to the glyph */ - /* transformation, if necessary. */ - /* */ - /* glyph_delta :: The 2d translation vector corresponding to */ - /* the glyph transformation, if necessary. */ - /* */ - /* glyph_hints :: Format-specific glyph hints management. */ - /* */ - -#define FT_GLYPH_OWN_BITMAP 0x1 - - typedef struct FT_Slot_InternalRec_ - { - FT_GlyphLoader loader; - FT_UInt flags; - FT_Bool glyph_transformed; - FT_Matrix glyph_matrix; - FT_Vector glyph_delta; - void* glyph_hints; - - } FT_GlyphSlot_InternalRec; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** M O D U L E S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_ModuleRec */ - /* */ - /* <Description> */ - /* A module object instance. */ - /* */ - /* <Fields> */ - /* clazz :: A pointer to the module's class. */ - /* */ - /* library :: A handle to the parent library object. */ - /* */ - /* memory :: A handle to the memory manager. */ - /* */ - /* generic :: A generic structure for user-level extensibility (?). */ - /* */ - typedef struct FT_ModuleRec_ - { - FT_Module_Class* clazz; - FT_Library library; - FT_Memory memory; - FT_Generic generic; - - } FT_ModuleRec; - - - /* typecast an object to a FT_Module */ -#define FT_MODULE( x ) ((FT_Module)( x )) -#define FT_MODULE_CLASS( x ) FT_MODULE( x )->clazz -#define FT_MODULE_LIBRARY( x ) FT_MODULE( x )->library -#define FT_MODULE_MEMORY( x ) FT_MODULE( x )->memory - - -#define FT_MODULE_IS_DRIVER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ - FT_MODULE_FONT_DRIVER ) - -#define FT_MODULE_IS_RENDERER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ - FT_MODULE_RENDERER ) - -#define FT_MODULE_IS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ - FT_MODULE_HINTER ) - -#define FT_MODULE_IS_STYLER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ - FT_MODULE_STYLER ) - -#define FT_DRIVER_IS_SCALABLE( x ) ( FT_MODULE_CLASS( x )->module_flags & \ - FT_MODULE_DRIVER_SCALABLE ) - -#define FT_DRIVER_USES_OUTLINES( x ) !( FT_MODULE_CLASS( x )->module_flags & \ - FT_MODULE_DRIVER_NO_OUTLINES ) - -#define FT_DRIVER_HAS_HINTER( x ) ( FT_MODULE_CLASS( x )->module_flags & \ - FT_MODULE_DRIVER_HAS_HINTER ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Module_Interface */ - /* */ - /* <Description> */ - /* Finds a module and returns its specific interface as a typeless */ - /* pointer. */ - /* */ - /* <Input> */ - /* library :: A handle to the library object. */ - /* */ - /* module_name :: The module's name (as an ASCII string). */ - /* */ - /* <Return> */ - /* A module-specific interface if available, 0 otherwise. */ - /* */ - /* <Note> */ - /* You should better be familiar with FreeType internals to know */ - /* which module to look for, and what its interface is :-) */ - /* */ - FT_BASE( const void* ) - FT_Get_Module_Interface( FT_Library library, - const char* mod_name ); - - FT_BASE( FT_Pointer ) - ft_module_get_service( FT_Module module, - const char* service_id ); - - /* */ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** FACE, SIZE & GLYPH SLOT OBJECTS ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /* a few macros used to perform easy typecasts with minimal brain damage */ - -#define FT_FACE( x ) ((FT_Face)(x)) -#define FT_SIZE( x ) ((FT_Size)(x)) -#define FT_SLOT( x ) ((FT_GlyphSlot)(x)) - -#define FT_FACE_DRIVER( x ) FT_FACE( x )->driver -#define FT_FACE_LIBRARY( x ) FT_FACE_DRIVER( x )->root.library -#define FT_FACE_MEMORY( x ) FT_FACE( x )->memory -#define FT_FACE_STREAM( x ) FT_FACE( x )->stream - -#define FT_SIZE_FACE( x ) FT_SIZE( x )->face -#define FT_SLOT_FACE( x ) FT_SLOT( x )->face - -#define FT_FACE_SLOT( x ) FT_FACE( x )->glyph -#define FT_FACE_SIZE( x ) FT_FACE( x )->size - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_GlyphSlot */ - /* */ - /* <Description> */ - /* It is sometimes useful to have more than one glyph slot for a */ - /* given face object. This function is used to create additional */ - /* slots. All of them are automatically discarded when the face is */ - /* destroyed. */ - /* */ - /* <Input> */ - /* face :: A handle to a parent face object. */ - /* */ - /* <Output> */ - /* aslot :: A handle to a new glyph slot object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_BASE( FT_Error ) - FT_New_GlyphSlot( FT_Face face, - FT_GlyphSlot *aslot ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_GlyphSlot */ - /* */ - /* <Description> */ - /* Destroys a given glyph slot. Remember however that all slots are */ - /* automatically destroyed with its parent. Using this function is */ - /* not always mandatory. */ - /* */ - /* <Input> */ - /* slot :: A handle to a target glyph slot. */ - /* */ - FT_BASE( void ) - FT_Done_GlyphSlot( FT_GlyphSlot slot ); - - /* */ - - /* - * Free the bitmap of a given glyphslot when needed - * (i.e., only when it was allocated with ft_glyphslot_alloc_bitmap). - */ - FT_BASE( void ) - ft_glyphslot_free_bitmap( FT_GlyphSlot slot ); - - - /* - * Allocate a new bitmap buffer in a glyph slot. - */ - FT_BASE( FT_Error ) - ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot, - FT_ULong size ); - - - /* - * Set the bitmap buffer in a glyph slot to a given pointer. - * The buffer will not be freed by a later call to ft_glyphslot_free_bitmap. - */ - FT_BASE( void ) - ft_glyphslot_set_bitmap( FT_GlyphSlot slot, - FT_Byte* buffer ); - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** R E N D E R E R S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#define FT_RENDERER( x ) ((FT_Renderer)( x )) -#define FT_GLYPH( x ) ((FT_Glyph)( x )) -#define FT_BITMAP_GLYPH( x ) ((FT_BitmapGlyph)( x )) -#define FT_OUTLINE_GLYPH( x ) ((FT_OutlineGlyph)( x )) - - - typedef struct FT_RendererRec_ - { - FT_ModuleRec root; - FT_Renderer_Class* clazz; - FT_Glyph_Format glyph_format; - FT_Glyph_Class glyph_class; - - FT_Raster raster; - FT_Raster_Render_Func raster_render; - FT_Renderer_RenderFunc render; - - } FT_RendererRec; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** F O N T D R I V E R S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /* typecast a module into a driver easily */ -#define FT_DRIVER( x ) ((FT_Driver)(x)) - - /* typecast a module as a driver, and get its driver class */ -#define FT_DRIVER_CLASS( x ) FT_DRIVER( x )->clazz - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_DriverRec */ - /* */ - /* <Description> */ - /* The root font driver class. A font driver is responsible for */ - /* managing and loading font files of a given format. */ - /* */ - /* <Fields> */ - /* root :: Contains the fields of the root module class. */ - /* */ - /* clazz :: A pointer to the font driver's class. Note that */ - /* this is NOT root.clazz. `class' wasn't used */ - /* as it is a reserved word in C++. */ - /* */ - /* faces_list :: The list of faces currently opened by this */ - /* driver. */ - /* */ - /* extensions :: A typeless pointer to the driver's extensions */ - /* registry, if they are supported through the */ - /* configuration macro FT_CONFIG_OPTION_EXTENSIONS. */ - /* */ - /* glyph_loader :: The glyph loader for all faces managed by this */ - /* driver. This object isn't defined for unscalable */ - /* formats. */ - /* */ - typedef struct FT_DriverRec_ - { - FT_ModuleRec root; - FT_Driver_Class clazz; - - FT_ListRec faces_list; - void* extensions; - - FT_GlyphLoader glyph_loader; - - } FT_DriverRec; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** L I B R A R I E S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -/* this hook is used by the TrueType debugger. It must be set to an alternate - * truetype bytecode interpreter function - */ -#define FT_DEBUG_HOOK_TRUETYPE 0 - - -/* set this debug hook to a non-null pointer to force unpatented hinting - * for all faces when both TT_CONFIG_OPTION_BYTECODE_INTERPRETER and - * TT_CONFIG_OPTION_UNPATENTED_HINTING are defined. this is only used - * during debugging - */ -#define FT_DEBUG_HOOK_UNPATENTED_HINTING 1 - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* FT_LibraryRec */ - /* */ - /* <Description> */ - /* The FreeType library class. This is the root of all FreeType */ - /* data. Use FT_New_Library() to create a library object, and */ - /* FT_Done_Library() to discard it and all child objects. */ - /* */ - /* <Fields> */ - /* memory :: The library's memory object. Manages memory */ - /* allocation. */ - /* */ - /* generic :: Client data variable. Used to extend the */ - /* Library class by higher levels and clients. */ - /* */ - /* version_major :: The major version number of the library. */ - /* */ - /* version_minor :: The minor version number of the library. */ - /* */ - /* version_patch :: The current patch level of the library. */ - /* */ - /* num_modules :: The number of modules currently registered */ - /* within this library. This is set to 0 for new */ - /* libraries. New modules are added through the */ - /* FT_Add_Module() API function. */ - /* */ - /* modules :: A table used to store handles to the currently */ - /* registered modules. Note that each font driver */ - /* contains a list of its opened faces. */ - /* */ - /* renderers :: The list of renderers currently registered */ - /* within the library. */ - /* */ - /* cur_renderer :: The current outline renderer. This is a */ - /* shortcut used to avoid parsing the list on */ - /* each call to FT_Outline_Render(). It is a */ - /* handle to the current renderer for the */ - /* FT_GLYPH_FORMAT_OUTLINE format. */ - /* */ - /* auto_hinter :: XXX */ - /* */ - /* raster_pool :: The raster object's render pool. This can */ - /* ideally be changed dynamically at run-time. */ - /* */ - /* raster_pool_size :: The size of the render pool in bytes. */ - /* */ - /* debug_hooks :: XXX */ - /* */ - typedef struct FT_LibraryRec_ - { - FT_Memory memory; /* library's memory manager */ - - FT_Generic generic; - - FT_Int version_major; - FT_Int version_minor; - FT_Int version_patch; - - FT_UInt num_modules; - FT_Module modules[FT_MAX_MODULES]; /* module objects */ - - FT_ListRec renderers; /* list of renderers */ - FT_Renderer cur_renderer; /* current outline renderer */ - FT_Module auto_hinter; - - FT_Byte* raster_pool; /* scan-line conversion */ - /* render pool */ - FT_ULong raster_pool_size; /* size of render pool in bytes */ - - FT_DebugHook_Func debug_hooks[4]; - - } FT_LibraryRec; - - - FT_BASE( FT_Renderer ) - FT_Lookup_Renderer( FT_Library library, - FT_Glyph_Format format, - FT_ListNode* node ); - - FT_BASE( FT_Error ) - FT_Render_Glyph_Internal( FT_Library library, - FT_GlyphSlot slot, - FT_Render_Mode render_mode ); - - typedef const char* - (*FT_Face_GetPostscriptNameFunc)( FT_Face face ); - - typedef FT_Error - (*FT_Face_GetGlyphNameFunc)( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ); - - typedef FT_UInt - (*FT_Face_GetGlyphNameIndexFunc)( FT_Face face, - FT_String* glyph_name ); - - -#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Memory */ - /* */ - /* <Description> */ - /* Creates a new memory object. */ - /* */ - /* <Return> */ - /* A pointer to the new memory object. 0 in case of error. */ - /* */ - FT_EXPORT( FT_Memory ) - FT_New_Memory( void ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Done_Memory */ - /* */ - /* <Description> */ - /* Discards memory manager. */ - /* */ - /* <Input> */ - /* memory :: A handle to the memory manager. */ - /* */ - FT_EXPORT( void ) - FT_Done_Memory( FT_Memory memory ); - -#endif /* !FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ - - - /* Define default raster's interface. The default raster is located in */ - /* `src/base/ftraster.c'. */ - /* */ - /* Client applications can register new rasters through the */ - /* FT_Set_Raster() API. */ - -#ifndef FT_NO_DEFAULT_RASTER - FT_EXPORT_VAR( FT_Raster_Funcs ) ft_default_raster; -#endif - - -FT_END_HEADER - -#endif /* __FTOBJS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftrfork.h b/nx-X11/extras/freetype2/include/freetype/internal/ftrfork.h deleted file mode 100644 index e7b10024a..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftrfork.h +++ /dev/null @@ -1,184 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftrfork.h */ -/* */ -/* Embedded resource forks accessor (specification). */ -/* */ -/* Copyright 2004 by */ -/* Masatake YAMATO and Redhat K.K. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -/***************************************************************************/ -/* Development of the code in this file is support of */ -/* Information-technology Promotion Agency, Japan. */ -/***************************************************************************/ - - -#ifndef __FTRFORK_H__ -#define __FTRFORK_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H - - -FT_BEGIN_HEADER - - - /* Number of guessing rules supported in `FT_Raccess_Guess'. */ - /* Don't forget to increment the number if you add a new guessing rule. */ -#define FT_RACCESS_N_RULES 8 - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Raccess_Guess */ - /* */ - /* <Description> */ - /* Guess a file name and offset where the actual resource fork is */ - /* stored. The macro FT_RACCESS_N_RULES holds the number of */ - /* guessing rules; the guessed result for the Nth rule is */ - /* represented as a triplet: a new file name (new_names[N]), a file */ - /* offset (offsets[N]), and an error code (errors[N]). */ - /* */ - /* <Input> */ - /* library :: */ - /* A FreeType library instance. */ - /* */ - /* stream :: */ - /* A file stream containing the resource fork. */ - /* */ - /* base_name :: */ - /* The (base) file name of the resource fork used for some */ - /* guessing rules. */ - /* */ - /* <Output> */ - /* new_names :: */ - /* An array of guessed file names in which the resource forks may */ - /* exist. If `new_names[N]' is NULL, the guessed file name is */ - /* equal to `base_name'. */ - /* */ - /* offsets :: */ - /* An array of guessed file offsets. `offsets[N]' holds the file */ - /* offset of the possible start of the resource fork in file */ - /* `new_names[N]'. */ - /* */ - /* errors :: */ - /* An array of FreeType error codes. `errors[N]' is the error */ - /* code of Nth guessing rule function. If `errors[N]' is not */ - /* FT_Err_Ok, `new_names[N]' and `offsets[N]' are meaningless. */ - /* */ - FT_BASE( void ) - FT_Raccess_Guess( FT_Library library, - FT_Stream stream, - char* base_name, - char** new_names, - FT_Long* offsets, - FT_Error* errors ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Raccess_Get_HeaderInfo */ - /* */ - /* <Description> */ - /* Get the information from the header of resource fork. The */ - /* information includes the file offset where the resource map */ - /* starts, and the file offset where the resource data starts. */ - /* `FT_Raccess_Get_DataOffsets' requires these two data. */ - /* */ - /* <Input> */ - /* library :: */ - /* A FreeType library instance. */ - /* */ - /* stream :: */ - /* A file stream containing the resource fork. */ - /* */ - /* rfork_offset :: */ - /* The file offset where the resource fork starts. */ - /* */ - /* <Output> */ - /* map_offset :: */ - /* The file offset where the resource map starts. */ - /* */ - /* rdata_pos :: */ - /* The file offset where the resource data starts. */ - /* */ - /* <Return> */ - /* FreeType error code. FT_Err_Ok means success. */ - /* */ - FT_BASE( FT_Error ) - FT_Raccess_Get_HeaderInfo( FT_Library library, - FT_Stream stream, - FT_Long rfork_offset, - FT_Long *map_offset, - FT_Long *rdata_pos ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Raccess_Get_DataOffsets */ - /* */ - /* <Description> */ - /* Get the data offsets for a tag in a resource fork. Offsets are */ - /* stored in an array because, in some cases, resources in a resource */ - /* fork have the same tag. */ - /* */ - /* <Input> */ - /* library :: */ - /* A FreeType library instance. */ - /* */ - /* stream :: */ - /* A file stream containing the resource fork. */ - /* */ - /* map_offset :: */ - /* The file offset where the resource map starts. */ - /* */ - /* rdata_pos :: */ - /* The file offset where the resource data starts. */ - /* */ - /* tag :: */ - /* The resource tag. */ - /* */ - /* <Output> */ - /* offsets :: */ - /* The stream offsets for the resource data specified by `tag'. */ - /* This array is allocated by the function, so you have to call */ - /* @FT_Free after use. */ - /* */ - /* count :: */ - /* The length of offsets array. */ - /* */ - /* <Return> */ - /* FreeType error code. FT_Err_Ok means success. */ - /* */ - /* <Note> */ - /* Normally you should use `FT_Raccess_Get_HeaderInfo' to get the */ - /* value for `map_offset' and `rdata_pos'. */ - /* */ - FT_BASE( FT_Error ) - FT_Raccess_Get_DataOffsets( FT_Library library, - FT_Stream stream, - FT_Long map_offset, - FT_Long rdata_pos, - FT_Long tag, - FT_Long **offsets, - FT_Long *count ); - - -FT_END_HEADER - -#endif /* __FTRFORK_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftserv.h b/nx-X11/extras/freetype2/include/freetype/internal/ftserv.h deleted file mode 100644 index e5ed8895b..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftserv.h +++ /dev/null @@ -1,260 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftserv.h */ -/* */ -/* The FreeType services (specification only). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* Each module can export one or more `services'. Each service is */ - /* identified by a constant string and modeled by a pointer; the latter */ - /* generally corresponds to a structure containing function pointers. */ - /* */ - /* Note that a service's data cannot be a mere function pointer because */ - /* in C it is possible that function pointers might be implemented */ - /* differently than data pointers (e.g. 48 bits instead of 32). */ - /* */ - /*************************************************************************/ - - -#ifndef __FTSERV_H__ -#define __FTSERV_H__ - - -FT_BEGIN_HEADER - - - /* - * @macro: - * FT_FACE_FIND_SERVICE - * - * @description: - * This macro is used to look up a service from a face's driver module. - * - * @input: - * face :: - * The source face handle. - * - * id :: - * A string describing the service as defined in the service's - * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to - * `multi-masters'). It is automatically prefixed with - * `FT_SERVICE_ID_'. - * - * @output: - * ptr :: - * A variable that receives the service pointer. Will be NULL - * if not found. - */ -#define FT_FACE_FIND_SERVICE( face, ptr, id ) \ - FT_BEGIN_STMNT \ - FT_Module module = FT_MODULE( FT_FACE(face)->driver ); \ - /* the strange cast is to allow C++ compilation */ \ - FT_Pointer* Pptr = (FT_Pointer*) &(ptr); \ - \ - \ - *Pptr = NULL; \ - if ( module->clazz->get_interface ) \ - *Pptr = module->clazz->get_interface( module, FT_SERVICE_ID_ ## id ); \ - FT_END_STMNT - - - /* - * @macro: - * FT_FACE_FIND_GLOBAL_SERVICE - * - * @description: - * This macro is used to look up a service from all modules. - * - * @input: - * face :: - * The source face handle. - * - * id :: - * A string describing the service as defined in the service's - * header files (e.g. FT_SERVICE_ID_MULTI_MASTERS which expands to - * `multi-masters'). It is automatically prefixed with - * `FT_SERVICE_ID_'. - * - * @output: - * ptr :: - * A variable that receives the service pointer. Will be NULL - * if not found. - */ -#define FT_FACE_FIND_GLOBAL_SERVICE( face, ptr, id ) \ - FT_BEGIN_STMNT \ - FT_Module module = FT_MODULE( FT_FACE(face)->driver ); \ - /* the strange cast is to allow C++ compilation */ \ - FT_Pointer* Pptr = (FT_Pointer*) &(ptr); \ - \ - \ - *Pptr = ft_module_get_service( module, FT_SERVICE_ID_ ## id ); \ - FT_END_STMNT - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** S E R V I C E D E S C R I P T O R S *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* - * The following structure is used to _describe_ a given service - * to the library. This is useful to build simple static service lists. - */ - typedef struct FT_ServiceDescRec_ - { - const char* serv_id; /* service name */ - const void* serv_data; /* service pointer/data */ - - } FT_ServiceDescRec; - - typedef const FT_ServiceDescRec* FT_ServiceDesc; - - - /* - * Parse a list of FT_ServiceDescRec descriptors and look for - * a specific service by ID. Note that the last element in the - * array must be { NULL, NULL }, and that the function should - * return NULL if the service isn't available. - * - * This function can be used by modules to implement their - * `get_service' method. - */ - FT_BASE( FT_Pointer ) - ft_service_list_lookup( FT_ServiceDesc service_descriptors, - const char* service_id ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** S E R V I C E S C A C H E *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* - * This structure is used to store a cache for several frequently used - * services. It is the type of `face->internal->services'. You - * should only use FT_FACE_LOOKUP_SERVICE to access it. - * - * All fields should have the type FT_Pointer to relax compilation - * dependencies. We assume the developer isn't completely stupid. - * - * Each field must be named `service_XXXX' where `XXX' corresponds to - * the correct FT_SERVICE_ID_XXXX macro. See the definition of - * FT_FACE_LOOKUP_SERVICE below how this is implemented. - * - */ - typedef struct FT_ServiceCacheRec_ - { - FT_Pointer service_POSTSCRIPT_FONT_NAME; - FT_Pointer service_MULTI_MASTERS; - FT_Pointer service_GLYPH_DICT; - FT_Pointer service_PFR_METRICS; - FT_Pointer service_WINFNT; - - } FT_ServiceCacheRec, *FT_ServiceCache; - - - /* - * A magic number used within the services cache. - */ -#define FT_SERVICE_UNAVAILABLE ((FT_Pointer)-2) /* magic number */ - - - /* - * @macro: - * FT_FACE_LOOKUP_SERVICE - * - * @description: - * This macro is used to lookup a service from a face's driver module - * using its cache. - * - * @input: - * face:: - * The source face handle containing the cache. - * - * field :: - * The field name in the cache. - * - * id :: - * The service ID. - * - * @output: - * ptr :: - * A variable receiving the service data. NULL if not available. - */ -#define FT_FACE_LOOKUP_SERVICE( face, ptr, id ) \ - FT_BEGIN_STMNT \ - /* the strange cast is to allow C++ compilation */ \ - FT_Pointer* pptr = (FT_Pointer*)&(ptr); \ - FT_Pointer svc; \ - \ - \ - svc = FT_FACE(face)->internal->services. service_ ## id ; \ - if ( svc == FT_SERVICE_UNAVAILABLE ) \ - svc = NULL; \ - else if ( svc == NULL ) \ - { \ - FT_FACE_FIND_SERVICE( face, svc, id ); \ - \ - FT_FACE(face)->internal->services. service_ ## id = \ - (FT_Pointer)( svc != NULL ? svc \ - : FT_SERVICE_UNAVAILABLE ); \ - } \ - *pptr = svc; \ - FT_END_STMNT - - - /* - * A macro used to define new service structure types. - */ - -#define FT_DEFINE_SERVICE( name ) \ - typedef struct FT_Service_ ## name ## Rec_ \ - FT_Service_ ## name ## Rec ; \ - typedef struct FT_Service_ ## name ## Rec_ \ - const * FT_Service_ ## name ; \ - struct FT_Service_ ## name ## Rec_ - - /* */ - - /* - * The header files containing the services. - */ - -#define FT_SERVICE_MULTIPLE_MASTERS_H <freetype/internal/services/svmm.h> -#define FT_SERVICE_POSTSCRIPT_NAME_H <freetype/internal/services/svpostnm.h> -#define FT_SERVICE_POSTSCRIPT_CMAPS_H <freetype/internal/services/svpscmap.h> -#define FT_SERVICE_POSTSCRIPT_INFO_H <freetype/internal/services/svpsinfo.h> -#define FT_SERVICE_GLYPH_DICT_H <freetype/internal/services/svgldict.h> -#define FT_SERVICE_BDF_H <freetype/internal/services/svbdf.h> -#define FT_SERVICE_XFREE86_NAME_H <freetype/internal/services/svxf86nm.h> -#define FT_SERVICE_SFNT_H <freetype/internal/services/svsfnt.h> -#define FT_SERVICE_PFR_H <freetype/internal/services/svpfr.h> -#define FT_SERVICE_WINFNT_H <freetype/internal/services/svwinfnt.h> -#define FT_SERVICE_TT_CMAP_H <freetype/internal/services/svttcmap.h> - - /* */ - -FT_END_HEADER - -#endif /* __FTSERV_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/ftstream.h b/nx-X11/extras/freetype2/include/freetype/internal/ftstream.h deleted file mode 100644 index 9833cd092..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/ftstream.h +++ /dev/null @@ -1,529 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftstream.h */ -/* */ -/* Stream handling (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTSTREAM_H__ -#define __FTSTREAM_H__ - - -#include <ft2build.h> -#include FT_SYSTEM_H -#include FT_INTERNAL_OBJECTS_H - - -FT_BEGIN_HEADER - - - /* format of an 8-bit frame_op value: */ - /* */ - /* bit 76543210 */ - /* xxxxxxes */ - /* */ - /* s is set to 1 if the value is signed. */ - /* e is set to 1 if the value is little-endian. */ - /* xxx is a command. */ - -#define FT_FRAME_OP_SHIFT 2 -#define FT_FRAME_OP_SIGNED 1 -#define FT_FRAME_OP_LITTLE 2 -#define FT_FRAME_OP_COMMAND( x ) ( x >> FT_FRAME_OP_SHIFT ) - -#define FT_MAKE_FRAME_OP( command, little, sign ) \ - ( ( command << FT_FRAME_OP_SHIFT ) | ( little << 1 ) | sign ) - -#define FT_FRAME_OP_END 0 -#define FT_FRAME_OP_START 1 /* start a new frame */ -#define FT_FRAME_OP_BYTE 2 /* read 1-byte value */ -#define FT_FRAME_OP_SHORT 3 /* read 2-byte value */ -#define FT_FRAME_OP_LONG 4 /* read 4-byte value */ -#define FT_FRAME_OP_OFF3 5 /* read 3-byte value */ -#define FT_FRAME_OP_BYTES 6 /* read a bytes sequence */ - - - typedef enum FT_Frame_Op_ - { - ft_frame_end = 0, - ft_frame_start = FT_MAKE_FRAME_OP( FT_FRAME_OP_START, 0, 0 ), - - ft_frame_byte = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 0 ), - ft_frame_schar = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTE, 0, 1 ), - - ft_frame_ushort_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 0 ), - ft_frame_short_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 0, 1 ), - ft_frame_ushort_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 0 ), - ft_frame_short_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_SHORT, 1, 1 ), - - ft_frame_ulong_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 0 ), - ft_frame_long_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 0, 1 ), - ft_frame_ulong_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 0 ), - ft_frame_long_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_LONG, 1, 1 ), - - ft_frame_uoff3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 0 ), - ft_frame_off3_be = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 0, 1 ), - ft_frame_uoff3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 0 ), - ft_frame_off3_le = FT_MAKE_FRAME_OP( FT_FRAME_OP_OFF3, 1, 1 ), - - ft_frame_bytes = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 0 ), - ft_frame_skip = FT_MAKE_FRAME_OP( FT_FRAME_OP_BYTES, 0, 1 ) - - } FT_Frame_Op; - - - typedef struct FT_Frame_Field_ - { - FT_Byte value; - FT_Byte size; - FT_UShort offset; - - } FT_Frame_Field; - - - /* Construct an FT_Frame_Field out of a structure type and a field name. */ - /* The structure type must be set in the FT_STRUCTURE macro before */ - /* calling the FT_FRAME_START() macro. */ - /* */ -#define FT_FIELD_SIZE( f ) \ - (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f ) - -#define FT_FIELD_SIZE_DELTA( f ) \ - (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] ) - -#define FT_FIELD_OFFSET( f ) \ - (FT_UShort)( offsetof( FT_STRUCTURE, f ) ) - -#define FT_FRAME_FIELD( frame_op, field ) \ - { \ - frame_op, \ - FT_FIELD_SIZE( field ), \ - FT_FIELD_OFFSET( field ) \ - } - -#define FT_MAKE_EMPTY_FIELD( frame_op ) { frame_op, 0, 0 } - -#define FT_FRAME_START( size ) { ft_frame_start, 0, size } -#define FT_FRAME_END { ft_frame_end, 0, 0 } - -#define FT_FRAME_LONG( f ) FT_FRAME_FIELD( ft_frame_long_be, f ) -#define FT_FRAME_ULONG( f ) FT_FRAME_FIELD( ft_frame_ulong_be, f ) -#define FT_FRAME_SHORT( f ) FT_FRAME_FIELD( ft_frame_short_be, f ) -#define FT_FRAME_USHORT( f ) FT_FRAME_FIELD( ft_frame_ushort_be, f ) -#define FT_FRAME_OFF3( f ) FT_FRAME_FIELD( ft_frame_off3_be, f ) -#define FT_FRAME_UOFF3( f ) FT_FRAME_FIELD( ft_frame_uoff3_be, f ) -#define FT_FRAME_BYTE( f ) FT_FRAME_FIELD( ft_frame_byte, f ) -#define FT_FRAME_CHAR( f ) FT_FRAME_FIELD( ft_frame_schar, f ) - -#define FT_FRAME_LONG_LE( f ) FT_FRAME_FIELD( ft_frame_long_le, f ) -#define FT_FRAME_ULONG_LE( f ) FT_FRAME_FIELD( ft_frame_ulong_le, f ) -#define FT_FRAME_SHORT_LE( f ) FT_FRAME_FIELD( ft_frame_short_le, f ) -#define FT_FRAME_USHORT_LE( f ) FT_FRAME_FIELD( ft_frame_ushort_le, f ) -#define FT_FRAME_OFF3_LE( f ) FT_FRAME_FIELD( ft_frame_off3_le, f ) -#define FT_FRAME_UOFF3_LE( f ) FT_FRAME_FIELD( ft_frame_uoff3_le, f ) - -#define FT_FRAME_SKIP_LONG { ft_frame_long_be, 0, 0 } -#define FT_FRAME_SKIP_SHORT { ft_frame_short_be, 0, 0 } -#define FT_FRAME_SKIP_BYTE { ft_frame_byte, 0, 0 } - -#define FT_FRAME_BYTES( field, count ) \ - { \ - ft_frame_bytes, \ - count, \ - FT_FIELD_OFFSET( field ) \ - } - -#define FT_FRAME_SKIP_BYTES( count ) { ft_frame_skip, count, 0 } - - - /*************************************************************************/ - /* */ - /* Integer extraction macros -- the `buffer' parameter must ALWAYS be of */ - /* type `char*' or equivalent (1-byte elements). */ - /* */ - -#define FT_BYTE_( p, i ) ( ((const FT_Byte*)(p))[(i)] ) -#define FT_INT8_( p, i ) ( ((const FT_Char*)(p))[(i)] ) - -#define FT_INT16( x ) ( (FT_Int16)(x) ) -#define FT_UINT16( x ) ( (FT_UInt16)(x) ) -#define FT_INT32( x ) ( (FT_Int32)(x) ) -#define FT_UINT32( x ) ( (FT_UInt32)(x) ) - -#define FT_BYTE_I16( p, i, s ) ( FT_INT16( FT_BYTE_( p, i ) ) << (s) ) -#define FT_BYTE_U16( p, i, s ) ( FT_UINT16( FT_BYTE_( p, i ) ) << (s) ) -#define FT_BYTE_I32( p, i, s ) ( FT_INT32( FT_BYTE_( p, i ) ) << (s) ) -#define FT_BYTE_U32( p, i, s ) ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) ) - -#define FT_INT8_I16( p, i, s ) ( FT_INT16( FT_INT8_( p, i ) ) << (s) ) -#define FT_INT8_U16( p, i, s ) ( FT_UINT16( FT_INT8_( p, i ) ) << (s) ) -#define FT_INT8_I32( p, i, s ) ( FT_INT32( FT_INT8_( p, i ) ) << (s) ) -#define FT_INT8_U32( p, i, s ) ( FT_UINT32( FT_INT8_( p, i ) ) << (s) ) - - -#define FT_PEEK_SHORT( p ) FT_INT16( FT_INT8_I16( p, 0, 8) | \ - FT_BYTE_I16( p, 1, 0) ) - -#define FT_PEEK_USHORT( p ) FT_UINT16( FT_BYTE_U16( p, 0, 8 ) | \ - FT_BYTE_U16( p, 1, 0 ) ) - -#define FT_PEEK_LONG( p ) FT_INT32( FT_INT8_I32( p, 0, 24 ) | \ - FT_BYTE_I32( p, 1, 16 ) | \ - FT_BYTE_I32( p, 2, 8 ) | \ - FT_BYTE_I32( p, 3, 0 ) ) - -#define FT_PEEK_ULONG( p ) FT_UINT32( FT_BYTE_U32( p, 0, 24 ) | \ - FT_BYTE_U32( p, 1, 16 ) | \ - FT_BYTE_U32( p, 2, 8 ) | \ - FT_BYTE_U32( p, 3, 0 ) ) - -#define FT_PEEK_OFF3( p ) FT_INT32( FT_INT8_I32( p, 0, 16 ) | \ - FT_BYTE_I32( p, 1, 8 ) | \ - FT_BYTE_I32( p, 2, 0 ) ) - -#define FT_PEEK_UOFF3( p ) FT_UINT32( FT_BYTE_U32( p, 0, 16 ) | \ - FT_BYTE_U32( p, 1, 8 ) | \ - FT_BYTE_U32( p, 2, 0 ) ) - -#define FT_PEEK_SHORT_LE( p ) FT_INT16( FT_INT8_I16( p, 1, 8 ) | \ - FT_BYTE_I16( p, 0, 0 ) ) - -#define FT_PEEK_USHORT_LE( p ) FT_UINT16( FT_BYTE_U16( p, 1, 8 ) | \ - FT_BYTE_U16( p, 0, 0 ) ) - -#define FT_PEEK_LONG_LE( p ) FT_INT32( FT_INT8_I32( p, 3, 24 ) | \ - FT_BYTE_I32( p, 2, 16 ) | \ - FT_BYTE_I32( p, 1, 8 ) | \ - FT_BYTE_I32( p, 0, 0 ) ) - -#define FT_PEEK_ULONG_LE( p ) FT_UINT32( FT_BYTE_U32( p, 3, 24 ) | \ - FT_BYTE_U32( p, 2, 16 ) | \ - FT_BYTE_U32( p, 1, 8 ) | \ - FT_BYTE_U32( p, 0, 0 ) ) - -#define FT_PEEK_OFF3_LE( p ) FT_INT32( FT_INT8_I32( p, 2, 16 ) | \ - FT_BYTE_I32( p, 1, 8 ) | \ - FT_BYTE_I32( p, 0, 0 ) ) - -#define FT_PEEK_UOFF3_LE( p ) FT_UINT32( FT_BYTE_U32( p, 2, 16 ) | \ - FT_BYTE_U32( p, 1, 8 ) | \ - FT_BYTE_U32( p, 0, 0 ) ) - - -#define FT_NEXT_CHAR( buffer ) \ - ( (signed char)*buffer++ ) - -#define FT_NEXT_BYTE( buffer ) \ - ( (unsigned char)*buffer++ ) - -#define FT_NEXT_SHORT( buffer ) \ - ( (short)( buffer += 2, FT_PEEK_SHORT( buffer - 2 ) ) ) - -#define FT_NEXT_USHORT( buffer ) \ - ( (unsigned short)( buffer += 2, FT_PEEK_USHORT( buffer - 2 ) ) ) - -#define FT_NEXT_OFF3( buffer ) \ - ( (long)( buffer += 3, FT_PEEK_OFF3( buffer - 3 ) ) ) - -#define FT_NEXT_UOFF3( buffer ) \ - ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3( buffer - 3 ) ) ) - -#define FT_NEXT_LONG( buffer ) \ - ( (long)( buffer += 4, FT_PEEK_LONG( buffer - 4 ) ) ) - -#define FT_NEXT_ULONG( buffer ) \ - ( (unsigned long)( buffer += 4, FT_PEEK_ULONG( buffer - 4 ) ) ) - - -#define FT_NEXT_SHORT_LE( buffer ) \ - ( (short)( buffer += 2, FT_PEEK_SHORT_LE( buffer - 2 ) ) ) - -#define FT_NEXT_USHORT_LE( buffer ) \ - ( (unsigned short)( buffer += 2, FT_PEEK_USHORT_LE( buffer - 2 ) ) ) - -#define FT_NEXT_OFF3_LE( buffer ) \ - ( (long)( buffer += 3, FT_PEEK_OFF3_LE( buffer - 3 ) ) ) - -#define FT_NEXT_UOFF3_LE( buffer ) \ - ( (unsigned long)( buffer += 3, FT_PEEK_UOFF3_LE( buffer - 3 ) ) ) - -#define FT_NEXT_LONG_LE( buffer ) \ - ( (long)( buffer += 4, FT_PEEK_LONG_LE( buffer - 4 ) ) ) - -#define FT_NEXT_ULONG_LE( buffer ) \ - ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) ) - - - /*************************************************************************/ - /* */ - /* Each GET_xxxx() macro uses an implicit `stream' variable. */ - /* */ -#if 0 -#define FT_GET_MACRO( type ) FT_NEXT_ ## type ( stream->cursor ) - -#define FT_GET_CHAR() FT_GET_MACRO( CHAR ) -#define FT_GET_BYTE() FT_GET_MACRO( BYTE ) -#define FT_GET_SHORT() FT_GET_MACRO( SHORT ) -#define FT_GET_USHORT() FT_GET_MACRO( USHORT ) -#define FT_GET_OFF3() FT_GET_MACRO( OFF3 ) -#define FT_GET_UOFF3() FT_GET_MACRO( UOFF3 ) -#define FT_GET_LONG() FT_GET_MACRO( LONG ) -#define FT_GET_ULONG() FT_GET_MACRO( ULONG ) -#define FT_GET_TAG4() FT_GET_MACRO( ULONG ) - -#define FT_GET_SHORT_LE() FT_GET_MACRO( SHORT_LE ) -#define FT_GET_USHORT_LE() FT_GET_MACRO( USHORT_LE ) -#define FT_GET_LONG_LE() FT_GET_MACRO( LONG_LE ) -#define FT_GET_ULONG_LE() FT_GET_MACRO( ULONG_LE ) - -#else -#define FT_GET_MACRO( func, type ) ( (type)func( stream ) ) - -#define FT_GET_CHAR() FT_GET_MACRO( FT_Stream_GetChar, FT_Char ) -#define FT_GET_BYTE() FT_GET_MACRO( FT_Stream_GetChar, FT_Byte ) -#define FT_GET_SHORT() FT_GET_MACRO( FT_Stream_GetShort, FT_Short ) -#define FT_GET_USHORT() FT_GET_MACRO( FT_Stream_GetShort, FT_UShort ) -#define FT_GET_OFF3() FT_GET_MACRO( FT_Stream_GetOffset, FT_Long ) -#define FT_GET_UOFF3() FT_GET_MACRO( FT_Stream_GetOffset, FT_ULong ) -#define FT_GET_LONG() FT_GET_MACRO( FT_Stream_GetLong, FT_Long ) -#define FT_GET_ULONG() FT_GET_MACRO( FT_Stream_GetLong, FT_ULong ) -#define FT_GET_TAG4() FT_GET_MACRO( FT_Stream_GetLong, FT_ULong ) - -#define FT_GET_SHORT_LE() FT_GET_MACRO( FT_Stream_GetShortLE, FT_Short ) -#define FT_GET_USHORT_LE() FT_GET_MACRO( FT_Stream_GetShortLE, FT_UShort ) -#define FT_GET_LONG_LE() FT_GET_MACRO( FT_Stream_GetLongLE, FT_Long ) -#define FT_GET_ULONG_LE() FT_GET_MACRO( FT_Stream_GetLongLE, FT_ULong ) -#endif - -#define FT_READ_MACRO( func, type, var ) \ - ( var = (type)func( stream, &error ), \ - error != FT_Err_Ok ) - -#define FT_READ_BYTE( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Byte, var ) -#define FT_READ_CHAR( var ) FT_READ_MACRO( FT_Stream_ReadChar, FT_Char, var ) -#define FT_READ_SHORT( var ) FT_READ_MACRO( FT_Stream_ReadShort, FT_Short, var ) -#define FT_READ_USHORT( var ) FT_READ_MACRO( FT_Stream_ReadShort, FT_UShort, var ) -#define FT_READ_OFF3( var ) FT_READ_MACRO( FT_Stream_ReadOffset, FT_Long, var ) -#define FT_READ_UOFF3( var ) FT_READ_MACRO( FT_Stream_ReadOffset, FT_ULong, var ) -#define FT_READ_LONG( var ) FT_READ_MACRO( FT_Stream_ReadLong, FT_Long, var ) -#define FT_READ_ULONG( var ) FT_READ_MACRO( FT_Stream_ReadLong, FT_ULong, var ) - -#define FT_READ_SHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadShortLE, FT_Short, var ) -#define FT_READ_USHORT_LE( var ) FT_READ_MACRO( FT_Stream_ReadShortLE, FT_UShort, var ) -#define FT_READ_LONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadLongLE, FT_Long, var ) -#define FT_READ_ULONG_LE( var ) FT_READ_MACRO( FT_Stream_ReadLongLE, FT_ULong, var ) - - -#ifndef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM - - /* initialize a stream for reading a regular system stream */ - FT_EXPORT( FT_Error ) - FT_Stream_Open( FT_Stream stream, - const char* filepathname ); - -#endif /* FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM */ - - - /* create a new (input) stream from an FT_Open_Args structure */ - FT_BASE( FT_Error ) - FT_Stream_New( FT_Library library, - const FT_Open_Args* args, - FT_Stream *astream ); - - /* free a stream */ - FT_BASE( void ) - FT_Stream_Free( FT_Stream stream, - FT_Int external ); - - /* initialize a stream for reading in-memory data */ - FT_BASE( void ) - FT_Stream_OpenMemory( FT_Stream stream, - const FT_Byte* base, - FT_ULong size ); - - /* close a stream (does not destroy the stream structure) */ - FT_BASE( void ) - FT_Stream_Close( FT_Stream stream ); - - - /* seek within a stream. position is relative to start of stream */ - FT_BASE( FT_Error ) - FT_Stream_Seek( FT_Stream stream, - FT_ULong pos ); - - /* skip bytes in a stream */ - FT_BASE( FT_Error ) - FT_Stream_Skip( FT_Stream stream, - FT_Long distance ); - - /* return current stream position */ - FT_BASE( FT_Long ) - FT_Stream_Pos( FT_Stream stream ); - - /* read bytes from a stream into a user-allocated buffer, returns an */ - /* error if not all bytes could be read. */ - FT_BASE( FT_Error ) - FT_Stream_Read( FT_Stream stream, - FT_Byte* buffer, - FT_ULong count ); - - /* read bytes from a stream at a given position */ - FT_BASE( FT_Error ) - FT_Stream_ReadAt( FT_Stream stream, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ); - - /* Enter a frame of `count' consecutive bytes in a stream. Returns an */ - /* error if the frame could not be read/accessed. The caller can use */ - /* the FT_Stream_Get_XXX functions to retrieve frame data without */ - /* error checks. */ - /* */ - /* You must _always_ call FT_Stream_ExitFrame() once you have entered */ - /* a stream frame! */ - /* */ - FT_BASE( FT_Error ) - FT_Stream_EnterFrame( FT_Stream stream, - FT_ULong count ); - - /* exit a stream frame */ - FT_BASE( void ) - FT_Stream_ExitFrame( FT_Stream stream ); - - /* Extract a stream frame. If the stream is disk-based, a heap block */ - /* is allocated and the frame bytes are read into it. If the stream */ - /* is memory-based, this function simply set a pointer to the data. */ - /* */ - /* Useful to optimize access to memory-based streams transparently. */ - /* */ - /* All extracted frames must be `freed` with a call to the function */ - /* FT_Stream_ReleaseFrame(). */ - /* */ - FT_BASE( FT_Error ) - FT_Stream_ExtractFrame( FT_Stream stream, - FT_ULong count, - FT_Byte** pbytes ); - - /* release an extract frame (see FT_Stream_ExtractFrame) */ - FT_BASE( void ) - FT_Stream_ReleaseFrame( FT_Stream stream, - FT_Byte** pbytes ); - - /* read a byte from an entered frame */ - FT_BASE( FT_Char ) - FT_Stream_GetChar( FT_Stream stream ); - - /* read a 16-bit big-endian integer from an entered frame */ - FT_BASE( FT_Short ) - FT_Stream_GetShort( FT_Stream stream ); - - /* read a 24-bit big-endian integer from an entered frame */ - FT_BASE( FT_Long ) - FT_Stream_GetOffset( FT_Stream stream ); - - /* read a 32-bit big-endian integer from an entered frame */ - FT_BASE( FT_Long ) - FT_Stream_GetLong( FT_Stream stream ); - - /* read a 16-bit little-endian integer from an entered frame */ - FT_BASE( FT_Short ) - FT_Stream_GetShortLE( FT_Stream stream ); - - /* read a 32-bit little-endian integer from an entered frame */ - FT_BASE( FT_Long ) - FT_Stream_GetLongLE( FT_Stream stream ); - - - /* read a byte from a stream */ - FT_BASE( FT_Char ) - FT_Stream_ReadChar( FT_Stream stream, - FT_Error* error ); - - /* read a 16-bit big-endian integer from a stream */ - FT_BASE( FT_Short ) - FT_Stream_ReadShort( FT_Stream stream, - FT_Error* error ); - - /* read a 24-bit big-endian integer from a stream */ - FT_BASE( FT_Long ) - FT_Stream_ReadOffset( FT_Stream stream, - FT_Error* error ); - - /* read a 32-bit big-endian integer from a stream */ - FT_BASE( FT_Long ) - FT_Stream_ReadLong( FT_Stream stream, - FT_Error* error ); - - /* read a 16-bit little-endian integer from a stream */ - FT_BASE( FT_Short ) - FT_Stream_ReadShortLE( FT_Stream stream, - FT_Error* error ); - - /* read a 32-bit little-endian integer from a stream */ - FT_BASE( FT_Long ) - FT_Stream_ReadLongLE( FT_Stream stream, - FT_Error* error ); - - /* Read a structure from a stream. The structure must be described */ - /* by an array of FT_Frame_Field records. */ - FT_BASE( FT_Error ) - FT_Stream_ReadFields( FT_Stream stream, - const FT_Frame_Field* fields, - void* structure ); - - -#define FT_STREAM_POS() \ - FT_Stream_Pos( stream ) - -#define FT_STREAM_SEEK( position ) \ - FT_SET_ERROR( FT_Stream_Seek( stream, position ) ) - -#define FT_STREAM_SKIP( distance ) \ - FT_SET_ERROR( FT_Stream_Skip( stream, distance ) ) - -#define FT_STREAM_READ( buffer, count ) \ - FT_SET_ERROR( FT_Stream_Read( stream, \ - (FT_Byte*)buffer, \ - count ) ) - -#define FT_STREAM_READ_AT( position, buffer, count ) \ - FT_SET_ERROR( FT_Stream_ReadAt( stream, \ - position, \ - (FT_Byte*)buffer, \ - count ) ) - -#define FT_STREAM_READ_FIELDS( fields, object ) \ - FT_SET_ERROR( FT_Stream_ReadFields( stream, fields, object ) ) - - -#define FT_FRAME_ENTER( size ) \ - FT_SET_ERROR( FT_Stream_EnterFrame( stream, size ) ) - -#define FT_FRAME_EXIT() \ - FT_Stream_ExitFrame( stream ) - -#define FT_FRAME_EXTRACT( size, bytes ) \ - FT_SET_ERROR( FT_Stream_ExtractFrame( stream, size, \ - (FT_Byte**)&(bytes) ) ) - -#define FT_FRAME_RELEASE( bytes ) \ - FT_Stream_ReleaseFrame( stream, (FT_Byte**)&(bytes) ) - - -FT_END_HEADER - -#endif /* __FTSTREAM_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/fttrace.h b/nx-X11/extras/freetype2/include/freetype/internal/fttrace.h deleted file mode 100644 index a9a15a286..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/fttrace.h +++ /dev/null @@ -1,108 +0,0 @@ -/***************************************************************************/ -/* */ -/* fttrace.h */ -/* */ -/* Tracing handling (specification only). */ -/* */ -/* Copyright 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /* definitions of trace levels for FreeType 2 */ - - /* the first level must always be `trace_any' */ -FT_TRACE_DEF( any ) - - /* base components */ -FT_TRACE_DEF( calc ) /* calculations (ftcalc.c) */ -FT_TRACE_DEF( memory ) /* memory manager (ftobjs.c) */ -FT_TRACE_DEF( stream ) /* stream manager (ftstream.c) */ -FT_TRACE_DEF( io ) /* i/o interface (ftsystem.c) */ -FT_TRACE_DEF( list ) /* list management (ftlist.c) */ -FT_TRACE_DEF( init ) /* initialization (ftinit.c) */ -FT_TRACE_DEF( objs ) /* base objects (ftobjs.c) */ -FT_TRACE_DEF( outline ) /* outline management (ftoutln.c) */ -FT_TRACE_DEF( glyph ) /* glyph management (ftglyph.c) */ - -FT_TRACE_DEF( raster ) /* monochrome rasterizer (ftraster.c) */ -FT_TRACE_DEF( smooth ) /* anti-aliasing raster (ftgrays.c) */ -FT_TRACE_DEF( mm ) /* MM interface (ftmm.c) */ -FT_TRACE_DEF( raccess ) /* resource fork accessor (ftrfork.c) */ - -/* Cache sub-system */ -FT_TRACE_DEF( cache ) /* cache sub-system (ftcache.c, etc.) */ - -/* SFNT driver components */ -FT_TRACE_DEF( sfobjs ) /* SFNT object handler (sfobjs.c) */ -FT_TRACE_DEF( ttcmap ) /* charmap handler (ttcmap.c) */ -FT_TRACE_DEF( ttload ) /* basic TrueType tables (ttload.c) */ -FT_TRACE_DEF( ttpost ) /* PS table processing (ttpost.c) */ -FT_TRACE_DEF( ttsbit ) /* TrueType sbit handling (ttsbit.c) */ - -/* TrueType driver components */ -FT_TRACE_DEF( ttdriver ) /* TT font driver (ttdriver.c) */ -FT_TRACE_DEF( ttgload ) /* TT glyph loader (ttgload.c) */ -FT_TRACE_DEF( ttinterp ) /* bytecode interpreter (ttinterp.c) */ -FT_TRACE_DEF( ttobjs ) /* TT objects manager (ttobjs.c) */ -FT_TRACE_DEF( ttpload ) /* TT data/program loader (ttpload.c) */ -FT_TRACE_DEF( ttgxvar ) /* TrueType GX var handler (ttgxvar.c) */ - -/* Type 1 driver components */ -FT_TRACE_DEF( t1driver ) -FT_TRACE_DEF( t1gload ) -FT_TRACE_DEF( t1hint ) -FT_TRACE_DEF( t1load ) -FT_TRACE_DEF( t1objs ) -FT_TRACE_DEF( t1parse ) - -/* PostScript helper module `psaux' */ -FT_TRACE_DEF( t1decode ) -FT_TRACE_DEF( psobjs ) - -/* PostScript hinting module `pshinter' */ -FT_TRACE_DEF( pshrec ) -FT_TRACE_DEF( pshalgo1 ) -FT_TRACE_DEF( pshalgo2 ) - -/* Type 2 driver components */ -FT_TRACE_DEF( cffdriver ) -FT_TRACE_DEF( cffgload ) -FT_TRACE_DEF( cffload ) -FT_TRACE_DEF( cffobjs ) -FT_TRACE_DEF( cffparse ) - -/* Type 42 driver component */ -FT_TRACE_DEF( t42 ) - -/* CID driver components */ -FT_TRACE_DEF( cidafm ) -FT_TRACE_DEF( ciddriver ) -FT_TRACE_DEF( cidgload ) -FT_TRACE_DEF( cidload ) -FT_TRACE_DEF( cidobjs ) -FT_TRACE_DEF( cidparse ) - -/* Windows fonts component */ -FT_TRACE_DEF( winfnt ) - -/* PCF fonts components */ -FT_TRACE_DEF( pcfdriver ) -FT_TRACE_DEF( pcfread ) - -/* BDF fonts component */ -FT_TRACE_DEF( bdfdriver ) -FT_TRACE_DEF( bdflib ) - -/* PFR fonts component */ -FT_TRACE_DEF( pfr ) - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/internal.h b/nx-X11/extras/freetype2/include/freetype/internal/internal.h deleted file mode 100644 index 1e5ac44d5..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/internal.h +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************/ -/* */ -/* internal.h */ -/* */ -/* Internal header files (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is automatically included by `ft2build.h'. */ - /* Do not include it manually! */ - /* */ - /*************************************************************************/ - - -#define FT_INTERNAL_OBJECTS_H <freetype/internal/ftobjs.h> -#define FT_INTERNAL_STREAM_H <freetype/internal/ftstream.h> -#define FT_INTERNAL_MEMORY_H <freetype/internal/ftmemory.h> -#define FT_INTERNAL_DEBUG_H <freetype/internal/ftdebug.h> -#define FT_INTERNAL_CALC_H <freetype/internal/ftcalc.h> -#define FT_INTERNAL_DRIVER_H <freetype/internal/ftdriver.h> -#define FT_INTERNAL_TRACE_H <freetype/internal/fttrace.h> -#define FT_INTERNAL_GLYPH_LOADER_H <freetype/internal/ftgloadr.h> -#define FT_INTERNAL_SFNT_H <freetype/internal/sfnt.h> -#define FT_INTERNAL_SERVICE_H <freetype/internal/ftserv.h> -#define FT_INTERNAL_RFORK_H <freetype/internal/ftrfork.h> - -#define FT_INTERNAL_TRUETYPE_TYPES_H <freetype/internal/tttypes.h> -#define FT_INTERNAL_TYPE1_TYPES_H <freetype/internal/t1types.h> - -#define FT_INTERNAL_POSTSCRIPT_AUX_H <freetype/internal/psaux.h> -#define FT_INTERNAL_POSTSCRIPT_HINTS_H <freetype/internal/pshints.h> -#define FT_INTERNAL_POSTSCRIPT_GLOBALS_H <freetype/internal/psglobal.h> - -#define FT_INTERNAL_AUTOHINT_H <freetype/internal/autohint.h> - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/pcftypes.h b/nx-X11/extras/freetype2/include/freetype/internal/pcftypes.h deleted file mode 100644 index 382796ffb..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/pcftypes.h +++ /dev/null @@ -1,56 +0,0 @@ -/* pcftypes.h - - FreeType font driver for pcf fonts - - Copyright (C) 2000, 2001, 2002 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#ifndef __PCFTYPES_H__ -#define __PCFTYPES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - - -FT_BEGIN_HEADER - - - typedef struct PCF_Public_FaceRec_ - { - FT_FaceRec root; - FT_StreamRec gzip_stream; - FT_Stream gzip_source; - - char* charset_encoding; - char* charset_registry; - - } PCF_Public_FaceRec, *PCF_Public_Face; - - -FT_END_HEADER - -#endif /* __PCFTYPES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/psaux.h b/nx-X11/extras/freetype2/include/freetype/internal/psaux.h deleted file mode 100644 index cf1abf4c9..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/psaux.h +++ /dev/null @@ -1,741 +0,0 @@ -/***************************************************************************/ -/* */ -/* psaux.h */ -/* */ -/* Auxiliary functions and data structures related to PostScript fonts */ -/* (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PSAUX_H__ -#define __PSAUX_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1_TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - typedef struct PS_TableRec_* PS_Table; - typedef const struct PS_Table_FuncsRec_* PS_Table_Funcs; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_Table_FuncsRec */ - /* */ - /* <Description> */ - /* A set of function pointers to manage PS_Table objects. */ - /* */ - /* <Fields> */ - /* table_init :: Used to initialize a table. */ - /* */ - /* table_done :: Finalizes resp. destroy a given table. */ - /* */ - /* table_add :: Adds a new object to a table. */ - /* */ - /* table_release :: Releases table data, then finalizes it. */ - /* */ - typedef struct PS_Table_FuncsRec_ - { - FT_Error - (*init)( PS_Table table, - FT_Int count, - FT_Memory memory ); - - void - (*done)( PS_Table table ); - - FT_Error - (*add)( PS_Table table, - FT_Int idx, - void* object, - FT_PtrDist length ); - - void - (*release)( PS_Table table ); - - } PS_Table_FuncsRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_TableRec */ - /* */ - /* <Description> */ - /* A PS_Table is a simple object used to store an array of objects in */ - /* a single memory block. */ - /* */ - /* <Fields> */ - /* block :: The address in memory of the growheap's block. This */ - /* can change between two object adds, due to */ - /* reallocation. */ - /* */ - /* cursor :: The current top of the grow heap within its block. */ - /* */ - /* capacity :: The current size of the heap block. Increments by */ - /* 1kByte chunks. */ - /* */ - /* max_elems :: The maximum number of elements in table. */ - /* */ - /* num_elems :: The current number of elements in table. */ - /* */ - /* elements :: A table of element addresses within the block. */ - /* */ - /* lengths :: A table of element sizes within the block. */ - /* */ - /* memory :: The object used for memory operations */ - /* (alloc/realloc). */ - /* */ - /* funcs :: A table of method pointers for this object. */ - /* */ - typedef struct PS_TableRec_ - { - FT_Byte* block; /* current memory block */ - FT_Offset cursor; /* current cursor in memory block */ - FT_Offset capacity; /* current size of memory block */ - FT_Long init; - - FT_Int max_elems; - FT_Int num_elems; - FT_Byte** elements; /* addresses of table elements */ - FT_PtrDist* lengths; /* lengths of table elements */ - - FT_Memory memory; - PS_Table_FuncsRec funcs; - - } PS_TableRec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1 FIELDS & TOKENS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - typedef struct PS_ParserRec_* PS_Parser; - - typedef struct T1_TokenRec_* T1_Token; - - typedef struct T1_FieldRec_* T1_Field; - - - /* simple enumeration type used to identify token types */ - typedef enum T1_TokenType_ - { - T1_TOKEN_TYPE_NONE = 0, - T1_TOKEN_TYPE_ANY, - T1_TOKEN_TYPE_STRING, - T1_TOKEN_TYPE_ARRAY, - - /* do not remove */ - T1_TOKEN_TYPE_MAX - - } T1_TokenType; - - - /* a simple structure used to identify tokens */ - typedef struct T1_TokenRec_ - { - FT_Byte* start; /* first character of token in input stream */ - FT_Byte* limit; /* first character after the token */ - T1_TokenType type; /* type of token */ - - } T1_TokenRec; - - - /* enumeration type used to identify object fields */ - typedef enum T1_FieldType_ - { - T1_FIELD_TYPE_NONE = 0, - T1_FIELD_TYPE_BOOL, - T1_FIELD_TYPE_INTEGER, - T1_FIELD_TYPE_FIXED, - T1_FIELD_TYPE_FIXED_1000, - T1_FIELD_TYPE_STRING, - T1_FIELD_TYPE_KEY, - T1_FIELD_TYPE_BBOX, - T1_FIELD_TYPE_INTEGER_ARRAY, - T1_FIELD_TYPE_FIXED_ARRAY, - T1_FIELD_TYPE_CALLBACK, - - /* do not remove */ - T1_FIELD_TYPE_MAX - - } T1_FieldType; - - - typedef enum T1_FieldLocation_ - { - T1_FIELD_LOCATION_CID_INFO, - T1_FIELD_LOCATION_FONT_DICT, - T1_FIELD_LOCATION_FONT_INFO, - T1_FIELD_LOCATION_PRIVATE, - T1_FIELD_LOCATION_BBOX, - - /* do not remove */ - T1_FIELD_LOCATION_MAX - - } T1_FieldLocation; - - - typedef void - (*T1_Field_ParseFunc)( FT_Face face, - FT_Pointer parser ); - - - /* structure type used to model object fields */ - typedef struct T1_FieldRec_ - { - const char* ident; /* field identifier */ - T1_FieldLocation location; - T1_FieldType type; /* type of field */ - T1_Field_ParseFunc reader; - FT_UInt offset; /* offset of field in object */ - FT_Byte size; /* size of field in bytes */ - FT_UInt array_max; /* maximal number of elements for */ - /* array */ - FT_UInt count_offset; /* offset of element count for */ - /* arrays */ - } T1_FieldRec; - - -#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname ) \ - { \ - _ident, T1CODE, _type, \ - 0, \ - FT_FIELD_OFFSET( _fname ), \ - FT_FIELD_SIZE( _fname ), \ - 0, 0 \ - }, - -#define T1_NEW_CALLBACK_FIELD( _ident, _reader ) \ - { \ - _ident, T1CODE, T1_FIELD_TYPE_CALLBACK, \ - (T1_Field_ParseFunc)_reader, \ - 0, 0, \ - 0, 0 \ - }, - -#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max ) \ - { \ - _ident, T1CODE, _type, \ - 0, \ - FT_FIELD_OFFSET( _fname ), \ - FT_FIELD_SIZE_DELTA( _fname ), \ - _max, \ - FT_FIELD_OFFSET( num_ ## _fname ) \ - }, - -#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max ) \ - { \ - _ident, T1CODE, _type, \ - 0, \ - FT_FIELD_OFFSET( _fname ), \ - FT_FIELD_SIZE_DELTA( _fname ), \ - _max, 0 \ - }, - - -#define T1_FIELD_BOOL( _ident, _fname ) \ - T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BOOL, _fname ) - -#define T1_FIELD_NUM( _ident, _fname ) \ - T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER, _fname ) - -#define T1_FIELD_FIXED( _ident, _fname ) \ - T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED, _fname ) - -#define T1_FIELD_FIXED_1000( _ident, _fname ) \ - T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_1000, _fname ) - -#define T1_FIELD_STRING( _ident, _fname ) \ - T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_STRING, _fname ) - -#define T1_FIELD_KEY( _ident, _fname ) \ - T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_KEY, _fname ) - -#define T1_FIELD_BBOX( _ident, _fname ) \ - T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BBOX, _fname ) - - -#define T1_FIELD_NUM_TABLE( _ident, _fname, _fmax ) \ - T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ - _fname, _fmax ) - -#define T1_FIELD_FIXED_TABLE( _ident, _fname, _fmax ) \ - T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ - _fname, _fmax ) - -#define T1_FIELD_NUM_TABLE2( _ident, _fname, _fmax ) \ - T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ - _fname, _fmax ) - -#define T1_FIELD_FIXED_TABLE2( _ident, _fname, _fmax ) \ - T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ - _fname, _fmax ) - -#define T1_FIELD_CALLBACK( _ident, _name ) \ - T1_NEW_CALLBACK_FIELD( _ident, _name ) - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1 PARSER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - typedef const struct PS_Parser_FuncsRec_* PS_Parser_Funcs; - - typedef struct PS_Parser_FuncsRec_ - { - void - (*init)( PS_Parser parser, - FT_Byte* base, - FT_Byte* limit, - FT_Memory memory ); - - void - (*done)( PS_Parser parser ); - - void - (*skip_spaces)( PS_Parser parser ); - void - (*skip_PS_token)( PS_Parser parser ); - - FT_Long - (*to_int)( PS_Parser parser ); - FT_Fixed - (*to_fixed)( PS_Parser parser, - FT_Int power_ten ); - - FT_Error - (*to_bytes)( PS_Parser parser, - FT_Byte* bytes, - FT_Long max_bytes, - FT_Long* pnum_bytes, - FT_Bool delimiters ); - - FT_Int - (*to_coord_array)( PS_Parser parser, - FT_Int max_coords, - FT_Short* coords ); - FT_Int - (*to_fixed_array)( PS_Parser parser, - FT_Int max_values, - FT_Fixed* values, - FT_Int power_ten ); - - void - (*to_token)( PS_Parser parser, - T1_Token token ); - void - (*to_token_array)( PS_Parser parser, - T1_Token tokens, - FT_UInt max_tokens, - FT_Int* pnum_tokens ); - - FT_Error - (*load_field)( PS_Parser parser, - const T1_Field field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ); - - FT_Error - (*load_field_table)( PS_Parser parser, - const T1_Field field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ); - - } PS_Parser_FuncsRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_ParserRec */ - /* */ - /* <Description> */ - /* A PS_Parser is an object used to parse a Type 1 font very quickly. */ - /* */ - /* <Fields> */ - /* cursor :: The current position in the text. */ - /* */ - /* base :: Start of the processed text. */ - /* */ - /* limit :: End of the processed text. */ - /* */ - /* error :: The last error returned. */ - /* */ - /* memory :: The object used for memory operations (alloc/realloc). */ - /* */ - /* funcs :: A table of functions for the parser. */ - /* */ - typedef struct PS_ParserRec_ - { - FT_Byte* cursor; - FT_Byte* base; - FT_Byte* limit; - FT_Error error; - FT_Memory memory; - - PS_Parser_FuncsRec funcs; - - } PS_ParserRec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1 BUILDER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - typedef struct T1_BuilderRec_* T1_Builder; - - - typedef FT_Error - (*T1_Builder_Check_Points_Func)( T1_Builder builder, - FT_Int count ); - - typedef void - (*T1_Builder_Add_Point_Func)( T1_Builder builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ); - - typedef FT_Error - (*T1_Builder_Add_Point1_Func)( T1_Builder builder, - FT_Pos x, - FT_Pos y ); - - typedef FT_Error - (*T1_Builder_Add_Contour_Func)( T1_Builder builder ); - - typedef FT_Error - (*T1_Builder_Start_Point_Func)( T1_Builder builder, - FT_Pos x, - FT_Pos y ); - - typedef void - (*T1_Builder_Close_Contour_Func)( T1_Builder builder ); - - - typedef const struct T1_Builder_FuncsRec_* T1_Builder_Funcs; - - typedef struct T1_Builder_FuncsRec_ - { - void - (*init)( T1_Builder builder, - FT_Face face, - FT_Size size, - FT_GlyphSlot slot, - FT_Bool hinting ); - - void - (*done)( T1_Builder builder ); - - T1_Builder_Check_Points_Func check_points; - T1_Builder_Add_Point_Func add_point; - T1_Builder_Add_Point1_Func add_point1; - T1_Builder_Add_Contour_Func add_contour; - T1_Builder_Start_Point_Func start_point; - T1_Builder_Close_Contour_Func close_contour; - - } T1_Builder_FuncsRec; - - - /* an enumeration type to handle charstring parsing states */ - typedef enum T1_ParseState_ - { - T1_Parse_Start, - T1_Parse_Have_Width, - T1_Parse_Have_Moveto, - T1_Parse_Have_Path - - } T1_ParseState; - - - /*************************************************************************/ - /* */ - /* <Structure> */ - /* T1_BuilderRec */ - /* */ - /* <Description> */ - /* A structure used during glyph loading to store its outline. */ - /* */ - /* <Fields> */ - /* memory :: The current memory object. */ - /* */ - /* face :: The current face object. */ - /* */ - /* glyph :: The current glyph slot. */ - /* */ - /* loader :: XXX */ - /* */ - /* base :: The base glyph outline. */ - /* */ - /* current :: The current glyph outline. */ - /* */ - /* max_points :: maximum points in builder outline */ - /* */ - /* max_contours :: Maximal number of contours in builder outline. */ - /* */ - /* last :: The last point position. */ - /* */ - /* scale_x :: The horizontal scale (FUnits to sub-pixels). */ - /* */ - /* scale_y :: The vertical scale (FUnits to sub-pixels). */ - /* */ - /* pos_x :: The horizontal translation (if composite glyph). */ - /* */ - /* pos_y :: The vertical translation (if composite glyph). */ - /* */ - /* left_bearing :: The left side bearing point. */ - /* */ - /* advance :: The horizontal advance vector. */ - /* */ - /* bbox :: Unused. */ - /* */ - /* parse_state :: An enumeration which controls the charstring */ - /* parsing state. */ - /* */ - /* load_points :: If this flag is not set, no points are loaded. */ - /* */ - /* no_recurse :: Set but not used. */ - /* */ - /* metrics_only :: A boolean indicating that we only want to compute */ - /* the metrics of a given glyph, not load all of its */ - /* points. */ - /* */ - /* funcs :: An array of function pointers for the builder. */ - /* */ - typedef struct T1_BuilderRec_ - { - FT_Memory memory; - FT_Face face; - FT_GlyphSlot glyph; - FT_GlyphLoader loader; - FT_Outline* base; - FT_Outline* current; - - FT_Vector last; - - FT_Fixed scale_x; - FT_Fixed scale_y; - - FT_Pos pos_x; - FT_Pos pos_y; - - FT_Vector left_bearing; - FT_Vector advance; - - FT_BBox bbox; /* bounding box */ - T1_ParseState parse_state; - FT_Bool load_points; - FT_Bool no_recurse; - FT_Bool shift; - - FT_Bool metrics_only; - - void* hints_funcs; /* hinter-specific */ - void* hints_globals; /* hinter-specific */ - - T1_Builder_FuncsRec funcs; - - } T1_BuilderRec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1 DECODER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - -#if 0 - - /*************************************************************************/ - /* */ - /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ - /* calls during glyph loading. */ - /* */ -#define T1_MAX_SUBRS_CALLS 8 - - - /*************************************************************************/ - /* */ - /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ - /* minimum of 16 is required. */ - /* */ -#define T1_MAX_CHARSTRINGS_OPERANDS 32 - -#endif /* 0 */ - - - typedef struct T1_Decoder_ZoneRec_ - { - FT_Byte* cursor; - FT_Byte* base; - FT_Byte* limit; - - } T1_Decoder_ZoneRec, *T1_Decoder_Zone; - - - typedef struct T1_DecoderRec_* T1_Decoder; - typedef const struct T1_Decoder_FuncsRec_* T1_Decoder_Funcs; - - - typedef FT_Error - (*T1_Decoder_Callback)( T1_Decoder decoder, - FT_UInt glyph_index ); - - - typedef struct T1_Decoder_FuncsRec_ - { - FT_Error - (*init)( T1_Decoder decoder, - FT_Face face, - FT_Size size, - FT_GlyphSlot slot, - FT_Byte** glyph_names, - PS_Blend blend, - FT_Bool hinting, - FT_Render_Mode hint_mode, - T1_Decoder_Callback callback ); - - void - (*done)( T1_Decoder decoder ); - - FT_Error - (*parse_charstrings)( T1_Decoder decoder, - FT_Byte* base, - FT_UInt len ); - - } T1_Decoder_FuncsRec; - - - typedef struct T1_DecoderRec_ - { - T1_BuilderRec builder; - - FT_Long stack[T1_MAX_CHARSTRINGS_OPERANDS]; - FT_Long* top; - - T1_Decoder_ZoneRec zones[T1_MAX_SUBRS_CALLS + 1]; - T1_Decoder_Zone zone; - - FT_Service_PsCMaps psnames; /* for seac */ - FT_UInt num_glyphs; - FT_Byte** glyph_names; - - FT_Int lenIV; /* internal for sub routine calls */ - FT_UInt num_subrs; - FT_Byte** subrs; - FT_PtrDist* subrs_len; /* array of subrs length (optional) */ - - FT_Matrix font_matrix; - FT_Vector font_offset; - - FT_Int flex_state; - FT_Int num_flex_vectors; - FT_Vector flex_vectors[7]; - - PS_Blend blend; /* for multiple master support */ - - FT_Render_Mode hint_mode; - - T1_Decoder_Callback parse_callback; - T1_Decoder_FuncsRec funcs; - - } T1_DecoderRec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE1 CHARMAPS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - typedef const struct T1_CMap_ClassesRec_* T1_CMap_Classes; - - typedef struct T1_CMap_ClassesRec_ - { - FT_CMap_Class standard; - FT_CMap_Class expert; - FT_CMap_Class custom; - FT_CMap_Class unicode; - - } T1_CMap_ClassesRec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PSAux Module Interface *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - typedef struct PSAux_ServiceRec_ - { - /* don't use `PS_Table_Funcs' and friends to avoid compiler warnings */ - const PS_Table_FuncsRec* ps_table_funcs; - const PS_Parser_FuncsRec* ps_parser_funcs; - const T1_Builder_FuncsRec* t1_builder_funcs; - const T1_Decoder_FuncsRec* t1_decoder_funcs; - - void - (*t1_decrypt)( FT_Byte* buffer, - FT_Offset length, - FT_UShort seed ); - - T1_CMap_Classes t1_cmap_classes; - - } PSAux_ServiceRec, *PSAux_Service; - - /* backwards-compatible type definition */ - typedef PSAux_ServiceRec PSAux_Interface; - -FT_END_HEADER - -#endif /* __PSAUX_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/pshints.h b/nx-X11/extras/freetype2/include/freetype/internal/pshints.h deleted file mode 100644 index cd48f6cf3..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/pshints.h +++ /dev/null @@ -1,626 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshints.h */ -/* */ -/* Interface to Postscript-specific (Type 1 and Type 2) hints */ -/* recorders (specification only). These are used to support native */ -/* T1/T2 hints in the "type1", "cid" and "cff" font drivers. */ -/* */ -/* Copyright 2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PSHINTS_H__ -#define __PSHINTS_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TYPE1_TABLES_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** INTERNAL REPRESENTATION OF GLOBALS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - typedef struct PSH_GlobalsRec_* PSH_Globals; - - typedef FT_Error - (*PSH_Globals_NewFunc)( FT_Memory memory, - T1_Private* private_dict, - PSH_Globals* aglobals ); - - typedef FT_Error - (*PSH_Globals_SetScaleFunc)( PSH_Globals globals, - FT_Fixed x_scale, - FT_Fixed y_scale, - FT_Fixed x_delta, - FT_Fixed y_delta ); - - typedef void - (*PSH_Globals_DestroyFunc)( PSH_Globals globals ); - - - typedef struct PSH_Globals_FuncsRec_ - { - PSH_Globals_NewFunc create; - PSH_Globals_SetScaleFunc set_scale; - PSH_Globals_DestroyFunc destroy; - - } PSH_Globals_FuncsRec, *PSH_Globals_Funcs; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PUBLIC TYPE 1 HINTS RECORDER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* @type: */ - /* T1_Hints */ - /* */ - /* @description: */ - /* This is a handle to an opaque structure used to record glyph hints */ - /* from a Type 1 character glyph character string. */ - /* */ - /* The methods used to operate on this object are defined by the */ - /* @T1_Hints_FuncsRec structure. Recording glyph hints is normally */ - /* achieved through the following scheme: */ - /* */ - /* - Open a new hint recording session by calling the "open" method. */ - /* This will rewind the recorder and prepare it for new input. */ - /* */ - /* - For each hint found in the glyph charstring, call the */ - /* corresponding method ("stem", "stem3", or "reset"). Note that */ - /* these functions do not return an error code. */ - /* */ - /* - Close the recording session by calling the "close" method. It */ - /* will return an error code if the hints were invalid or something */ - /* strange happened (e.g. memory shortage). */ - /* */ - /* The hints accumulated in the object can later be used by the */ - /* PostScript hinter. */ - /* */ - typedef struct T1_HintsRec_* T1_Hints; - - - /*************************************************************************/ - /* */ - /* @type: */ - /* T1_Hints_Funcs */ - /* */ - /* @description: */ - /* A pointer to the @T1_Hints_FuncsRec structure that defines the */ - /* API of a given @T1_Hints object. */ - /* */ - typedef const struct T1_Hints_FuncsRec_* T1_Hints_Funcs; - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T1_Hints_OpenFunc */ - /* */ - /* @description: */ - /* A method of the @T1_Hints class used to prepare it for a new */ - /* Type 1 hints recording session. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 1 hints recorder. */ - /* */ - /* @note: */ - /* You should always call the @T1_Hints_CloseFunc method in order to */ - /* close an opened recording session. */ - /* */ - typedef void - (*T1_Hints_OpenFunc)( T1_Hints hints ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T1_Hints_SetStemFunc */ - /* */ - /* @description: */ - /* A method of the @T1_Hints class used to record a new horizontal or */ - /* vertical stem. This corresponds to the Type 1 "hstem" and "vstem" */ - /* operators. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 1 hints recorder. */ - /* */ - /* dimension :: 0 for horizontal stems (hstem), 1 for vertical ones */ - /* (vstem). */ - /* */ - /* coords :: Array of 2 integers, used as (position,length) stem */ - /* descriptor. */ - /* */ - /* @note: */ - /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */ - /* horizontal coordinates (x) for vertical stems (dim=1). */ - /* */ - /* "coords[0]" is the absolute stem position (lowest coordinate); */ - /* "coords[1]" is the length. */ - /* */ - /* The length can be negative, in which case it must be either -20 or */ - /* -21. It will be interpreted as a "ghost" stem, according to */ - /* Type 1 specification. */ - /* */ - /* If the length is -21 (corresponding to a bottom ghost stem), then */ - /* the real stem position is "coords[0]+coords[1]". */ - /* */ - typedef void - (*T1_Hints_SetStemFunc)( T1_Hints hints, - FT_UInt dimension, - FT_Long* coords ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T1_Hints_SetStem3Func */ - /* */ - /* @description: */ - /* A method of the @T1_Hints class used to record three */ - /* counter-controlled horizontal or vertical stems at once. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 1 hints recorder. */ - /* */ - /* dimension :: 0 for horizontal stems, 1 for vertical ones. */ - /* */ - /* coords :: An array of 6 integers, holding 3 (position,length) */ - /* pairs for the counter-controlled stems. */ - /* */ - /* @note: */ - /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */ - /* horizontal coordinates (x) for vertical stems (dim=1). */ - /* */ - /* The lengths cannot be negative (ghost stems are never */ - /* counter-controlled). */ - /* */ - typedef void - (*T1_Hints_SetStem3Func)( T1_Hints hints, - FT_UInt dimension, - FT_Long* coords ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T1_Hints_ResetFunc */ - /* */ - /* @description: */ - /* A method of the @T1_Hints class used to reset the stems hints in a */ - /* recording session. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 1 hints recorder. */ - /* */ - /* end_point :: The index of the last point in the input glyph in */ - /* which the previously defined hints apply. */ - /* */ - typedef void - (*T1_Hints_ResetFunc)( T1_Hints hints, - FT_UInt end_point ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T1_Hints_CloseFunc */ - /* */ - /* @description: */ - /* A method of the @T1_Hints class used to close a hint recording */ - /* session. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 1 hints recorder. */ - /* */ - /* end_point :: The index of the last point in the input glyph. */ - /* */ - /* @return: */ - /* FreeType error code. 0 means success. */ - /* */ - /* @note: */ - /* The error code will be set to indicate that an error occured */ - /* during the recording session. */ - /* */ - typedef FT_Error - (*T1_Hints_CloseFunc)( T1_Hints hints, - FT_UInt end_point ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T1_Hints_ApplyFunc */ - /* */ - /* @description: */ - /* A method of the @T1_Hints class used to apply hints to the */ - /* corresponding glyph outline. Must be called once all hints have */ - /* been recorded. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 1 hints recorder. */ - /* */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* globals :: The hinter globals for this font. */ - /* */ - /* hint_mode :: Hinting information. */ - /* */ - /* @return: */ - /* FreeType error code. 0 means success. */ - /* */ - /* @note: */ - /* On input, all points within the outline are in font coordinates. */ - /* On output, they are in 1/64th of pixels. */ - /* */ - /* The scaling transformation is taken from the "globals" object */ - /* which must correspond to the same font as the glyph. */ - /* */ - typedef FT_Error - (*T1_Hints_ApplyFunc)( T1_Hints hints, - FT_Outline* outline, - PSH_Globals globals, - FT_Render_Mode hint_mode ); - - - /*************************************************************************/ - /* */ - /* @struct: */ - /* T1_Hints_FuncsRec */ - /* */ - /* @description: */ - /* The structure used to provide the API to @T1_Hints objects. */ - /* */ - /* @fields: */ - /* hints :: A handle to the T1 Hints recorder. */ - /* */ - /* open :: The function to open a recording session. */ - /* */ - /* close :: The function to close a recording session. */ - /* */ - /* stem :: The function to set a simple stem. */ - /* */ - /* stem3 :: The function to set counter-controlled stems. */ - /* */ - /* reset :: The function to reset stem hints. */ - /* */ - /* apply :: The function to apply the hints to the corresponding */ - /* glyph outline. */ - /* */ - typedef struct T1_Hints_FuncsRec_ - { - T1_Hints hints; - T1_Hints_OpenFunc open; - T1_Hints_CloseFunc close; - T1_Hints_SetStemFunc stem; - T1_Hints_SetStem3Func stem3; - T1_Hints_ResetFunc reset; - T1_Hints_ApplyFunc apply; - - } T1_Hints_FuncsRec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PUBLIC TYPE 2 HINTS RECORDER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* @type: */ - /* T2_Hints */ - /* */ - /* @description: */ - /* This is a handle to an opaque structure used to record glyph hints */ - /* from a Type 2 character glyph character string. */ - /* */ - /* The methods used to operate on this object are defined by the */ - /* @T2_Hints_FuncsRec structure. Recording glyph hints is normally */ - /* achieved through the following scheme: */ - /* */ - /* - Open a new hint recording session by calling the "open" method. */ - /* This will rewind the recorder and prepare it for new input. */ - /* */ - /* - For each hint found in the glyph charstring, call the */ - /* corresponding method ("stems", "hintmask", "counters"). Note */ - /* that these functions do not return an error code. */ - /* */ - /* - Close the recording session by calling the "close" method. It */ - /* will return an error code if the hints were invalid or something */ - /* strange happened (e.g. memory shortage). */ - /* */ - /* The hints accumulated in the object can later be used by the */ - /* Postscript hinter. */ - /* */ - typedef struct T2_HintsRec_* T2_Hints; - - - /*************************************************************************/ - /* */ - /* @type: */ - /* T2_Hints_Funcs */ - /* */ - /* @description: */ - /* A pointer to the @T2_Hints_FuncsRec structure that defines the API */ - /* of a given @T2_Hints object. */ - /* */ - typedef const struct T2_Hints_FuncsRec_* T2_Hints_Funcs; - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T2_Hints_OpenFunc */ - /* */ - /* @description: */ - /* A method of the @T2_Hints class used to prepare it for a new */ - /* Type 2 hints recording session. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 2 hints recorder. */ - /* */ - /* @note: */ - /* You should always call the @T2_Hints_CloseFunc method in order to */ - /* close an opened recording session. */ - /* */ - typedef void - (*T2_Hints_OpenFunc)( T2_Hints hints ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T2_Hints_StemsFunc */ - /* */ - /* @description: */ - /* A method of the @T2_Hints class used to set the table of stems in */ - /* either the vertical or horizontal dimension. Equivalent to the */ - /* "hstem", "vstem", "hstemhm", and "vstemhm" Type 2 operators. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 2 hints recorder. */ - /* */ - /* dimension :: 0 for horizontal stems (hstem), 1 for vertical ones */ - /* (vstem). */ - /* */ - /* count :: The number of stems. */ - /* */ - /* coords :: An array of "count" (position,length) pairs. */ - /* */ - /* @note: */ - /* Use vertical coordinates (y) for horizontal stems (dim=0). Use */ - /* horizontal coordinates (x) for vertical stems (dim=1). */ - /* */ - /* There are "2*count" elements in the "coords" aray. Each even */ - /* element is an absolute position in font units, each odd element is */ - /* a length in font units. */ - /* */ - /* A length can be negative, in which case it must be either -20 or */ - /* -21. It will be interpreted as a "ghost" stem, according to the */ - /* Type 1 specification. */ - /* */ - typedef void - (*T2_Hints_StemsFunc)( T2_Hints hints, - FT_UInt dimension, - FT_UInt count, - FT_Fixed* coordinates ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T2_Hints_MaskFunc */ - /* */ - /* @description: */ - /* A method of the @T2_Hints class used to set a given hintmask */ - /* (this corresponds to the "hintmask" Type 2 operator). */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 2 hints recorder. */ - /* */ - /* end_point :: The glyph index of the last point to which the */ - /* previously defined/activated hints apply. */ - /* */ - /* bit_count :: The number of bits in the hint mask. */ - /* */ - /* bytes :: An array of bytes modelling the hint mask. */ - /* */ - /* @note: */ - /* If the hintmask starts the charstring (before any glyph point */ - /* definition), the value of "end_point" should be 0. */ - /* */ - /* "bit_count" is the number of meaningful bits in the "bytes" array; */ - /* it must be equal to the total number of hints defined so far */ - /* (i.e. horizontal+verticals). */ - /* */ - /* The "bytes" array can come directly from the Type 2 charstring and */ - /* respects the same format. */ - /* */ - typedef void - (*T2_Hints_MaskFunc)( T2_Hints hints, - FT_UInt end_point, - FT_UInt bit_count, - const FT_Byte* bytes ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T2_Hints_CounterFunc */ - /* */ - /* @description: */ - /* A method of the @T2_Hints class used to set a given counter mask */ - /* (this corresponds to the "hintmask" Type 2 operator). */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 2 hints recorder. */ - /* */ - /* end_point :: A glyph index of the last point to which the */ - /* previously defined/active hints apply. */ - /* */ - /* bit_count :: The number of bits in the hint mask. */ - /* */ - /* bytes :: An array of bytes modelling the hint mask. */ - /* */ - /* @note: */ - /* If the hintmask starts the charstring (before any glyph point */ - /* definition), the value of "end_point" should be 0. */ - /* */ - /* "bit_count" is the number of meaningful bits in the "bytes" array; */ - /* it must be equal to the total number of hints defined so far */ - /* (i.e. horizontal+verticals). */ - /* */ - /* The "bytes" array can come directly from the Type 2 charstring and */ - /* respects the same format. */ - /* */ - typedef void - (*T2_Hints_CounterFunc)( T2_Hints hints, - FT_UInt bit_count, - const FT_Byte* bytes ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T2_Hints_CloseFunc */ - /* */ - /* @description: */ - /* A method of the @T2_Hints class used to close a hint recording */ - /* session. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 2 hints recorder. */ - /* */ - /* end_point :: The index of the last point in the input glyph. */ - /* */ - /* @return: */ - /* FreeType error code. 0 means success. */ - /* */ - /* @note: */ - /* The error code will be set to indicate that an error occured */ - /* during the recording session. */ - /* */ - typedef FT_Error - (*T2_Hints_CloseFunc)( T2_Hints hints, - FT_UInt end_point ); - - - /*************************************************************************/ - /* */ - /* @functype: */ - /* T2_Hints_ApplyFunc */ - /* */ - /* @description: */ - /* A method of the @T2_Hints class used to apply hints to the */ - /* corresponding glyph outline. Must be called after the "close" */ - /* method. */ - /* */ - /* @input: */ - /* hints :: A handle to the Type 2 hints recorder. */ - /* */ - /* outline :: A pointer to the target outline descriptor. */ - /* */ - /* globals :: The hinter globals for this font. */ - /* */ - /* hint_mode :: Hinting information. */ - /* */ - /* @return: */ - /* FreeType error code. 0 means success. */ - /* */ - /* @note: */ - /* On input, all points within the outline are in font coordinates. */ - /* On output, they are in 1/64th of pixels. */ - /* */ - /* The scaling transformation is taken from the "globals" object */ - /* which must correspond to the same font than the glyph. */ - /* */ - typedef FT_Error - (*T2_Hints_ApplyFunc)( T2_Hints hints, - FT_Outline* outline, - PSH_Globals globals, - FT_Render_Mode hint_mode ); - - - /*************************************************************************/ - /* */ - /* @struct: */ - /* T2_Hints_FuncsRec */ - /* */ - /* @description: */ - /* The structure used to provide the API to @T2_Hints objects. */ - /* */ - /* @fields: */ - /* hints :: A handle to the T2 hints recorder object. */ - /* */ - /* open :: The function to open a recording session. */ - /* */ - /* close :: The function to close a recording session. */ - /* */ - /* stems :: The function to set the dimension's stems table. */ - /* */ - /* hintmask :: The function to set hint masks. */ - /* */ - /* counter :: The function to set counter masks. */ - /* */ - /* apply :: The function to apply the hints on the corresponding */ - /* glyph outline. */ - /* */ - typedef struct T2_Hints_FuncsRec_ - { - T2_Hints hints; - T2_Hints_OpenFunc open; - T2_Hints_CloseFunc close; - T2_Hints_StemsFunc stems; - T2_Hints_MaskFunc hintmask; - T2_Hints_CounterFunc counter; - T2_Hints_ApplyFunc apply; - - } T2_Hints_FuncsRec; - - - /* */ - - - typedef struct PSHinter_Interface_ - { - PSH_Globals_Funcs (*get_globals_funcs)( FT_Module module ); - T1_Hints_Funcs (*get_t1_funcs) ( FT_Module module ); - T2_Hints_Funcs (*get_t2_funcs) ( FT_Module module ); - - } PSHinter_Interface; - - typedef PSHinter_Interface* PSHinter_Service; - - -FT_END_HEADER - -#endif /* __PSHINTS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svbdf.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svbdf.h deleted file mode 100644 index 0f7fc6115..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svbdf.h +++ /dev/null @@ -1,57 +0,0 @@ -/***************************************************************************/ -/* */ -/* svbdf.h */ -/* */ -/* The FreeType BDF services (specification). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVBDF_H__ -#define __SVBDF_H__ - -#include FT_BDF_H -#include FT_INTERNAL_SERVICE_H - - -FT_BEGIN_HEADER - - -#define FT_SERVICE_ID_BDF "bdf" - - typedef FT_Error - (*FT_BDF_GetCharsetIdFunc)( FT_Face face, - const char* *acharset_encoding, - const char* *acharset_registry ); - - typedef FT_Error - (*FT_BDF_GetPropertyFunc)( FT_Face face, - const char* prop_name, - BDF_PropertyRec *aproperty ); - - - FT_DEFINE_SERVICE( BDF ) - { - FT_BDF_GetCharsetIdFunc get_charset_id; - FT_BDF_GetPropertyFunc get_property; - }; - - /* */ - - -FT_END_HEADER - - -#endif /* __SVBDF_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svgldict.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svgldict.h deleted file mode 100644 index e5e56b253..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svgldict.h +++ /dev/null @@ -1,60 +0,0 @@ -/***************************************************************************/ -/* */ -/* svgldict.h */ -/* */ -/* The FreeType glyph dictionary services (specification). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVGLDICT_H__ -#define __SVGLDICT_H__ - -#include FT_INTERNAL_SERVICE_H - - -FT_BEGIN_HEADER - - - /* - * A service used to retrieve glyph names, as well as to find the - * index of a given glyph name in a font. - * - */ - -#define FT_SERVICE_ID_GLYPH_DICT "glyph-dict" - - - typedef FT_Error - (*FT_GlyphDict_GetNameFunc)( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ); - - typedef FT_UInt - (*FT_GlyphDict_NameIndexFunc)( FT_Face face, - FT_String* glyph_name ); - - - FT_DEFINE_SERVICE( GlyphDict ) - { - FT_GlyphDict_GetNameFunc get_name; - FT_GlyphDict_NameIndexFunc name_index; /* optional */ - }; - - /* */ - - -FT_END_HEADER - - -#endif /* __SVGLDICT_H__ */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svmm.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svmm.h deleted file mode 100644 index 8a99ec4b1..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svmm.h +++ /dev/null @@ -1,79 +0,0 @@ -/***************************************************************************/ -/* */ -/* svmm.h */ -/* */ -/* The FreeType Multiple Masters and GX var services (specification). */ -/* */ -/* Copyright 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVMM_H__ -#define __SVMM_H__ - -#include FT_INTERNAL_SERVICE_H - - -FT_BEGIN_HEADER - - - /* - * A service used to manage multiple-masters data in a given face. - * - * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H). - * - */ - -#define FT_SERVICE_ID_MULTI_MASTERS "multi-masters" - - - typedef FT_Error - (*FT_Get_MM_Func)( FT_Face face, - FT_Multi_Master* master ); - - typedef FT_Error - (*FT_Get_MM_Var_Func)( FT_Face face, - FT_MM_Var* *master ); - - typedef FT_Error - (*FT_Set_MM_Design_Func)( FT_Face face, - FT_UInt num_coords, - FT_Long* coords ); - - typedef FT_Error - (*FT_Set_Var_Design_Func)( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - typedef FT_Error - (*FT_Set_MM_Blend_Func)( FT_Face face, - FT_UInt num_coords, - FT_Long* coords ); - - - FT_DEFINE_SERVICE( MultiMasters ) - { - FT_Get_MM_Func get_mm; - FT_Set_MM_Design_Func set_mm_design; - FT_Set_MM_Blend_Func set_mm_blend; - FT_Get_MM_Var_Func get_mm_var; - FT_Set_Var_Design_Func set_var_design; - }; - - /* */ - - -FT_END_HEADER - -#endif /* __SVMM_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svpfr.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svpfr.h deleted file mode 100644 index b61050543..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svpfr.h +++ /dev/null @@ -1,65 +0,0 @@ -/***************************************************************************/ -/* */ -/* svpfr.h */ -/* */ -/* Internal PFR service functions (specification). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVPFR_H__ -#define __SVPFR_H__ - -#include FT_INTERNAL_SERVICE_H - - -FT_BEGIN_HEADER - - -#define FT_SERVICE_ID_PFR_METRICS "pfr-metrics" - - - typedef FT_Error - (*FT_PFR_GetMetricsFunc)( FT_Face face, - FT_UInt *aoutline, - FT_UInt *ametrics, - FT_Fixed *ax_scale, - FT_Fixed *ay_scale ); - - typedef FT_Error - (*FT_PFR_GetKerningFunc)( FT_Face face, - FT_UInt left, - FT_UInt right, - FT_Vector *avector ); - - typedef FT_Error - (*FT_PFR_GetAdvanceFunc)( FT_Face face, - FT_UInt gindex, - FT_Pos *aadvance ); - - - FT_DEFINE_SERVICE( PfrMetrics ) - { - FT_PFR_GetMetricsFunc get_metrics; - FT_PFR_GetKerningFunc get_kerning; - FT_PFR_GetAdvanceFunc get_advance; - - }; - - /* */ - -FT_END_HEADER - -#endif /* __SVPFR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svpostnm.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svpostnm.h deleted file mode 100644 index 7f1700adb..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svpostnm.h +++ /dev/null @@ -1,58 +0,0 @@ -/***************************************************************************/ -/* */ -/* svpostnm.h */ -/* */ -/* The FreeType PostScript name services (specification). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVPOSTNM_H__ -#define __SVPOSTNM_H__ - -#include FT_INTERNAL_SERVICE_H - - -FT_BEGIN_HEADER - - /* - * A trivial service used to retrieve the PostScript name of a given - * font when available. The `get_name' field should never be NULL. - * - * The correponding function can return NULL to indicate that the - * PostScript name is not available. - * - * The name is owned by the face and will be destroyed with it. - */ - -#define FT_SERVICE_ID_POSTSCRIPT_FONT_NAME "postscript-font-name" - - - typedef const char* - (*FT_PsName_GetFunc)( FT_Face face ); - - - FT_DEFINE_SERVICE( PsFontName ) - { - FT_PsName_GetFunc get_ps_font_name; - }; - - /* */ - - -FT_END_HEADER - - -#endif /* __SVPOSTNM_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svpscmap.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svpscmap.h deleted file mode 100644 index ade96ef8f..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svpscmap.h +++ /dev/null @@ -1,113 +0,0 @@ -/***************************************************************************/ -/* */ -/* svpscmap.h */ -/* */ -/* The FreeType PostScript charmap service (specification). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVPSCMAP_H__ -#define __SVPSCMAP_H__ - - -FT_BEGIN_HEADER - - -#define FT_SERVICE_ID_POSTSCRIPT_CMAPS "postscript-cmaps" - - - /* - * Adobe glyph name to unicode value - */ - typedef FT_UInt32 - (*PS_Unicode_ValueFunc)( const char* glyph_name ); - - /* - * Unicode value to Adobe glyph name index. 0xFFFF if not found. - */ - typedef FT_UInt - (*PS_Unicode_Index_Func)( FT_UInt num_glyphs, - const char** glyph_names, - FT_ULong unicode ); - - /* - * Macintosh name id to glyph name. NULL if invalid index. - */ - typedef const char* - (*PS_Macintosh_Name_Func)( FT_UInt name_index ); - - /* - * Adobe standard string ID to glyph name. NULL if invalid index. - */ - typedef const char* - (*PS_Adobe_Std_Strings_Func)( FT_UInt string_index ); - - /* - * Simple unicode -> glyph index charmap built from font glyph names - * table. - */ - typedef struct PS_UniMap_ - { - FT_UInt unicode; - FT_UInt glyph_index; - - } PS_UniMap; - - - typedef struct PS_Unicodes_ - { - FT_UInt num_maps; - PS_UniMap* maps; - - } PS_Unicodes; - - - typedef FT_Error - (*PS_Unicodes_InitFunc)( FT_Memory memory, - FT_UInt num_glyphs, - const char** glyph_names, - PS_Unicodes* unicodes ); - - typedef FT_UInt - (*PS_Unicodes_CharIndexFunc)( PS_Unicodes* unicodes, - FT_UInt unicode ); - - typedef FT_ULong - (*PS_Unicodes_CharNextFunc)( PS_Unicodes* unicodes, - FT_ULong unicode ); - - - FT_DEFINE_SERVICE( PsCMaps ) - { - PS_Unicode_ValueFunc unicode_value; - - PS_Unicodes_InitFunc unicodes_init; - PS_Unicodes_CharIndexFunc unicodes_char_index; - PS_Unicodes_CharNextFunc unicodes_char_next; - - PS_Macintosh_Name_Func macintosh_name; - PS_Adobe_Std_Strings_Func adobe_std_strings; - const unsigned short* adobe_std_encoding; - const unsigned short* adobe_expert_encoding; - }; - - /* */ - - -FT_END_HEADER - - -#endif /* __SVPSCMAP_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svpsinfo.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svpsinfo.h deleted file mode 100644 index 73c02cdb7..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svpsinfo.h +++ /dev/null @@ -1,55 +0,0 @@ -/***************************************************************************/ -/* */ -/* svpsinfo.h */ -/* */ -/* The FreeType PostScript info service (specification). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVPSINFO_H__ -#define __SVPSINFO_H__ - -#include FT_INTERNAL_SERVICE_H -#include FT_INTERNAL_TYPE1_TYPES_H - - -FT_BEGIN_HEADER - - -#define FT_SERVICE_ID_POSTSCRIPT_INFO "postscript-info" - - - typedef FT_Error - (*PS_GetFontInfoFunc)( FT_Face face, - PS_FontInfoRec* afont_info ); - - typedef FT_Int - (*PS_HasGlyphNamesFunc)( FT_Face face ); - - - FT_DEFINE_SERVICE( PsInfo ) - { - PS_GetFontInfoFunc ps_get_font_info; - PS_HasGlyphNamesFunc ps_has_glyph_names; - }; - - /* */ - - -FT_END_HEADER - - -#endif /* __SVPSINFO_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svsfnt.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svsfnt.h deleted file mode 100644 index 06a5b1c23..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svsfnt.h +++ /dev/null @@ -1,69 +0,0 @@ -/***************************************************************************/ -/* */ -/* svsfnt.h */ -/* */ -/* The FreeType PostScript name services (specification). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVSFNT_H__ -#define __SVSFNT_H__ - -#include FT_INTERNAL_SERVICE_H -#include FT_TRUETYPE_TABLES_H - - -FT_BEGIN_HEADER - - - /* - * SFNT table loading service. - */ - -#define FT_SERVICE_ID_SFNT_TABLE "sfnt-table" - - - /* - * Used to implement FT_Load_Sfnt_Table(). - */ - typedef FT_Error - (*FT_SFNT_TableLoadFunc)( FT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ); - - /* - * Used to implement FT_Get_Sfnt_Table(). - */ - typedef void* - (*FT_SFNT_TableGetFunc)( FT_Face face, - FT_Sfnt_Tag tag ); - - - FT_DEFINE_SERVICE( SFNT_Table ) - { - FT_SFNT_TableLoadFunc load_table; - FT_SFNT_TableGetFunc get_table; - }; - - /* */ - - -FT_END_HEADER - - -#endif /* __SVSFNT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svttcmap.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svttcmap.h deleted file mode 100644 index f92fcd0e2..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svttcmap.h +++ /dev/null @@ -1,77 +0,0 @@ -/***************************************************************************/ -/* */ -/* svsttcmap.h */ -/* */ -/* The FreeType TrueType/sfnt cmap extra information service. */ -/* */ -/* Copyright 2003 by */ -/* Masatake YAMATO, Redhat K.K. */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -/* Development of this service is support of - Information-technology Promotion Agency, Japan. */ - -#ifndef __SVTTCMAP_H__ -#define __SVTTCMAP_H__ - -#include FT_INTERNAL_SERVICE_H -#include FT_TRUETYPE_TABLES_H - - -FT_BEGIN_HEADER - - -#define FT_SERVICE_ID_TT_CMAP "tt-cmaps" - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_CMapInfo */ - /* */ - /* <Description> */ - /* A structure used to store TrueType/sfnt specific cmap information */ - /* which is not covered by the generic @FT_CharMap structure. This */ - /* structure can be accessed with the @FT_Get_TT_CMap_Info function. */ - /* */ - /* <Fields> */ - /* language :: */ - /* The language ID used in Mac fonts. Definitions of values are in */ - /* freetype/ttnameid.h. */ - /* */ - typedef struct TT_CMapInfo_ - { - FT_ULong language; - - } TT_CMapInfo; - - - typedef FT_Error - (*TT_CMap_Info_GetFunc)( FT_CharMap charmap, - TT_CMapInfo *cmap_info ); - - - FT_DEFINE_SERVICE( TTCMaps ) - { - TT_CMap_Info_GetFunc get_cmap_info; - }; - - /* */ - - -FT_END_HEADER - -#endif /* __SVTTCMAP_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svwinfnt.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svwinfnt.h deleted file mode 100644 index 57f7765d9..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svwinfnt.h +++ /dev/null @@ -1,50 +0,0 @@ -/***************************************************************************/ -/* */ -/* svwinfnt.h */ -/* */ -/* The FreeType Windows FNT/FONT service (specification). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVWINFNT_H__ -#define __SVWINFNT_H__ - -#include FT_INTERNAL_SERVICE_H -#include FT_WINFONTS_H - - -FT_BEGIN_HEADER - - -#define FT_SERVICE_ID_WINFNT "winfonts" - - typedef FT_Error - (*FT_WinFnt_GetHeaderFunc)( FT_Face face, - FT_WinFNT_HeaderRec *aheader ); - - - FT_DEFINE_SERVICE( WinFnt ) - { - FT_WinFnt_GetHeaderFunc get_header; - }; - - /* */ - - -FT_END_HEADER - - -#endif /* __SVWINFNT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/services/svxf86nm.h b/nx-X11/extras/freetype2/include/freetype/internal/services/svxf86nm.h deleted file mode 100644 index 3a33abcd8..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/services/svxf86nm.h +++ /dev/null @@ -1,55 +0,0 @@ -/***************************************************************************/ -/* */ -/* svxf86nm.h */ -/* */ -/* The FreeType XFree86 services (specification only). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SVXF86NM_H__ -#define __SVXF86NM_H__ - -#include FT_INTERNAL_SERVICE_H - - -FT_BEGIN_HEADER - - - /* - * A trivial service used to return the name of a face's font driver, - * according to the XFree86 nomenclature. Note that the service data - * is a simple constant string pointer. - */ - -#define FT_SERVICE_ID_XF86_NAME "xf86-driver-name" - -#define FT_XF86_FORMAT_TRUETYPE "TrueType" -#define FT_XF86_FORMAT_TYPE_1 "Type 1" -#define FT_XF86_FORMAT_BDF "BDF" -#define FT_XF86_FORMAT_PCF "PCF" -#define FT_XF86_FORMAT_TYPE_42 "Type 42" -#define FT_XF86_FORMAT_CID "CID Type 1" -#define FT_XF86_FORMAT_CFF "CFF" -#define FT_XF86_FORMAT_PFR "PFR" -#define FT_XF86_FORMAT_WINFNT "Windows FNT" - - /* */ - - -FT_END_HEADER - - -#endif /* __SVXF86NM_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/sfnt.h b/nx-X11/extras/freetype2/include/freetype/internal/sfnt.h deleted file mode 100644 index 9a23b1f82..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/sfnt.h +++ /dev/null @@ -1,553 +0,0 @@ -/***************************************************************************/ -/* */ -/* sfnt.h */ -/* */ -/* High-level `sfnt' driver interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SFNT_H__ -#define __SFNT_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H -#include FT_INTERNAL_TRUETYPE_TYPES_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Init_Face_Func */ - /* */ - /* <Description> */ - /* First part of the SFNT face object initialization. This will find */ - /* the face in a SFNT file or collection, and load its format tag in */ - /* face->format_tag. */ - /* */ - /* <Input> */ - /* stream :: The input stream. */ - /* */ - /* face :: A handle to the target face object. */ - /* */ - /* face_index :: The index of the TrueType font, if we are opening a */ - /* collection. */ - /* */ - /* num_params :: The number of additional parameters. */ - /* */ - /* params :: Optional additional parameters. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The stream cursor must be at the font file's origin. */ - /* */ - /* This function recognizes fonts embedded in a `TrueType */ - /* collection'. */ - /* */ - /* Once the format tag has been validated by the font driver, it */ - /* should then call the TT_Load_Face_Func() callback to read the rest */ - /* of the SFNT tables in the object. */ - /* */ - typedef FT_Error - (*TT_Init_Face_Func)( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Load_Face_Func */ - /* */ - /* <Description> */ - /* Second part of the SFNT face object initialization. This will */ - /* load the common SFNT tables (head, OS/2, maxp, metrics, etc.) in */ - /* the face object. */ - /* */ - /* <Input> */ - /* stream :: The input stream. */ - /* */ - /* face :: A handle to the target face object. */ - /* */ - /* face_index :: The index of the TrueType font, if we are opening a */ - /* collection. */ - /* */ - /* num_params :: The number of additional parameters. */ - /* */ - /* params :: Optional additional parameters. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function must be called after TT_Init_Face_Func(). */ - /* */ - typedef FT_Error - (*TT_Load_Face_Func)( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Done_Face_Func */ - /* */ - /* <Description> */ - /* A callback used to delete the common SFNT data from a face. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Note> */ - /* This function does NOT destroy the face object. */ - /* */ - typedef void - (*TT_Done_Face_Func)( TT_Face face ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Load_SFNT_HeaderRec_Func */ - /* */ - /* <Description> */ - /* Loads the header of a SFNT font file. Supports collections. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* face_index :: The index of the TrueType font, if we are opening a */ - /* collection. */ - /* */ - /* <Output> */ - /* sfnt :: The SFNT header. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The stream cursor must be at the font file's origin. */ - /* */ - /* This function recognizes fonts embedded in a `TrueType */ - /* collection'. */ - /* */ - /* This function checks that the header is valid by looking at the */ - /* values of `search_range', `entry_selector', and `range_shift'. */ - /* */ - typedef FT_Error - (*TT_Load_SFNT_HeaderRec_Func)( TT_Face face, - FT_Stream stream, - FT_Long face_index, - SFNT_Header sfnt ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Load_Directory_Func */ - /* */ - /* <Description> */ - /* Loads the table directory into a face object. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* sfnt :: The SFNT header. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The stream cursor must be on the first byte after the 4-byte font */ - /* format tag. This is the case just after a call to */ - /* TT_Load_Format_Tag(). */ - /* */ - typedef FT_Error - (*TT_Load_Directory_Func)( TT_Face face, - FT_Stream stream, - SFNT_Header sfnt ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Load_Any_Func */ - /* */ - /* <Description> */ - /* Loads any font table into client memory. */ - /* */ - /* <Input> */ - /* face :: The face object to look for. */ - /* */ - /* tag :: The tag of table to load. Use the value 0 if you want */ - /* to access the whole font file, else set this parameter */ - /* to a valid TrueType table tag that you can forge with */ - /* the MAKE_TT_TAG macro. */ - /* */ - /* offset :: The starting offset in the table (or the file if */ - /* tag == 0). */ - /* */ - /* length :: The address of the decision variable: */ - /* */ - /* If length == NULL: */ - /* Loads the whole table. Returns an error if */ - /* `offset' == 0! */ - /* */ - /* If *length == 0: */ - /* Exits immediately; returning the length of the given */ - /* table or of the font file, depending on the value of */ - /* `tag'. */ - /* */ - /* If *length != 0: */ - /* Loads the next `length' bytes of table or font, */ - /* starting at offset `offset' (in table or font too). */ - /* */ - /* <Output> */ - /* buffer :: The address of target buffer. */ - /* */ - /* <Return> */ - /* TrueType error code. 0 means success. */ - /* */ - typedef FT_Error - (*TT_Load_Any_Func)( TT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte *buffer, - FT_ULong* length ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Find_SBit_Image_Func */ - /* */ - /* <Description> */ - /* Checks whether an embedded bitmap (an `sbit') exists for a given */ - /* glyph, at a given strike. */ - /* */ - /* <Input> */ - /* face :: The target face object. */ - /* */ - /* glyph_index :: The glyph index. */ - /* */ - /* strike_index :: The current strike index. */ - /* */ - /* <Output> */ - /* arange :: The SBit range containing the glyph index. */ - /* */ - /* astrike :: The SBit strike containing the glyph index. */ - /* */ - /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. Returns */ - /* SFNT_Err_Invalid_Argument if no sbit exists for the requested */ - /* glyph. */ - /* */ - typedef FT_Error - (*TT_Find_SBit_Image_Func)( TT_Face face, - FT_UInt glyph_index, - FT_ULong strike_index, - TT_SBit_Range *arange, - TT_SBit_Strike *astrike, - FT_ULong *aglyph_offset ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Load_SBit_Metrics_Func */ - /* */ - /* <Description> */ - /* Gets the big metrics for a given embedded bitmap. */ - /* */ - /* <Input> */ - /* stream :: The input stream. */ - /* */ - /* range :: The SBit range containing the glyph. */ - /* */ - /* <Output> */ - /* big_metrics :: A big SBit metrics structure for the glyph. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The stream cursor must be positioned at the glyph's offset within */ - /* the `EBDT' table before the call. */ - /* */ - /* If the image format uses variable metrics, the stream cursor is */ - /* positioned just after the metrics header in the `EBDT' table on */ - /* function exit. */ - /* */ - typedef FT_Error - (*TT_Load_SBit_Metrics_Func)( FT_Stream stream, - TT_SBit_Range range, - TT_SBit_Metrics metrics ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Load_SBit_Image_Func */ - /* */ - /* <Description> */ - /* Loads a given glyph sbit image from the font resource. This also */ - /* returns its metrics. */ - /* */ - /* <Input> */ - /* face :: */ - /* The target face object. */ - /* */ - /* strike_index :: */ - /* The strike index. */ - /* */ - /* glyph_index :: */ - /* The current glyph index. */ - /* */ - /* load_flags :: */ - /* The current load flags. */ - /* */ - /* stream :: */ - /* The input stream. */ - /* */ - /* <Output> */ - /* amap :: */ - /* The target pixmap. */ - /* */ - /* ametrics :: */ - /* A big sbit metrics structure for the glyph image. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. Returns an error if no */ - /* glyph sbit exists for the index. */ - /* */ - /* <Note> */ - /* The `map.buffer' field is always freed before the glyph is loaded. */ - /* */ - typedef FT_Error - (*TT_Load_SBit_Image_Func)( TT_Face face, - FT_ULong strike_index, - FT_UInt glyph_index, - FT_UInt load_flags, - FT_Stream stream, - FT_Bitmap *amap, - TT_SBit_MetricsRec *ametrics ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Set_SBit_Strike_Func */ - /* */ - /* <Description> */ - /* Selects an sbit strike for given horizontal and vertical ppem */ - /* values. */ - /* */ - /* <Input> */ - /* face :: The target face object. */ - /* */ - /* x_ppem :: The horizontal resolution in points per EM. */ - /* */ - /* y_ppem :: The vertical resolution in points per EM. */ - /* */ - /* <Output> */ - /* astrike_index :: The index of the sbit strike. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. Returns an error if no */ - /* sbit strike exists for the selected ppem values. */ - /* */ - typedef FT_Error - (*TT_Set_SBit_Strike_Func)( TT_Face face, - FT_UInt x_ppem, - FT_UInt y_ppem, - FT_ULong *astrike_index ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Get_PS_Name_Func */ - /* */ - /* <Description> */ - /* Gets the PostScript glyph name of a glyph. */ - /* */ - /* <Input> */ - /* idx :: The glyph index. */ - /* */ - /* PSname :: The address of a string pointer. Will be NULL in case */ - /* of error, otherwise it is a pointer to the glyph name. */ - /* */ - /* You must not modify the returned string! */ - /* */ - /* <Output> */ - /* FreeType error code. 0 means success. */ - /* */ - typedef FT_Error - (*TT_Get_PS_Name_Func)( TT_Face face, - FT_UInt idx, - FT_String** PSname ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Load_Metrics_Func */ - /* */ - /* <Description> */ - /* Loads the horizontal or vertical header in a face object. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* vertical :: A boolean flag. If set, load vertical metrics. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - typedef FT_Error - (*TT_Load_Metrics_Func)( TT_Face face, - FT_Stream stream, - FT_Bool vertical ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Load_Table_Func */ - /* */ - /* <Description> */ - /* Loads a given TrueType table. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The function will use `face->goto_table' to seek the stream to */ - /* the start of the table. */ - /* */ - typedef FT_Error - (*TT_Load_Table_Func)( TT_Face face, - FT_Stream stream ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Free_Table_Func */ - /* */ - /* <Description> */ - /* Frees a given TrueType table. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - typedef void - (*TT_Free_Table_Func)( TT_Face face ); - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* SFNT_Interface */ - /* */ - /* <Description> */ - /* This structure holds pointers to the functions used to load and */ - /* free the basic tables that are required in a `sfnt' font file. */ - /* */ - /* <Fields> */ - /* Check the various xxx_Func() descriptions for details. */ - /* */ - typedef struct SFNT_Interface_ - { - TT_Loader_GotoTableFunc goto_table; - - TT_Init_Face_Func init_face; - TT_Load_Face_Func load_face; - TT_Done_Face_Func done_face; - FT_Module_Requester get_interface; - - TT_Load_Any_Func load_any; - TT_Load_SFNT_HeaderRec_Func load_sfnt_header; - TT_Load_Directory_Func load_directory; - - /* these functions are called by `load_face' but they can also */ - /* be called from external modules, if there is a need to do so */ - TT_Load_Table_Func load_header; - TT_Load_Metrics_Func load_metrics; - TT_Load_Table_Func load_charmaps; - TT_Load_Table_Func load_max_profile; - TT_Load_Table_Func load_os2; - TT_Load_Table_Func load_psnames; - - TT_Load_Table_Func load_names; - TT_Free_Table_Func free_names; - - /* optional tables */ - TT_Load_Table_Func load_hdmx; - TT_Free_Table_Func free_hdmx; - - TT_Load_Table_Func load_kerning; - TT_Load_Table_Func load_gasp; - TT_Load_Table_Func load_pclt; - - /* see `ttload.h' */ - TT_Load_Table_Func load_bitmap_header; - - /* see `ttsbit.h' */ - TT_Set_SBit_Strike_Func set_sbit_strike; - TT_Load_Table_Func load_sbits; - TT_Find_SBit_Image_Func find_sbit_image; - TT_Load_SBit_Metrics_Func load_sbit_metrics; - TT_Load_SBit_Image_Func load_sbit_image; - TT_Free_Table_Func free_sbits; - - /* see `ttpost.h' */ - TT_Get_PS_Name_Func get_psname; - TT_Free_Table_Func free_psnames; - - } SFNT_Interface; - - - /* transitional */ - typedef SFNT_Interface* SFNT_Service; - - -FT_END_HEADER - -#endif /* __SFNT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/t1types.h b/nx-X11/extras/freetype2/include/freetype/internal/t1types.h deleted file mode 100644 index 702bb1e4c..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/t1types.h +++ /dev/null @@ -1,191 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1types.h */ -/* */ -/* Basic Type1/Type2 type definitions and interface (specification */ -/* only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1TYPES_H__ -#define __T1TYPES_H__ - - -#include <ft2build.h> -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H -#include FT_INTERNAL_SERVICE_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** ***/ - /*** REQUIRED TYPE1/TYPE2 TABLES DEFINITIONS ***/ - /*** ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_EncodingRec */ - /* */ - /* <Description> */ - /* A structure modeling a custom encoding. */ - /* */ - /* <Fields> */ - /* num_chars :: The number of character codes in the encoding. */ - /* Usually 256. */ - /* */ - /* code_first :: The lowest valid character code in the encoding. */ - /* */ - /* code_last :: The highest valid character code in the encoding. */ - /* */ - /* char_index :: An array of corresponding glyph indices. */ - /* */ - /* char_name :: An array of corresponding glyph names. */ - /* */ - typedef struct T1_EncodingRecRec_ - { - FT_Int num_chars; - FT_Int code_first; - FT_Int code_last; - - FT_UShort* char_index; - FT_String** char_name; - - } T1_EncodingRec, *T1_Encoding; - - - typedef enum T1_EncodingType_ - { - T1_ENCODING_TYPE_NONE = 0, - T1_ENCODING_TYPE_ARRAY, - T1_ENCODING_TYPE_STANDARD, - T1_ENCODING_TYPE_ISOLATIN1, - T1_ENCODING_TYPE_EXPERT - - } T1_EncodingType; - - - typedef struct T1_FontRec_ - { - PS_FontInfoRec font_info; /* font info dictionary */ - PS_PrivateRec private_dict; /* private dictionary */ - FT_String* font_name; /* top-level dictionary */ - - T1_EncodingType encoding_type; - T1_EncodingRec encoding; - - FT_Byte* subrs_block; - FT_Byte* charstrings_block; - FT_Byte* glyph_names_block; - - FT_Int num_subrs; - FT_Byte** subrs; - FT_PtrDist* subrs_len; - - FT_Int num_glyphs; - FT_String** glyph_names; /* array of glyph names */ - FT_Byte** charstrings; /* array of glyph charstrings */ - FT_PtrDist* charstrings_len; - - FT_Byte paint_type; - FT_Byte font_type; - FT_Matrix font_matrix; - FT_Vector font_offset; - FT_BBox font_bbox; - FT_Long font_id; - - FT_Fixed stroke_width; - - } T1_FontRec, *T1_Font; - - - typedef struct CID_SubrsRec_ - { - FT_UInt num_subrs; - FT_Byte** code; - - } CID_SubrsRec, *CID_Subrs; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** ***/ - /*** ORIGINAL T1_FACE CLASS DEFINITION ***/ - /*** ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - typedef struct T1_FaceRec_* T1_Face; - typedef struct CID_FaceRec_* CID_Face; - - - typedef struct T1_FaceRec_ - { - FT_FaceRec root; - T1_FontRec type1; - const void* psnames; - const void* psaux; - const void* afm_data; - FT_CharMapRec charmaprecs[2]; - FT_CharMap charmaps[2]; - PS_Unicodes unicode_map; - - /* support for Multiple Masters fonts */ - PS_Blend blend; - - /* since FT 2.1 - interface to PostScript hinter */ - const void* pshinter; - - } T1_FaceRec; - - - typedef struct CID_FaceRec_ - { - FT_FaceRec root; - void* psnames; - void* psaux; - CID_FaceInfoRec cid; - void* afm_data; - FT_Byte* binary_data; /* used if hex data has been converted */ - FT_Stream cid_stream; - CID_Subrs subrs; - - /* since FT 2.1 - interface to PostScript hinter */ - void* pshinter; - - } CID_FaceRec; - - -FT_END_HEADER - -#endif /* __T1TYPES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/internal/tttypes.h b/nx-X11/extras/freetype2/include/freetype/internal/tttypes.h deleted file mode 100644 index 4a3aab1aa..000000000 --- a/nx-X11/extras/freetype2/include/freetype/internal/tttypes.h +++ /dev/null @@ -1,1413 +0,0 @@ -/***************************************************************************/ -/* */ -/* tttypes.h */ -/* */ -/* Basic SFNT/TrueType type definitions and interface (specification */ -/* only). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTTYPES_H__ -#define __TTTYPES_H__ - - -#include <ft2build.h> -#include FT_TRUETYPE_TABLES_H -#include FT_INTERNAL_OBJECTS_H - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_MULTIPLE_MASTERS_H -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** ***/ - /*** REQUIRED TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ - /*** ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TTC_HeaderRec */ - /* */ - /* <Description> */ - /* TrueType collection header. This table contains the offsets of */ - /* the font headers of each distinct TrueType face in the file. */ - /* */ - /* <Fields> */ - /* tag :: Must be `ttc ' to indicate a TrueType collection. */ - /* */ - /* version :: The version number. */ - /* */ - /* count :: The number of faces in the collection. The */ - /* specification says this should be an unsigned long, but */ - /* we use a signed long since we need the value -1 for */ - /* specific purposes. */ - /* */ - /* offsets :: The offsets of the font headers, one per face. */ - /* */ - typedef struct TTC_HeaderRec_ - { - FT_ULong tag; - FT_Fixed version; - FT_Long count; - FT_ULong* offsets; - - } TTC_HeaderRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* SFNT_HeaderRec */ - /* */ - /* <Description> */ - /* SFNT file format header. */ - /* */ - /* <Fields> */ - /* format_tag :: The font format tag. */ - /* */ - /* num_tables :: The number of tables in file. */ - /* */ - /* search_range :: Must be `16 * (max power of 2 <= num_tables)'. */ - /* */ - /* entry_selector :: Must be log2 of `search_range / 16'. */ - /* */ - /* range_shift :: Must be `num_tables * 16 - search_range'. */ - /* */ - typedef struct SFNT_HeaderRec_ - { - FT_ULong format_tag; - FT_UShort num_tables; - FT_UShort search_range; - FT_UShort entry_selector; - FT_UShort range_shift; - - FT_ULong offset; /* not in file */ - - } SFNT_HeaderRec, *SFNT_Header; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_TableRec */ - /* */ - /* <Description> */ - /* This structure describes a given table of a TrueType font. */ - /* */ - /* <Fields> */ - /* Tag :: A four-bytes tag describing the table. */ - /* */ - /* CheckSum :: The table checksum. This value can be ignored. */ - /* */ - /* Offset :: The offset of the table from the start of the TrueType */ - /* font in its resource. */ - /* */ - /* Length :: The table length (in bytes). */ - /* */ - typedef struct TT_TableRec_ - { - FT_ULong Tag; /* table type */ - FT_ULong CheckSum; /* table checksum */ - FT_ULong Offset; /* table file offset */ - FT_ULong Length; /* table length */ - - } TT_TableRec, *TT_Table; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_LongMetricsRec */ - /* */ - /* <Description> */ - /* A structure modeling the long metrics of the `hmtx' and `vmtx' */ - /* TrueType tables. The values are expressed in font units. */ - /* */ - /* <Fields> */ - /* advance :: The advance width or height for the glyph. */ - /* */ - /* bearing :: The left-side or top-side bearing for the glyph. */ - /* */ - typedef struct TT_LongMetricsRec_ - { - FT_UShort advance; - FT_Short bearing; - - } TT_LongMetricsRec, *TT_LongMetrics; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* TT_ShortMetrics */ - /* */ - /* <Description> */ - /* A simple type to model the short metrics of the `hmtx' and `vmtx' */ - /* tables. */ - /* */ - typedef FT_Short TT_ShortMetrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_NameEntryRec */ - /* */ - /* <Description> */ - /* A structure modeling TrueType name records. Name records are used */ - /* to store important strings like family name, style name, */ - /* copyright, etc. in _localized_ versions (i.e., language, encoding, */ - /* etc). */ - /* */ - /* <Fields> */ - /* platformID :: The ID of the name's encoding platform. */ - /* */ - /* encodingID :: The platform-specific ID for the name's encoding. */ - /* */ - /* languageID :: The platform-specific ID for the name's language. */ - /* */ - /* nameID :: The ID specifying what kind of name this is. */ - /* */ - /* stringLength :: The length of the string in bytes. */ - /* */ - /* stringOffset :: The offset to the string in the `name' table. */ - /* */ - /* string :: A pointer to the string's bytes. Note that these */ - /* are usually UTF-16 encoded characters. */ - /* */ - typedef struct TT_NameEntryRec_ - { - FT_UShort platformID; - FT_UShort encodingID; - FT_UShort languageID; - FT_UShort nameID; - FT_UShort stringLength; - FT_ULong stringOffset; - - /* this last field is not defined in the spec */ - /* but used by the FreeType engine */ - - FT_Byte* string; - - } TT_NameEntryRec, *TT_NameEntry; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_NameTableRec */ - /* */ - /* <Description> */ - /* A structure modeling the TrueType name table. */ - /* */ - /* <Fields> */ - /* format :: The format of the name table. */ - /* */ - /* numNameRecords :: The number of names in table. */ - /* */ - /* storageOffset :: The offset of the name table in the `name' */ - /* TrueType table. */ - /* */ - /* names :: An array of name records. */ - /* */ - /* stream :: the file's input stream. */ - /* */ - typedef struct TT_NameTableRec_ - { - FT_UShort format; - FT_UInt numNameRecords; - FT_UInt storageOffset; - TT_NameEntryRec* names; - FT_Stream stream; - - } TT_NameTableRec, *TT_NameTable; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** ***/ - /*** OPTIONAL TRUETYPE/OPENTYPE TABLES DEFINITIONS ***/ - /*** ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_GaspRangeRec */ - /* */ - /* <Description> */ - /* A tiny structure used to model a gasp range according to the */ - /* TrueType specification. */ - /* */ - /* <Fields> */ - /* maxPPEM :: The maximum ppem value to which `gaspFlag' applies. */ - /* */ - /* gaspFlag :: A flag describing the grid-fitting and anti-aliasing */ - /* modes to be used. */ - /* */ - typedef struct TT_GaspRangeRec_ - { - FT_UShort maxPPEM; - FT_UShort gaspFlag; - - } TT_GaspRangeRec, *TT_GaspRange; - - -#define TT_GASP_GRIDFIT 0x01 -#define TT_GASP_DOGRAY 0x02 - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_GaspRec */ - /* */ - /* <Description> */ - /* A structure modeling the TrueType `gasp' table used to specify */ - /* grid-fitting and anti-aliasing behaviour. */ - /* */ - /* <Fields> */ - /* version :: The version number. */ - /* */ - /* numRanges :: The number of gasp ranges in table. */ - /* */ - /* gaspRanges :: An array of gasp ranges. */ - /* */ - typedef struct TT_Gasp_ - { - FT_UShort version; - FT_UShort numRanges; - TT_GaspRange gaspRanges; - - } TT_GaspRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_HdmxEntryRec */ - /* */ - /* <Description> */ - /* A small structure used to model the pre-computed widths of a given */ - /* size. They are found in the `hdmx' table. */ - /* */ - /* <Fields> */ - /* ppem :: The pixels per EM value at which these metrics apply. */ - /* */ - /* max_width :: The maximum advance width for this metric. */ - /* */ - /* widths :: An array of widths. Note: These are 8-bit bytes. */ - /* */ - typedef struct TT_HdmxEntryRec_ - { - FT_Byte ppem; - FT_Byte max_width; - FT_Byte* widths; - - } TT_HdmxEntryRec, *TT_HdmxEntry; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_HdmxRec */ - /* */ - /* <Description> */ - /* A structure used to model the `hdmx' table, which contains */ - /* pre-computed widths for a set of given sizes/dimensions. */ - /* */ - /* <Fields> */ - /* version :: The version number. */ - /* */ - /* num_records :: The number of hdmx records. */ - /* */ - /* records :: An array of hdmx records. */ - /* */ - typedef struct TT_HdmxRec_ - { - FT_UShort version; - FT_Short num_records; - TT_HdmxEntry records; - - } TT_HdmxRec, *TT_Hdmx; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Kern0_PairRec */ - /* */ - /* <Description> */ - /* A structure used to model a kerning pair for the kerning table */ - /* format 0. The engine now loads this table if it finds one in the */ - /* font file. */ - /* */ - /* <Fields> */ - /* left :: The index of the left glyph in pair. */ - /* */ - /* right :: The index of the right glyph in pair. */ - /* */ - /* value :: The kerning distance. A positive value spaces the */ - /* glyphs, a negative one makes them closer. */ - /* */ - typedef struct TT_Kern0_PairRec_ - { - FT_UShort left; /* index of left glyph in pair */ - FT_UShort right; /* index of right glyph in pair */ - FT_FWord value; /* kerning value */ - - } TT_Kern0_PairRec, *TT_Kern0_Pair; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** ***/ - /*** EMBEDDED BITMAPS SUPPORT ***/ - /*** ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_SBit_MetricsRec */ - /* */ - /* <Description> */ - /* A structure used to hold the big metrics of a given glyph bitmap */ - /* in a TrueType or OpenType font. These are usually found in the */ - /* `EBDT' (Microsoft) or `bloc' (Apple) table. */ - /* */ - /* <Fields> */ - /* height :: The glyph height in pixels. */ - /* */ - /* width :: The glyph width in pixels. */ - /* */ - /* horiBearingX :: The horizontal left bearing. */ - /* */ - /* horiBearingY :: The horizontal top bearing. */ - /* */ - /* horiAdvance :: The horizontal advance. */ - /* */ - /* vertBearingX :: The vertical left bearing. */ - /* */ - /* vertBearingY :: The vertical top bearing. */ - /* */ - /* vertAdvance :: The vertical advance. */ - /* */ - typedef struct TT_SBit_MetricsRec_ - { - FT_Byte height; - FT_Byte width; - - FT_Char horiBearingX; - FT_Char horiBearingY; - FT_Byte horiAdvance; - - FT_Char vertBearingX; - FT_Char vertBearingY; - FT_Byte vertAdvance; - - } TT_SBit_MetricsRec, *TT_SBit_Metrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_SBit_SmallMetricsRec */ - /* */ - /* <Description> */ - /* A structure used to hold the small metrics of a given glyph bitmap */ - /* in a TrueType or OpenType font. These are usually found in the */ - /* `EBDT' (Microsoft) or the `bdat' (Apple) table. */ - /* */ - /* <Fields> */ - /* height :: The glyph height in pixels. */ - /* */ - /* width :: The glyph width in pixels. */ - /* */ - /* bearingX :: The left-side bearing. */ - /* */ - /* bearingY :: The top-side bearing. */ - /* */ - /* advance :: The advance width or height. */ - /* */ - typedef struct TT_SBit_Small_Metrics_ - { - FT_Byte height; - FT_Byte width; - - FT_Char bearingX; - FT_Char bearingY; - FT_Byte advance; - - } TT_SBit_SmallMetricsRec, *TT_SBit_SmallMetrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_SBit_LineMetricsRec */ - /* */ - /* <Description> */ - /* A structure used to describe the text line metrics of a given */ - /* bitmap strike, for either a horizontal or vertical layout. */ - /* */ - /* <Fields> */ - /* ascender :: The ascender in pixels. */ - /* */ - /* descender :: The descender in pixels. */ - /* */ - /* max_width :: The maximum glyph width in pixels. */ - /* */ - /* caret_slope_enumerator :: Rise of the caret slope, typically set */ - /* to 1 for non-italic fonts. */ - /* */ - /* caret_slope_denominator :: Rise of the caret slope, typically set */ - /* to 0 for non-italic fonts. */ - /* */ - /* caret_offset :: Offset in pixels to move the caret for */ - /* proper positioning. */ - /* */ - /* min_origin_SB :: Minimum of horiBearingX (resp. */ - /* vertBearingY). */ - /* min_advance_SB :: Minimum of */ - /* */ - /* horizontal advance - */ - /* ( horiBearingX + width ) */ - /* */ - /* resp. */ - /* */ - /* vertical advance - */ - /* ( vertBearingY + height ) */ - /* */ - /* max_before_BL :: Maximum of horiBearingY (resp. */ - /* vertBearingY). */ - /* */ - /* min_after_BL :: Minimum of */ - /* */ - /* horiBearingY - height */ - /* */ - /* resp. */ - /* */ - /* vertBearingX - width */ - /* */ - /* pads :: Unused (to make the size of the record */ - /* a multiple of 32 bits. */ - /* */ - typedef struct TT_SBit_LineMetricsRec_ - { - FT_Char ascender; - FT_Char descender; - FT_Byte max_width; - FT_Char caret_slope_numerator; - FT_Char caret_slope_denominator; - FT_Char caret_offset; - FT_Char min_origin_SB; - FT_Char min_advance_SB; - FT_Char max_before_BL; - FT_Char min_after_BL; - FT_Char pads[2]; - - } TT_SBit_LineMetricsRec, *TT_SBit_LineMetrics; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_SBit_RangeRec */ - /* */ - /* <Description> */ - /* A TrueType/OpenType subIndexTable as defined in the `EBLC' */ - /* (Microsoft) or `bloc' (Apple) tables. */ - /* */ - /* <Fields> */ - /* first_glyph :: The first glyph index in the range. */ - /* */ - /* last_glyph :: The last glyph index in the range. */ - /* */ - /* index_format :: The format of index table. Valid values are 1 */ - /* to 5. */ - /* */ - /* image_format :: The format of `EBDT' image data. */ - /* */ - /* image_offset :: The offset to image data in `EBDT'. */ - /* */ - /* image_size :: For index formats 2 and 5. This is the size in */ - /* bytes of each glyph bitmap. */ - /* */ - /* big_metrics :: For index formats 2 and 5. This is the big */ - /* metrics for each glyph bitmap. */ - /* */ - /* num_glyphs :: For index formats 4 and 5. This is the number of */ - /* glyphs in the code array. */ - /* */ - /* glyph_offsets :: For index formats 1 and 3. */ - /* */ - /* glyph_codes :: For index formats 4 and 5. */ - /* */ - /* table_offset :: The offset of the index table in the `EBLC' */ - /* table. Only used during strike loading. */ - /* */ - typedef struct TT_SBit_RangeRec - { - FT_UShort first_glyph; - FT_UShort last_glyph; - - FT_UShort index_format; - FT_UShort image_format; - FT_ULong image_offset; - - FT_ULong image_size; - TT_SBit_MetricsRec metrics; - FT_ULong num_glyphs; - - FT_ULong* glyph_offsets; - FT_UShort* glyph_codes; - - FT_ULong table_offset; - - } TT_SBit_RangeRec, *TT_SBit_Range; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_SBit_StrikeRec */ - /* */ - /* <Description> */ - /* A structure used describe a given bitmap strike in the `EBLC' */ - /* (Microsoft) or `bloc' (Apple) tables. */ - /* */ - /* <Fields> */ - /* num_index_ranges :: The number of index ranges. */ - /* */ - /* index_ranges :: An array of glyph index ranges. */ - /* */ - /* color_ref :: Unused. `color_ref' is put in for future */ - /* enhancements, but these fields are already */ - /* in use by other platforms (e.g. Newton). */ - /* For details, please see */ - /* */ - /* http://fonts.apple.com/ */ - /* TTRefMan/RM06/Chap6bloc.html */ - /* */ - /* hori :: The line metrics for horizontal layouts. */ - /* */ - /* vert :: The line metrics for vertical layouts. */ - /* */ - /* start_glyph :: The lowest glyph index for this strike. */ - /* */ - /* end_glyph :: The highest glyph index for this strike. */ - /* */ - /* x_ppem :: The number of horizontal pixels per EM. */ - /* */ - /* y_ppem :: The number of vertical pixels per EM. */ - /* */ - /* bit_depth :: The bit depth. Valid values are 1, 2, 4, */ - /* and 8. */ - /* */ - /* flags :: Is this a vertical or horizontal strike? For */ - /* details, please see */ - /* */ - /* http://fonts.apple.com/ */ - /* TTRefMan/RM06/Chap6bloc.html */ - /* */ - typedef struct TT_SBit_StrikeRec_ - { - FT_Int num_ranges; - TT_SBit_Range sbit_ranges; - FT_ULong ranges_offset; - - FT_ULong color_ref; - - TT_SBit_LineMetricsRec hori; - TT_SBit_LineMetricsRec vert; - - FT_UShort start_glyph; - FT_UShort end_glyph; - - FT_Byte x_ppem; - FT_Byte y_ppem; - - FT_Byte bit_depth; - FT_Char flags; - - } TT_SBit_StrikeRec, *TT_SBit_Strike; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_SBit_ComponentRec */ - /* */ - /* <Description> */ - /* A simple structure to describe a compound sbit element. */ - /* */ - /* <Fields> */ - /* glyph_code :: The element's glyph index. */ - /* */ - /* x_offset :: The element's left bearing. */ - /* */ - /* y_offset :: The element's top bearing. */ - /* */ - typedef struct TT_SBit_ComponentRec_ - { - FT_UShort glyph_code; - FT_Char x_offset; - FT_Char y_offset; - - } TT_SBit_ComponentRec, *TT_SBit_Component; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_SBit_ScaleRec */ - /* */ - /* <Description> */ - /* A structure used describe a given bitmap scaling table, as defined */ - /* in the `EBSC' table. */ - /* */ - /* <Fields> */ - /* hori :: The horizontal line metrics. */ - /* */ - /* vert :: The vertical line metrics. */ - /* */ - /* x_ppem :: The number of horizontal pixels per EM. */ - /* */ - /* y_ppem :: The number of vertical pixels per EM. */ - /* */ - /* x_ppem_substitute :: Substitution x_ppem value. */ - /* */ - /* y_ppem_substitute :: Substitution y_ppem value. */ - /* */ - typedef struct TT_SBit_ScaleRec_ - { - TT_SBit_LineMetricsRec hori; - TT_SBit_LineMetricsRec vert; - - FT_Byte x_ppem; - FT_Byte y_ppem; - - FT_Byte x_ppem_substitute; - FT_Byte y_ppem_substitute; - - } TT_SBit_ScaleRec, *TT_SBit_Scale; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** ***/ - /*** POSTSCRIPT GLYPH NAMES SUPPORT ***/ - /*** ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Post_20Rec */ - /* */ - /* <Description> */ - /* Postscript names sub-table, format 2.0. Stores the PS name of */ - /* each glyph in the font face. */ - /* */ - /* <Fields> */ - /* num_glyphs :: The number of named glyphs in the table. */ - /* */ - /* num_names :: The number of PS names stored in the table. */ - /* */ - /* glyph_indices :: The indices of the glyphs in the names arrays. */ - /* */ - /* glyph_names :: The PS names not in Mac Encoding. */ - /* */ - typedef struct TT_Post_20Rec_ - { - FT_UShort num_glyphs; - FT_UShort num_names; - FT_UShort* glyph_indices; - FT_Char** glyph_names; - - } TT_Post_20Rec, *TT_Post_20; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Post_25Rec */ - /* */ - /* <Description> */ - /* Postscript names sub-table, format 2.5. Stores the PS name of */ - /* each glyph in the font face. */ - /* */ - /* <Fields> */ - /* num_glyphs :: The number of glyphs in the table. */ - /* */ - /* offsets :: An array of signed offsets in a normal Mac */ - /* Postscript name encoding. */ - /* */ - typedef struct TT_Post_25_ - { - FT_UShort num_glyphs; - FT_Char* offsets; - - } TT_Post_25Rec, *TT_Post_25; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Post_NamesRec */ - /* */ - /* <Description> */ - /* Postscript names table, either format 2.0 or 2.5. */ - /* */ - /* <Fields> */ - /* loaded :: A flag to indicate whether the PS names are loaded. */ - /* */ - /* format_20 :: The sub-table used for format 2.0. */ - /* */ - /* format_25 :: The sub-table used for format 2.5. */ - /* */ - typedef struct TT_Post_NamesRec_ - { - FT_Bool loaded; - - union - { - TT_Post_20Rec format_20; - TT_Post_25Rec format_25; - - } names; - - } TT_Post_NamesRec, *TT_Post_Names; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** ***/ - /*** GX VARIATION TABLE SUPPORT ***/ - /*** ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - typedef struct GX_BlendRec_ *GX_Blend; -#endif - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** ***/ - /*** ORIGINAL TT_FACE CLASS DEFINITION ***/ - /*** ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This structure/class is defined here because it is common to the */ - /* following formats: TTF, OpenType-TT, and OpenType-CFF. */ - /* */ - /* Note, however, that the classes TT_Size and TT_GlyphSlot are not */ - /* shared between font drivers, and are thus defined in `ttobjs.h'. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* TT_Face */ - /* */ - /* <Description> */ - /* A handle to a TrueType face/font object. A TT_Face encapsulates */ - /* the resolution and scaling independent parts of a TrueType font */ - /* resource. */ - /* */ - /* <Note> */ - /* The TT_Face structure is also used as a `parent class' for the */ - /* OpenType-CFF class (T2_Face). */ - /* */ - typedef struct TT_FaceRec_* TT_Face; - - - /* a function type used for the truetype bytecode interpreter hooks */ - typedef FT_Error - (*TT_Interpreter)( void* exec_context ); - - /* forward declaration */ - typedef struct TT_LoaderRec_* TT_Loader; - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Loader_GotoTableFunc */ - /* */ - /* <Description> */ - /* Seeks a stream to the start of a given TrueType table. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* tag :: A 4-byte tag used to name the table. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Output> */ - /* length :: The length of the table in bytes. Set to 0 if not */ - /* needed. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The stream cursor must be at the font file's origin. */ - /* */ - typedef FT_Error - (*TT_Loader_GotoTableFunc)( TT_Face face, - FT_ULong tag, - FT_Stream stream, - FT_ULong* length ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Loader_StartGlyphFunc */ - /* */ - /* <Description> */ - /* Seeks a stream to the start of a given glyph element, and opens a */ - /* frame for it. */ - /* */ - /* <Input> */ - /* loader :: The current TrueType glyph loader object. */ - /* */ - /* glyph index :: The index of the glyph to access. */ - /* */ - /* offset :: The offset of the glyph according to the */ - /* `locations' table. */ - /* */ - /* byte_count :: The size of the frame in bytes. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* This function is normally equivalent to FT_STREAM_SEEK(offset) */ - /* followed by FT_FRAME_ENTER(byte_count) with the loader's stream, */ - /* but alternative formats (e.g. compressed ones) might use something */ - /* different. */ - /* */ - typedef FT_Error - (*TT_Loader_StartGlyphFunc)( TT_Loader loader, - FT_UInt glyph_index, - FT_ULong offset, - FT_UInt byte_count ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Loader_ReadGlyphFunc */ - /* */ - /* <Description> */ - /* Reads one glyph element (its header, a simple glyph, or a */ - /* composite) from the loader's current stream frame. */ - /* */ - /* <Input> */ - /* loader :: The current TrueType glyph loader object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - typedef FT_Error - (*TT_Loader_ReadGlyphFunc)( TT_Loader loader ); - - - /*************************************************************************/ - /* */ - /* <FuncType> */ - /* TT_Loader_EndGlyphFunc */ - /* */ - /* <Description> */ - /* Closes the current loader stream frame for the glyph. */ - /* */ - /* <Input> */ - /* loader :: The current TrueType glyph loader object. */ - /* */ - typedef void - (*TT_Loader_EndGlyphFunc)( TT_Loader loader ); - - - /*************************************************************************/ - /* */ - /* TrueType Face Type */ - /* */ - /* <Struct> */ - /* TT_Face */ - /* */ - /* <Description> */ - /* The TrueType face class. These objects model the resolution and */ - /* point-size independent data found in a TrueType font file. */ - /* */ - /* <Fields> */ - /* root :: The base FT_Face structure, managed by the */ - /* base layer. */ - /* */ - /* ttc_header :: The TrueType collection header, used when */ - /* the file is a `ttc' rather than a `ttf'. */ - /* For ordinary font files, the field */ - /* `ttc_header.count' is set to 0. */ - /* */ - /* format_tag :: The font format tag. */ - /* */ - /* num_tables :: The number of TrueType tables in this font */ - /* file. */ - /* */ - /* dir_tables :: The directory of TrueType tables for this */ - /* font file. */ - /* */ - /* header :: The font's font header (`head' table). */ - /* Read on font opening. */ - /* */ - /* horizontal :: The font's horizontal header (`hhea' */ - /* table). This field also contains the */ - /* associated horizontal metrics table */ - /* (`hmtx'). */ - /* */ - /* max_profile :: The font's maximum profile table. Read on */ - /* font opening. Note that some maximum */ - /* values cannot be taken directly from this */ - /* table. We thus define additional fields */ - /* below to hold the computed maxima. */ - /* */ - /* max_components :: The maximum number of glyph components */ - /* required to load any composite glyph from */ - /* this font. Used to size the load stack. */ - /* */ - /* vertical_info :: A boolean which is set when the font file */ - /* contains vertical metrics. If not, the */ - /* value of the `vertical' field is */ - /* undefined. */ - /* */ - /* vertical :: The font's vertical header (`vhea' table). */ - /* This field also contains the associated */ - /* vertical metrics table (`vmtx'), if found. */ - /* IMPORTANT: The contents of this field is */ - /* undefined if the `verticalInfo' field is */ - /* unset. */ - /* */ - /* num_names :: The number of name records within this */ - /* TrueType font. */ - /* */ - /* name_table :: The table of name records (`name'). */ - /* */ - /* os2 :: The font's OS/2 table (`OS/2'). */ - /* */ - /* postscript :: The font's PostScript table (`post' */ - /* table). The PostScript glyph names are */ - /* not loaded by the driver on face opening. */ - /* See the `ttpost' module for more details. */ - /* */ - /* cmap_table :: Address of the face's `cmap' SFNT table */ - /* in memory (it's an extracted frame). */ - /* */ - /* cmap_size :: The size in bytes of the `cmap_table' */ - /* described above. */ - /* */ - /* goto_table :: A function called by each TrueType table */ - /* loader to position a stream's cursor to */ - /* the start of a given table according to */ - /* its tag. It defaults to TT_Goto_Face but */ - /* can be different for strange formats (e.g. */ - /* Type 42). */ - /* */ - /* access_glyph_frame :: A function used to access the frame of a */ - /* given glyph within the face's font file. */ - /* */ - /* forget_glyph_frame :: A function used to forget the frame of a */ - /* given glyph when all data has been loaded. */ - /* */ - /* read_glyph_header :: A function used to read a glyph header. */ - /* It must be called between an `access' and */ - /* `forget'. */ - /* */ - /* read_simple_glyph :: A function used to read a simple glyph. */ - /* It must be called after the header was */ - /* read, and before the `forget'. */ - /* */ - /* read_composite_glyph :: A function used to read a composite glyph. */ - /* It must be called after the header was */ - /* read, and before the `forget'. */ - /* */ - /* sfnt :: A pointer to the SFNT service. */ - /* */ - /* psnames :: A pointer to the PostScript names service. */ - /* */ - /* hdmx :: The face's horizontal device metrics */ - /* (`hdmx' table). This table is optional in */ - /* TrueType/OpenType fonts. */ - /* */ - /* gasp :: The grid-fitting and scaling properties */ - /* table (`gasp'). This table is optional in */ - /* TrueType/OpenType fonts. */ - /* */ - /* pclt :: The `pclt' SFNT table. */ - /* */ - /* num_sbit_strikes :: The number of sbit strikes, i.e., bitmap */ - /* sizes, embedded in this font. */ - /* */ - /* sbit_strikes :: An array of sbit strikes embedded in this */ - /* font. This table is optional in a */ - /* TrueType/OpenType font. */ - /* */ - /* num_sbit_scales :: The number of sbit scales for this font. */ - /* */ - /* sbit_scales :: Array of sbit scales embedded in this */ - /* font. This table is optional in a */ - /* TrueType/OpenType font. */ - /* */ - /* postscript_names :: A table used to store the Postscript names */ - /* of the glyphs for this font. See the */ - /* file `ttconfig.h' for comments on the */ - /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES option. */ - /* */ - /* num_locations :: The number of glyph locations in this */ - /* TrueType file. This should be */ - /* identical to the number of glyphs. */ - /* Ignored for Type 2 fonts. */ - /* */ - /* glyph_locations :: An array of longs. These are offsets to */ - /* glyph data within the `glyf' table. */ - /* Ignored for Type 2 font faces. */ - /* */ - /* font_program_size :: Size in bytecodes of the face's font */ - /* program. 0 if none defined. Ignored for */ - /* Type 2 fonts. */ - /* */ - /* font_program :: The face's font program (bytecode stream) */ - /* executed at load time, also used during */ - /* glyph rendering. Comes from the `fpgm' */ - /* table. Ignored for Type 2 font fonts. */ - /* */ - /* cvt_program_size :: The size in bytecodes of the face's cvt */ - /* program. Ignored for Type 2 fonts. */ - /* */ - /* cvt_program :: The face's cvt program (bytecode stream) */ - /* executed each time an instance/size is */ - /* changed/reset. Comes from the `prep' */ - /* table. Ignored for Type 2 fonts. */ - /* */ - /* cvt_size :: Size of the control value table (in */ - /* entries). Ignored for Type 2 fonts. */ - /* */ - /* cvt :: The face's original control value table. */ - /* Coordinates are expressed in unscaled font */ - /* units. Comes from the `cvt ' table. */ - /* Ignored for Type 2 fonts. */ - /* */ - /* num_kern_pairs :: The number of kerning pairs present in the */ - /* font file. The engine only loads the */ - /* first horizontal format 0 kern table it */ - /* finds in the font file. Ignored for */ - /* Type 2 fonts. */ - /* */ - /* kern_table_index :: The index of the kerning table in the font */ - /* kerning directory. Ignored for Type 2 */ - /* fonts. */ - /* */ - /* interpreter :: A pointer to the TrueType bytecode */ - /* interpreters field is also used to hook */ - /* the debugger in `ttdebug'. */ - /* */ - /* unpatented_hinting :: If true, use only unpatented methods in */ - /* the bytecode interpreter. */ - /* */ - /* doblend :: A boolean which is set if the font should */ - /* be blended (this is for GX var). */ - /* */ - /* blend :: Contains the data needed to control GX */ - /* variation tables (rather like Multiple */ - /* Master data). */ - /* */ - /* extra :: Reserved for third-party font drivers. */ - /* */ - /* postscript_name :: The PS name of the font. Used by the */ - /* postscript name service. */ - /* */ - typedef struct TT_FaceRec_ - { - FT_FaceRec root; - - TTC_HeaderRec ttc_header; - - FT_ULong format_tag; - FT_UShort num_tables; - TT_Table dir_tables; - - TT_Header header; /* TrueType header table */ - TT_HoriHeader horizontal; /* TrueType horizontal header */ - - TT_MaxProfile max_profile; - FT_ULong max_components; - - FT_Bool vertical_info; - TT_VertHeader vertical; /* TT Vertical header, if present */ - - FT_UShort num_names; /* number of name records */ - TT_NameTableRec name_table; /* name table */ - - TT_OS2 os2; /* TrueType OS/2 table */ - TT_Postscript postscript; /* TrueType Postscript table */ - - FT_Byte* cmap_table; /* extracted 'cmap' table */ - FT_ULong cmap_size; - - TT_Loader_GotoTableFunc goto_table; - - TT_Loader_StartGlyphFunc access_glyph_frame; - TT_Loader_EndGlyphFunc forget_glyph_frame; - TT_Loader_ReadGlyphFunc read_glyph_header; - TT_Loader_ReadGlyphFunc read_simple_glyph; - TT_Loader_ReadGlyphFunc read_composite_glyph; - - /* a typeless pointer to the SFNT_Interface table used to load */ - /* the basic TrueType tables in the face object */ - void* sfnt; - - /* a typeless pointer to the FT_Service_PsCMapsRec table used to */ - /* handle glyph names <-> unicode & Mac values */ - void* psnames; - - - /***********************************************************************/ - /* */ - /* Optional TrueType/OpenType tables */ - /* */ - /***********************************************************************/ - - /* horizontal device metrics */ - TT_HdmxRec hdmx; - - /* grid-fitting and scaling table */ - TT_GaspRec gasp; /* the `gasp' table */ - - /* PCL 5 table */ - TT_PCLT pclt; - - /* embedded bitmaps support */ - FT_ULong num_sbit_strikes; - TT_SBit_Strike sbit_strikes; - - FT_ULong num_sbit_scales; - TT_SBit_Scale sbit_scales; - - /* postscript names table */ - TT_Post_NamesRec postscript_names; - - - /***********************************************************************/ - /* */ - /* TrueType-specific fields (ignored by the OTF-Type2 driver) */ - /* */ - /***********************************************************************/ - - /* the glyph locations */ - FT_UShort num_locations; - FT_Long* glyph_locations; - - /* the font program, if any */ - FT_ULong font_program_size; - FT_Byte* font_program; - - /* the cvt program, if any */ - FT_ULong cvt_program_size; - FT_Byte* cvt_program; - - /* the original, unscaled, control value table */ - FT_ULong cvt_size; - FT_Short* cvt; - - /* the format 0 kerning table, if any */ - FT_Int num_kern_pairs; - FT_Int kern_table_index; - TT_Kern0_Pair kern_pairs; - - /* A pointer to the bytecode interpreter to use. This is also */ - /* used to hook the debugger for the `ttdebug' utility. */ - TT_Interpreter interpreter; - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - /* Use unpatented hinting only. */ - FT_Bool unpatented_hinting; -#endif - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - FT_Bool doblend; - GX_Blend blend; -#endif - - /***********************************************************************/ - /* */ - /* Other tables or fields. This is used by derivative formats like */ - /* OpenType. */ - /* */ - /***********************************************************************/ - - FT_Generic extra; - - const char* postscript_name; - - } TT_FaceRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_GlyphZoneRec */ - /* */ - /* <Description> */ - /* A glyph zone is used to load, scale and hint glyph outline */ - /* coordinates. */ - /* */ - /* <Fields> */ - /* memory :: A handle to the memory manager. */ - /* */ - /* max_points :: The maximal size in points of the zone. */ - /* */ - /* max_contours :: Max size in links contours of thez one. */ - /* */ - /* n_points :: The current number of points in the zone. */ - /* */ - /* n_contours :: The current number of contours in the zone. */ - /* */ - /* org :: The original glyph coordinates (font */ - /* units/scaled). */ - /* */ - /* cur :: The current glyph coordinates (scaled/hinted). */ - /* */ - /* tags :: The point control tags. */ - /* */ - /* contours :: The contours end points. */ - /* */ - typedef struct TT_GlyphZoneRec_ - { - FT_Memory memory; - FT_UShort max_points; - FT_UShort max_contours; - FT_UShort n_points; /* number of points in zone */ - FT_Short n_contours; /* number of contours */ - - FT_Vector* org; /* original point coordinates */ - FT_Vector* cur; /* current point coordinates */ - - FT_Byte* tags; /* current touch flags */ - FT_UShort* contours; /* contour end points */ - - } TT_GlyphZoneRec, *TT_GlyphZone; - - - /* handle to execution context */ - typedef struct TT_ExecContextRec_* TT_ExecContext; - - /* glyph loader structure */ - typedef struct TT_LoaderRec_ - { - FT_Face face; - FT_Size size; - FT_GlyphSlot glyph; - FT_GlyphLoader gloader; - - FT_ULong load_flags; - FT_UInt glyph_index; - - FT_Stream stream; - FT_Int byte_len; - - FT_Short n_contours; - FT_BBox bbox; - FT_Int left_bearing; - FT_Int advance; - FT_Int top_bearing; - FT_Int vadvance; - FT_Int linear; - FT_Bool linear_def; - FT_Bool preserve_pps; - FT_Vector pp1; - FT_Vector pp2; - FT_Vector pp3; - FT_Vector pp4; - - FT_ULong glyf_offset; - - /* the zone where we load our glyphs */ - TT_GlyphZoneRec base; - TT_GlyphZoneRec zone; - - TT_ExecContext exec; - FT_Byte* instructions; - FT_ULong ins_pos; - - /* for possible extensibility in other formats */ - void* other; - - } TT_LoaderRec; - - -FT_END_HEADER - -#endif /* __TTTYPES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/t1tables.h b/nx-X11/extras/freetype2/include/freetype/t1tables.h deleted file mode 100644 index 60938aa83..000000000 --- a/nx-X11/extras/freetype2/include/freetype/t1tables.h +++ /dev/null @@ -1,399 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1tables.h */ -/* */ -/* Basic Type 1/Type 2 tables definitions and interface (specification */ -/* only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1TABLES_H__ -#define __T1TABLES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Section> */ - /* type1_tables */ - /* */ - /* <Title> */ - /* Type 1 Tables */ - /* */ - /* <Abstract> */ - /* Type 1 (PostScript) specific font tables. */ - /* */ - /* <Description> */ - /* This section contains the definition of Type 1-specific tables, */ - /* including structures related to other PostScript font formats. */ - /* */ - /*************************************************************************/ - - - /* Note that we separate font data in PS_FontInfoRec and PS_PrivateRec */ - /* structures in order to support Multiple Master fonts. */ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_FontInfoRec */ - /* */ - /* <Description> */ - /* A structure used to model a Type1/Type2 FontInfo dictionary. Note */ - /* that for Multiple Master fonts, each instance has its own */ - /* FontInfo. */ - /* */ - typedef struct PS_FontInfoRec - { - FT_String* version; - FT_String* notice; - FT_String* full_name; - FT_String* family_name; - FT_String* weight; - FT_Long italic_angle; - FT_Bool is_fixed_pitch; - FT_Short underline_position; - FT_UShort underline_thickness; - - } PS_FontInfoRec, *PS_FontInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_FontInfo */ - /* */ - /* <Description> */ - /* This type is equivalent to @PS_FontInfoRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef PS_FontInfoRec T1_FontInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* PS_PrivateRec */ - /* */ - /* <Description> */ - /* A structure used to model a Type1/Type2 private dictionary. Note */ - /* that for Multiple Master fonts, each instance has its own Private */ - /* dictionary. */ - /* */ - typedef struct PS_PrivateRec_ - { - FT_Int unique_id; - FT_Int lenIV; - - FT_Byte num_blue_values; - FT_Byte num_other_blues; - FT_Byte num_family_blues; - FT_Byte num_family_other_blues; - - FT_Short blue_values[14]; - FT_Short other_blues[10]; - - FT_Short family_blues [14]; - FT_Short family_other_blues[10]; - - FT_Fixed blue_scale; - FT_Int blue_shift; - FT_Int blue_fuzz; - - FT_UShort standard_width[1]; - FT_UShort standard_height[1]; - - FT_Byte num_snap_widths; - FT_Byte num_snap_heights; - FT_Bool force_bold; - FT_Bool round_stem_up; - - FT_Short snap_widths [13]; /* including std width */ - FT_Short snap_heights[13]; /* including std height */ - - FT_Fixed expansion_factor; - - FT_Long language_group; - FT_Long password; - - FT_Short min_feature[2]; - - } PS_PrivateRec, *PS_Private; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_Private */ - /* */ - /* <Description> */ - /* This type is equivalent to @PS_PrivateRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef PS_PrivateRec T1_Private; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* T1_Blend_Flags */ - /* */ - /* <Description> */ - /* A set of flags used to indicate which fields are present in a */ - /* given blend dictionary (font info or private). Used to support */ - /* Multiple Masters fonts. */ - /* */ - typedef enum - { - /*# required fields in a FontInfo blend dictionary */ - T1_BLEND_UNDERLINE_POSITION = 0, - T1_BLEND_UNDERLINE_THICKNESS, - T1_BLEND_ITALIC_ANGLE, - - /*# required fields in a Private blend dictionary */ - T1_BLEND_BLUE_VALUES, - T1_BLEND_OTHER_BLUES, - T1_BLEND_STANDARD_WIDTH, - T1_BLEND_STANDARD_HEIGHT, - T1_BLEND_STEM_SNAP_WIDTHS, - T1_BLEND_STEM_SNAP_HEIGHTS, - T1_BLEND_BLUE_SCALE, - T1_BLEND_BLUE_SHIFT, - T1_BLEND_FAMILY_BLUES, - T1_BLEND_FAMILY_OTHER_BLUES, - T1_BLEND_FORCE_BOLD, - - /*# never remove */ - T1_BLEND_MAX - - } T1_Blend_Flags; - - - /*# backwards compatible definitions */ -#define t1_blend_underline_position T1_BLEND_UNDERLINE_POSITION -#define t1_blend_underline_thickness T1_BLEND_UNDERLINE_THICKNESS -#define t1_blend_italic_angle T1_BLEND_ITALIC_ANGLE -#define t1_blend_blue_values T1_BLEND_BLUE_VALUES -#define t1_blend_other_blues T1_BLEND_OTHER_BLUES -#define t1_blend_standard_widths T1_BLEND_STANDARD_WIDTH -#define t1_blend_standard_height T1_BLEND_STANDARD_HEIGHT -#define t1_blend_stem_snap_widths T1_BLEND_STEM_SNAP_WIDTHS -#define t1_blend_stem_snap_heights T1_BLEND_STEM_SNAP_HEIGHTS -#define t1_blend_blue_scale T1_BLEND_BLUE_SCALE -#define t1_blend_blue_shift T1_BLEND_BLUE_SHIFT -#define t1_blend_family_blues T1_BLEND_FAMILY_BLUES -#define t1_blend_family_other_blues T1_BLEND_FAMILY_OTHER_BLUES -#define t1_blend_force_bold T1_BLEND_FORCE_BOLD -#define t1_blend_max T1_BLEND_MAX - - - /* maximum number of Multiple Masters designs, as defined in the spec */ -#define T1_MAX_MM_DESIGNS 16 - - /* maximum number of Multiple Masters axes, as defined in the spec */ -#define T1_MAX_MM_AXIS 4 - - /* maximum number of elements in a design map */ -#define T1_MAX_MM_MAP_POINTS 20 - - - /* this structure is used to store the BlendDesignMap entry for an axis */ - typedef struct PS_DesignMap_ - { - FT_Byte num_points; - FT_Long* design_points; - FT_Fixed* blend_points; - - } PS_DesignMapRec, *PS_DesignMap; - - /* backwards-compatible definition */ - typedef PS_DesignMapRec T1_DesignMap; - - - typedef struct PS_BlendRec_ - { - FT_UInt num_designs; - FT_UInt num_axis; - - FT_String* axis_names[T1_MAX_MM_AXIS]; - FT_Fixed* design_pos[T1_MAX_MM_DESIGNS]; - PS_DesignMapRec design_map[T1_MAX_MM_AXIS]; - - FT_Fixed* weight_vector; - FT_Fixed* default_weight_vector; - - PS_FontInfo font_infos[T1_MAX_MM_DESIGNS + 1]; - PS_Private privates [T1_MAX_MM_DESIGNS + 1]; - - FT_ULong blend_bitflags; - - FT_BBox* bboxes [T1_MAX_MM_DESIGNS + 1]; - - } PS_BlendRec, *PS_Blend; - - - /* backwards-compatible definition */ - typedef PS_BlendRec T1_Blend; - - - typedef struct CID_FaceDictRec_ - { - PS_PrivateRec private_dict; - - FT_UInt len_buildchar; - FT_Fixed forcebold_threshold; - FT_Pos stroke_width; - FT_Fixed expansion_factor; - - FT_Byte paint_type; - FT_Byte font_type; - FT_Matrix font_matrix; - FT_Vector font_offset; - - FT_UInt num_subrs; - FT_ULong subrmap_offset; - FT_Int sd_bytes; - - } CID_FaceDictRec, *CID_FaceDict; - - - /* backwards-compatible definition */ - typedef CID_FaceDictRec CID_FontDict; - - - typedef struct CID_FaceInfoRec_ - { - FT_String* cid_font_name; - FT_Fixed cid_version; - FT_Int cid_font_type; - - FT_String* registry; - FT_String* ordering; - FT_Int supplement; - - PS_FontInfoRec font_info; - FT_BBox font_bbox; - FT_ULong uid_base; - - FT_Int num_xuid; - FT_ULong xuid[16]; - - FT_ULong cidmap_offset; - FT_Int fd_bytes; - FT_Int gd_bytes; - FT_ULong cid_count; - - FT_Int num_dicts; - CID_FaceDict font_dicts; - - FT_ULong data_offset; - - } CID_FaceInfoRec, *CID_FaceInfo; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_Info */ - /* */ - /* <Description> */ - /* This type is equivalent to CID_FaceInfoRec. It is deprecated but */ - /* kept to maintain source compatibility between various versions of */ - /* FreeType. */ - /* */ - typedef CID_FaceInfoRec CID_Info; - - /* */ - - - /************************************************************************ - * - * @function: - * FT_Has_PS_Glyph_Names - * - * @description: - * Return true if a given face provides reliable Postscript glyph - * names. This is similar to using the @FT_HAS_GLYPH_NAMES macro, - * except that certain fonts (mostly TrueType) contain incorrect - * glyph name tables. - * - * When this function returns true, the caller is sure that the glyph - * names returned by @FT_Get_Glyph_Name are reliable. - * - * @input: - * face :: - * face handle - * - * @return: - * Boolean. True if glyph names are reliable. - */ - FT_EXPORT( FT_Int ) - FT_Has_PS_Glyph_Names( FT_Face face ); - - - /************************************************************************ - * - * @function: - * FT_Get_PS_Font_Info - * - * @description: - * Retrieve the @PS_FontInfoRec structure corresponding to a given - * Postscript font. - * - * @input: - * face :: - * Postscript face handle. - * - * @output: - * afont_info :: - * Output font info structure pointer. - * - * @return: - * FreeType error code. 0 means success. - * - * @note: - * The string pointers within the font info structure are owned by - * the face and don't need to be freed by the caller. - * - * If the font's format is not Postscript-based, this function will - * return the FT_Err_Invalid_Argument error code. - */ - FT_EXPORT( FT_Error ) - FT_Get_PS_Font_Info( FT_Face face, - PS_FontInfoRec *afont_info ); - - /* */ - - - -FT_END_HEADER - -#endif /* __T1TABLES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ttnameid.h b/nx-X11/extras/freetype2/include/freetype/ttnameid.h deleted file mode 100644 index 848374fe2..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ttnameid.h +++ /dev/null @@ -1,1076 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttnameid.h */ -/* */ -/* TrueType name ID definitions (specification only). */ -/* */ -/* Copyright 1996-2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTNAMEID_H__ -#define __TTNAMEID_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* Possible values for the `platform' identifier code in the name */ - /* records of the TTF `name' table. */ - /* */ - /*************************************************************************/ - - - /*********************************************************************** - * - * @enum: - * TT_PLATFORM_XXX - * - * @description: - * A list of valid values for the `platform_id' identifier code in - * @FT_CharMapRec and @FT_SfntName structures. - * - * @values: - * TT_PLATFORM_APPLE_UNICODE :: - * Used by Apple to indicate a Unicode character map and/or name entry. - * See @TT_APPLE_ID_XXX for corresponding `encoding_id' values. Note - * that name entries in this format are coded as big-endian UCS-2 - * character codes _only_. - * - * TT_PLATFORM_MACINTOSH :: - * Used by Apple to indicate a MacOS-specific charmap and/or name entry. - * See @TT_MAC_ID_XXX for corresponding `encoding_id' values. Note that - * most TrueType fonts contain an Apple roman charmap to be usable on - * MacOS systems (even if they contain a Microsoft charmap as well). - * - * TT_PLATFORM_ISO :: - * This value was used to specify Unicode charmaps. It is however - * now deprecated. See @TT_ISO_ID_XXX for a list of corresponding - * `encoding_id' values. - * - * TT_PLATFORM_MICROSOFT :: - * Used by Microsoft to indicate Windows-specific charmaps. See - * @TT_MS_ID_XXX for a list of corresponding `encoding_id' values. - * Note that most fonts contain a Unicode charmap using - * (@TT_PLATFORM_MICROSOFT, @TT_MS_ID_UNICODE_CS). - * - * TT_PLATFORM_CUSTOM :: - * Used to indicate application-specific charmaps. - * - * TT_PLATFORM_ADOBE :: - * This value isn't part of any font format specification, but is used - * by FreeType to report Adobe-specific charmaps in an @FT_CharMapRec - * structure. See @TT_ADOBE_ID_XXX. - */ - -#define TT_PLATFORM_APPLE_UNICODE 0 -#define TT_PLATFORM_MACINTOSH 1 -#define TT_PLATFORM_ISO 2 /* deprecated */ -#define TT_PLATFORM_MICROSOFT 3 -#define TT_PLATFORM_CUSTOM 4 -#define TT_PLATFORM_ADOBE 7 /* artificial */ - - - /*********************************************************************** - * - * @enum: - * TT_APPLE_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_APPLE_UNICODE charmaps and name entries. - * - * @values: - * TT_APPLE_ID_DEFAULT :: - * Unicode version 1.0. - * TT_APPLE_ID_UNICODE_1_1 :: - * Unicode 1.1; specifies Hangul characters starting at U+34xx. - * TT_APPLE_ID_ISO_10646 :: - * Deprecated (identical to preceding.) - * TT_APPLE_ID_UNICODE_2_0 :: - * Unicode 2.0 and beyond (UTF-16 BMP only.) - * TT_APPLE_ID_UNICODE_32 :: - * Unicode 3.1 and beyond, using UTF-32 - */ - -#define TT_APPLE_ID_DEFAULT 0 /* Unicode 1.0 */ -#define TT_APPLE_ID_UNICODE_1_1 1 /* specify Hangul at U+34xx */ -#define TT_APPLE_ID_ISO_10646 2 /* deprecated */ -#define TT_APPLE_ID_UNICODE_2_0 3 /* or later */ -#define TT_APPLE_ID_UNICODE_32 4 /* 2.0 or later, full repertoire */ - - - /*********************************************************************** - * - * @enum: - * TT_MAC_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_MACINTOSH charmaps and name entries. - * - * @values: - * TT_MAC_ID_ROMAN :: - * TT_MAC_ID_JAPANESE :: - * TT_MAC_ID_TRADITIONAL_CHINESE :: - * TT_MAC_ID_KOREAN :: - * TT_MAC_ID_ARABIC :: - * TT_MAC_ID_HEBREW :: - * TT_MAC_ID_GREEK :: - * TT_MAC_ID_RUSSIAN :: - * TT_MAC_ID_RSYMBOL :: - * TT_MAC_ID_DEVANAGARI :: - * TT_MAC_ID_GURMUKHI :: - * TT_MAC_ID_GUJARATI :: - * TT_MAC_ID_ORIYA :: - * TT_MAC_ID_BENGALI :: - * TT_MAC_ID_TAMIL :: - * TT_MAC_ID_TELUGU :: - * TT_MAC_ID_KANNADA :: - * TT_MAC_ID_MALAYALAM :: - * TT_MAC_ID_SINHALESE :: - * TT_MAC_ID_BURMESE :: - * TT_MAC_ID_KHMER :: - * TT_MAC_ID_THAI :: - * TT_MAC_ID_LAOTIAN :: - * TT_MAC_ID_GEORGIAN :: - * TT_MAC_ID_ARMENIAN :: - * TT_MAC_ID_MALDIVIAN :: - * TT_MAC_ID_SIMPLIFIED_CHINESE :: - * TT_MAC_ID_TIBETAN :: - * TT_MAC_ID_MONGOLIAN :: - * TT_MAC_ID_GEEZ :: - * TT_MAC_ID_SLAVIC :: - * TT_MAC_ID_VIETNAMESE :: - * TT_MAC_ID_SINDHI :: - * TT_MAC_ID_UNINTERP :: - */ - -#define TT_MAC_ID_ROMAN 0 -#define TT_MAC_ID_JAPANESE 1 -#define TT_MAC_ID_TRADITIONAL_CHINESE 2 -#define TT_MAC_ID_KOREAN 3 -#define TT_MAC_ID_ARABIC 4 -#define TT_MAC_ID_HEBREW 5 -#define TT_MAC_ID_GREEK 6 -#define TT_MAC_ID_RUSSIAN 7 -#define TT_MAC_ID_RSYMBOL 8 -#define TT_MAC_ID_DEVANAGARI 9 -#define TT_MAC_ID_GURMUKHI 10 -#define TT_MAC_ID_GUJARATI 11 -#define TT_MAC_ID_ORIYA 12 -#define TT_MAC_ID_BENGALI 13 -#define TT_MAC_ID_TAMIL 14 -#define TT_MAC_ID_TELUGU 15 -#define TT_MAC_ID_KANNADA 16 -#define TT_MAC_ID_MALAYALAM 17 -#define TT_MAC_ID_SINHALESE 18 -#define TT_MAC_ID_BURMESE 19 -#define TT_MAC_ID_KHMER 20 -#define TT_MAC_ID_THAI 21 -#define TT_MAC_ID_LAOTIAN 22 -#define TT_MAC_ID_GEORGIAN 23 -#define TT_MAC_ID_ARMENIAN 24 -#define TT_MAC_ID_MALDIVIAN 25 -#define TT_MAC_ID_SIMPLIFIED_CHINESE 25 -#define TT_MAC_ID_TIBETAN 26 -#define TT_MAC_ID_MONGOLIAN 27 -#define TT_MAC_ID_GEEZ 28 -#define TT_MAC_ID_SLAVIC 29 -#define TT_MAC_ID_VIETNAMESE 30 -#define TT_MAC_ID_SINDHI 31 -#define TT_MAC_ID_UNINTERP 32 - - - /*********************************************************************** - * - * @enum: - * TT_ISO_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_ISO charmaps and name entries. - * - * Their use is now deprecated. - * - * @values: - * TT_ISO_ID_7BIT_ASCII :: - * ASCII. - * TT_ISO_ID_10646 :: - * ISO/10646. - * TT_ISO_ID_8859_1 :: - * Also known as Latin-1. - */ - -#define TT_ISO_ID_7BIT_ASCII 0 -#define TT_ISO_ID_10646 1 -#define TT_ISO_ID_8859_1 2 - - - /*********************************************************************** - * - * @enum: - * TT_MS_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_MICROSOFT charmaps and name entries. - * - * @values: - * TT_MS_ID_SYMBOL_CS :: - * Corresponds to Microsoft symbol encoding. See - * @FT_ENCODING_MS_SYMBOL. - * - * TT_MS_ID_UNICODE_CS :: - * Corresponds to a Microsoft WGL4 charmap, matching Unicode. See - * @FT_ENCODING_UNICODE. - * - * TT_MS_ID_SJIS :: - * Corresponds to SJIS Japanese encoding. See @FT_ENCODING_SJIS. - * - * TT_MS_ID_GB2312 :: - * Corresponds to Simplified Chinese as used in Mainland China. See - * @FT_ENCODING_GB2312. - * - * TT_MS_ID_BIG_5 :: - * Corresponds to Traditional Chinese as used in Taiwan and Hong Kong. - * See @FT_ENCODING_BIG5. - * - * TT_MS_ID_WANSUNG :: - * Corresponds to Korean Wansung encoding. See @FT_ENCODING_WANSUNG. - * - * TT_MS_ID_JOHAB :: - * Corresponds to Johab encoding. See @FT_ENCODING_JOHAB. - * - * TT_MS_ID_UCS_4 :: - * Corresponds to UCS-4 or UTF-32 charmaps. This has been added to - * the OpenType specification version 1.4 (mid-2001.) - */ - -#define TT_MS_ID_SYMBOL_CS 0 -#define TT_MS_ID_UNICODE_CS 1 -#define TT_MS_ID_SJIS 2 -#define TT_MS_ID_GB2312 3 -#define TT_MS_ID_BIG_5 4 -#define TT_MS_ID_WANSUNG 5 -#define TT_MS_ID_JOHAB 6 -#define TT_MS_ID_UCS_4 10 - - - /*********************************************************************** - * - * @enum: - * TT_ADOBE_ID_XXX - * - * @description: - * A list of valid values for the `encoding_id' for - * @TT_PLATFORM_ADOBE charmaps. This is a FreeType-specific extension! - * - * @values: - * TT_ADOBE_ID_STANDARD :: - * Adobe standard encoding. - * TT_ADOBE_ID_EXPERT :: - * Adobe expert encoding. - * TT_ADOBE_ID_CUSTOM :: - * Adobe custom encoding. - */ - -#define TT_ADOBE_ID_STANDARD 0 -#define TT_ADOBE_ID_EXPERT 1 -#define TT_ADOBE_ID_CUSTOM 2 -#define TT_ADOBE_ID_LATIN_1 3 - - - /*************************************************************************/ - /* */ - /* Possible values of the language identifier field in the name records */ - /* of the TTF `name' table if the `platform' identifier code is */ - /* TT_PLATFORM_MACINTOSH. */ - /* */ - /* The canonical source for the Apple assigned Language ID's is at */ - /* */ - /* http://fonts.apple.com/TTRefMan/RM06/Chap6name.html */ - /* */ -#define TT_MAC_LANGID_ENGLISH 0 -#define TT_MAC_LANGID_FRENCH 1 -#define TT_MAC_LANGID_GERMAN 2 -#define TT_MAC_LANGID_ITALIAN 3 -#define TT_MAC_LANGID_DUTCH 4 -#define TT_MAC_LANGID_SWEDISH 5 -#define TT_MAC_LANGID_SPANISH 6 -#define TT_MAC_LANGID_DANISH 7 -#define TT_MAC_LANGID_PORTUGUESE 8 -#define TT_MAC_LANGID_NORWEGIAN 9 -#define TT_MAC_LANGID_HEBREW 10 -#define TT_MAC_LANGID_JAPANESE 11 -#define TT_MAC_LANGID_ARABIC 12 -#define TT_MAC_LANGID_FINNISH 13 -#define TT_MAC_LANGID_GREEK 14 -#define TT_MAC_LANGID_ICELANDIC 15 -#define TT_MAC_LANGID_MALTESE 16 -#define TT_MAC_LANGID_TURKISH 17 -#define TT_MAC_LANGID_CROATIAN 18 -#define TT_MAC_LANGID_CHINESE_TRADITIONAL 19 -#define TT_MAC_LANGID_URDU 20 -#define TT_MAC_LANGID_HINDI 21 -#define TT_MAC_LANGID_THAI 22 -#define TT_MAC_LANGID_KOREAN 23 -#define TT_MAC_LANGID_LITHUANIAN 24 -#define TT_MAC_LANGID_POLISH 25 -#define TT_MAC_LANGID_HUNGARIAN 26 -#define TT_MAC_LANGID_ESTONIAN 27 -#define TT_MAC_LANGID_LETTISH 28 -#define TT_MAC_LANGID_SAAMISK 29 -#define TT_MAC_LANGID_FAEROESE 30 -#define TT_MAC_LANGID_FARSI 31 -#define TT_MAC_LANGID_RUSSIAN 32 -#define TT_MAC_LANGID_CHINESE_SIMPLIFIED 33 -#define TT_MAC_LANGID_FLEMISH 34 -#define TT_MAC_LANGID_IRISH 35 -#define TT_MAC_LANGID_ALBANIAN 36 -#define TT_MAC_LANGID_ROMANIAN 37 -#define TT_MAC_LANGID_CZECH 38 -#define TT_MAC_LANGID_SLOVAK 39 -#define TT_MAC_LANGID_SLOVENIAN 40 -#define TT_MAC_LANGID_YIDDISH 41 -#define TT_MAC_LANGID_SERBIAN 42 -#define TT_MAC_LANGID_MACEDONIAN 43 -#define TT_MAC_LANGID_BULGARIAN 44 -#define TT_MAC_LANGID_UKRAINIAN 45 -#define TT_MAC_LANGID_BYELORUSSIAN 46 -#define TT_MAC_LANGID_UZBEK 47 -#define TT_MAC_LANGID_KAZAKH 48 -#define TT_MAC_LANGID_AZERBAIJANI 49 -#define TT_MAC_LANGID_AZERBAIJANI_CYRILLIC_SCRIPT 49 -#define TT_MAC_LANGID_AZERBAIJANI_ARABIC_SCRIPT 50 -#define TT_MAC_LANGID_ARMENIAN 51 -#define TT_MAC_LANGID_GEORGIAN 52 -#define TT_MAC_LANGID_MOLDAVIAN 53 -#define TT_MAC_LANGID_KIRGHIZ 54 -#define TT_MAC_LANGID_TAJIKI 55 -#define TT_MAC_LANGID_TURKMEN 56 -#define TT_MAC_LANGID_MONGOLIAN 57 -#define TT_MAC_LANGID_MONGOLIAN_MONGOLIAN_SCRIPT 57 -#define TT_MAC_LANGID_MONGOLIAN_CYRILLIC_SCRIPT 58 -#define TT_MAC_LANGID_PASHTO 59 -#define TT_MAC_LANGID_KURDISH 60 -#define TT_MAC_LANGID_KASHMIRI 61 -#define TT_MAC_LANGID_SINDHI 62 -#define TT_MAC_LANGID_TIBETAN 63 -#define TT_MAC_LANGID_NEPALI 64 -#define TT_MAC_LANGID_SANSKRIT 65 -#define TT_MAC_LANGID_MARATHI 66 -#define TT_MAC_LANGID_BENGALI 67 -#define TT_MAC_LANGID_ASSAMESE 68 -#define TT_MAC_LANGID_GUJARATI 69 -#define TT_MAC_LANGID_PUNJABI 70 -#define TT_MAC_LANGID_ORIYA 71 -#define TT_MAC_LANGID_MALAYALAM 72 -#define TT_MAC_LANGID_KANNADA 73 -#define TT_MAC_LANGID_TAMIL 74 -#define TT_MAC_LANGID_TELUGU 75 -#define TT_MAC_LANGID_SINHALESE 76 -#define TT_MAC_LANGID_BURMESE 77 -#define TT_MAC_LANGID_KHMER 78 -#define TT_MAC_LANGID_LAO 79 -#define TT_MAC_LANGID_VIETNAMESE 80 -#define TT_MAC_LANGID_INDONESIAN 81 -#define TT_MAC_LANGID_TAGALOG 82 -#define TT_MAC_LANGID_MALAY_ROMAN_SCRIPT 83 -#define TT_MAC_LANGID_MALAY_ARABIC_SCRIPT 84 -#define TT_MAC_LANGID_AMHARIC 85 -#define TT_MAC_LANGID_TIGRINYA 86 -#define TT_MAC_LANGID_GALLA 87 -#define TT_MAC_LANGID_SOMALI 88 -#define TT_MAC_LANGID_SWAHILI 89 -#define TT_MAC_LANGID_RUANDA 90 -#define TT_MAC_LANGID_RUNDI 91 -#define TT_MAC_LANGID_CHEWA 92 -#define TT_MAC_LANGID_MALAGASY 93 -#define TT_MAC_LANGID_ESPERANTO 94 -#define TT_MAC_LANGID_WELSH 128 -#define TT_MAC_LANGID_BASQUE 129 -#define TT_MAC_LANGID_CATALAN 130 -#define TT_MAC_LANGID_LATIN 131 -#define TT_MAC_LANGID_QUECHUA 132 -#define TT_MAC_LANGID_GUARANI 133 -#define TT_MAC_LANGID_AYMARA 134 -#define TT_MAC_LANGID_TATAR 135 -#define TT_MAC_LANGID_UIGHUR 136 -#define TT_MAC_LANGID_DZONGKHA 137 -#define TT_MAC_LANGID_JAVANESE 138 -#define TT_MAC_LANGID_SUNDANESE 139 - - -#if 0 /* these seem to be errors that have been dropped */ - -#define TT_MAC_LANGID_SCOTTISH_GAELIC 140 -#define TT_MAC_LANGID_IRISH_GAELIC 141 - -#endif - - - /* The following codes are new as of 2000-03-10 */ -#define TT_MAC_LANGID_GALICIAN 140 -#define TT_MAC_LANGID_AFRIKAANS 141 -#define TT_MAC_LANGID_BRETON 142 -#define TT_MAC_LANGID_INUKTITUT 143 -#define TT_MAC_LANGID_SCOTTISH_GAELIC 144 -#define TT_MAC_LANGID_MANX_GAELIC 145 -#define TT_MAC_LANGID_IRISH_GAELIC 146 -#define TT_MAC_LANGID_TONGAN 147 -#define TT_MAC_LANGID_GREEK_POLYTONIC 148 -#define TT_MAC_LANGID_GREELANDIC 149 -#define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT 150 - - - /*************************************************************************/ - /* */ - /* Possible values of the language identifier field in the name records */ - /* of the TTF `name' table if the `platform' identifier code is */ - /* TT_PLATFORM_MICROSOFT. */ - /* */ - /* The canonical source for the MS assigned LCID's used to be at */ - /* */ - /* http://www.microsoft.com/typography/OTSPEC/lcid-cp.txt */ - /* */ - /* Now (2002-11-15), the Microsoft site directs to */ - /* */ - /* http://www.microsoft.com/globaldev/reference/loclanghome.asp */ - /* http://support.microsoft.com/support/kb/articles/Q224/8/04.ASP */ - /* */ -#define TT_MS_LANGID_ARABIC_SAUDI_ARABIA 0x0401 -#define TT_MS_LANGID_ARABIC_IRAQ 0x0801 -#define TT_MS_LANGID_ARABIC_EGYPT 0x0c01 -#define TT_MS_LANGID_ARABIC_LIBYA 0x1001 -#define TT_MS_LANGID_ARABIC_ALGERIA 0x1401 -#define TT_MS_LANGID_ARABIC_MOROCCO 0x1801 -#define TT_MS_LANGID_ARABIC_TUNISIA 0x1c01 -#define TT_MS_LANGID_ARABIC_OMAN 0x2001 -#define TT_MS_LANGID_ARABIC_YEMEN 0x2401 -#define TT_MS_LANGID_ARABIC_SYRIA 0x2801 -#define TT_MS_LANGID_ARABIC_JORDAN 0x2c01 -#define TT_MS_LANGID_ARABIC_LEBANON 0x3001 -#define TT_MS_LANGID_ARABIC_KUWAIT 0x3401 -#define TT_MS_LANGID_ARABIC_UAE 0x3801 -#define TT_MS_LANGID_ARABIC_BAHRAIN 0x3c01 -#define TT_MS_LANGID_ARABIC_QATAR 0x4001 -#define TT_MS_LANGID_BULGARIAN_BULGARIA 0x0402 -#define TT_MS_LANGID_CATALAN_SPAIN 0x0403 -#define TT_MS_LANGID_CHINESE_TAIWAN 0x0404 -#define TT_MS_LANGID_CHINESE_PRC 0x0804 -#define TT_MS_LANGID_CHINESE_HONG_KONG 0x0c04 -#define TT_MS_LANGID_CHINESE_SINGAPORE 0x1004 - -#if 1 /* this used to be this value (and it still is in many places) */ -#define TT_MS_LANGID_CHINESE_MACAU 0x1404 -#else /* but beware, Microsoft may change its mind... - the most recent Word reference has the following: */ -#define TT_MS_LANGID_CHINESE_MACAU TT_MS_LANGID_CHINESE_HONG_KONG -#endif - -#define TT_MS_LANGID_CZECH_CZECH_REPUBLIC 0x0405 -#define TT_MS_LANGID_DANISH_DENMARK 0x0406 -#define TT_MS_LANGID_GERMAN_GERMANY 0x0407 -#define TT_MS_LANGID_GERMAN_SWITZERLAND 0x0807 -#define TT_MS_LANGID_GERMAN_AUSTRIA 0x0c07 -#define TT_MS_LANGID_GERMAN_LUXEMBOURG 0x1007 -#define TT_MS_LANGID_GERMAN_LIECHTENSTEI 0x1407 -#define TT_MS_LANGID_GREEK_GREECE 0x0408 -#define TT_MS_LANGID_ENGLISH_UNITED_STATES 0x0409 -#define TT_MS_LANGID_ENGLISH_UNITED_KINGDOM 0x0809 -#define TT_MS_LANGID_ENGLISH_AUSTRALIA 0x0c09 -#define TT_MS_LANGID_ENGLISH_CANADA 0x1009 -#define TT_MS_LANGID_ENGLISH_NEW_ZEALAND 0x1409 -#define TT_MS_LANGID_ENGLISH_IRELAND 0x1809 -#define TT_MS_LANGID_ENGLISH_SOUTH_AFRICA 0x1c09 -#define TT_MS_LANGID_ENGLISH_JAMAICA 0x2009 -#define TT_MS_LANGID_ENGLISH_CARIBBEAN 0x2409 -#define TT_MS_LANGID_ENGLISH_BELIZE 0x2809 -#define TT_MS_LANGID_ENGLISH_TRINIDAD 0x2c09 -#define TT_MS_LANGID_ENGLISH_ZIMBABWE 0x3009 -#define TT_MS_LANGID_ENGLISH_PHILIPPINES 0x3409 -#define TT_MS_LANGID_SPANISH_SPAIN_TRADITIONAL_SORT 0x040a -#define TT_MS_LANGID_SPANISH_MEXICO 0x080a -#define TT_MS_LANGID_SPANISH_SPAIN_INTERNATIONAL_SORT 0x0c0a -#define TT_MS_LANGID_SPANISH_GUATEMALA 0x100a -#define TT_MS_LANGID_SPANISH_COSTA_RICA 0x140a -#define TT_MS_LANGID_SPANISH_PANAMA 0x180a -#define TT_MS_LANGID_SPANISH_DOMINICAN_REPUBLIC 0x1c0a -#define TT_MS_LANGID_SPANISH_VENEZUELA 0x200a -#define TT_MS_LANGID_SPANISH_COLOMBIA 0x240a -#define TT_MS_LANGID_SPANISH_PERU 0x280a -#define TT_MS_LANGID_SPANISH_ARGENTINA 0x2c0a -#define TT_MS_LANGID_SPANISH_ECUADOR 0x300a -#define TT_MS_LANGID_SPANISH_CHILE 0x340a -#define TT_MS_LANGID_SPANISH_URUGUAY 0x380a -#define TT_MS_LANGID_SPANISH_PARAGUAY 0x3c0a -#define TT_MS_LANGID_SPANISH_BOLIVIA 0x400a -#define TT_MS_LANGID_SPANISH_EL_SALVADOR 0x440a -#define TT_MS_LANGID_SPANISH_HONDURAS 0x480a -#define TT_MS_LANGID_SPANISH_NICARAGUA 0x4c0a -#define TT_MS_LANGID_SPANISH_PUERTO_RICO 0x500a -#define TT_MS_LANGID_FINNISH_FINLAND 0x040b -#define TT_MS_LANGID_FRENCH_FRANCE 0x040c -#define TT_MS_LANGID_FRENCH_BELGIUM 0x080c -#define TT_MS_LANGID_FRENCH_CANADA 0x0c0c -#define TT_MS_LANGID_FRENCH_SWITZERLAND 0x100c -#define TT_MS_LANGID_FRENCH_LUXEMBOURG 0x140c -#define TT_MS_LANGID_FRENCH_MONACO 0x180c -#define TT_MS_LANGID_HEBREW_ISRAEL 0x040d -#define TT_MS_LANGID_HUNGARIAN_HUNGARY 0x040e -#define TT_MS_LANGID_ICELANDIC_ICELAND 0x040f -#define TT_MS_LANGID_ITALIAN_ITALY 0x0410 -#define TT_MS_LANGID_ITALIAN_SWITZERLAND 0x0810 -#define TT_MS_LANGID_JAPANESE_JAPAN 0x0411 -#define TT_MS_LANGID_KOREAN_EXTENDED_WANSUNG_KOREA 0x0412 -#define TT_MS_LANGID_KOREAN_JOHAB_KOREA 0x0812 -#define TT_MS_LANGID_DUTCH_NETHERLANDS 0x0413 -#define TT_MS_LANGID_DUTCH_BELGIUM 0x0813 -#define TT_MS_LANGID_NORWEGIAN_NORWAY_BOKMAL 0x0414 -#define TT_MS_LANGID_NORWEGIAN_NORWAY_NYNORSK 0x0814 -#define TT_MS_LANGID_POLISH_POLAND 0x0415 -#define TT_MS_LANGID_PORTUGUESE_BRAZIL 0x0416 -#define TT_MS_LANGID_PORTUGUESE_PORTUGAL 0x0816 -#define TT_MS_LANGID_RHAETO_ROMANIC_SWITZERLAND 0x0417 -#define TT_MS_LANGID_ROMANIAN_ROMANIA 0x0418 -#define TT_MS_LANGID_MOLDAVIAN_MOLDAVIA 0x0818 -#define TT_MS_LANGID_RUSSIAN_RUSSIA 0x0419 -#define TT_MS_LANGID_RUSSIAN_MOLDAVIA 0x0819 -#define TT_MS_LANGID_CROATIAN_CROATIA 0x041a -#define TT_MS_LANGID_SERBIAN_SERBIA_LATIN 0x081a -#define TT_MS_LANGID_SERBIAN_SERBIA_CYRILLIC 0x0c1a -#define TT_MS_LANGID_SLOVAK_SLOVAKIA 0x041b -#define TT_MS_LANGID_ALBANIAN_ALBANIA 0x041c -#define TT_MS_LANGID_SWEDISH_SWEDEN 0x041d -#define TT_MS_LANGID_SWEDISH_FINLAND 0x081d -#define TT_MS_LANGID_THAI_THAILAND 0x041e -#define TT_MS_LANGID_TURKISH_TURKEY 0x041f -#define TT_MS_LANGID_URDU_PAKISTAN 0x0420 -#define TT_MS_LANGID_INDONESIAN_INDONESIA 0x0421 -#define TT_MS_LANGID_UKRAINIAN_UKRAINE 0x0422 -#define TT_MS_LANGID_BELARUSIAN_BELARUS 0x0423 -#define TT_MS_LANGID_SLOVENE_SLOVENIA 0x0424 -#define TT_MS_LANGID_ESTONIAN_ESTONIA 0x0425 -#define TT_MS_LANGID_LATVIAN_LATVIA 0x0426 -#define TT_MS_LANGID_LITHUANIAN_LITHUANIA 0x0427 -#define TT_MS_LANGID_CLASSIC_LITHUANIAN_LITHUANIA 0x0827 - -#if 0 /* this seems to be an error that have been dropped */ -#define TT_MS_LANGID_MAORI_NEW_ZEALAND 0x0428 -#endif - -#define TT_MS_LANGID_FARSI_IRAN 0x0429 -#define TT_MS_LANGID_VIETNAMESE_VIET_NAM 0x042a -#define TT_MS_LANGID_ARMENIAN_ARMENIA 0x042b -#define TT_MS_LANGID_AZERI_AZERBAIJAN_LATIN 0x042c -#define TT_MS_LANGID_AZERI_AZERBAIJAN_CYRILLIC 0x082c -#define TT_MS_LANGID_BASQUE_SPAIN 0x042d -#define TT_MS_LANGID_SORBIAN_GERMANY 0x042e -#define TT_MS_LANGID_MACEDONIAN_MACEDONIA 0x042f -#define TT_MS_LANGID_SUTU_SOUTH_AFRICA 0x0430 -#define TT_MS_LANGID_TSONGA_SOUTH_AFRICA 0x0431 -#define TT_MS_LANGID_TSWANA_SOUTH_AFRICA 0x0432 -#define TT_MS_LANGID_VENDA_SOUTH_AFRICA 0x0433 -#define TT_MS_LANGID_XHOSA_SOUTH_AFRICA 0x0434 -#define TT_MS_LANGID_ZULU_SOUTH_AFRICA 0x0435 -#define TT_MS_LANGID_AFRIKAANS_SOUTH_AFRICA 0x0436 -#define TT_MS_LANGID_GEORGIAN_GEORGIA 0x0437 -#define TT_MS_LANGID_FAEROESE_FAEROE_ISLANDS 0x0438 -#define TT_MS_LANGID_HINDI_INDIA 0x0439 -#define TT_MS_LANGID_MALTESE_MALTA 0x043a -#define TT_MS_LANGID_SAAMI_LAPONIA 0x043b - -#if 0 /* this seems to be a previous invertion */ -#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c -#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c -#else -#define TT_MS_LANGID_SCOTTISH_GAELIC_UNITED_KINGDOM 0x083c -#define TT_MS_LANGID_IRISH_GAELIC_IRELAND 0x043c -#endif - -#define TT_MS_LANGID_MALAY_MALAYSIA 0x043e -#define TT_MS_LANGID_MALAY_BRUNEI_DARUSSALAM 0x083e -#define TT_MS_LANGID_KAZAK_KAZAKSTAN 0x043f -#define TT_MS_LANGID_SWAHILI_KENYA 0x0441 -#define TT_MS_LANGID_UZBEK_UZBEKISTAN_LATIN 0x0443 -#define TT_MS_LANGID_UZBEK_UZBEKISTAN_CYRILLIC 0x0843 -#define TT_MS_LANGID_TATAR_TATARSTAN 0x0444 -#define TT_MS_LANGID_BENGALI_INDIA 0x0445 -#define TT_MS_LANGID_PUNJABI_INDIA 0x0446 -#define TT_MS_LANGID_GUJARATI_INDIA 0x0447 -#define TT_MS_LANGID_ORIYA_INDIA 0x0448 -#define TT_MS_LANGID_TAMIL_INDIA 0x0449 -#define TT_MS_LANGID_TELUGU_INDIA 0x044a -#define TT_MS_LANGID_KANNADA_INDIA 0x044b -#define TT_MS_LANGID_MALAYALAM_INDIA 0x044c -#define TT_MS_LANGID_ASSAMESE_INDIA 0x044d -#define TT_MS_LANGID_MARATHI_INDIA 0x044e -#define TT_MS_LANGID_SANSKRIT_INDIA 0x044f -#define TT_MS_LANGID_KONKANI_INDIA 0x0457 - - /* new as of 2001-01-01 */ -#define TT_MS_LANGID_ARABIC_GENERAL 0x0001 -#define TT_MS_LANGID_CHINESE_GENERAL 0x0004 -#define TT_MS_LANGID_ENGLISH_GENERAL 0x0009 -#define TT_MS_LANGID_FRENCH_WEST_INDIES 0x1c0c -#define TT_MS_LANGID_FRENCH_REUNION 0x200c -#define TT_MS_LANGID_FRENCH_CONGO 0x240c - /* which was formerly: */ -#define TT_MS_LANGID_FRENCH_ZAIRE TT_MS_LANGID_FRENCH_CONGO - -#define TT_MS_LANGID_FRENCH_SENEGAL 0x280c -#define TT_MS_LANGID_FRENCH_CAMEROON 0x2c0c -#define TT_MS_LANGID_FRENCH_COTE_D_IVOIRE 0x300c -#define TT_MS_LANGID_FRENCH_MALI 0x340c -#define TT_MS_LANGID_BOSNIAN_BOSNIA_HERZEGOVINA 0x101a -#define TT_MS_LANGID_URDU_INDIA 0x0820 -#define TT_MS_LANGID_TAJIK_TAJIKISTAN 0x0428 -#define TT_MS_LANGID_YIDDISH_GERMANY 0x043d -#define TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN 0x0440 - /* alias declared in Windows 2000 */ -#define TT_MS_LANGID_KIRGHIZ_KIRGHIZ_REPUBLIC \ - TT_MS_LANGID_KIRGHIZ_KIRGHIZSTAN - -#define TT_MS_LANGID_TURKMEN_TURKMENISTAN 0x0442 -#define TT_MS_LANGID_MONGOLIAN_MONGOLIA /* Cyrillic */ 0x0450 - - /* the following seems to be inconsistent; - here is the current "official" way: */ -#define TT_MS_LANGID_TIBETAN_BHUTAN 0x0451 - /* and here is what is used by Passport SDK */ -#define TT_MS_LANGID_TIBETAN_CHINA 0x0451 -#define TT_MS_LANGID_DZONGHKA_BHUTAN 0x0851 - /* end of inconsistency */ - -#define TT_MS_LANGID_WELSH_WALES 0x0452 -#define TT_MS_LANGID_KHMER_CAMBODIA 0x0453 -#define TT_MS_LANGID_LAO_LAOS 0x0454 -#define TT_MS_LANGID_BURMESE_MYANMAR 0x0455 -#define TT_MS_LANGID_GALICIAN_SPAIN 0x0456 -#define TT_MS_LANGID_MANIPURI_INDIA 0x0458 -#define TT_MS_LANGID_SINDHI_INDIA 0x0459 - /* the following one is only encountered in Microsoft RTF specification */ -#define TT_MS_LANGID_KASHMIRI_PAKISTAN 0x0460 - /* the following one is not in the Passport list, looks like an omission */ -#define TT_MS_LANGID_KASHMIRI_INDIA 0x0860 -#define TT_MS_LANGID_NEPALI_NEPAL 0x0461 -#define TT_MS_LANGID_NEPALI_INDIA 0x0861 -#define TT_MS_LANGID_FRISIAN_NETHERLANDS 0x0462 - - /* new as of 2001-03-01 (from Office Xp) */ -#define TT_MS_LANGID_ENGLISH_HONG_KONG 0x3c09 -#define TT_MS_LANGID_ENGLISH_INDIA 0x4009 -#define TT_MS_LANGID_ENGLISH_MALAYSIA 0x4409 -#define TT_MS_LANGID_ENGLISH_SINGAPORE 0x4809 -#define TT_MS_LANGID_SYRIAC_SYRIA 0x045a -#define TT_MS_LANGID_SINHALESE_SRI_LANKA 0x045b -#define TT_MS_LANGID_CHEROKEE_UNITED_STATES 0x045c -#define TT_MS_LANGID_INUKTITUT_CANADA 0x045d -#define TT_MS_LANGID_AMHARIC_ETHIOPIA 0x045e -#define TT_MS_LANGID_TAMAZIGHT_MOROCCO 0x045f -#define TT_MS_LANGID_TAMAZIGHT_MOROCCO_LATIN 0x085f -#define TT_MS_LANGID_PASHTO_AFGHANISTAN 0x0463 -#define TT_MS_LANGID_FILIPINO_PHILIPPINES 0x0464 -#define TT_MS_LANGID_DHIVEHI_MALDIVES 0x0465 - /* alias declared in Windows 2000 */ -#define TT_MS_LANGID_DIVEHI_MALDIVES TT_MS_LANGID_DHIVEHI_MALDIVES - /* for language codes from 0x0466 to 0x0471 see below */ -#define TT_MS_LANGID_OROMO_ETHIOPIA 0x0472 -#define TT_MS_LANGID_TIGRIGNA_ETHIOPIA 0x0473 -#define TT_MS_LANGID_TIGRIGNA_ERYTHREA 0x0873 - /* also spelled in the `Passport SDK' list as: */ -#define TT_MS_LANGID_TIGRIGNA_ERYTREA TT_MS_LANGID_TIGRIGNA_ERYTHREA - - /* New additions from Windows Xp/Passport SDK 2001-11-10. */ - - /* don't ask what this one means... It is commented out currently. */ -#if 0 -#define TT_MS_LANGID_GREEK_GREECE2 0x2008 -#endif - -#define TT_MS_LANGID_SPANISH_UNITED_STATES 0x540a - /* The following two IDs blatantly violate MS specs by using a */ - /* sublanguage > 0x1F. */ -#define TT_MS_LANGID_SPANISH_LATIN_AMERICA 0xE40aU -#define TT_MS_LANGID_FRENCH_NORTH_AFRICA 0xE40cU - -#define TT_MS_LANGID_FRENCH_MOROCCO 0x380c -#define TT_MS_LANGID_FRENCH_HAITI 0x3c0c -#define TT_MS_LANGID_BENGALI_BANGLADESH 0x0845 -#define TT_MS_LANGID_PUNJABI_ARABIC_PAKISTAN 0x0846 -#define TT_MS_LANGID_MONGOLIAN_MONGOLIA_MONGOLIAN 0x0850 -#define TT_MS_LANGID_EDO_NIGERIA 0x0466 -#define TT_MS_LANGID_FULFULDE_NIGERIA 0x0467 -#define TT_MS_LANGID_HAUSA_NIGERIA 0x0468 -#define TT_MS_LANGID_IBIBIO_NIGERIA 0x0469 -#define TT_MS_LANGID_YORUBA_NIGERIA 0x046a - /* language codes from 0x046b to 0x046f are (still) unknown. */ -#define TT_MS_LANGID_IGBO_NIGERIA 0x0470 -#define TT_MS_LANGID_KANURI_NIGERIA 0x0471 -#define TT_MS_LANGID_GUARANI_PARAGUAY 0x0474 -#define TT_MS_LANGID_HAWAIIAN_UNITED_STATES 0x0475 -#define TT_MS_LANGID_LATIN 0x0476 -#define TT_MS_LANGID_SOMALI_SOMALIA 0x0477 - /* Note: Yi does not have a (proper) ISO 639-2 code, since it is mostly */ - /* not written (but OTOH the peculiar writing system is worth */ - /* studying). */ -#define TT_MS_LANGID_YI_CHINA 0x0478 -#define TT_MS_LANGID_PAPIAMENTU_NETHERLANDS_ANTILLES 0x0479 - - - /*************************************************************************/ - /* */ - /* Possible values of the `name' identifier field in the name records of */ - /* the TTF `name' table. These values are platform independent. */ - /* */ -#define TT_NAME_ID_COPYRIGHT 0 -#define TT_NAME_ID_FONT_FAMILY 1 -#define TT_NAME_ID_FONT_SUBFAMILY 2 -#define TT_NAME_ID_UNIQUE_ID 3 -#define TT_NAME_ID_FULL_NAME 4 -#define TT_NAME_ID_VERSION_STRING 5 -#define TT_NAME_ID_PS_NAME 6 -#define TT_NAME_ID_TRADEMARK 7 - - /* the following values are from the OpenType spec */ -#define TT_NAME_ID_MANUFACTURER 8 -#define TT_NAME_ID_DESIGNER 9 -#define TT_NAME_ID_DESCRIPTION 10 -#define TT_NAME_ID_VENDOR_URL 11 -#define TT_NAME_ID_DESIGNER_URL 12 -#define TT_NAME_ID_LICENSE 13 -#define TT_NAME_ID_LICENSE_URL 14 - /* number 15 is reserved */ -#define TT_NAME_ID_PREFERRED_FAMILY 16 -#define TT_NAME_ID_PREFERRED_SUBFAMILY 17 -#define TT_NAME_ID_MAC_FULL_NAME 18 - - /* The following code is new as of 2000-01-21 */ -#define TT_NAME_ID_SAMPLE_TEXT 19 - - /* This is new in OpenType 1.3 */ -#define TT_NAME_ID_CID_FINDFONT_NAME 20 - - - /*************************************************************************/ - /* */ - /* Bit mask values for the Unicode Ranges from the TTF `OS2 ' table. */ - /* */ - /* Updated 02-Jul-2000. */ - /* */ - - /* General Scripts Area */ - - /* Bit 0 Basic Latin */ -#define TT_UCR_BASIC_LATIN (1L << 0) /* U+0020-U+007E */ - /* Bit 1 C1 Controls and Latin-1 Supplement */ -#define TT_UCR_LATIN1_SUPPLEMENT (1L << 1) /* U+0080-U+00FF */ - /* Bit 2 Latin Extended-A */ -#define TT_UCR_LATIN_EXTENDED_A (1L << 2) /* U+0100-U+017F */ - /* Bit 3 Latin Extended-B */ -#define TT_UCR_LATIN_EXTENDED_B (1L << 3) /* U+0180-U+024F */ - /* Bit 4 IPA Extensions */ -#define TT_UCR_IPA_EXTENSIONS (1L << 4) /* U+0250-U+02AF */ - /* Bit 5 Spacing Modifier Letters */ -#define TT_UCR_SPACING_MODIFIER (1L << 5) /* U+02B0-U+02FF */ - /* Bit 6 Combining Diacritical Marks */ -#define TT_UCR_COMBINING_DIACRITICS (1L << 6) /* U+0300-U+036F */ - /* Bit 7 Greek and Coptic */ -#define TT_UCR_GREEK (1L << 7) /* U+0370-U+03FF */ - /* Bit 8 is reserved (was: Greek Symbols and Coptic) */ - /* Bit 9 Cyrillic + */ - /* Cyrillic Supplementary */ -#define TT_UCR_CYRILLIC (1L << 9) /* U+0400-U+04FF */ - /* U+0500-U+052F */ - /* Bit 10 Armenian */ -#define TT_UCR_ARMENIAN (1L << 10) /* U+0530-U+058F */ - /* Bit 11 Hebrew */ -#define TT_UCR_HEBREW (1L << 11) /* U+0590-U+05FF */ - /* Bit 12 is reserved (was: Hebrew Extended) */ - /* Bit 13 Arabic */ -#define TT_UCR_ARABIC (1L << 13) /* U+0600-U+06FF */ - /* Bit 14 is reserved (was: Arabic Extended) */ - /* Bit 15 Devanagari */ -#define TT_UCR_DEVANAGARI (1L << 15) /* U+0900-U+097F */ - /* Bit 16 Bengali */ -#define TT_UCR_BENGALI (1L << 16) /* U+0980-U+09FF */ - /* Bit 17 Gurmukhi */ -#define TT_UCR_GURMUKHI (1L << 17) /* U+0A00-U+0A7F */ - /* Bit 18 Gujarati */ -#define TT_UCR_GUJARATI (1L << 18) /* U+0A80-U+0AFF */ - /* Bit 19 Oriya */ -#define TT_UCR_ORIYA (1L << 19) /* U+0B00-U+0B7F */ - /* Bit 20 Tamil */ -#define TT_UCR_TAMIL (1L << 20) /* U+0B80-U+0BFF */ - /* Bit 21 Telugu */ -#define TT_UCR_TELUGU (1L << 21) /* U+0C00-U+0C7F */ - /* Bit 22 Kannada */ -#define TT_UCR_KANNADA (1L << 22) /* U+0C80-U+0CFF */ - /* Bit 23 Malayalam */ -#define TT_UCR_MALAYALAM (1L << 23) /* U+0D00-U+0D7F */ - /* Bit 24 Thai */ -#define TT_UCR_THAI (1L << 24) /* U+0E00-U+0E7F */ - /* Bit 25 Lao */ -#define TT_UCR_LAO (1L << 25) /* U+0E80-U+0EFF */ - /* Bit 26 Georgian */ -#define TT_UCR_GEORGIAN (1L << 26) /* U+10A0-U+10FF */ - /* Bit 27 is reserved (was Georgian Extended) */ - /* Bit 28 Hangul Jamo */ -#define TT_UCR_HANGUL_JAMO (1L << 28) /* U+1100-U+11FF */ - /* Bit 29 Latin Extended Additional */ -#define TT_UCR_LATIN_EXTENDED_ADDITIONAL (1L << 29) /* U+1E00-U+1EFF */ - /* Bit 30 Greek Extended */ -#define TT_UCR_GREEK_EXTENDED (1L << 30) /* U+1F00-U+1FFF */ - - /* Symbols Area */ - - /* Bit 31 General Punctuation */ -#define TT_UCR_GENERAL_PUNCTUATION (1L << 31) /* U+2000-U+206F */ - /* Bit 32 Superscripts And Subscripts */ -#define TT_UCR_SUPERSCRIPTS_SUBSCRIPTS (1L << 0) /* U+2070-U+209F */ - /* Bit 33 Currency Symbols */ -#define TT_UCR_CURRENCY_SYMBOLS (1L << 1) /* U+20A0-U+20CF */ - /* Bit 34 Combining Diacritical Marks For Symbols */ -#define TT_UCR_COMBINING_DIACRITICS_SYMB (1L << 2) /* U+20D0-U+20FF */ - /* Bit 35 Letterlike Symbols */ -#define TT_UCR_LETTERLIKE_SYMBOLS (1L << 3) /* U+2100-U+214F */ - /* Bit 36 Number Forms */ -#define TT_UCR_NUMBER_FORMS (1L << 4) /* U+2150-U+218F */ - /* Bit 37 Arrows + */ - /* Supplemental Arrows-A + */ - /* Supplemental Arrows-B */ -#define TT_UCR_ARROWS (1L << 5) /* U+2190-U+21FF */ - /* U+27F0-U+27FF */ - /* U+2900-U+297F */ - /* Bit 38 Mathematical Operators + */ - /* Supplemental Mathematical Operators + */ - /* Miscellaneous Mathematical Symbols-A + */ - /* Miscellaneous Mathematical Symbols-B */ -#define TT_UCR_MATHEMATICAL_OPERATORS (1L << 6) /* U+2200-U+22FF */ - /* U+2A00-U+2AFF */ - /* U+27C0-U+27EF */ - /* U+2980-U+29FF */ - /* Bit 39 Miscellaneous Technical */ -#define TT_UCR_MISCELLANEOUS_TECHNICAL (1L << 7) /* U+2300-U+23FF */ - /* Bit 40 Control Pictures */ -#define TT_UCR_CONTROL_PICTURES (1L << 8) /* U+2400-U+243F */ - /* Bit 41 Optical Character Recognition */ -#define TT_UCR_OCR (1L << 9) /* U+2440-U+245F */ - /* Bit 42 Enclosed Alphanumerics */ -#define TT_UCR_ENCLOSED_ALPHANUMERICS (1L << 10) /* U+2460-U+24FF */ - /* Bit 43 Box Drawing */ -#define TT_UCR_BOX_DRAWING (1L << 11) /* U+2500-U+257F */ - /* Bit 44 Block Elements */ -#define TT_UCR_BLOCK_ELEMENTS (1L << 12) /* U+2580-U+259F */ - /* Bit 45 Geometric Shapes */ -#define TT_UCR_GEOMETRIC_SHAPES (1L << 13) /* U+25A0-U+25FF */ - /* Bit 46 Miscellaneous Symbols */ -#define TT_UCR_MISCELLANEOUS_SYMBOLS (1L << 14) /* U+2600-U+26FF */ - /* Bit 47 Dingbats */ -#define TT_UCR_DINGBATS (1L << 15) /* U+2700-U+27BF */ - - /* CJK Phonetics and Symbols Area */ - - /* Bit 48 CJK Symbols and Punctuation */ -#define TT_UCR_CJK_SYMBOLS (1L << 16) /* U+3000-U+303F */ - /* Bit 49 Hiragana */ -#define TT_UCR_HIRAGANA (1L << 17) /* U+3040-U+309F */ - /* Bit 50 Katakana + */ - /* Katakana Phonetic Extensions */ -#define TT_UCR_KATAKANA (1L << 18) /* U+30A0-U+30FF */ - /* U+31F0-U+31FF */ - /* Bit 51 Bopomofo + */ - /* Bopomofo Extended */ -#define TT_UCR_BOPOMOFO (1L << 19) /* U+3100-U+312F */ - /* U+31A0-U+31BF */ - /* Bit 52 Hangul Compatibility Jamo */ -#define TT_UCR_HANGUL_COMPATIBILITY_JAMO (1L << 20) /* U+3130-U+318F */ - /* Bit 53 Kanbun */ -#define TT_UCR_CJK_MISC (1L << 21) /* U+3190-U+319F */ -#define TT_UCR_KANBUN TT_UCR_CJK_MISC - /* Bit 54 Enclosed CJK Letters and Months */ -#define TT_UCR_ENCLOSED_CJK_LETTERS_MONTHS (1L << 22) /* U+3200-U+32FF */ - /* Bit 55 CJK Compatibility */ -#define TT_UCR_CJK_COMPATIBILITY (1L << 23) /* U+3300-U+33FF */ - - /* Hangul Syllables Area */ - - /* Bit 56 Hangul */ -#define TT_UCR_HANGUL (1L << 24) /* U+AC00-U+D7A3 */ - - /* Surrogates Area */ - - /* Bit 57 High Surrogates + */ - /* High Private Use Surrogates + */ - /* Low Surrogates */ -#define TT_UCR_SURROGATES (1L << 25) /* U+D800-U+DB7F */ - /* U+DB80-U+DBFF */ - /* U+DC00-U+DFFF */ - /* According to OpenType specs v.1.3+, setting bit 57 implies that there */ - /* is at least one codepoint beyond the Basic Multilingual Plane that is */ - /* supported by this font. So it really means: >= U+10000 */ - - /* Bit 58 is reserved for Unicode SubRanges */ - - /* CJK Ideographs Area */ - - /* Bit 59 CJK Unified Ideographs + */ - /* CJK Radicals Supplement + */ - /* Kangxi Radicals + */ - /* Ideographic Description Characters + */ - /* CJK Unified Ideographs Extension A */ - /* CJK Unified Ideographs Extension A + */ - /* CJK Unified Ideographs Extension B + */ - /* Kanbun */ -#define TT_UCR_CJK_UNIFIED_IDEOGRAPHS (1L << 27) /* U+4E00-U+9FFF */ - /* U+2E80-U+2EFF */ - /* U+2F00-U+2FDF */ - /* U+2FF0-U+2FFF */ - /* U+3400-U+4DB5 */ - /*U+20000-U+2A6DF*/ - /* U+3190-U+319F */ - - /* Private Use Area */ - - /* Bit 60 Private Use */ -#define TT_UCR_PRIVATE_USE (1L << 28) /* U+E000-U+F8FF */ - - /* Compatibility Area and Specials */ - - /* Bit 61 CJK Compatibility Ideographs + */ - /* CJK Compatibility Ideographs Supplement */ -#define TT_UCR_CJK_COMPATIBILITY_IDEOGRAPHS (1L << 29) /* U+F900-U+FAFF */ - /*U+2F800-U+2FA1F*/ - /* Bit 62 Alphabetic Presentation Forms */ -#define TT_UCR_ALPHABETIC_PRESENTATION_FORMS (1L << 30) /* U+FB00-U+FB4F */ - /* Bit 63 Arabic Presentation Forms-A */ -#define TT_UCR_ARABIC_PRESENTATIONS_A (1L << 31) /* U+FB50-U+FDFF */ - /* Bit 64 Combining Half Marks */ -#define TT_UCR_COMBINING_HALF_MARKS (1L << 0) /* U+FE20-U+FE2F */ - /* Bit 65 CJK Compatibility Forms */ -#define TT_UCR_CJK_COMPATIBILITY_FORMS (1L << 1) /* U+FE30-U+FE4F */ - /* Bit 66 Small Form Variants */ -#define TT_UCR_SMALL_FORM_VARIANTS (1L << 2) /* U+FE50-U+FE6F */ - /* Bit 67 Arabic Presentation Forms-B */ -#define TT_UCR_ARABIC_PRESENTATIONS_B (1L << 3) /* U+FE70-U+FEFE */ - /* Bit 68 Halfwidth and Fullwidth Forms */ -#define TT_UCR_HALFWIDTH_FULLWIDTH_FORMS (1L << 4) /* U+FF00-U+FFEF */ - /* Bit 69 Specials */ -#define TT_UCR_SPECIALS (1L << 5) /* U+FFF0-U+FFFD */ - /* Bit 70 Tibetan */ -#define TT_UCR_TIBETAN (1L << 6) /* U+0F00-U+0FFF */ - /* Bit 71 Syriac */ -#define TT_UCR_SYRIAC (1L << 7) /* U+0700-U+074F */ - /* Bit 72 Thaana */ -#define TT_UCR_THAANA (1L << 8) /* U+0780-U+07BF */ - /* Bit 73 Sinhala */ -#define TT_UCR_SINHALA (1L << 9) /* U+0D80-U+0DFF */ - /* Bit 74 Myanmar */ -#define TT_UCR_MYANMAR (1L << 10) /* U+1000-U+109F */ - /* Bit 75 Ethiopic */ -#define TT_UCR_ETHIOPIC (1L << 11) /* U+1200-U+137F */ - /* Bit 76 Cherokee */ -#define TT_UCR_CHEROKEE (1L << 12) /* U+13A0-U+13FF */ - /* Bit 77 Unified Canadian Aboriginal Syllabics */ -#define TT_UCR_CANADIAN_ABORIGINAL_SYLLABICS (1L << 13) /* U+1400-U+167F */ - /* Bit 78 Ogham */ -#define TT_UCR_OGHAM (1L << 14) /* U+1680-U+169F */ - /* Bit 79 Runic */ -#define TT_UCR_RUNIC (1L << 15) /* U+16A0-U+16FF */ - /* Bit 80 Khmer */ -#define TT_UCR_KHMER (1L << 16) /* U+1780-U+17FF */ - /* Bit 81 Mongolian */ -#define TT_UCR_MONGOLIAN (1L << 17) /* U+1800-U+18AF */ - /* Bit 82 Braille Patterns */ -#define TT_UCR_BRAILLE (1L << 18) /* U+2800-U+28FF */ - /* Bit 83 Yi Syllables + */ - /* Yi Radicals */ -#define TT_UCR_YI (1L << 19) /* U+A000-U+A48F */ - /* U+A490-U+A4CF */ - /* Bit 84 Tagalog + */ - /* Hanunoo + */ - /* Buhid + */ - /* Tagbanwa */ -#define TT_UCR_PHILIPPINE (1L << 20) /* U+1700-U+171F */ - /* U+1720-U+173F */ - /* U+1740-U+175F */ - /* U+1760-U+177F */ - /* Bit 85 Old Italic */ -#define TT_UCR_OLD_ITALIC (1L << 21) /*U+10300-U+1032F*/ - /* Bit 86 Gothic */ -#define TT_UCR_GOTHIC (1L << 22) /*U+10330-U+1034F*/ - /* Bit 87 Deseret */ -#define TT_UCR_DESERET (1L << 23) /*U+10400-U+1044F*/ - /* Bit 88 Byzantine Musical Symbols + */ - /* Musical Symbols */ -#define TT_UCR_MUSICAL_SYMBOLS (1L << 24) /*U+1D000-U+1D0FF*/ - /*U+1D100-U+1D1FF*/ - /* Bit 89 Mathematical Alphanumeric Symbols */ -#define TT_UCR_MATH_ALPHANUMERIC_SYMBOLS (1L << 25) /*U+1D400-U+1D7FF*/ - /* Bit 90 Private Use (plane 15) + */ - /* Private Use (plane 16) */ -#define TT_UCR_PRIVATE_USE_SUPPLEMENTARY (1L << 26) /*U+F0000-U+FFFFD*/ - /*U+100000-U+10FFFD*/ - /* Bit 91 Variation Selectors */ -#define TT_UCR_VARIATION_SELECTORS (1L << 27) /* U+FE00-U+FE0F */ - /* Bit 92 Tags */ -#define TT_UCR_TAGS (1L << 28) /*U+E0000-U+E007F*/ - - - /*************************************************************************/ - /* */ - /* Some compilers have a very limited length of identifiers. */ - /* */ -#if defined( __TURBOC__ ) && __TURBOC__ < 0x0410 || defined( __PACIFIC__ ) -#define HAVE_LIMIT_ON_IDENTS -#endif - - -#ifndef HAVE_LIMIT_ON_IDENTS - - - /*************************************************************************/ - /* */ - /* Here some alias #defines in order to be clearer. */ - /* */ - /* These are not always #defined to stay within the 31 character limit */ - /* which some compilers have. */ - /* */ - /* Credits go to Dave Hoo <dhoo@flash.net> for pointing out that modern */ - /* Borland compilers (read: from BC++ 3.1 on) can increase this limit. */ - /* If you get a warning with such a compiler, use the -i40 switch. */ - /* */ -#define TT_UCR_ARABIC_PRESENTATION_FORMS_A \ - TT_UCR_ARABIC_PRESENTATIONS_A -#define TT_UCR_ARABIC_PRESENTATION_FORMS_B \ - TT_UCR_ARABIC_PRESENTATIONS_B - -#define TT_UCR_COMBINING_DIACRITICAL_MARKS \ - TT_UCR_COMBINING_DIACRITICS -#define TT_UCR_COMBINING_DIACRITICAL_MARKS_SYMB \ - TT_UCR_COMBINING_DIACRITICS_SYMB - - -#endif /* !HAVE_LIMIT_ON_IDENTS */ - - -FT_END_HEADER - -#endif /* __TTNAMEID_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/tttables.h b/nx-X11/extras/freetype2/include/freetype/tttables.h deleted file mode 100644 index 26e66b977..000000000 --- a/nx-X11/extras/freetype2/include/freetype/tttables.h +++ /dev/null @@ -1,694 +0,0 @@ -/***************************************************************************/ -/* */ -/* tttables.h */ -/* */ -/* Basic SFNT/TrueType tables definitions and interface */ -/* (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTTABLES_H__ -#define __TTTABLES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - /*************************************************************************/ - /* */ - /* <Section> */ - /* truetype_tables */ - /* */ - /* <Title> */ - /* TrueType Tables */ - /* */ - /* <Abstract> */ - /* TrueType-specific table types and functions. */ - /* */ - /* <Description> */ - /* This section contains the definition of TrueType-specific tables */ - /* as well as some routines used to access and process them. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Header */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType font header table. All */ - /* fields follow the TrueType specification. */ - /* */ - typedef struct TT_Header_ - { - FT_Fixed Table_Version; - FT_Fixed Font_Revision; - - FT_Long CheckSum_Adjust; - FT_Long Magic_Number; - - FT_UShort Flags; - FT_UShort Units_Per_EM; - - FT_Long Created [2]; - FT_Long Modified[2]; - - FT_Short xMin; - FT_Short yMin; - FT_Short xMax; - FT_Short yMax; - - FT_UShort Mac_Style; - FT_UShort Lowest_Rec_PPEM; - - FT_Short Font_Direction; - FT_Short Index_To_Loc_Format; - FT_Short Glyph_Data_Format; - - } TT_Header; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_HoriHeader */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType horizontal header, the `hhea' */ - /* table, as well as the corresponding horizontal metrics table, */ - /* i.e., the `hmtx' table. */ - /* */ - /* <Fields> */ - /* Version :: The table version. */ - /* */ - /* Ascender :: The font's ascender, i.e., the distance */ - /* from the baseline to the top-most of all */ - /* glyph points found in the font. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of the */ - /* glyphs found in the font (maybe ASCII). */ - /* */ - /* You should use the `sTypoAscender' field */ - /* of the OS/2 table instead if you want */ - /* the correct one. */ - /* */ - /* Descender :: The font's descender, i.e., the distance */ - /* from the baseline to the bottom-most of */ - /* all glyph points found in the font. It */ - /* is negative. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of the */ - /* glyphs found in the font (maybe ASCII). */ - /* */ - /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Line_Gap :: The font's line gap, i.e., the distance */ - /* to add to the ascender and descender to */ - /* get the BTB, i.e., the */ - /* baseline-to-baseline distance for the */ - /* font. */ - /* */ - /* advance_Width_Max :: This field is the maximum of all advance */ - /* widths found in the font. It can be */ - /* used to compute the maximum width of an */ - /* arbitrary string of text. */ - /* */ - /* min_Left_Side_Bearing :: The minimum left side bearing of all */ - /* glyphs within the font. */ - /* */ - /* min_Right_Side_Bearing :: The minimum right side bearing of all */ - /* glyphs within the font. */ - /* */ - /* xMax_Extent :: The maximum horizontal extent (i.e., the */ - /* `width' of a glyph's bounding box) for */ - /* all glyphs in the font. */ - /* */ - /* caret_Slope_Rise :: The rise coefficient of the cursor's */ - /* slope of the cursor (slope=rise/run). */ - /* */ - /* caret_Slope_Run :: The run coefficient of the cursor's */ - /* slope. */ - /* */ - /* Reserved :: 10 reserved bytes. */ - /* */ - /* metric_Data_Format :: Always 0. */ - /* */ - /* number_Of_HMetrics :: Number of HMetrics entries in the `hmtx' */ - /* table -- this value can be smaller than */ - /* the total number of glyphs in the font. */ - /* */ - /* long_metrics :: A pointer into the `hmtx' table. */ - /* */ - /* short_metrics :: A pointer into the `hmtx' table. */ - /* */ - /* <Note> */ - /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ - /* be identical except for the names of their fields which */ - /* are different. */ - /* */ - /* This ensures that a single function in the `ttload' */ - /* module is able to read both the horizontal and vertical */ - /* headers. */ - /* */ - typedef struct TT_HoriHeader_ - { - FT_Fixed Version; - FT_Short Ascender; - FT_Short Descender; - FT_Short Line_Gap; - - FT_UShort advance_Width_Max; /* advance width maximum */ - - FT_Short min_Left_Side_Bearing; /* minimum left-sb */ - FT_Short min_Right_Side_Bearing; /* minimum right-sb */ - FT_Short xMax_Extent; /* xmax extents */ - FT_Short caret_Slope_Rise; - FT_Short caret_Slope_Run; - FT_Short caret_Offset; - - FT_Short Reserved[4]; - - FT_Short metric_Data_Format; - FT_UShort number_Of_HMetrics; - - /* The following fields are not defined by the TrueType specification */ - /* but they are used to connect the metrics header to the relevant */ - /* `HMTX' table. */ - - void* long_metrics; - void* short_metrics; - - } TT_HoriHeader; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_VertHeader */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType vertical header, the `vhea' */ - /* table, as well as the corresponding vertical metrics table, i.e., */ - /* the `vmtx' table. */ - /* */ - /* <Fields> */ - /* Version :: The table version. */ - /* */ - /* Ascender :: The font's ascender, i.e., the distance */ - /* from the baseline to the top-most of */ - /* all glyph points found in the font. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of */ - /* the glyphs found in the font (maybe */ - /* ASCII). */ - /* */ - /* You should use the `sTypoAscender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Descender :: The font's descender, i.e., the */ - /* distance from the baseline to the */ - /* bottom-most of all glyph points found */ - /* in the font. It is negative. */ - /* */ - /* This value is invalid in many fonts, as */ - /* it is usually set by the font designer, */ - /* and often reflects only a portion of */ - /* the glyphs found in the font (maybe */ - /* ASCII). */ - /* */ - /* You should use the `sTypoDescender' */ - /* field of the OS/2 table instead if you */ - /* want the correct one. */ - /* */ - /* Line_Gap :: The font's line gap, i.e., the distance */ - /* to add to the ascender and descender to */ - /* get the BTB, i.e., the */ - /* baseline-to-baseline distance for the */ - /* font. */ - /* */ - /* advance_Height_Max :: This field is the maximum of all */ - /* advance heights found in the font. It */ - /* can be used to compute the maximum */ - /* height of an arbitrary string of text. */ - /* */ - /* min_Top_Side_Bearing :: The minimum top side bearing of all */ - /* glyphs within the font. */ - /* */ - /* min_Bottom_Side_Bearing :: The minimum bottom side bearing of all */ - /* glyphs within the font. */ - /* */ - /* yMax_Extent :: The maximum vertical extent (i.e., the */ - /* `height' of a glyph's bounding box) for */ - /* all glyphs in the font. */ - /* */ - /* caret_Slope_Rise :: The rise coefficient of the cursor's */ - /* slope of the cursor (slope=rise/run). */ - /* */ - /* caret_Slope_Run :: The run coefficient of the cursor's */ - /* slope. */ - /* */ - /* caret_Offset :: The cursor's offset for slanted fonts. */ - /* This value is `reserved' in vmtx */ - /* version 1.0. */ - /* */ - /* Reserved :: 8 reserved bytes. */ - /* */ - /* metric_Data_Format :: Always 0. */ - /* */ - /* number_Of_HMetrics :: Number of VMetrics entries in the */ - /* `vmtx' table -- this value can be */ - /* smaller than the total number of glyphs */ - /* in the font. */ - /* */ - /* long_metrics :: A pointer into the `vmtx' table. */ - /* */ - /* short_metrics :: A pointer into the `vmtx' table. */ - /* */ - /* <Note> */ - /* IMPORTANT: The TT_HoriHeader and TT_VertHeader structures should */ - /* be identical except for the names of their fields which */ - /* are different. */ - /* */ - /* This ensures that a single function in the `ttload' */ - /* module is able to read both the horizontal and vertical */ - /* headers. */ - /* */ - typedef struct TT_VertHeader_ - { - FT_Fixed Version; - FT_Short Ascender; - FT_Short Descender; - FT_Short Line_Gap; - - FT_UShort advance_Height_Max; /* advance height maximum */ - - FT_Short min_Top_Side_Bearing; /* minimum left-sb or top-sb */ - FT_Short min_Bottom_Side_Bearing; /* minimum right-sb or bottom-sb */ - FT_Short yMax_Extent; /* xmax or ymax extents */ - FT_Short caret_Slope_Rise; - FT_Short caret_Slope_Run; - FT_Short caret_Offset; - - FT_Short Reserved[4]; - - FT_Short metric_Data_Format; - FT_UShort number_Of_VMetrics; - - /* The following fields are not defined by the TrueType specification */ - /* but they're used to connect the metrics header to the relevant */ - /* `HMTX' or `VMTX' table. */ - - void* long_metrics; - void* short_metrics; - - } TT_VertHeader; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_OS2 */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType OS/2 table. This is the long */ - /* table version. All fields comply to the TrueType specification. */ - /* */ - /* Note that we now support old Mac fonts which do not include an */ - /* OS/2 table. In this case, the `version' field is always set to */ - /* 0xFFFF. */ - /* */ - typedef struct TT_OS2_ - { - FT_UShort version; /* 0x0001 - more or 0xFFFF */ - FT_Short xAvgCharWidth; - FT_UShort usWeightClass; - FT_UShort usWidthClass; - FT_Short fsType; - FT_Short ySubscriptXSize; - FT_Short ySubscriptYSize; - FT_Short ySubscriptXOffset; - FT_Short ySubscriptYOffset; - FT_Short ySuperscriptXSize; - FT_Short ySuperscriptYSize; - FT_Short ySuperscriptXOffset; - FT_Short ySuperscriptYOffset; - FT_Short yStrikeoutSize; - FT_Short yStrikeoutPosition; - FT_Short sFamilyClass; - - FT_Byte panose[10]; - - FT_ULong ulUnicodeRange1; /* Bits 0-31 */ - FT_ULong ulUnicodeRange2; /* Bits 32-63 */ - FT_ULong ulUnicodeRange3; /* Bits 64-95 */ - FT_ULong ulUnicodeRange4; /* Bits 96-127 */ - - FT_Char achVendID[4]; - - FT_UShort fsSelection; - FT_UShort usFirstCharIndex; - FT_UShort usLastCharIndex; - FT_Short sTypoAscender; - FT_Short sTypoDescender; - FT_Short sTypoLineGap; - FT_UShort usWinAscent; - FT_UShort usWinDescent; - - /* only version 1 tables: */ - - FT_ULong ulCodePageRange1; /* Bits 0-31 */ - FT_ULong ulCodePageRange2; /* Bits 32-63 */ - - /* only version 2 tables: */ - - FT_Short sxHeight; - FT_Short sCapHeight; - FT_UShort usDefaultChar; - FT_UShort usBreakChar; - FT_UShort usMaxContext; - - } TT_OS2; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_Postscript */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType Postscript table. All fields */ - /* comply to the TrueType table. This structure does not reference */ - /* the Postscript glyph names, which can be nevertheless accessed */ - /* with the `ttpost' module. */ - /* */ - typedef struct TT_Postscript_ - { - FT_Fixed FormatType; - FT_Fixed italicAngle; - FT_Short underlinePosition; - FT_Short underlineThickness; - FT_ULong isFixedPitch; - FT_ULong minMemType42; - FT_ULong maxMemType42; - FT_ULong minMemType1; - FT_ULong maxMemType1; - - /* Glyph names follow in the file, but we don't */ - /* load them by default. See the ttpost.c file. */ - - } TT_Postscript; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_PCLT */ - /* */ - /* <Description> */ - /* A structure used to model a TrueType PCLT table. All fields */ - /* comply to the TrueType table. */ - /* */ - typedef struct TT_PCLT_ - { - FT_Fixed Version; - FT_ULong FontNumber; - FT_UShort Pitch; - FT_UShort xHeight; - FT_UShort Style; - FT_UShort TypeFamily; - FT_UShort CapHeight; - FT_UShort SymbolSet; - FT_Char TypeFace[16]; - FT_Char CharacterComplement[8]; - FT_Char FileName[6]; - FT_Char StrokeWeight; - FT_Char WidthType; - FT_Byte SerifStyle; - FT_Byte Reserved; - - } TT_PCLT; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_MaxProfile */ - /* */ - /* <Description> */ - /* The maximum profile is a table containing many max values which */ - /* can be used to pre-allocate arrays. This ensures that no memory */ - /* allocation occurs during a glyph load. */ - /* */ - /* <Fields> */ - /* version :: The version number. */ - /* */ - /* numGlyphs :: The number of glyphs in this TrueType */ - /* font. */ - /* */ - /* maxPoints :: The maximum number of points in a */ - /* non-composite TrueType glyph. See also */ - /* the structure element */ - /* `maxCompositePoints'. */ - /* */ - /* maxContours :: The maximum number of contours in a */ - /* non-composite TrueType glyph. See also */ - /* the structure element */ - /* `maxCompositeContours'. */ - /* */ - /* maxCompositePoints :: The maximum number of points in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxPoints'. */ - /* */ - /* maxCompositeContours :: The maximum number of contours in a */ - /* composite TrueType glyph. See also the */ - /* structure element `maxContours'. */ - /* */ - /* maxZones :: The maximum number of zones used for */ - /* glyph hinting. */ - /* */ - /* maxTwilightPoints :: The maximum number of points in the */ - /* twilight zone used for glyph hinting. */ - /* */ - /* maxStorage :: The maximum number of elements in the */ - /* storage area used for glyph hinting. */ - /* */ - /* maxFunctionDefs :: The maximum number of function */ - /* definitions in the TrueType bytecode for */ - /* this font. */ - /* */ - /* maxInstructionDefs :: The maximum number of instruction */ - /* definitions in the TrueType bytecode for */ - /* this font. */ - /* */ - /* maxStackElements :: The maximum number of stack elements used */ - /* during bytecode interpretation. */ - /* */ - /* maxSizeOfInstructions :: The maximum number of TrueType opcodes */ - /* used for glyph hinting. */ - /* */ - /* maxComponentElements :: The maximum number of simple (i.e., non- */ - /* composite) glyphs in a composite glyph. */ - /* */ - /* maxComponentDepth :: The maximum nesting depth of composite */ - /* glyphs. */ - /* */ - /* <Note> */ - /* This structure is only used during font loading. */ - /* */ - typedef struct TT_MaxProfile_ - { - FT_Fixed version; - FT_UShort numGlyphs; - FT_UShort maxPoints; - FT_UShort maxContours; - FT_UShort maxCompositePoints; - FT_UShort maxCompositeContours; - FT_UShort maxZones; - FT_UShort maxTwilightPoints; - FT_UShort maxStorage; - FT_UShort maxFunctionDefs; - FT_UShort maxInstructionDefs; - FT_UShort maxStackElements; - FT_UShort maxSizeOfInstructions; - FT_UShort maxComponentElements; - FT_UShort maxComponentDepth; - - } TT_MaxProfile; - - - /*************************************************************************/ - /* */ - /* <Enum> */ - /* FT_Sfnt_Tag */ - /* */ - /* <Description> */ - /* An enumeration used to specify the index of an SFNT table. */ - /* Used in the @FT_Get_Sfnt_Table API function. */ - /* */ - typedef enum - { - ft_sfnt_head = 0, - ft_sfnt_maxp = 1, - ft_sfnt_os2 = 2, - ft_sfnt_hhea = 3, - ft_sfnt_vhea = 4, - ft_sfnt_post = 5, - ft_sfnt_pclt = 6, - - sfnt_max /* internal end mark */ - - } FT_Sfnt_Tag; - - /* */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_Sfnt_Table */ - /* */ - /* <Description> */ - /* Returns a pointer to a given SFNT table within a face. */ - /* */ - /* <Input> */ - /* face :: A handle to the source. */ - /* */ - /* tag :: The index of the SFNT table. */ - /* */ - /* <Return> */ - /* A type-less pointer to the table. This will be 0 in case of */ - /* error, or if the corresponding table was not found *OR* loaded */ - /* from the file. */ - /* */ - /* <Note> */ - /* The table is owned by the face object and disappears with it. */ - /* */ - /* This function is only useful to access SFNT tables that are loaded */ - /* by the sfnt/truetype/opentype drivers. See @FT_Sfnt_Tag for a */ - /* list. */ - /* */ - FT_EXPORT( void* ) - FT_Get_Sfnt_Table( FT_Face face, - FT_Sfnt_Tag tag ); - - - /************************************************************************** - * - * <Function> - * FT_Load_Sfnt_Table - * - * <Description> - * Loads any font table into client memory. - * - * <Input> - * face :: A handle to the source face. - * - * tag :: The 4-byte tag of the table to load. Use the value 0 if - * you want to access the whole font file. Otherwise, you can - * use one of the definitions found in the @FT_TRUETYPE_TAGS_H - * file, or forge a new one with @FT_MAKE_TAG. - * - * offset :: The starting offset in the table (or file if tag == 0). - * - * <Output> - * buffer :: The target buffer address. The client must ensure that - * the memory array is big enough to hold the data. - * - * <InOut> - * length :: If the `length' parameter is NULL, then try to load the whole - * table. Return an error code if it fails. - * - * Else, if `*length' is 0, exit immediately while returning - * the table's (or file) full size in it. - * - * Else the number of bytes to read from the table or file, - * from the starting offset. - * - * <Return> - * FreeType error code. 0 means success. - * - * <Note> - * If you need to determine the table's length you should first call this - * function with `*length' set to 0, as in the following example: - * - * { - * FT_ULong length = 0; - * - * - * error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length ); - * if ( error ) { ... table does not exist ... } - * - * buffer = malloc( length ); - * if ( buffer == NULL ) { ... not enough memory ... } - * - * error = FT_Load_Sfnt_Table( face,tag, 0, buffer, &length ); - * if ( error ) { ... could not load table ... } - * } - */ - FT_EXPORT( FT_Error ) - FT_Load_Sfnt_Table( FT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Get_CMap_Language_ID */ - /* */ - /* <Description> */ - /* Return TrueType/sfnt specific cmap language ID. Definitions of */ - /* language ID values are in freetype/ttnameid.h. */ - /* */ - /* <Input> */ - /* charmap :: */ - /* The target charmap. */ - /* */ - /* <Return> */ - /* The language ID of `charmap'. If `charmap' doesn't belong to a */ - /* TrueType/sfnt face, just return 0 as the default value. */ - /* */ - FT_EXPORT( FT_ULong ) - FT_Get_CMap_Language_ID( FT_CharMap charmap ); - - /* */ - - -FT_END_HEADER - -#endif /* __TTTABLES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/tttags.h b/nx-X11/extras/freetype2/include/freetype/tttags.h deleted file mode 100644 index a6876d48f..000000000 --- a/nx-X11/extras/freetype2/include/freetype/tttags.h +++ /dev/null @@ -1,83 +0,0 @@ -/***************************************************************************/ -/* */ -/* tttags.h */ -/* */ -/* Tags for TrueType tables (specification only). */ -/* */ -/* Copyright 1996-2001, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTAGS_H__ -#define __TTAGS_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - -#define TTAG_avar FT_MAKE_TAG( 'a', 'v', 'a', 'r' ) -#define TTAG_bdat FT_MAKE_TAG( 'b', 'd', 'a', 't' ) -#define TTAG_bhed FT_MAKE_TAG( 'b', 'h', 'e', 'd' ) -#define TTAG_bloc FT_MAKE_TAG( 'b', 'l', 'o', 'c' ) -#define TTAG_CFF FT_MAKE_TAG( 'C', 'F', 'F', ' ' ) -#define TTAG_cmap FT_MAKE_TAG( 'c', 'm', 'a', 'p' ) -#define TTAG_cvar FT_MAKE_TAG( 'c', 'v', 'a', 'r' ) -#define TTAG_cvt FT_MAKE_TAG( 'c', 'v', 't', ' ' ) -#define TTAG_DSIG FT_MAKE_TAG( 'D', 'S', 'I', 'G' ) -#define TTAG_EBDT FT_MAKE_TAG( 'E', 'B', 'D', 'T' ) -#define TTAG_EBLC FT_MAKE_TAG( 'E', 'B', 'L', 'C' ) -#define TTAG_EBSC FT_MAKE_TAG( 'E', 'B', 'S', 'C' ) -#define TTAG_fpgm FT_MAKE_TAG( 'f', 'p', 'g', 'm' ) -#define TTAG_fvar FT_MAKE_TAG( 'f', 'v', 'a', 'r' ) -#define TTAG_gasp FT_MAKE_TAG( 'g', 'a', 's', 'p' ) -#define TTAG_glyf FT_MAKE_TAG( 'g', 'l', 'y', 'f' ) -#define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' ) -#define TTAG_gvar FT_MAKE_TAG( 'g', 'v', 'a', 'r' ) -#define TTAG_hdmx FT_MAKE_TAG( 'h', 'd', 'm', 'x' ) -#define TTAG_head FT_MAKE_TAG( 'h', 'e', 'a', 'd' ) -#define TTAG_hhea FT_MAKE_TAG( 'h', 'h', 'e', 'a' ) -#define TTAG_hmtx FT_MAKE_TAG( 'h', 'm', 't', 'x' ) -#define TTAG_kern FT_MAKE_TAG( 'k', 'e', 'r', 'n' ) -#define TTAG_loca FT_MAKE_TAG( 'l', 'o', 'c', 'a' ) -#define TTAG_LTSH FT_MAKE_TAG( 'L', 'T', 'S', 'H' ) -#define TTAG_maxp FT_MAKE_TAG( 'm', 'a', 'x', 'p' ) -#define TTAG_MMFX FT_MAKE_TAG( 'M', 'M', 'F', 'X' ) -#define TTAG_MMSD FT_MAKE_TAG( 'M', 'M', 'S', 'D' ) -#define TTAG_name FT_MAKE_TAG( 'n', 'a', 'm', 'e' ) -#define TTAG_OS2 FT_MAKE_TAG( 'O', 'S', '/', '2' ) -#define TTAG_OTTO FT_MAKE_TAG( 'O', 'T', 'T', 'O' ) -#define TTAG_PCLT FT_MAKE_TAG( 'P', 'C', 'L', 'T' ) -#define TTAG_post FT_MAKE_TAG( 'p', 'o', 's', 't' ) -#define TTAG_prep FT_MAKE_TAG( 'p', 'r', 'e', 'p' ) -#define TTAG_true FT_MAKE_TAG( 't', 'r', 'u', 'e' ) -#define TTAG_ttc FT_MAKE_TAG( 't', 't', 'c', ' ' ) -#define TTAG_ttcf FT_MAKE_TAG( 't', 't', 'c', 'f' ) -#define TTAG_VDMX FT_MAKE_TAG( 'V', 'D', 'M', 'X' ) -#define TTAG_vhea FT_MAKE_TAG( 'v', 'h', 'e', 'a' ) -#define TTAG_vmtx FT_MAKE_TAG( 'v', 'm', 't', 'x' ) - - -FT_END_HEADER - -#endif /* __TTAGS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/freetype/ttunpat.h b/nx-X11/extras/freetype2/include/freetype/ttunpat.h deleted file mode 100644 index 0bc0a6fe0..000000000 --- a/nx-X11/extras/freetype2/include/freetype/ttunpat.h +++ /dev/null @@ -1,59 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttunpat.h */ -/* */ -/* Definitions for the unpatented TrueType hinting system */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* Written by Graham Asher <graham.asher@btinternet.com> */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTUNPAT_H__ -#define __TTUNPAT_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - -#ifdef FREETYPE_H -#error "freetype.h of FreeType 1 has been loaded!" -#error "Please fix the directory search order for header files" -#error "so that freetype.h of FreeType 2 is found first." -#endif - - -FT_BEGIN_HEADER - - - /*************************************************************************** - * - * @constant: - * FT_PARAM_TAG_UNPATENTED_HINTING - * - * @description: - * A constant used as the tag of an @FT_Parameter structure to indicate - * that unpatented methods only should be used by the TrueType bytecode - * interpreter for a typeface opened by FT_Open_Face. - * - */ -#define FT_PARAM_TAG_UNPATENTED_HINTING FT_MAKE_TAG( 'u', 'n', 'p', 'a' ) - - /* */ - -FT_END_HEADER - - -#endif /* __TTUNPAT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/include/ft2build.h b/nx-X11/extras/freetype2/include/ft2build.h deleted file mode 100644 index 2ecfdeab1..000000000 --- a/nx-X11/extras/freetype2/include/ft2build.h +++ /dev/null @@ -1,39 +0,0 @@ -/***************************************************************************/ -/* */ -/* ft2build.h */ -/* */ -/* FreeType 2 build and setup macros. */ -/* (Generic version) */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file corresponds to the default "ft2build.h" file for */ - /* FreeType 2. It uses the "freetype" include root. */ - /* */ - /* Note that specific platforms might use a different configuration. */ - /* See builds/unix/ft2unix.h for an example. */ - /* */ - /*************************************************************************/ - - -#ifndef __FT2_BUILD_GENERIC_H__ -#define __FT2_BUILD_GENERIC_H__ - -#include <freetype/config/ftheader.h> - -#endif /* __FT2_BUILD_GENERIC_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/objs/.cvsignore b/nx-X11/extras/freetype2/objs/.cvsignore deleted file mode 100644 index 78197f370..000000000 --- a/nx-X11/extras/freetype2/objs/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -*.lo -libfreetype.la -freetype.lib -.libs diff --git a/nx-X11/extras/freetype2/objs/README b/nx-X11/extras/freetype2/objs/README deleted file mode 100644 index 91fdcbdc1..000000000 --- a/nx-X11/extras/freetype2/objs/README +++ /dev/null @@ -1 +0,0 @@ -This directory contains all the object files created when building the library diff --git a/nx-X11/extras/freetype2/src/Jamfile b/nx-X11/extras/freetype2/src/Jamfile deleted file mode 100644 index e4d357569..000000000 --- a/nx-X11/extras/freetype2/src/Jamfile +++ /dev/null @@ -1,17 +0,0 @@ -# FreeType 2 src Jamfile (c) 2001, 2002 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) ; - -# The file <freetype/internal/internal.h> is used to define macros that are -# later used in #include statements. It needs to be parsed in order to -# record these definitions. -# -HDRMACRO [ FT2_SubDir $(FT2_INCLUDE_DIR) internal internal.h ] ; - -for xx in $(FT2_COMPONENTS) -{ - SubInclude FT2_TOP $(FT2_SRC_DIR) $(xx) ; -} - -# end of src Jamfile diff --git a/nx-X11/extras/freetype2/src/autofit/Jamfile b/nx-X11/extras/freetype2/src/autofit/Jamfile deleted file mode 100644 index 3063f2371..000000000 --- a/nx-X11/extras/freetype2/src/autofit/Jamfile +++ /dev/null @@ -1,18 +0,0 @@ -SubDir FT2_TOP src autofit ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = afangles afglobal afhints aflatin afloader afmodule afdummy ; - } - else - { - _sources = autofit ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/autofir Jamfile diff --git a/nx-X11/extras/freetype2/src/autofit/afangles.c b/nx-X11/extras/freetype2/src/autofit/afangles.c deleted file mode 100644 index e42c962d1..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afangles.c +++ /dev/null @@ -1,302 +0,0 @@ -#include "aftypes.h" - -/* - * a python script used to generate the following table - * - -import sys, math - -units = 256 -scale = units/math.pi -comma = "" - -print "" -print "table of arctan( 1/2^n ) for PI = " + repr(units/65536.0) + " units" - -r = [-1] + range(32) - -for n in r: - - if n >= 0: - x = 1.0/(2.0**n) # tangent value - else: - x = 2.0**(-n) - - angle = math.atan(x) # arctangent - angle2 = angle*scale # arctangent in FT_Angle units - - # determine which integer value for angle gives the best tangent - lo = int(angle2) - hi = lo + 1 - tlo = math.tan(lo/scale) - thi = math.tan(hi/scale) - - errlo = abs( tlo - x ) - errhi = abs( thi - x ) - - angle2 = hi - if errlo < errhi: - angle2 = lo - - if angle2 <= 0: - break - - sys.stdout.write( comma + repr( int(angle2) ) ) - comma = ", " - -* -* end of python script -*/ - - - /* this table was generated for AF_ANGLE_PI = 256 */ -#define AF_ANGLE_MAX_ITERS 8 -#define AF_TRIG_MAX_ITERS 8 - - static const FT_Fixed - af_angle_arctan_table[9] = - { - 90, 64, 38, 20, 10, 5, 3, 1, 1 - }; - - - static FT_Int - af_angle_prenorm( FT_Vector* vec ) - { - FT_Fixed x, y, z; - FT_Int shift; - - - x = vec->x; - y = vec->y; - - z = ( ( x >= 0 ) ? x : - x ) | ( (y >= 0) ? y : -y ); - shift = 0; - - if ( z < ( 1L << 27 ) ) - { - do - { - shift++; - z <<= 1; - } while ( z < ( 1L << 27 ) ); - - vec->x = x << shift; - vec->y = y << shift; - } - else if ( z > ( 1L << 28 ) ) - { - do - { - shift++; - z >>= 1; - } while ( z > ( 1L << 28 ) ); - - vec->x = x >> shift; - vec->y = y >> shift; - shift = -shift; - } - return shift; - } - - - static void - af_angle_pseudo_polarize( FT_Vector* vec ) - { - FT_Fixed theta; - FT_Fixed yi, i; - FT_Fixed x, y; - const FT_Fixed *arctanptr; - - - x = vec->x; - y = vec->y; - - /* Get the vector into the right half plane */ - theta = 0; - if ( x < 0 ) - { - x = -x; - y = -y; - theta = AF_ANGLE_PI; - } - - if ( y > 0 ) - theta = - theta; - - arctanptr = af_angle_arctan_table; - - if ( y < 0 ) - { - /* Rotate positive */ - yi = y + ( x << 1 ); - x = x - ( y << 1 ); - y = yi; - theta -= *arctanptr++; /* Subtract angle */ - } - else - { - /* Rotate negative */ - yi = y - ( x << 1 ); - x = x + ( y << 1 ); - y = yi; - theta += *arctanptr++; /* Add angle */ - } - - i = 0; - do - { - if ( y < 0 ) - { - /* Rotate positive */ - yi = y + ( x >> i ); - x = x - ( y >> i ); - y = yi; - theta -= *arctanptr++; - } - else - { - /* Rotate negative */ - yi = y - ( x >> i ); - x = x + ( y >> i ); - y = yi; - theta += *arctanptr++; - } - } while ( ++i < AF_TRIG_MAX_ITERS ); - -#if 0 - /* round theta */ - if ( theta >= 0 ) - theta = FT_PAD_ROUND( theta, 2 ); - else - theta = - FT_PAD_ROUND( -theta, 2 ); -#endif - - vec->x = x; - vec->y = theta; - } - - - /* documentation is in fttrigon.h */ - - FT_LOCAL_DEF( AF_Angle ) - af_angle_atan( FT_Fixed dx, - FT_Fixed dy ) - { - FT_Vector v; - - - if ( dx == 0 && dy == 0 ) - return 0; - - v.x = dx; - v.y = dy; - af_angle_prenorm( &v ); - af_angle_pseudo_polarize( &v ); - - return v.y; - } - - - - FT_LOCAL_DEF( AF_Angle ) - af_angle_diff( AF_Angle angle1, - AF_Angle angle2 ) - { - AF_Angle delta = angle2 - angle1; - - delta %= AF_ANGLE_2PI; - if ( delta < 0 ) - delta += AF_ANGLE_2PI; - - if ( delta > AF_ANGLE_PI ) - delta -= AF_ANGLE_2PI; - - return delta; - } - - - /* well, this needs to be somewhere, right :-) - */ - - FT_LOCAL_DEF( void ) - af_sort_pos( FT_UInt count, - FT_Pos* table ) - { - FT_UInt i, j; - FT_Pos swap; - - - for ( i = 1; i < count; i++ ) - { - for ( j = i; j > 0; j-- ) - { - if ( table[j] > table[j - 1] ) - break; - - swap = table[j]; - table[j] = table[j - 1]; - table[j - 1] = swap; - } - } - } - - - FT_LOCAL_DEF( void ) - af_sort_widths( FT_UInt count, - AF_Width table ) - { - FT_UInt i, j; - AF_WidthRec swap; - - - for ( i = 1; i < count; i++ ) - { - for ( j = i; j > 0; j-- ) - { - if ( table[j].org > table[j - 1].org ) - break; - - swap = table[j]; - table[j] = table[j - 1]; - table[j - 1] = swap; - } - } - } - - -#ifdef TEST -#include <stdio.h> -#include <math.h> - -int main( void ) -{ - int angle; - int dist; - - for ( dist = 100; dist < 1000; dist++ ) - { - for ( angle = AF_ANGLE_PI; angle < AF_ANGLE_2PI*4; angle++ ) - { - double a = (angle*3.1415926535)/(1.0*AF_ANGLE_PI); - int dx, dy, angle1, angle2, delta; - - dx = dist * cos(a); - dy = dist * sin(a); - - angle1 = ((atan2(dy,dx)*AF_ANGLE_PI)/3.1415926535); - angle2 = af_angle_atan( dx, dy ); - delta = (angle2 - angle1) % AF_ANGLE_2PI; - if ( delta < 0 ) - delta = -delta; - - if ( delta >= 2 ) - { - printf( "dist:%4d angle:%4d => (%4d,%4d) angle1:%4d angle2:%4d\n", - dist, angle, dx, dy, angle1, angle2 ); - } - } - } - return 0; -} -#endif diff --git a/nx-X11/extras/freetype2/src/autofit/afdummy.c b/nx-X11/extras/freetype2/src/autofit/afdummy.c deleted file mode 100644 index 2d5f89839..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afdummy.c +++ /dev/null @@ -1,37 +0,0 @@ -#include "afdummy.h" -#include "afhints.h" - - - static FT_Error - af_dummy_hints_init( AF_GlyphHints hints, - AF_ScriptMetrics metrics ) - { - af_glyph_hints_rescale( hints, - metrics ); - return 0; - } - - static FT_Error - af_dummy_hints_apply( AF_GlyphHints hints, - FT_Outline* outline ) - { - FT_UNUSED( hints ); - FT_UNUSED( outline ); - - return 0; - } - - - FT_LOCAL_DEF( const AF_ScriptClassRec ) af_dummy_script_class = - { - AF_SCRIPT_NONE, - NULL, - - sizeof( AF_ScriptMetricsRec ), - (AF_Script_InitMetricsFunc) NULL, - (AF_Script_ScaleMetricsFunc) NULL, - (AF_Script_DoneMetricsFunc) NULL, - - (AF_Script_InitHintsFunc) af_dummy_hints_init, - (AF_Script_ApplyHintsFunc) af_dummy_hints_apply - }; diff --git a/nx-X11/extras/freetype2/src/autofit/afdummy.h b/nx-X11/extras/freetype2/src/autofit/afdummy.h deleted file mode 100644 index f4594c0f9..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afdummy.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef __AFDUMMY_H__ -#define __AFDUMMY_H__ - -#include "aftypes.h" - -FT_BEGIN_HEADER - - /* a dummy script metrics class used when no hinting should - * be performed. This is the default for non-latin glyphs ! - */ - - FT_LOCAL( const AF_ScriptClassRec ) af_dummy_script_class; - -/* */ - -FT_END_HEADER - -#endif /* __AFDUMMY_H__ */ diff --git a/nx-X11/extras/freetype2/src/autofit/afglobal.c b/nx-X11/extras/freetype2/src/autofit/afglobal.c deleted file mode 100644 index 54852ab31..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afglobal.c +++ /dev/null @@ -1,236 +0,0 @@ -#include "afglobal.h" -#include "afdummy.h" -#include "aflatin.h" - - /* populate this list when you add new scripts - */ - static AF_ScriptClass const af_script_classes[] = - { - & af_dummy_script_class, - & af_latin_script_class, - - NULL /* do not remove */ - }; - -#define AF_SCRIPT_LIST_DEFAULT 1 /* index of default script in 'af_script_classes' */ -#define AF_SCRIPT_LIST_NONE 255 /* indicates an uncovered glyph */ - - /* - * note that glyph_scripts[] is used to map each glyph into - * an index into the 'af_script_classes' array. - * - */ - typedef struct AF_FaceGlobalsRec_ - { - FT_Face face; - FT_UInt glyph_count; /* same as face->num_glyphs */ - FT_Byte* glyph_scripts; - - AF_ScriptMetrics metrics[ AF_SCRIPT_MAX ]; - - } AF_FaceGlobalsRec; - - - - - /* this function is used to compute the script index of each glyph - * within a given face - */ - static FT_Error - af_face_globals_compute_script_coverage( AF_FaceGlobals globals ) - { - FT_Error error = 0; - FT_Face face = globals->face; - FT_CharMap old_charmap = face->charmap; - FT_Byte* gscripts = globals->glyph_scripts; - FT_UInt ss; - - /* the value 255 means "uncovered glyph" - */ - FT_MEM_SET( globals->glyph_scripts, - AF_SCRIPT_LIST_NONE, - globals->glyph_count ); - - error = FT_Select_Charmap( face, FT_ENCODING_UNICODE ); - if ( error ) - { - /* ignore this error, we'll simply use Latin as the standard - * script. XXX: Shouldn't we rather disable hinting ?? - */ - error = 0; - goto Exit; - } - - /* scan each script in a Unicode charmap - */ - for ( ss = 0; af_script_classes[ss]; ss++ ) - { - AF_ScriptClass clazz = af_script_classes[ss]; - AF_Script_UniRange range; - - if ( clazz->script_uni_ranges == NULL ) - continue; - - /* scan all unicode points in the range, and set the corresponding - * glyph script index - */ - for ( range = clazz->script_uni_ranges; range->first != 0; range++ ) - { - FT_ULong charcode = range->first; - FT_UInt gindex; - - gindex = FT_Get_Char_Index( face, charcode ); - - if ( gindex != 0 && - gindex < globals->glyph_count && - gscripts[ gindex ] == AF_SCRIPT_LIST_NONE ) - { - gscripts[ gindex ] = (FT_Byte) ss; - } - for (;;) - { - charcode = FT_Get_Next_Char( face, charcode, &gindex ); - - if ( gindex == 0 || charcode > range->last ) - break; - - if ( gindex < globals->glyph_count && - gscripts[ gindex ] == AF_SCRIPT_LIST_NONE ) - { - gscripts[ gindex ] = (FT_Byte) ss; - } - } - } - } - - Exit: - /* by default, all uncovered glyphs are set to the latin script - * XXX: shouldnt' we disable hinting or do something similar ? - */ - { - FT_UInt nn; - - for ( nn = 0; nn < globals->glyph_count; nn++ ) - { - if ( gscripts[ nn ] == AF_SCRIPT_LIST_NONE ) - gscripts[ nn ] = AF_SCRIPT_LIST_DEFAULT; - } - } - - FT_Set_Charmap( face, old_charmap ); - return error; - } - - - - FT_LOCAL_DEF( FT_Error ) - af_face_globals_new( FT_Face face, - AF_FaceGlobals *aglobals ) - { - FT_Error error; - FT_Memory memory; - AF_FaceGlobals globals; - - memory = face->memory; - - if ( !FT_ALLOC( globals, sizeof(*globals) + - face->num_glyphs*sizeof(FT_Byte) ) ) - { - globals->face = face; - globals->glyph_count = face->num_glyphs; - globals->glyph_scripts = (FT_Byte*)( globals+1 ); - - error = af_face_globals_compute_script_coverage( globals ); - if ( error ) - { - af_face_globals_free( globals ); - globals = NULL; - } - } - - *aglobals = globals; - return error; - } - - - FT_LOCAL_DEF( void ) - af_face_globals_free( AF_FaceGlobals globals ) - { - if ( globals ) - { - FT_Memory memory = globals->face->memory; - FT_UInt nn; - - for ( nn = 0; nn < AF_SCRIPT_MAX; nn++ ) - { - if ( globals->metrics[nn] ) - { - AF_ScriptClass clazz = af_script_classes[nn]; - - FT_ASSERT( globals->metrics[nn]->clazz == clazz ); - - if ( clazz->script_metrics_done ) - clazz->script_metrics_done( globals->metrics[nn] ); - - FT_FREE( globals->metrics[nn] ); - } - } - - globals->glyph_count = 0; - globals->glyph_scripts = NULL; /* no need to free this one !! */ - globals->face = NULL; - FT_FREE( globals ); - } - } - - - FT_LOCAL_DEF( FT_Error ) - af_face_globals_get_metrics( AF_FaceGlobals globals, - FT_UInt gindex, - AF_ScriptMetrics *ametrics ) - { - AF_ScriptMetrics metrics = NULL; - FT_UInt index; - AF_ScriptClass clazz; - FT_Error error = 0; - - if ( gindex >= globals->glyph_count ) - { - error = FT_Err_Invalid_Argument; - goto Exit; - } - - index = globals->glyph_scripts[ gindex ]; - clazz = af_script_classes[ index ]; - metrics = globals->metrics[ clazz->script ]; - if ( metrics == NULL ) - { - /* create the global metrics object when needed - */ - FT_Memory memory = globals->face->memory; - - if ( FT_ALLOC( metrics, clazz->script_metrics_size ) ) - goto Exit; - - metrics->clazz = clazz; - - if ( clazz->script_metrics_init ) - { - error = clazz->script_metrics_init( metrics, globals->face ); - if ( error ) - { - if ( clazz->script_metrics_done ) - clazz->script_metrics_done( metrics ); - - FT_FREE( metrics ); - goto Exit; - } - } - - globals->metrics[ clazz->script ] = metrics; - } - - Exit: - *ametrics = metrics; - return error; - } diff --git a/nx-X11/extras/freetype2/src/autofit/afglobal.h b/nx-X11/extras/freetype2/src/autofit/afglobal.h deleted file mode 100644 index 64f35c3ff..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afglobal.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef __AF_GLOBAL_H__ -#define __AF_GLOBAL_H__ - -#include "aftypes.h" - -FT_BEGIN_HEADER - - /**************************************************************************/ - /**************************************************************************/ - /***** *****/ - /***** F A C E G L O B A L S *****/ - /***** *****/ - /**************************************************************************/ - /**************************************************************************/ - - - /* - * models the global hints data for a given face, decomposed into - * script-specific items.. - * - */ - typedef struct AF_FaceGlobalsRec_* AF_FaceGlobals; - - - FT_LOCAL( FT_Error ) - af_face_globals_new( FT_Face face, - AF_FaceGlobals *aglobals ); - - FT_LOCAL( FT_Error ) - af_face_globals_get_metrics( AF_FaceGlobals globals, - FT_UInt gindex, - AF_ScriptMetrics *ametrics ); - - FT_LOCAL( void ) - af_face_globals_free( AF_FaceGlobals globals ); - - /* */ - -FT_END_HEADER - -#endif /* __AF_GLOBALS_H__ */ diff --git a/nx-X11/extras/freetype2/src/autofit/afhints.c b/nx-X11/extras/freetype2/src/autofit/afhints.c deleted file mode 100644 index a1a50dce3..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afhints.c +++ /dev/null @@ -1,989 +0,0 @@ -#include "afhints.h" - -#ifdef AF_DEBUG - -#include <stdio.h> - - static const char* af_dir_str( AF_Direction dir ) - { - const char* result; - - switch (dir) - { - case AF_DIR_UP: result = "up"; break; - case AF_DIR_DOWN: result = "down"; break; - case AF_DIR_LEFT: result = "left"; break; - case AF_DIR_RIGHT: result = "right"; break; - default: result = "none"; - } - return result; - } - -#define AF_INDEX_NUM(ptr,base) ( (ptr) ? ((ptr)-(base)) : -1 ) - - void - af_glyph_hints_dump_points( AF_GlyphHints hints ) - { - AF_Point points = hints->points; - AF_Point limit = points + hints->num_points; - AF_Point point; - - printf( "Table of points:\n" ); - printf( " [ index | xorg | yorg | xscale | yscale | xfit | yfit | flags ]\n" ); - for ( point = points; point < limit; point++ ) - { - printf( " [ %5d | %5d | %5d | %-5.2f | %-5.2f | %-5.2f | %-5.2f | %c%c%c%c%c%c ]\n", - point - points, - point->fx, - point->fy, - point->ox/64.0, - point->oy/64.0, - point->x/64.0, - point->y/64.0, - (point->flags & AF_FLAG_WEAK_INTERPOLATION) ? 'w' : ' ', - (point->flags & AF_FLAG_INFLECTION) ? 'i' : ' ', - (point->flags & AF_FLAG_EXTREMA_X) ? '<' : ' ', - (point->flags & AF_FLAG_EXTREMA_Y) ? 'v' : ' ', - (point->flags & AF_FLAG_ROUND_X) ? '(' : ' ', - (point->flags & AF_FLAG_ROUND_Y) ? 'u' : ' ' - ); - } - printf( "\n" ); - } - - - /* A function used to dump the array of linked segments */ - void - af_glyph_hints_dump_segments( AF_GlyphHints hints ) - { - AF_Point points = hints->points; - FT_Int dimension; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AF_AxisHints axis = &hints->axis[dimension]; - AF_Segment segments = axis->segments; - AF_Segment limit = segments + axis->num_segments; - AF_Segment seg; - - - printf ( "Table of %s segments:\n", - dimension == AF_DIMENSION_HORZ ? "vertical" : "horizontal" ); - printf ( " [ index | pos | dir | link | serif |" - " numl | first | start ]\n" ); - - for ( seg = segments; seg < limit; seg++ ) - { - printf ( " [ %5d | %4d | %5s | %4d | %5d | %4d | %5d | %5d ]\n", - seg - segments, - (int)seg->pos, - af_dir_str( seg->dir ), - AF_INDEX_NUM( seg->link, segments ), - AF_INDEX_NUM( seg->serif, segments ), - (int)seg->num_linked, - seg->first - points, - seg->last - points ); - } - printf( "\n" ); - } - } - - - void - af_glyph_hints_dump_edges( AF_GlyphHints hints ) - { - FT_Int dimension; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AF_AxisHints axis = &hints->axis[ dimension ]; - AF_Edge edges = axis->edges; - AF_Edge limit = edges + axis->num_edges; - AF_Edge edge; - - /* note: AF_DIMENSION_HORZ corresponds to _vertical_ edges - * since they have constant X coordinate - */ - printf ( "Table of %s edges:\n", - dimension == AF_DIMENSION_HORZ ? "vertical" : "horizontal" ); - printf ( " [ index | pos | dir | link |" - " serif | blue | opos | pos ]\n" ); - - for ( edge = edges; edge < limit; edge++ ) - { - printf ( " [ %5d | %4d | %5s | %4d | %5d | %c | %5.2f | %5.2f ]\n", - edge - edges, - (int)edge->fpos, - af_dir_str( edge->dir ), - AF_INDEX_NUM( edge->link, edges ), - AF_INDEX_NUM( edge->serif, edges ), - edge->blue_edge ? 'y' : 'n', - edge->opos / 64.0, - edge->pos / 64.0 ); - } - - printf( "\n" ); - } - } - - - -#endif /* AF_DEBUG */ - - - /* compute the direction value of a given vector */ - FT_LOCAL_DEF( AF_Direction ) - af_direction_compute( FT_Pos dx, - FT_Pos dy ) - { - AF_Direction dir; - FT_Pos ax = FT_ABS( dx ); - FT_Pos ay = FT_ABS( dy ); - - - dir = AF_DIR_NONE; - - /* atan(1/12) == 4.7 degrees */ - - /* test for vertical direction */ - if ( ax * 12 < ay ) - { - dir = dy > 0 ? AF_DIR_UP : AF_DIR_DOWN; - } - /* test for horizontal direction */ - else if ( ay * 12 < ax ) - { - dir = dx > 0 ? AF_DIR_RIGHT : AF_DIR_LEFT; - } - - return dir; - } - - - /* compute all inflex points in a given glyph */ - static void - af_glyph_hints_compute_inflections( AF_GlyphHints hints ) - { - AF_Point* contour = hints->contours; - AF_Point* contour_limit = contour + hints->num_contours; - - - /* do each contour separately */ - for ( ; contour < contour_limit; contour++ ) - { - AF_Point point = contour[0]; - AF_Point first = point; - AF_Point start = point; - AF_Point end = point; - AF_Point before; - AF_Point after; - AF_Angle angle_in, angle_seg, angle_out; - AF_Angle diff_in, diff_out; - FT_Int finished = 0; - - - /* compute first segment in contour */ - first = point; - - start = end = first; - do - { - end = end->next; - if ( end == first ) - goto Skip; - - } while ( end->fx == first->fx && end->fy == first->fy ); - - angle_seg = af_angle_atan( end->fx - start->fx, - end->fy - start->fy ); - - /* extend the segment start whenever possible */ - before = start; - do - { - do - { - start = before; - before = before->prev; - if ( before == first ) - goto Skip; - - } while ( before->fx == start->fx && before->fy == start->fy ); - - angle_in = af_angle_atan( start->fx - before->fx, - start->fy - before->fy ); - - } while ( angle_in == angle_seg ); - - first = start; - diff_in = af_angle_diff( angle_in, angle_seg ); - - /* now, process all segments in the contour */ - do - { - /* first, extend current segment's end whenever possible */ - after = end; - do - { - do - { - end = after; - after = after->next; - if ( after == first ) - finished = 1; - - } while ( end->fx == after->fx && end->fy == after->fy ); - - angle_out = af_angle_atan( after->fx - end->fx, - after->fy - end->fy ); - - } while ( angle_out == angle_seg ); - - diff_out = af_angle_diff( angle_seg, angle_out ); - - if ( ( diff_in ^ diff_out ) < 0 ) - { - /* diff_in and diff_out have different signs, we have */ - /* inflection points here... */ - do - { - start->flags |= AF_FLAG_INFLECTION; - start = start->next; - - } while ( start != end ); - - start->flags |= AF_FLAG_INFLECTION; - } - - start = end; - end = after; - angle_seg = angle_out; - diff_in = diff_out; - - } while ( !finished ); - - Skip: - ; - } - } - - - - FT_LOCAL_DEF( void ) - af_glyph_hints_init( AF_GlyphHints hints, - FT_Memory memory ) - { - FT_ZERO( hints ); - hints->memory = memory; - } - - - - FT_LOCAL_DEF( void ) - af_glyph_hints_done( AF_GlyphHints hints ) - { - if ( hints && hints->memory ) - { - FT_Memory memory = hints->memory; - AF_Dimension dim; - - /* note that we don't need to free the segment and edge - * buffers, since they're really within the hints->points array - */ - for ( dim = 0; dim < 2; dim++ ) - { - AF_AxisHints axis = &hints->axis[ dim ]; - - axis->num_segments = 0; - axis->num_edges = 0; - axis->segments = NULL; - axis->edges = NULL; - } - - FT_FREE( hints->contours ); - hints->max_contours = 0; - hints->num_contours = 0; - - FT_FREE( hints->points ); - hints->num_points = 0; - hints->max_points = 0; - - hints->memory = NULL; - } - } - - - - FT_LOCAL_DEF( void ) - af_glyph_hints_rescale( AF_GlyphHints hints, - AF_ScriptMetrics metrics ) - { - hints->metrics = metrics; - } - - - FT_LOCAL_DEF( FT_Error ) - af_glyph_hints_reload( AF_GlyphHints hints, - FT_Outline* outline ) - { - FT_Error error = FT_Err_Ok; - AF_Point points; - FT_UInt old_max, new_max; - AF_Scaler scaler = &hints->metrics->scaler; - FT_Fixed x_scale = hints->x_scale; - FT_Fixed y_scale = hints->y_scale; - FT_Pos x_delta = hints->x_delta; - FT_Pos y_delta = hints->y_delta; - FT_Memory memory = hints->memory; - - hints->scaler_flags = scaler->flags; - hints->num_points = 0; - hints->num_contours = 0; - - hints->axis[0].num_segments = 0; - hints->axis[0].num_edges = 0; - hints->axis[1].num_segments = 0; - hints->axis[1].num_edges = 0; - - /* first of all, reallocate the contours array when necessary - */ - new_max = (FT_UInt) outline->n_contours; - old_max = hints->max_contours; - if ( new_max > old_max ) - { - new_max = (new_max + 3) & ~3; - - if ( FT_RENEW_ARRAY( hints->contours, old_max, new_max ) ) - goto Exit; - - hints->max_contours = new_max; - } - - /* then, reallocate the points, segments & edges arrays if needed -- - * note that we reserved two additional point positions, used to - * hint metrics appropriately - */ - new_max = (FT_UInt)( outline->n_points + 2 ); - old_max = hints->max_points; - if ( new_max > old_max ) - { - FT_Byte* items; - FT_ULong off1, off2, off3; - - /* we store in a single buffer the following arrays: - * - * - an array of N AF_PointRec items - * - an array of 2*N AF_SegmentRec items - * - an array of 2*N AF_EdgeRec items - * - */ - - new_max = ( new_max + 2 + 7 ) & ~7; - -#define OFF_PAD2(x,y) (((x)+(y)-1) & ~((y)-1)) -#define OFF_PADX(x,y) ((((x)+(y)-1)/(y))*(y)) -#define OFF_PAD(x,y) ( ((y) & ((y)-1)) ? OFF_PADX(x,y) : OFF_PAD2(x,y) ) - -#undef OFF_INCREMENT -#define OFF_INCREMENT( _off, _type, _count ) \ - ( OFF_PAD( _off, sizeof(_type) ) + (_count)*sizeof(_type)) - - off1 = OFF_INCREMENT( 0, AF_PointRec, new_max ); - off2 = OFF_INCREMENT( off1, AF_SegmentRec, new_max*2 ); - off3 = OFF_INCREMENT( off2, AF_EdgeRec, new_max*2 ); - - FT_FREE( hints->points ); - - if ( FT_ALLOC( items, off3 ) ) - { - hints->max_points = 0; - hints->axis[0].segments = NULL; - hints->axis[0].edges = NULL; - hints->axis[1].segments = NULL; - hints->axis[1].edges = NULL; - goto Exit; - } - - /* readjust some pointers - */ - hints->max_points = new_max; - hints->points = (AF_Point) items; - - hints->axis[0].segments = (AF_Segment)( items + off1 ); - hints->axis[1].segments = hints->axis[0].segments + new_max; - - hints->axis[0].edges = (AF_Edge) ( items + off2 ); - hints->axis[1].edges = hints->axis[0].edges + new_max; - } - - hints->num_points = outline->n_points; - hints->num_contours = outline->n_contours; - - - /* We can't rely on the value of `FT_Outline.flags' to know the fill */ - /* direction used for a glyph, given that some fonts are broken (e.g. */ - /* the Arphic ones). We thus recompute it each time we need to. */ - /* */ - hints->axis[ AF_DIMENSION_HORZ ].major_dir = AF_DIR_UP; - hints->axis[ AF_DIMENSION_VERT ].major_dir = AF_DIR_LEFT; - - if ( FT_Outline_Get_Orientation( outline ) == FT_ORIENTATION_POSTSCRIPT ) - { - hints->axis[ AF_DIMENSION_HORZ ].major_dir = AF_DIR_DOWN; - hints->axis[ AF_DIMENSION_VERT ].major_dir = AF_DIR_RIGHT; - } - - hints->x_scale = x_scale; - hints->y_scale = y_scale; - hints->x_delta = x_delta; - hints->y_delta = y_delta; - - points = hints->points; - if ( hints->num_points == 0 ) - goto Exit; - - { - AF_Point point; - AF_Point point_limit = points + hints->num_points; - - - /* compute coordinates & bezier flags */ - { - FT_Vector* vec = outline->points; - char* tag = outline->tags; - - - for ( point = points; point < point_limit; point++, vec++, tag++ ) - { - point->fx = vec->x; - point->fy = vec->y; - point->ox = point->x = FT_MulFix( vec->x, x_scale ) + x_delta; - point->oy = point->y = FT_MulFix( vec->y, y_scale ) + y_delta; - - switch ( FT_CURVE_TAG( *tag ) ) - { - case FT_CURVE_TAG_CONIC: - point->flags = AF_FLAG_CONIC; - break; - case FT_CURVE_TAG_CUBIC: - point->flags = AF_FLAG_CUBIC; - break; - default: - point->flags = 0; - ; - } - } - } - - /* compute `next' and `prev' */ - { - FT_Int contour_index; - AF_Point prev; - AF_Point first; - AF_Point end; - - - contour_index = 0; - - first = points; - end = points + outline->contours[0]; - prev = end; - - for ( point = points; point < point_limit; point++ ) - { - point->prev = prev; - if ( point < end ) - { - point->next = point + 1; - prev = point; - } - else - { - point->next = first; - contour_index++; - if ( point + 1 < point_limit ) - { - end = points + outline->contours[contour_index]; - first = point + 1; - prev = end; - } - } - } - } - - /* set-up the contours array */ - { - AF_Point* contour = hints->contours; - AF_Point* contour_limit = contour + hints->num_contours; - short* end = outline->contours; - short idx = 0; - - - for ( ; contour < contour_limit; contour++, end++ ) - { - contour[0] = points + idx; - idx = (short)( end[0] + 1 ); - } - } - - /* compute directions of in & out vectors */ - { - for ( point = points; point < point_limit; point++ ) - { - AF_Point prev; - AF_Point next; - FT_Pos in_x, in_y, out_x, out_y; - - - prev = point->prev; - in_x = point->fx - prev->fx; - in_y = point->fy - prev->fy; - - point->in_dir = af_direction_compute( in_x, in_y ); - - next = point->next; - out_x = next->fx - point->fx; - out_y = next->fy - point->fy; - - point->out_dir = af_direction_compute( out_x, out_y ); - - if ( point->flags & ( AF_FLAG_CONIC | AF_FLAG_CUBIC ) ) - { - Is_Weak_Point: - point->flags |= AF_FLAG_WEAK_INTERPOLATION; - } - else if ( point->out_dir == point->in_dir ) - { - AF_Angle angle_in, angle_out, delta; - - - if ( point->out_dir != AF_DIR_NONE ) - goto Is_Weak_Point; - - angle_in = af_angle_atan( in_x, in_y ); - angle_out = af_angle_atan( out_x, out_y ); - delta = af_angle_diff( angle_in, angle_out ); - - if ( delta < 2 && delta > -2 ) - goto Is_Weak_Point; - } - else if ( point->in_dir == -point->out_dir ) - goto Is_Weak_Point; - } - } - } - - /* compute inflection points - */ - af_glyph_hints_compute_inflections( hints ); - - Exit: - return error; - } - - - FT_LOCAL_DEF( void ) - af_glyph_hints_save( AF_GlyphHints hints, - FT_Outline* outline ) - { - AF_Point point = hints->points; - AF_Point limit = point + hints->num_points; - FT_Vector* vec = outline->points; - char* tag = outline->tags; - - for ( ; point < limit; point++, vec++, tag++ ) - { - vec->x = (FT_Pos) point->x; - vec->y = (FT_Pos) point->y; - - if ( point->flags & AF_FLAG_CONIC ) - tag[0] = FT_CURVE_TAG_CONIC; - else if ( point->flags & AF_FLAG_CUBIC ) - tag[0] = FT_CURVE_TAG_CUBIC; - else - tag[0] = FT_CURVE_TAG_ON; - } - } - - - /* - * - * E D G E P O I N T G R I D - F I T T I N G - * - */ - - - FT_LOCAL_DEF( void ) - af_glyph_hints_align_edge_points( AF_GlyphHints hints, - AF_Dimension dim ) - { - AF_AxisHints axis = & hints->axis[ dim ]; - AF_Edge edges = axis->edges; - AF_Edge edge_limit = edges + axis->num_edges; - AF_Edge edge; - - for ( edge = edges; edge < edge_limit; edge++ ) - { - /* move the points of each segment */ - /* in each edge to the edge's position */ - AF_Segment seg = edge->first; - - - do - { - AF_Point point = seg->first; - - - for (;;) - { - if ( dim == AF_DIMENSION_HORZ ) - { - point->x = edge->pos; - point->flags |= AF_FLAG_TOUCH_X; - } - else - { - point->y = edge->pos; - point->flags |= AF_FLAG_TOUCH_Y; - } - - if ( point == seg->last ) - break; - - point = point->next; - } - - seg = seg->edge_next; - - } while ( seg != edge->first ); - } - } - - - /* - * - * S T R O N G P O I N T I N T E R P O L A T I O N - * - */ - - - /* hint the strong points -- this is equivalent to the TrueType `IP' */ - /* hinting instruction */ - FT_LOCAL_DEF( void ) - af_glyph_hints_align_strong_points( AF_GlyphHints hints, - AF_Dimension dim ) - { - AF_Point points = hints->points; - AF_Point point_limit = points + hints->num_points; - AF_AxisHints axis = &hints->axis[dim]; - AF_Edge edges = axis->edges; - AF_Edge edge_limit = edges + axis->num_edges; - AF_Flags touch_flag; - - - if ( dim == AF_DIMENSION_HORZ ) - touch_flag = AF_FLAG_TOUCH_X; - else - touch_flag = AF_FLAG_TOUCH_Y; - - if ( edges < edge_limit ) - { - AF_Point point; - AF_Edge edge; - - for ( point = points; point < point_limit; point++ ) - { - FT_Pos u, ou, fu; /* point position */ - FT_Pos delta; - - - if ( point->flags & touch_flag ) - continue; - - /* if this point is candidate to weak interpolation, we will */ - /* interpolate it after all strong points have been processed */ - if ( ( point->flags & AF_FLAG_WEAK_INTERPOLATION ) && - !( point->flags & AF_FLAG_INFLECTION ) ) - continue; - - if ( dim == AF_DIMENSION_VERT ) - { - u = point->fy; - ou = point->oy; - } - else - { - u = point->fx; - ou = point->ox; - } - - fu = u; - - /* is the point before the first edge? */ - edge = edges; - delta = edge->fpos - u; - if ( delta >= 0 ) - { - u = edge->pos - ( edge->opos - ou ); - goto Store_Point; - } - - /* is the point after the last edge? */ - edge = edge_limit - 1; - delta = u - edge->fpos; - if ( delta >= 0 ) - { - u = edge->pos + ( ou - edge->opos ); - goto Store_Point; - } - - { - FT_UInt min, max, mid; - FT_Pos fpos; - - - /* find enclosing edges */ - min = 0; - max = edge_limit - edges; - - while ( min < max ) - { - mid = ( max + min ) >> 1; - edge = edges + mid; - fpos = edge->fpos; - - if ( u < fpos ) - max = mid; - else if ( u > fpos ) - min = mid + 1; - else - { - /* we are on the edge */ - u = edge->pos; - goto Store_Point; - } - } - - { - AF_Edge before = edges + min - 1; - AF_Edge after = edges + min + 0; - - - /* assert( before && after && before != after ) */ - if ( before->scale == 0 ) - before->scale = FT_DivFix( after->pos - before->pos, - after->fpos - before->fpos ); - - u = before->pos + FT_MulFix( fu - before->fpos, - before->scale ); - } - } - - - Store_Point: - - /* save the point position */ - if ( dim == AF_DIMENSION_HORZ ) - point->x = u; - else - point->y = u; - - point->flags |= touch_flag; - } - } - } - - - /* - * - * W E A K P O I N T I N T E R P O L A T I O N - * - */ - - static void - af_iup_shift( AF_Point p1, - AF_Point p2, - AF_Point ref ) - { - AF_Point p; - FT_Pos delta = ref->u - ref->v; - - - for ( p = p1; p < ref; p++ ) - p->u = p->v + delta; - - for ( p = ref + 1; p <= p2; p++ ) - p->u = p->v + delta; - } - - - static void - af_iup_interp( AF_Point p1, - AF_Point p2, - AF_Point ref1, - AF_Point ref2 ) - { - AF_Point p; - FT_Pos u; - FT_Pos v1 = ref1->v; - FT_Pos v2 = ref2->v; - FT_Pos d1 = ref1->u - v1; - FT_Pos d2 = ref2->u - v2; - - - if ( p1 > p2 ) - return; - - if ( v1 == v2 ) - { - for ( p = p1; p <= p2; p++ ) - { - u = p->v; - - if ( u <= v1 ) - u += d1; - else - u += d2; - - p->u = u; - } - return; - } - - if ( v1 < v2 ) - { - for ( p = p1; p <= p2; p++ ) - { - u = p->v; - - if ( u <= v1 ) - u += d1; - else if ( u >= v2 ) - u += d2; - else - u = ref1->u + FT_MulDiv( u - v1, ref2->u - ref1->u, v2 - v1 ); - - p->u = u; - } - } - else - { - for ( p = p1; p <= p2; p++ ) - { - u = p->v; - - if ( u <= v2 ) - u += d2; - else if ( u >= v1 ) - u += d1; - else - u = ref1->u + FT_MulDiv( u - v1, ref2->u - ref1->u, v2 - v1 ); - - p->u = u; - } - } - } - - - FT_LOCAL_DEF( void ) - af_glyph_hints_align_weak_points( AF_GlyphHints hints, - AF_Dimension dim ) - { - AF_Point points = hints->points; - AF_Point point_limit = points + hints->num_points; - AF_Point* contour = hints->contours; - AF_Point* contour_limit = contour + hints->num_contours; - AF_Flags touch_flag; - AF_Point point; - AF_Point end_point; - AF_Point first_point; - - - /* PASS 1: Move segment points to edge positions */ - - if ( dim == AF_DIMENSION_HORZ ) - { - touch_flag = AF_FLAG_TOUCH_X; - - for ( point = points; point < point_limit; point++ ) - { - point->u = point->x; - point->v = point->ox; - } - } - else - { - touch_flag = AF_FLAG_TOUCH_Y; - - for ( point = points; point < point_limit; point++ ) - { - point->u = point->y; - point->v = point->oy; - } - } - - point = points; - - for ( ; contour < contour_limit; contour++ ) - { - point = *contour; - end_point = point->prev; - first_point = point; - - while ( point <= end_point && !( point->flags & touch_flag ) ) - point++; - - if ( point <= end_point ) - { - AF_Point first_touched = point; - AF_Point cur_touched = point; - - - point++; - while ( point <= end_point ) - { - if ( point->flags & touch_flag ) - { - /* we found two successive touched points; we interpolate */ - /* all contour points between them */ - af_iup_interp( cur_touched + 1, point - 1, - cur_touched, point ); - cur_touched = point; - } - point++; - } - - if ( cur_touched == first_touched ) - { - /* this is a special case: only one point was touched in the */ - /* contour; we thus simply shift the whole contour */ - af_iup_shift( first_point, end_point, cur_touched ); - } - else - { - /* now interpolate after the last touched point to the end */ - /* of the contour */ - af_iup_interp( cur_touched + 1, end_point, - cur_touched, first_touched ); - - /* if the first contour point isn't touched, interpolate */ - /* from the contour start to the first touched point */ - if ( first_touched > points ) - af_iup_interp( first_point, first_touched - 1, - cur_touched, first_touched ); - } - } - } - - /* now save the interpolated values back to x/y */ - if ( dim == AF_DIMENSION_HORZ ) - { - for ( point = points; point < point_limit; point++ ) - point->x = point->u; - } - else - { - for ( point = points; point < point_limit; point++ ) - point->y = point->u; - } - } diff --git a/nx-X11/extras/freetype2/src/autofit/afhints.h b/nx-X11/extras/freetype2/src/autofit/afhints.h deleted file mode 100644 index 40fd613a4..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afhints.h +++ /dev/null @@ -1,248 +0,0 @@ -#ifndef __AFHINTS_H__ -#define __AFHINTS_H__ - -#include "aftypes.h" - -FT_BEGIN_HEADER - - /* - * The definition of outline glyph hints. These are shared by all - * script analysis routines (until now) - * - */ - - typedef enum - { - AF_DIMENSION_HORZ = 0, /* x coordinates, i.e. vertical segments & edges */ - AF_DIMENSION_VERT = 1, /* y coordinates, i.e. horizontal segments & edges */ - - AF_DIMENSION_MAX /* do not remove */ - - } AF_Dimension; - - - /* hint directions -- the values are computed so that two vectors are */ - /* in opposite directions iff `dir1+dir2 == 0' */ - typedef enum - { - AF_DIR_NONE = 4, - AF_DIR_RIGHT = 1, - AF_DIR_LEFT = -1, - AF_DIR_UP = 2, - AF_DIR_DOWN = -2 - - } AF_Direction; - - - /* point hint flags */ - typedef enum - { - AF_FLAG_NONE = 0, - - /* point type flags */ - AF_FLAG_CONIC = (1 << 0), - AF_FLAG_CUBIC = (1 << 1), - AF_FLAG_CONTROL = AF_FLAG_CONIC | AF_FLAG_CUBIC, - - /* point extremum flags */ - AF_FLAG_EXTREMA_X = (1 << 2), - AF_FLAG_EXTREMA_Y = (1 << 3), - - /* point roundness flags */ - AF_FLAG_ROUND_X = (1 << 4), - AF_FLAG_ROUND_Y = (1 << 5), - - /* point touch flags */ - AF_FLAG_TOUCH_X = (1 << 6), - AF_FLAG_TOUCH_Y = (1 << 7), - - /* candidates for weak interpolation have this flag set */ - AF_FLAG_WEAK_INTERPOLATION = (1 << 8), - - /* all inflection points in the outline have this flag set */ - AF_FLAG_INFLECTION = (1 << 9) - - } AF_Flags; - - - /* edge hint flags */ - typedef enum - { - AF_EDGE_NORMAL = 0, - AF_EDGE_ROUND = (1 << 0), - AF_EDGE_SERIF = (1 << 1), - AF_EDGE_DONE = (1 << 2) - - } AF_Edge_Flags; - - - - typedef struct AF_PointRec_* AF_Point; - typedef struct AF_SegmentRec_* AF_Segment; - typedef struct AF_EdgeRec_* AF_Edge; - - - typedef struct AF_PointRec_ - { - AF_Flags flags; /* point flags used by hinter */ - FT_Pos ox, oy; /* original, scaled position */ - FT_Pos fx, fy; /* original, unscaled position (font units) */ - FT_Pos x, y; /* current position */ - FT_Pos u, v; /* current (x,y) or (y,x) depending on context */ - - AF_Direction in_dir; /* direction of inwards vector */ - AF_Direction out_dir; /* direction of outwards vector */ - - AF_Point next; /* next point in contour */ - AF_Point prev; /* previous point in contour */ - - } AF_PointRec; - - - typedef struct AF_SegmentRec_ - { - AF_Edge_Flags flags; /* edge/segment flags for this segment */ - AF_Direction dir; /* segment direction */ - FT_Pos pos; /* position of segment */ - FT_Pos min_coord; /* minimum coordinate of segment */ - FT_Pos max_coord; /* maximum coordinate of segment */ - - AF_Edge edge; /* the segment's parent edge */ - AF_Segment edge_next; /* link to next segment in parent edge */ - - AF_Segment link; /* (stem) link segment */ - AF_Segment serif; /* primary segment for serifs */ - FT_Pos num_linked; /* number of linked segments */ - FT_Pos score; /* used during stem matching */ - - AF_Point first; /* first point in edge segment */ - AF_Point last; /* last point in edge segment */ - AF_Point* contour; /* ptr to first point of segment's contour */ - - } AF_SegmentRec; - - - typedef struct AF_EdgeRec_ - { - FT_Pos fpos; /* original, unscaled position (font units) */ - FT_Pos opos; /* original, scaled position */ - FT_Pos pos; /* current position */ - - AF_Edge_Flags flags; /* edge flags */ - AF_Direction dir; /* edge direction */ - FT_Fixed scale; /* used to speed up interpolation between edges */ - AF_Width blue_edge; /* non-NULL if this is a blue edge */ - - AF_Edge link; - AF_Edge serif; - FT_Int num_linked; - - FT_Int score; - - AF_Segment first; - AF_Segment last; - - } AF_EdgeRec; - - - typedef struct AF_AxisHintsRec_ - { - FT_Int num_segments; - AF_Segment segments; - - FT_Int num_edges; - AF_Edge edges; - - AF_Direction major_dir; - - } AF_AxisHintsRec, *AF_AxisHints; - - - typedef struct AF_GlyphHintsRec_ - { - FT_Memory memory; - - FT_Fixed x_scale; - FT_Pos x_delta; - - FT_Fixed y_scale; - FT_Pos y_delta; - - FT_Pos edge_distance_threshold; - - FT_Int max_points; - FT_Int num_points; - AF_Point points; - - FT_Int max_contours; - FT_Int num_contours; - AF_Point* contours; - - AF_AxisHintsRec axis[ AF_DIMENSION_MAX ]; - - FT_UInt32 scaler_flags; /* copy of scaler flags */ - FT_UInt32 other_flags; /* free for script-specific implementations */ - AF_ScriptMetrics metrics; - - } AF_GlyphHintsRec; - - -#define AF_HINTS_TEST_SCALER(h,f) ( (h)->scaler_flags & (f) ) -#define AF_HINTS_TEST_OTHER(h,f) ( (h)->other_flags & (f) ) - -#define AF_HINTS_DO_HORIZONTAL(h) \ - !AF_HINTS_TEST_SCALER(h,AF_SCALER_FLAG_NO_HORIZONTAL) - -#define AF_HINTS_DO_VERTICAL(h) \ - !AF_HINTS_TEST_SCALER(h,AF_SCALER_FLAG_NO_VERTICAL) - -#define AF_HINTS_DO_ADVANCE(h) \ - !AF_HINTS_TEST_SCALER(h,AF_SCALER_FLAG_NO_ADVANCE) - - - FT_LOCAL( AF_Direction ) - af_direction_compute( FT_Pos dx, - FT_Pos dy ); - - - FT_LOCAL( void ) - af_glyph_hints_init( AF_GlyphHints hints, - FT_Memory memory ); - - - - /* recomputes all AF_Point in a AF_GlyphHints from the definitions - * in a source outline - */ - FT_LOCAL( void ) - af_glyph_hints_rescale( AF_GlyphHints hints, - AF_ScriptMetrics metrics ); - - FT_LOCAL( FT_Error ) - af_glyph_hints_reload( AF_GlyphHints hints, - FT_Outline* outline ); - - FT_LOCAL( void ) - af_glyph_hints_save( AF_GlyphHints hints, - FT_Outline* outline ); - - FT_LOCAL( void ) - af_glyph_hints_align_edge_points( AF_GlyphHints hints, - AF_Dimension dim ); - - FT_LOCAL( void ) - af_glyph_hints_align_strong_points( AF_GlyphHints hints, - AF_Dimension dim ); - - FT_LOCAL( void ) - af_glyph_hints_align_weak_points( AF_GlyphHints hints, - AF_Dimension dim ); - - FT_LOCAL( void ) - af_glyph_hints_done( AF_GlyphHints hints ); - -/* */ - -FT_END_HEADER - -#endif /* __AFHINTS_H__ */ diff --git a/nx-X11/extras/freetype2/src/autofit/aflatin.c b/nx-X11/extras/freetype2/src/autofit/aflatin.c deleted file mode 100644 index ce0f8c961..000000000 --- a/nx-X11/extras/freetype2/src/autofit/aflatin.c +++ /dev/null @@ -1,1871 +0,0 @@ -#include "aflatin.h" - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** L A T I N G L O B A L M E T R I C S *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - - static void - af_latin_metrics_init_widths( AF_LatinMetrics metrics, - FT_Face face ) - { - /* scan the array of segments in each direction */ - AF_GlyphHintsRec hints[1]; - - af_glyph_hints_init( hints, face->memory ); - - metrics->axis[ AF_DIMENSION_HORZ ].width_count = 0; - metrics->axis[ AF_DIMENSION_VERT ].width_count = 0; - - /* For now, compute the standard width and height from the `o' */ - { - FT_Error error; - FT_UInt glyph_index; - AF_Dimension dim; - AF_ScriptMetricsRec dummy[1]; - AF_Scaler scaler = &dummy->scaler; - - glyph_index = FT_Get_Char_Index( face, 'o' ); - if ( glyph_index == 0 ) - goto Exit; - - error = FT_Load_Glyph( face, glyph_index, FT_LOAD_NO_SCALE ); - if ( error || face->glyph->outline.n_points <= 0 ) - goto Exit; - - FT_ZERO( dummy ); - - scaler->x_scale = scaler->y_scale = 0x10000L; - scaler->x_delta = scaler->y_delta = 0; - scaler->face = face; - scaler->render_mode = 0; - scaler->flags = 0; - - af_glyph_hints_rescale( hints, dummy ); - - error = af_glyph_hints_reload( hints, &face->glyph->outline ); - if ( error ) - goto Exit; - - for ( dim = 0; dim < AF_DIMENSION_MAX; dim++ ) - { - AF_LatinAxis axis = & metrics->axis[ dim ]; - AF_AxisHints axhints = & hints->axis[ dim ]; - AF_Segment seg, limit, link; - FT_UInt num_widths = 0; - FT_Pos edge_distance_threshold = 32000; - - af_latin_hints_compute_segments( hints, dim ); - af_latin_hints_link_segments ( hints, dim ); - - seg = axhints->segments; - limit = seg + axhints->num_segments; - - for ( ; seg < limit; seg++ ) - { - link = seg->link; - /* we only consider stem segments there! */ - if ( link && link->link == seg && link > seg ) - { - FT_Pos dist; - - - dist = seg->pos - link->pos; - if ( dist < 0 ) - dist = -dist; - - if ( num_widths < AF_LATIN_MAX_WIDTHS ) - axis->widths[ num_widths++ ].org = dist; - } - } - - af_sort_widths( num_widths, axis->widths ); - axis->width_count = num_widths; - - /* we will now try to find the smallest width */ - if ( num_widths > 0 && axis->widths[0].org < edge_distance_threshold ) - edge_distance_threshold = axis->widths[0].org; - - /* Now, compute the edge distance threshold as a fraction of the */ - /* smallest width in the font. Set it in `hinter->glyph' too! */ - if ( edge_distance_threshold == 32000 ) - edge_distance_threshold = 50; - - /* let's try 20% */ - axis->edge_distance_threshold = edge_distance_threshold / 5; - } - } - - Exit: - af_glyph_hints_done( hints ); - } - - - -#define AF_LATIN_MAX_TEST_CHARACTERS 12 - - - static const char* const af_latin_blue_chars[ AF_LATIN_MAX_BLUES ] = - { - "THEZOCQS", - "HEZLOCUS", - "fijkdbh", - "xzroesc", - "xzroesc", - "pqgjy" - }; - - - static void - af_latin_metrics_init_blues( AF_LatinMetrics metrics, - FT_Face face ) - { - FT_Pos flats [ AF_LATIN_MAX_TEST_CHARACTERS ]; - FT_Pos rounds[ AF_LATIN_MAX_TEST_CHARACTERS ]; - FT_Int num_flats; - FT_Int num_rounds; - FT_Int bb; - AF_LatinBlue blue; - FT_Error error; - AF_LatinAxis axis = &metrics->axis[ AF_DIMENSION_VERT ]; - FT_GlyphSlot glyph = face->glyph; - - /* we compute the blues simply by loading each character from the */ - /* 'af_latin_blue_chars[blues]' string, then compute its top-most or */ - /* bottom-most points (depending on `AF_IS_TOP_BLUE') */ - - AF_LOG(( "blue zones computation\n" )); - AF_LOG(( "------------------------------------------------\n" )); - - for ( bb = 0; bb < AF_LATIN_BLUE_MAX; bb++ ) - { - const char* p = af_latin_blue_chars[bb]; - const char* limit = p + AF_LATIN_MAX_TEST_CHARACTERS; - FT_Pos* blue_ref; - FT_Pos* blue_shoot; - - AF_LOG(( "blue %3d: ", bb )); - - num_flats = 0; - num_rounds = 0; - - for ( ; p < limit && *p; p++ ) - { - FT_UInt glyph_index; - FT_Vector* extremum; - FT_Vector* points; - FT_Vector* point_limit; - FT_Vector* point; - FT_Bool round; - - - AF_LOG(( "'%c'", *p )); - - /* load the character in the face -- skip unknown or empty ones */ - glyph_index = FT_Get_Char_Index( face, (FT_UInt)*p ); - if ( glyph_index == 0 ) - continue; - - error = FT_Load_Glyph( face, glyph_index, FT_LOAD_NO_SCALE ); - if ( error || glyph->outline.n_points <= 0 ) - continue; - - /* now compute min or max point indices and coordinates */ - points = glyph->outline.points; - point_limit = points + glyph->outline.n_points; - point = points; - extremum = point; - point++; - - if ( AF_LATIN_IS_TOP_BLUE( bb ) ) - { - for ( ; point < point_limit; point++ ) - if ( point->y > extremum->y ) - extremum = point; - } - else - { - for ( ; point < point_limit; point++ ) - if ( point->y < extremum->y ) - extremum = point; - } - - AF_LOG(( "%5d", (int)extremum->y )); - - /* now, check whether the point belongs to a straight or round */ - /* segment; we first need to find in which contour the extremum */ - /* lies, then see its previous and next points */ - { - FT_Int idx = (FT_Int)( extremum - points ); - FT_Int n; - FT_Int first, last, prev, next, end; - FT_Pos dist; - - - last = -1; - first = 0; - - for ( n = 0; n < glyph->outline.n_contours; n++ ) - { - end = glyph->outline.contours[n]; - if ( end >= idx ) - { - last = end; - break; - } - first = end + 1; - } - - /* XXX: should never happen! */ - if ( last < 0 ) - continue; - - /* now look for the previous and next points that are not on the */ - /* same Y coordinate. Threshold the `closeness'... */ - - prev = idx; - next = prev; - - do - { - if ( prev > first ) - prev--; - else - prev = last; - - dist = points[prev].y - extremum->y; - if ( dist < -5 || dist > 5 ) - break; - - } while ( prev != idx ); - - do - { - if ( next < last ) - next++; - else - next = first; - - dist = points[next].y - extremum->y; - if ( dist < -5 || dist > 5 ) - break; - - } while ( next != idx ); - - /* now, set the `round' flag depending on the segment's kind */ - round = FT_BOOL( - FT_CURVE_TAG( glyph->outline.tags[prev] ) != FT_CURVE_TAG_ON || - FT_CURVE_TAG( glyph->outline.tags[next] ) != FT_CURVE_TAG_ON ); - - AF_LOG(( "%c ", round ? 'r' : 'f' )); - } - - if ( round ) - rounds[num_rounds++] = extremum->y; - else - flats[num_flats++] = extremum->y; - } - - AF_LOG(( "\n" )); - - if ( num_flats == 0 && num_rounds == 0 ) - { - /* we couldn't find a single glyph to compute this blue zone, - * we will simply ignore it then - */ - AF_LOG(( "empty !!\n" )); - continue; - } - - /* we have computed the contents of the `rounds' and `flats' tables, */ - /* now determine the reference and overshoot position of the blue -- */ - /* we simply take the median value after a simple sort */ - af_sort_pos( num_rounds, rounds ); - af_sort_pos( num_flats, flats ); - - blue = & axis->blues[ axis->blue_count ]; - blue_ref = & blue->ref.org; - blue_shoot = & blue->shoot.org; - - axis->blue_count ++; - - if ( num_flats == 0 ) - { - *blue_ref = - *blue_shoot = rounds[num_rounds / 2]; - } - else if ( num_rounds == 0 ) - { - *blue_ref = - *blue_shoot = flats[num_flats / 2]; - } - else - { - *blue_ref = flats[num_flats / 2]; - *blue_shoot = rounds[num_rounds / 2]; - } - - /* there are sometimes problems: if the overshoot position of top */ - /* zones is under its reference position, or the opposite for bottom */ - /* zones. We must thus check everything there and correct the errors */ - if ( *blue_shoot != *blue_ref ) - { - FT_Pos ref = *blue_ref; - FT_Pos shoot = *blue_shoot; - FT_Bool over_ref = FT_BOOL( shoot > ref ); - - - if ( AF_LATIN_IS_TOP_BLUE( bb ) ^ over_ref ) - *blue_shoot = *blue_ref = ( shoot + ref ) / 2; - } - - blue->flags = 0; - if ( AF_LATIN_IS_TOP_BLUE(bb) ) - blue->flags |= AF_LATIN_BLUE_TOP; - - /* the following flags is used later to adjust the y and x scales - * in order to optimize the pixel grid alignment of the top of small - * letters. - */ - if ( bb == AF_LATIN_BLUE_SMALL_TOP ) - blue->flags |= AF_LATIN_BLUE_ADJUSTMENT; - - AF_LOG(( "-- ref = %ld, shoot = %ld\n", *blue_ref, *blue_shoot )); - } - - return; - } - - - FT_LOCAL_DEF( FT_Error ) - af_latin_metrics_init( AF_LatinMetrics metrics, - FT_Face face ) - { - FT_Error error; - FT_CharMap oldmap = face->charmap; - - /* do we have a Unicode charmap in there? */ - error = FT_Select_Charmap( face, FT_ENCODING_UNICODE ); - if ( error ) goto Exit; - - metrics->units_per_em = face->units_per_EM; - - af_latin_metrics_init_widths( metrics, face ); - af_latin_metrics_init_blues( metrics, face ); - - Exit: - FT_Set_Charmap( face, oldmap ); - return error; - } - - - static void - af_latin_metrics_scale_dim( AF_LatinMetrics metrics, - AF_Scaler scaler, - AF_Dimension dim ) - { - FT_Fixed scale; - FT_Pos delta; - AF_LatinAxis axis; - FT_UInt nn; - - if ( dim == AF_DIMENSION_HORZ ) - { - scale = scaler->x_scale; - delta = scaler->x_delta; - } - else - { - scale = scaler->y_scale; - delta = scaler->y_delta; - } - - axis = & metrics->axis[ dim ]; - - if ( axis->org_scale == scale && axis->org_delta == delta ) - return; - - axis->org_scale = scale; - axis->org_delta = delta; - - /* correct X and Y scale to optimize the alignment of the top of small - * letters to the pixel grid - */ - { - AF_LatinAxis axis = &metrics->axis[ AF_DIMENSION_VERT ]; - AF_LatinBlue blue = NULL; - FT_UInt nn; - - for ( nn = 0; nn < axis->blue_count; nn++ ) - { - if ( axis->blues[nn].flags & AF_LATIN_BLUE_ADJUSTMENT ) - { - blue = &axis->blues[nn]; - break; - } - } - - if ( blue ) - { - FT_Pos scaled = FT_MulFix( blue->shoot.org, scaler->y_scale ); - FT_Pos fitted = FT_PIX_ROUND( scaled ); - - - if ( scaled != fitted ) - { - if ( dim == AF_DIMENSION_HORZ ) - { - if ( fitted < scaled ) - scale -= scale/50; /* x_scale = x_scale*0.98 */ - } - else - { - scale = FT_MulDiv( scale, fitted, scaled ); - } - } - } - } - - axis->scale = scale; - axis->delta = delta; - - if ( dim == AF_DIMENSION_HORZ ) - { - metrics->root.scaler.x_scale = scale; - metrics->root.scaler.x_delta = delta; - } - else - { - metrics->root.scaler.y_scale = scale; - metrics->root.scaler.y_delta = delta; - } - - /* scale the standard widths - */ - for ( nn = 0; nn < axis->width_count; nn++ ) - { - AF_Width width = axis->widths + nn; - - width->cur = FT_MulFix( width->org, scale ); - width->fit = width->cur; - } - - if ( dim == AF_DIMENSION_VERT ) - { - /* scale the blue zones - */ - for ( nn = 0; nn < axis->blue_count; nn++ ) - { - AF_LatinBlue blue = & axis->blues[nn]; - FT_Pos dist; - - blue->ref.cur = FT_MulFix( blue->ref.org, scale ) + delta; - blue->ref.fit = blue->ref.cur; - blue->shoot.cur = FT_MulFix( blue->shoot.org, scale ) + delta; - blue->shoot.fit = blue->shoot.cur; - blue->flags &= ~AF_LATIN_BLUE_ACTIVE; - - /* a blue zone is only active when it is less than 3/4 pixels tall - */ - dist = FT_MulFix( blue->ref.org - blue->shoot.org, scale ); - if ( dist <= 48 && dist >= -48 ) - { - FT_Pos delta, delta2; - - delta = blue->shoot.org - blue->ref.org; - delta2 = delta; - if ( delta < 0 ) - delta2 = -delta2; - - delta2 = FT_MulFix( delta2, scale ); - - if ( delta2 < 32 ) - delta2 = 0; - else if ( delta2 < 64 ) - delta2 = 32 + ( ( ( delta2 - 32 ) + 16 ) & ~31 ); - else - delta2 = FT_PIX_ROUND( delta2 ); - - if ( delta < 0 ) - delta2 = -delta2; - - blue->ref.fit = FT_PIX_ROUND( blue->ref.cur ); - blue->shoot.fit = blue->ref.fit + delta2; - - blue->flags |= AF_LATIN_BLUE_ACTIVE; - } - } - } - } - - - FT_LOCAL_DEF( void ) - af_latin_metrics_scale( AF_LatinMetrics metrics, - AF_Scaler scaler ) - { - if ( AF_SCALER_EQUAL_SCALES( scaler, &metrics->root.scaler ) ) - return; - - af_latin_metrics_scale_dim( metrics, scaler, AF_DIMENSION_HORZ ); - af_latin_metrics_scale_dim( metrics, scaler, AF_DIMENSION_VERT ); - } - - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** L A T I N G L Y P H A N A L Y S I S *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - - FT_LOCAL_DEF( void ) - af_latin_hints_compute_segments( AF_GlyphHints hints, - AF_Dimension dim ) - { - AF_AxisHints axis = &hints->axis[dim]; - AF_Segment segments = axis->segments; - AF_Segment segment = segments; - FT_Int num_segments = 0; - AF_Point* contour = hints->contours; - AF_Point* contour_limit = contour + hints->num_contours; - AF_Direction major_dir, segment_dir; - -#ifdef AF_HINT_METRICS - AF_Point min_point = 0; - AF_Point max_point = 0; - FT_Pos min_coord = 32000; - FT_Pos max_coord = -32000; -#endif - - major_dir = FT_ABS( axis->major_dir ); - segment_dir = major_dir; - - /* set up (u,v) in each point */ - if ( dim == AF_DIMENSION_HORZ ) - { - AF_Point point = hints->points; - AF_Point limit = point + hints->num_points; - - for ( ; point < limit; point++ ) - { - point->u = point->fx; - point->v = point->fy; - } - } - else - { - AF_Point point = hints->points; - AF_Point limit = point + hints->num_points; - - for ( ; point < limit; point++ ) - { - point->u = point->fy; - point->v = point->fx; - } - } - - - /* do each contour separately */ - for ( ; contour < contour_limit; contour++ ) - { - AF_Point point = contour[0]; - AF_Point last = point->prev; - int on_edge = 0; - FT_Pos min_pos = 32000; /* minimum segment pos != min_coord */ - FT_Pos max_pos = -32000; /* maximum segment pos != max_coord */ - FT_Bool passed; - - -#ifdef AF_HINT_METRICS - if ( point->u < min_coord ) - { - min_coord = point->u; - min_point = point; - } - if ( point->u > max_coord ) - { - max_coord = point->u; - max_point = point; - } -#endif - - if ( point == last ) /* skip singletons -- just in case */ - continue; - - if ( FT_ABS( last->out_dir ) == major_dir && - FT_ABS( point->out_dir ) == major_dir ) - { - /* we are already on an edge, try to locate its start */ - last = point; - - for (;;) - { - point = point->prev; - if ( FT_ABS( point->out_dir ) != major_dir ) - { - point = point->next; - break; - } - if ( point == last ) - break; - } - } - - last = point; - passed = 0; - - for (;;) - { - FT_Pos u, v; - - - if ( on_edge ) - { - u = point->u; - if ( u < min_pos ) - min_pos = u; - if ( u > max_pos ) - max_pos = u; - - if ( point->out_dir != segment_dir || point == last ) - { - /* we are just leaving an edge; record a new segment! */ - segment->last = point; - segment->pos = ( min_pos + max_pos ) >> 1; - - /* a segment is round if either its first or last point */ - /* is a control point */ - if ( ( segment->first->flags | point->flags ) & - AF_FLAG_CONTROL ) - segment->flags |= AF_EDGE_ROUND; - - /* compute segment size */ - min_pos = max_pos = point->v; - - v = segment->first->v; - if ( v < min_pos ) - min_pos = v; - if ( v > max_pos ) - max_pos = v; - - segment->min_coord = min_pos; - segment->max_coord = max_pos; - - on_edge = 0; - num_segments++; - segment++; - /* fallthrough */ - } - } - - /* now exit if we are at the start/end point */ - if ( point == last ) - { - if ( passed ) - break; - passed = 1; - } - - if ( !on_edge && FT_ABS( point->out_dir ) == major_dir ) - { - /* this is the start of a new segment! */ - segment_dir = point->out_dir; - - /* clear all segment fields */ - FT_ZERO( segment ); - - segment->dir = segment_dir; - segment->flags = AF_EDGE_NORMAL; - min_pos = max_pos = point->u; - segment->first = point; - segment->last = point; - segment->contour = contour; - segment->score = 32000; - segment->link = NULL; - on_edge = 1; - -#ifdef AF_HINT_METRICS - if ( point == max_point ) - max_point = 0; - - if ( point == min_point ) - min_point = 0; -#endif - } - - point = point->next; - } - - } /* contours */ - -#ifdef AF_HINT_METRICS - /* we need to ensure that there are edges on the left-most and */ - /* right-most points of the glyph in order to hint the metrics; */ - /* we do this by inserting fake segments when needed */ - if ( dim == AF_DIMENSION_HORZ ) - { - AF_Point point = hints->points; - AF_Point point_limit = point + hints->num_points; - - FT_Pos min_pos = 32000; - FT_Pos max_pos = -32000; - - - min_point = 0; - max_point = 0; - - /* compute minimum and maximum points */ - for ( ; point < point_limit; point++ ) - { - FT_Pos x = point->fx; - - - if ( x < min_pos ) - { - min_pos = x; - min_point = point; - } - if ( x > max_pos ) - { - max_pos = x; - max_point = point; - } - } - - /* insert minimum segment */ - if ( min_point ) - { - /* clear all segment fields */ - FT_ZERO( segment ); - - segment->dir = segment_dir; - segment->flags = AF_EDGE_NORMAL; - segment->first = min_point; - segment->last = min_point; - segment->pos = min_pos; - segment->score = 32000; - segment->link = NULL; - - num_segments++; - segment++; - } - - /* insert maximum segment */ - if ( max_point ) - { - /* clear all segment fields */ - FT_ZERO( segment ); - - segment->dir = segment_dir; - segment->flags = AF_EDGE_NORMAL; - segment->first = max_point; - segment->last = max_point; - segment->pos = max_pos; - segment->score = 32000; - segment->link = NULL; - - num_segments++; - segment++; - } - } -#endif /* AF_HINT_METRICS */ - - axis->num_segments = num_segments; - } - - - FT_LOCAL_DEF( void ) - af_latin_hints_link_segments( AF_GlyphHints hints, - AF_Dimension dim ) - { - AF_AxisHints axis = &hints->axis[dim]; - AF_Segment segments = axis->segments; - AF_Segment segment_limit = segments + axis->num_segments; - AF_Direction major_dir = axis->major_dir; - AF_Segment seg1, seg2; - - /* now compare each segment to the others */ - for ( seg1 = segments; seg1 < segment_limit; seg1++ ) - { - /* the fake segments are introduced to hint the metrics -- */ - /* we must never link them to anything */ - if ( seg1->first == seg1->last || seg1->dir != major_dir ) - continue; - - for ( seg2 = segments; seg2 < segment_limit; seg2++ ) - if ( seg2 != seg1 && seg1->dir + seg2->dir == 0 ) - { - FT_Pos pos1 = seg1->pos; - FT_Pos pos2 = seg2->pos; - FT_Pos dist = pos2 - pos1; - - - if ( dist < 0 ) - continue; - - { - FT_Pos min = seg1->min_coord; - FT_Pos max = seg1->max_coord; - FT_Pos len, score; - - - if ( min < seg2->min_coord ) - min = seg2->min_coord; - - if ( max > seg2->max_coord ) - max = seg2->max_coord; - - len = max - min; - if ( len >= 8 ) - { - score = dist + 3000 / len; - - if ( score < seg1->score ) - { - seg1->score = score; - seg1->link = seg2; - } - - if ( score < seg2->score ) - { - seg2->score = score; - seg2->link = seg1; - } - } - } - } - } - - /* now, compute the `serif' segments */ - for ( seg1 = segments; seg1 < segment_limit; seg1++ ) - { - seg2 = seg1->link; - - if ( seg2 ) - { - seg2->num_linked++; - if ( seg2->link != seg1 ) - { - seg1->link = 0; - seg1->serif = seg2->link; - } - } - } - } - - - FT_LOCAL_DEF( void ) - af_latin_hints_compute_edges( AF_GlyphHints hints, - AF_Dimension dim ) - { - AF_AxisHints axis = &hints->axis[dim]; - AF_LatinAxis laxis = &((AF_LatinMetrics)hints->metrics)->axis[dim]; - AF_Edge edges = axis->edges; - AF_Edge edge, edge_limit; - - AF_Segment segments = axis->segments; - AF_Segment segment_limit = segments + axis->num_segments; - AF_Segment seg; - - AF_Direction up_dir; - FT_Fixed scale; - FT_Pos edge_distance_threshold; - - - scale = ( dim == AF_DIMENSION_HORZ ) ? hints->x_scale - : hints->y_scale; - - up_dir = ( dim == AF_DIMENSION_HORZ ) ? AF_DIR_UP - : AF_DIR_RIGHT; - - /*********************************************************************/ - /* */ - /* We will begin by generating a sorted table of edges for the */ - /* current direction. To do so, we simply scan each segment and try */ - /* to find an edge in our table that corresponds to its position. */ - /* */ - /* If no edge is found, we create and insert a new edge in the */ - /* sorted table. Otherwise, we simply add the segment to the edge's */ - /* list which will be processed in the second step to compute the */ - /* edge's properties. */ - /* */ - /* Note that the edges table is sorted along the segment/edge */ - /* position. */ - /* */ - /*********************************************************************/ - - edge_distance_threshold = FT_MulFix( laxis->edge_distance_threshold, - scale ); - if ( edge_distance_threshold > 64 / 4 ) - edge_distance_threshold = 64 / 4; - - edge_distance_threshold = FT_DivFix( edge_distance_threshold, - scale ); - - edge_limit = edges; - for ( seg = segments; seg < segment_limit; seg++ ) - { - AF_Edge found = 0; - - - /* look for an edge corresponding to the segment */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - FT_Pos dist; - - - dist = seg->pos - edge->fpos; - if ( dist < 0 ) - dist = -dist; - - if ( dist < edge_distance_threshold ) - { - found = edge; - break; - } - } - - if ( !found ) - { - /* insert a new edge in the list and */ - /* sort according to the position */ - while ( edge > edges && edge[-1].fpos > seg->pos ) - { - edge[0] = edge[-1]; - edge--; - } - edge_limit++; - - /* clear all edge fields */ - FT_ZERO( edge ); - - /* add the segment to the new edge's list */ - edge->first = seg; - edge->last = seg; - edge->fpos = seg->pos; - edge->opos = edge->pos = FT_MulFix( seg->pos, scale ); - seg->edge_next = seg; - } - else - { - /* if an edge was found, simply add the segment to the edge's */ - /* list */ - seg->edge_next = edge->first; - edge->last->edge_next = seg; - edge->last = seg; - } - } - axis->num_edges = (FT_Int)( edge_limit - edges ); - - - /*********************************************************************/ - /* */ - /* Good, we will now compute each edge's properties according to */ - /* segments found on its position. Basically, these are: */ - /* */ - /* - edge's main direction */ - /* - stem edge, serif edge or both (which defaults to stem then) */ - /* - rounded edge, straight or both (which defaults to straight) */ - /* - link for edge */ - /* */ - /*********************************************************************/ - - /* first of all, set the `edge' field in each segment -- this is */ - /* required in order to compute edge links */ - - /* Note that I've tried to remove this loop, setting - * the "edge" field of each segment directly in the - * code above. For some reason, it slows down execution - * speed -- on a Sun. - */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - seg = edge->first; - if ( seg ) - do - { - seg->edge = edge; - seg = seg->edge_next; - } - while ( seg != edge->first ); - } - - /* now, compute each edge properties */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - FT_Int is_round = 0; /* does it contain round segments? */ - FT_Int is_straight = 0; /* does it contain straight segments? */ - FT_Pos ups = 0; /* number of upwards segments */ - FT_Pos downs = 0; /* number of downwards segments */ - - - seg = edge->first; - - do - { - FT_Bool is_serif; - - - /* check for roundness of segment */ - if ( seg->flags & AF_EDGE_ROUND ) - is_round++; - else - is_straight++; - - /* check for segment direction */ - if ( seg->dir == up_dir ) - ups += seg->max_coord-seg->min_coord; - else - downs += seg->max_coord-seg->min_coord; - - /* check for links -- if seg->serif is set, then seg->link must */ - /* be ignored */ - is_serif = (FT_Bool)( seg->serif && seg->serif->edge != edge ); - - if ( seg->link || is_serif ) - { - AF_Edge edge2; - AF_Segment seg2; - - - edge2 = edge->link; - seg2 = seg->link; - - if ( is_serif ) - { - seg2 = seg->serif; - edge2 = edge->serif; - } - - if ( edge2 ) - { - FT_Pos edge_delta; - FT_Pos seg_delta; - - - edge_delta = edge->fpos - edge2->fpos; - if ( edge_delta < 0 ) - edge_delta = -edge_delta; - - seg_delta = seg->pos - seg2->pos; - if ( seg_delta < 0 ) - seg_delta = -seg_delta; - - if ( seg_delta < edge_delta ) - edge2 = seg2->edge; - } - else - edge2 = seg2->edge; - - if ( is_serif ) - { - edge->serif = edge2; - edge2->flags |= AF_EDGE_SERIF; - } - else - edge->link = edge2; - } - - seg = seg->edge_next; - - } while ( seg != edge->first ); - - /* set the round/straight flags */ - edge->flags = AF_EDGE_NORMAL; - - if ( is_round > 0 && is_round >= is_straight ) - edge->flags |= AF_EDGE_ROUND; - - /* set the edge's main direction */ - edge->dir = AF_DIR_NONE; - - if ( ups > downs ) - edge->dir = up_dir; - - else if ( ups < downs ) - edge->dir = -up_dir; - - else if ( ups == downs ) - edge->dir = 0; /* both up and down! */ - - /* gets rid of serifs if link is set */ - /* XXX: This gets rid of many unpleasant artefacts! */ - /* Example: the `c' in cour.pfa at size 13 */ - - if ( edge->serif && edge->link ) - edge->serif = 0; - } - } - - - FT_LOCAL_DEF( void ) - af_latin_hints_detect_features( AF_GlyphHints hints, - AF_Dimension dim ) - { - af_latin_hints_compute_segments( hints, dim ); - af_latin_hints_link_segments ( hints, dim ); - af_latin_hints_compute_edges ( hints, dim ); - } - - - FT_LOCAL_DEF( void ) - af_latin_hints_compute_blue_edges( AF_GlyphHints hints, - AF_LatinMetrics metrics ) - { - AF_AxisHints axis = &hints->axis[ AF_DIMENSION_VERT ]; - AF_Edge edge = axis->edges; - AF_Edge edge_limit = edge + axis->num_edges; - AF_LatinAxis latin = &metrics->axis[ AF_DIMENSION_VERT ]; - FT_Fixed scale = latin->scale; - - - /* compute which blue zones are active, i.e. have their scaled */ - /* size < 3/4 pixels */ - - /* for each horizontal edge search the blue zone which is closest */ - for ( ; edge < edge_limit; edge++ ) - { - FT_Int bb; - AF_Width best_blue = NULL; - FT_Pos best_dist; /* initial threshold */ - - - /* compute the initial threshold as a fraction of the EM size */ - best_dist = FT_MulFix( metrics->units_per_em / 40, scale ); - - if ( best_dist > 64 / 2 ) - best_dist = 64 / 2; - - for ( bb = 0; bb < AF_LATIN_BLUE_MAX; bb++ ) - { - AF_LatinBlue blue = latin->blues + bb; - FT_Bool is_top_blue, is_major_dir; - - /* skip inactive blue zones (i.e. those that are too small - */ - if ( !(blue->flags & AF_LATIN_BLUE_ACTIVE) ) - continue; - - /* if it is a top zone, check for right edges -- if it is a bottom */ - /* zone, check for left edges */ - /* */ - /* of course, that's for TrueType */ - is_top_blue = (blue->flags & AF_LATIN_BLUE_TOP) != 0; - is_major_dir = FT_BOOL( edge->dir == axis->major_dir ); - - /* if it is a top zone, the edge must be against the major */ - /* direction; if it is a bottom zone, it must be in the major */ - /* direction */ - if ( is_top_blue ^ is_major_dir ) - { - FT_Pos dist; - - - /* first of all, compare it to the reference position */ - dist = edge->fpos - blue->ref.org; - if ( dist < 0 ) - dist = -dist; - - dist = FT_MulFix( dist, scale ); - if ( dist < best_dist ) - { - best_dist = dist; - best_blue = & blue->ref; - } - - /* now, compare it to the overshoot position if the edge is */ - /* rounded, and if the edge is over the reference position of a */ - /* top zone, or under the reference position of a bottom zone */ - if ( edge->flags & AF_EDGE_ROUND && dist != 0 ) - { - FT_Bool is_under_ref = FT_BOOL( edge->fpos < blue->ref.org ); - - - if ( is_top_blue ^ is_under_ref ) - { - blue = latin->blues + bb; - dist = edge->fpos - blue->shoot.org; - if ( dist < 0 ) - dist = -dist; - - dist = FT_MulFix( dist, scale ); - if ( dist < best_dist ) - { - best_dist = dist; - best_blue = & blue->shoot; - } - } - } - } - } - - if ( best_blue ) - edge->blue_edge = best_blue; - } - } - - - static FT_Error - af_latin_hints_init( AF_GlyphHints hints, - AF_LatinMetrics metrics ) - { - FT_Render_Mode mode; - - af_glyph_hints_rescale( hints, (AF_ScriptMetrics)metrics ); - - /* correct x_scale and y_scale when needed, since they may have - * been modified af_latin_scale_dim above - */ - hints->x_scale = metrics->axis[ AF_DIMENSION_HORZ ].scale; - hints->x_delta = metrics->axis[ AF_DIMENSION_HORZ ].delta; - hints->y_scale = metrics->axis[ AF_DIMENSION_VERT ].scale; - hints->y_delta = metrics->axis[ AF_DIMENSION_VERT ].delta; - - /* compute flags depending on render mode, etc... - */ - - mode = metrics->root.scaler.render_mode; - - /* we snap the width of vertical stems for the monochrome and - * horizontal LCD rendering targets only. - */ - if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD ) - hints->other_flags |= AF_LATIN_HINTS_HORZ_SNAP; - - /* we snap the width of horizontal stems for the monochrome and - * vertical LCD rendering targets only. - */ - if ( mode == FT_RENDER_MODE_MONO || mode == FT_RENDER_MODE_LCD_V ) - hints->other_flags |= AF_LATIN_HINTS_VERT_SNAP; - - /* XXX - */ - if ( mode != FT_RENDER_MODE_LIGHT ) - hints->other_flags |= AF_LATIN_HINTS_STEM_ADJUST; - - if ( mode == FT_RENDER_MODE_MONO ) - hints->other_flags |= AF_LATIN_HINTS_MONO; - - return 0; - } - - - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** L A T I N G L Y P H G R I D - F I T T I N G *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - - /* snap a given width in scaled coordinates to one of the */ - /* current standard widths */ - static FT_Pos - af_latin_snap_width( AF_Width widths, - FT_Int count, - FT_Pos width ) - { - int n; - FT_Pos best = 64 + 32 + 2; - FT_Pos reference = width; - FT_Pos scaled; - - - for ( n = 0; n < count; n++ ) - { - FT_Pos w; - FT_Pos dist; - - - w = widths[n].cur; - dist = width - w; - if ( dist < 0 ) - dist = -dist; - if ( dist < best ) - { - best = dist; - reference = w; - } - } - - scaled = FT_PIX_ROUND( reference ); - - if ( width >= reference ) - { - if ( width < scaled + 48 ) - width = reference; - } - else - { - if ( width > scaled - 48 ) - width = reference; - } - - return width; - } - - - /* compute the snapped width of a given stem */ - - static FT_Pos - af_latin_compute_stem_width( AF_GlyphHints hints, - AF_Dimension dim, - FT_Pos width, - AF_Edge_Flags base_flags, - AF_Edge_Flags stem_flags ) - { - AF_LatinMetrics metrics = (AF_LatinMetrics) hints->metrics; - AF_LatinAxis axis = & metrics->axis[ dim ]; - FT_Pos dist = width; - FT_Int sign = 0; - FT_Int vertical = AF_HINTS_DO_VERTICAL( hints ); - - - if ( !AF_LATIN_HINTS_DO_STEM_ADJUST( hints ) ) - return width; - - if ( dist < 0 ) - { - dist = -width; - sign = 1; - } - - if ( ( vertical && !AF_LATIN_HINTS_DO_VERT_SNAP( hints ) ) || - ( !vertical && !AF_LATIN_HINTS_DO_HORZ_SNAP( hints ) ) ) - { - /* smooth hinting process: very lightly quantize the stem width */ - /* */ - - /* leave the widths of serifs alone */ - - if ( ( stem_flags & AF_EDGE_SERIF ) && vertical && ( dist < 3 * 64 ) ) - goto Done_Width; - - else if ( ( base_flags & AF_EDGE_ROUND ) ) - { - if ( dist < 80 ) - dist = 64; - } - else if ( dist < 56 ) - dist = 56; - - if ( axis->width_count > 0 ) - { - FT_Pos delta; - - /* compare to standard width - */ - if ( axis->width_count > 0 ) - { - delta = dist - axis->widths[0].cur; - - if ( delta < 0 ) - delta = -delta; - - if ( delta < 40 ) - { - dist = axis->widths[ 0 ].cur; - if ( dist < 48 ) - dist = 48; - - goto Done_Width; - } - } - - if ( dist < 3 * 64 ) - { - delta = dist & 63; - dist &= -64; - - if ( delta < 10 ) - dist += delta; - - else if ( delta < 32 ) - dist += 10; - - else if ( delta < 54 ) - dist += 54; - - else - dist += delta; - } - else - dist = ( dist + 32 ) & ~63; - } - } - else - { - /* strong hinting process: snap the stem width to integer pixels */ - /* */ - dist = af_latin_snap_width( axis->widths, axis->width_count, dist ); - - if ( vertical ) - { - /* in the case of vertical hinting, always round */ - /* the stem heights to integer pixels */ - if ( dist >= 64 ) - dist = ( dist + 16 ) & ~63; - else - dist = 64; - } - else - { - if ( AF_LATIN_HINTS_DO_MONO( hints ) ) - { - /* monochrome horizontal hinting: snap widths to integer pixels */ - /* with a different threshold */ - if ( dist < 64 ) - dist = 64; - else - dist = ( dist + 32 ) & ~63; - } - else - { - /* for horizontal anti-aliased hinting, we adopt a more subtle */ - /* approach: we strengthen small stems, round stems whose size */ - /* is between 1 and 2 pixels to an integer, otherwise nothing */ - if ( dist < 48 ) - dist = ( dist + 64 ) >> 1; - - else if ( dist < 128 ) - dist = ( dist + 22 ) & ~63; - else - /* round otherwise to prevent color fringes in LCD mode */ - dist = ( dist + 32 ) & ~63; - } - } - } - - Done_Width: - if ( sign ) - dist = -dist; - - return dist; - } - - - - /* align one stem edge relative to the previous stem edge */ - static void - af_latin_align_linked_edge( AF_GlyphHints hints, - AF_Dimension dim, - AF_Edge base_edge, - AF_Edge stem_edge ) - { - FT_Pos dist = stem_edge->opos - base_edge->opos; - - FT_Pos fitted_width = af_latin_compute_stem_width( hints, - dim, - dist, - base_edge->flags, - stem_edge->flags ); - - stem_edge->pos = base_edge->pos + fitted_width; - } - - - static void - af_latin_align_serif_edge( AF_GlyphHints hints, - AF_Edge base, - AF_Edge serif ) - { - FT_UNUSED( hints ); - - serif->pos = base->pos + (serif->opos - base->opos); - } - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** E D G E H I N T I N G ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( void ) - af_latin_hint_edges( AF_GlyphHints hints, - AF_Dimension dim ) - { - AF_AxisHints axis = & hints->axis[dim]; - AF_Edge edges = axis->edges; - AF_Edge edge_limit = edges + axis->num_edges; - FT_Int n_edges; - AF_Edge edge; - AF_Edge anchor = 0; - FT_Int has_serifs = 0; - - - /* we begin by aligning all stems relative to the blue zone */ - /* if needed -- that's only for horizontal edges */ - if ( dim == AF_DIMENSION_VERT ) - { - for ( edge = edges; edge < edge_limit; edge++ ) - { - AF_Width blue; - AF_Edge edge1, edge2; - - - if ( edge->flags & AF_EDGE_DONE ) - continue; - - blue = edge->blue_edge; - edge1 = NULL; - edge2 = edge->link; - - if ( blue ) - { - edge1 = edge; - } - else if ( edge2 && edge2->blue_edge ) - { - blue = edge2->blue_edge; - edge1 = edge2; - edge2 = edge; - } - - if ( !edge1 ) - continue; - - edge1->pos = blue->fit; - edge1->flags |= AF_EDGE_DONE; - - if ( edge2 && !edge2->blue_edge ) - { - af_latin_align_linked_edge( hints, dim, edge1, edge2 ); - edge2->flags |= AF_EDGE_DONE; - } - - if ( !anchor ) - anchor = edge; - } - } - - /* now we will align all stem edges, trying to maintain the */ - /* relative order of stems in the glyph */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - AF_Edge edge2; - - - if ( edge->flags & AF_EDGE_DONE ) - continue; - - /* skip all non-stem edges */ - edge2 = edge->link; - if ( !edge2 ) - { - has_serifs++; - continue; - } - - /* now align the stem */ - - /* this should not happen, but it's better to be safe */ - if ( edge2->blue_edge || edge2 < edge ) - { - af_latin_align_linked_edge( hints, dim, edge2, edge ); - edge->flags |= AF_EDGE_DONE; - continue; - } - - if ( !anchor ) - { - FT_Pos org_len, org_center, cur_len; - FT_Pos cur_pos1, error1, error2, u_off, d_off; - - - org_len = edge2->opos - edge->opos; - cur_len = af_latin_compute_stem_width( hints, dim, org_len, - edge->flags, edge2->flags ); - if ( cur_len <= 64 ) - u_off = d_off = 32; - else - { - u_off = 38; - d_off = 26; - } - - if ( cur_len < 96 ) - { - org_center = edge->opos + ( org_len >> 1 ); - - cur_pos1 = FT_PIX_ROUND( org_center ); - - error1 = org_center - ( cur_pos1 - u_off ); - if ( error1 < 0 ) - error1 = -error1; - - error2 = org_center - ( cur_pos1 + d_off ); - if ( error2 < 0 ) - error2 = -error2; - - if ( error1 < error2 ) - cur_pos1 -= u_off; - else - cur_pos1 += d_off; - - edge->pos = cur_pos1 - cur_len / 2; - edge2->pos = cur_pos1 + cur_len / 2; - - } - else - edge->pos = FT_PIX_ROUND( edge->opos ); - - anchor = edge; - - edge->flags |= AF_EDGE_DONE; - - af_latin_align_linked_edge( hints, dim, edge, edge2 ); - } - else - { - FT_Pos org_pos, org_len, org_center, cur_len; - FT_Pos cur_pos1, cur_pos2, delta1, delta2; - - - org_pos = anchor->pos + ( edge->opos - anchor->opos ); - org_len = edge2->opos - edge->opos; - org_center = org_pos + ( org_len >> 1 ); - - cur_len = af_latin_compute_stem_width( hints, dim, org_len, - edge->flags, edge2->flags ); - - if ( cur_len < 96 ) - { - FT_Pos u_off, d_off; - - - cur_pos1 = FT_PIX_ROUND( org_center ); - - if (cur_len <= 64 ) - u_off = d_off = 32; - else - { - u_off = 38; - d_off = 26; - } - - delta1 = org_center - ( cur_pos1 - u_off ); - if ( delta1 < 0 ) - delta1 = -delta1; - - delta2 = org_center - ( cur_pos1 + d_off ); - if ( delta2 < 0 ) - delta2 = -delta2; - - if ( delta1 < delta2 ) - cur_pos1 -= u_off; - else - cur_pos1 += d_off; - - edge->pos = cur_pos1 - cur_len / 2; - edge2->pos = cur_pos1 + cur_len / 2; - } - else - { - org_pos = anchor->pos + ( edge->opos - anchor->opos ); - org_len = edge2->opos - edge->opos; - org_center = org_pos + ( org_len >> 1 ); - - cur_len = af_latin_compute_stem_width( hints, dim, org_len, - edge->flags, edge2->flags ); - - cur_pos1 = FT_PIX_ROUND( org_pos ); - delta1 = ( cur_pos1 + ( cur_len >> 1 ) - org_center ); - if ( delta1 < 0 ) - delta1 = -delta1; - - cur_pos2 = FT_PIX_ROUND( org_pos + org_len ) - cur_len; - delta2 = ( cur_pos2 + ( cur_len >> 1 ) - org_center ); - if ( delta2 < 0 ) - delta2 = -delta2; - - edge->pos = ( delta1 < delta2 ) ? cur_pos1 : cur_pos2; - edge2->pos = edge->pos + cur_len; - } - - edge->flags |= AF_EDGE_DONE; - edge2->flags |= AF_EDGE_DONE; - - if ( edge > edges && edge->pos < edge[-1].pos ) - edge->pos = edge[-1].pos; - } - } - - /* make sure that lowercase m's maintain their symmetry */ - - /* In general, lowercase m's have six vertical edges if they are sans */ - /* serif, or twelve if they are avec serif. This implementation is */ - /* based on that assumption, and seems to work very well with most */ - /* faces. However, if for a certain face this assumption is not */ - /* true, the m is just rendered like before. In addition, any stem */ - /* correction will only be applied to symmetrical glyphs (even if the */ - /* glyph is not an m), so the potential for unwanted distortion is */ - /* relatively low. */ - - /* We don't handle horizontal edges since we can't easily assure that */ - /* the third (lowest) stem aligns with the base line; it might end up */ - /* one pixel higher or lower. */ - - n_edges = edge_limit - edges; - if ( dim == AF_DIMENSION_HORZ && ( n_edges == 6 || n_edges == 12 ) ) - { - AF_Edge edge1, edge2, edge3; - FT_Pos dist1, dist2, span, delta; - - - if ( n_edges == 6 ) - { - edge1 = edges; - edge2 = edges + 2; - edge3 = edges + 4; - } - else - { - edge1 = edges + 1; - edge2 = edges + 5; - edge3 = edges + 9; - } - - dist1 = edge2->opos - edge1->opos; - dist2 = edge3->opos - edge2->opos; - - span = dist1 - dist2; - if ( span < 0 ) - span = -span; - - if ( span < 8 ) - { - delta = edge3->pos - ( 2 * edge2->pos - edge1->pos ); - edge3->pos -= delta; - if ( edge3->link ) - edge3->link->pos -= delta; - - /* move the serifs along with the stem */ - if ( n_edges == 12 ) - { - ( edges + 8 )->pos -= delta; - ( edges + 11 )->pos -= delta; - } - - edge3->flags |= AF_EDGE_DONE; - if ( edge3->link ) - edge3->link->flags |= AF_EDGE_DONE; - } - } - - if ( has_serifs || !anchor ) - { - /* now hint the remaining edges (serifs and single) in order - * to complete our processing - */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - if ( edge->flags & AF_EDGE_DONE ) - continue; - - if ( edge->serif ) - af_latin_align_serif_edge( hints, edge->serif, edge ); - else if ( !anchor ) - { - edge->pos = FT_PIX_ROUND( edge->opos ); - anchor = edge; - } - else - edge->pos = anchor->pos + - FT_PIX_ROUND( edge->opos - anchor->opos ); - - edge->flags |= AF_EDGE_DONE; - - if ( edge > edges && edge->pos < edge[-1].pos ) - edge->pos = edge[-1].pos; - - if ( edge + 1 < edge_limit && - edge[1].flags & AF_EDGE_DONE && - edge->pos > edge[1].pos ) - edge->pos = edge[1].pos; - } - } - } - - - static FT_Error - af_latin_hints_apply( AF_GlyphHints hints, - FT_Outline* outline, - AF_LatinMetrics metrics ) - { - FT_Error error; - AF_Dimension dim; - - error = af_glyph_hints_reload( hints, outline ); - if ( error ) - goto Exit; - - /* analyze glyph outline - */ - if ( AF_HINTS_DO_HORIZONTAL(hints) ) - af_latin_hints_detect_features( hints, AF_DIMENSION_HORZ ); - - if ( AF_HINTS_DO_VERTICAL(hints) ) - { - af_latin_hints_detect_features( hints, AF_DIMENSION_VERT ); - af_latin_hints_compute_blue_edges( hints, metrics ); - } - - /* grid-fit the outline - */ - for ( dim = 0; dim < AF_DIMENSION_MAX; dim++ ) - { - if ( (dim == AF_DIMENSION_HORZ && AF_HINTS_DO_HORIZONTAL(hints)) || - (dim == AF_DIMENSION_VERT && AF_HINTS_DO_VERTICAL(hints)) ) - { - af_latin_hint_edges( hints, dim ); - af_glyph_hints_align_edge_points( hints, dim ); - af_glyph_hints_align_strong_points( hints, dim ); - af_glyph_hints_align_weak_points( hints, dim ); - } - } - af_glyph_hints_save( hints, outline ); - - Exit: - return error; - } - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** L A T I N S C R I P T C L A S S *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - - static const AF_Script_UniRangeRec af_latin_uniranges[] = - { - { 32, 127 }, /* XXX: TODO: Add new Unicode ranges here !! */ - { 160, 255 }, - { 0, 0 } - }; - - - FT_LOCAL_DEF( const AF_ScriptClassRec ) af_latin_script_class = - { - AF_SCRIPT_LATIN, - af_latin_uniranges, - - sizeof( AF_LatinMetricsRec ), - (AF_Script_InitMetricsFunc) af_latin_metrics_init, - (AF_Script_ScaleMetricsFunc) af_latin_metrics_scale, - (AF_Script_DoneMetricsFunc) NULL, - - (AF_Script_InitHintsFunc) af_latin_hints_init, - (AF_Script_ApplyHintsFunc) af_latin_hints_apply - }; - diff --git a/nx-X11/extras/freetype2/src/autofit/aflatin.h b/nx-X11/extras/freetype2/src/autofit/aflatin.h deleted file mode 100644 index e7e8e4842..000000000 --- a/nx-X11/extras/freetype2/src/autofit/aflatin.h +++ /dev/null @@ -1,169 +0,0 @@ -#ifndef __AFLATIN_H__ -#define __AFLATIN_H__ - -#include "afhints.h" - -FT_BEGIN_HEADER - - /* - * the latin-specific script class - * - */ - FT_LOCAL( const AF_ScriptClassRec ) af_latin_script_class; - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** L A T I N G L O B A L M E T R I C S *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - - /* - * the following declarations could be embedded in the file "aflatin.c" - * they've been made semi-public to allow alternate script hinters to - * re-use some of them - */ - - /* - * Latin (global) metrics management - * - */ - - enum - { - AF_LATIN_BLUE_CAPITAL_TOP, - AF_LATIN_BLUE_CAPITAL_BOTTOM, - AF_LATIN_BLUE_SMALL_F_TOP, - AF_LATIN_BLUE_SMALL_TOP, - AF_LATIN_BLUE_SMALL_BOTTOM, - AF_LATIN_BLUE_SMALL_MINOR, - - AF_LATIN_BLUE_MAX - }; - -#define AF_LATIN_IS_TOP_BLUE( b ) ( (b) == AF_LATIN_BLUE_CAPITAL_TOP || \ - (b) == AF_LATIN_BLUE_SMALL_F_TOP || \ - (b) == AF_LATIN_BLUE_SMALL_TOP ) - -#define AF_LATIN_MAX_WIDTHS 16 -#define AF_LATIN_MAX_BLUES AF_LATIN_BLUE_MAX - - enum - { - AF_LATIN_BLUE_ACTIVE = (1 << 0), - AF_LATIN_BLUE_TOP = (1 << 1), - AF_LATIN_BLUE_ADJUSTMENT = (1 << 2), /* used for scale adjustment */ - /* optimization */ - AF_LATIN_BLUE_FLAG_MAX - }; - - - typedef struct AF_LatinBlueRec_ - { - AF_WidthRec ref; - AF_WidthRec shoot; - FT_UInt flags; - - } AF_LatinBlueRec, *AF_LatinBlue; - - - typedef struct AF_LatinAxisRec_ - { - FT_Fixed scale; - FT_Pos delta; - - FT_UInt width_count; - AF_WidthRec widths[ AF_LATIN_MAX_WIDTHS ]; - FT_Pos edge_distance_threshold; - - /* ignored for horizontal metrics */ - FT_Bool control_overshoot; - FT_UInt blue_count; - AF_LatinBlueRec blues[ AF_LATIN_BLUE_MAX ]; - - FT_Fixed org_scale; - FT_Pos org_delta; - - } AF_LatinAxisRec, *AF_LatinAxis; - - - typedef struct AF_LatinMetricsRec_ - { - AF_ScriptMetricsRec root; - FT_UInt units_per_em; - AF_LatinAxisRec axis[ AF_DIMENSION_MAX ]; - - } AF_LatinMetricsRec, *AF_LatinMetrics; - - - - FT_LOCAL( FT_Error ) - af_latin_metrics_init( AF_LatinMetrics metrics, - FT_Face face ); - - FT_LOCAL( void ) - af_latin_metrics_scale( AF_LatinMetrics metrics, - AF_Scaler scaler ); - - - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** L A T I N G L Y P H A N A L Y S I S *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - - enum - { - AF_LATIN_HINTS_HORZ_SNAP = (1 << 0), /* enable stem width snapping */ - AF_LATIN_HINTS_VERT_SNAP = (1 << 1), /* enable stem height snapping */ - AF_LATIN_HINTS_STEM_ADJUST = (1 << 2), /* enable stem width/height adjustment */ - AF_LATIN_HINTS_MONO = (1 << 3) /* indicate monochrome rendering */ - }; - -#define AF_LATIN_HINTS_DO_HORZ_SNAP(h) \ - AF_HINTS_TEST_OTHER(h,AF_LATIN_HINTS_HORZ_SNAP) - -#define AF_LATIN_HINTS_DO_VERT_SNAP(h) \ - AF_HINTS_TEST_OTHER(h,AF_LATIN_HINTS_VERT_SNAP) - -#define AF_LATIN_HINTS_DO_STEM_ADJUST(h) \ - AF_HINTS_TEST_OTHER(h,AF_LATIN_HINTS_STEM_ADJUST) - -#define AF_LATIN_HINTS_DO_MONO(h) \ - AF_HINTS_TEST_OTHER(h,AF_LATIN_HINTS_MONO) - - - /* this shouldn't normally be exported. However, other scripts might - * like to use this function as-is - */ - FT_LOCAL( void ) - af_latin_hints_compute_segments( AF_GlyphHints hints, - AF_Dimension dim ); - - /* this shouldn't normally be exported. However, other scripts might - * want to use this function as-is - */ - FT_LOCAL( void ) - af_latin_hints_link_segments( AF_GlyphHints hints, - AF_Dimension dim ); - - /* this shouldn't normally be exported. However, other scripts might - * want to use this function as-is - */ - FT_LOCAL( void ) - af_latin_hints_compute_edges( AF_GlyphHints hints, - AF_Dimension dim ); - - FT_LOCAL( void ) - af_latin_hints_detect_features( AF_GlyphHints hints, - AF_Dimension dim ); - -/* */ - -FT_END_HEADER - -#endif /* __AFLATIN_H__ */ diff --git a/nx-X11/extras/freetype2/src/autofit/afloader.c b/nx-X11/extras/freetype2/src/autofit/afloader.c deleted file mode 100644 index 6782ee8de..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afloader.c +++ /dev/null @@ -1,467 +0,0 @@ -#include "afloader.h" -#include "afhints.h" -#include "afglobal.h" -#include "aflatin.h" - - FT_LOCAL_DEF( FT_Error ) - af_loader_init( AF_Loader loader, - FT_Memory memory ) - { - FT_Error error; - - FT_ZERO( loader ); - - af_glyph_hints_init( &loader->hints, memory ); - - error = FT_GlyphLoader_New( memory, &loader->gloader ); - if ( !error ) - { - error = FT_GlyphLoader_CreateExtra( loader->gloader ); - if ( error ) - { - FT_GlyphLoader_Done( loader->gloader ); - loader->gloader = NULL; - } - } - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - af_loader_reset( AF_Loader loader, - FT_Face face ) - { - FT_Error error = 0; - - loader->face = face; - loader->globals = (AF_FaceGlobals) face->autohint.data; - - FT_GlyphLoader_Rewind( loader->gloader ); - - if ( loader->globals == NULL ) - { - error = af_face_globals_new( face, &loader->globals ); - if ( !error ) - { - face->autohint.data = (FT_Pointer) loader->globals; - face->autohint.finalizer = (FT_Generic_Finalizer) af_face_globals_free; - } - } - return error; - } - - - FT_LOCAL_DEF( void ) - af_loader_done( AF_Loader loader ) - { - loader->face = NULL; - loader->globals = NULL; - - FT_GlyphLoader_Done( loader->gloader ); - loader->gloader = NULL; - } - - - static FT_Error - af_loader_load_g( AF_Loader loader, - AF_Scaler scaler, - FT_UInt glyph_index, - FT_Int32 load_flags, - FT_UInt depth ) - { - FT_Error error = 0; - FT_Face face = loader->face; - FT_GlyphLoader gloader = loader->gloader; - AF_ScriptMetrics metrics = loader->metrics; - AF_GlyphHints hints = &loader->hints; - FT_GlyphSlot slot = face->glyph; - FT_Slot_Internal internal = slot->internal; - - error = FT_Load_Glyph( face, glyph_index, load_flags ); - if ( error ) - goto Exit; - - loader->transformed = internal->glyph_transformed; - if ( loader->transformed ) - { - FT_Matrix inverse; - - loader->trans_matrix = internal->glyph_matrix; - loader->trans_delta = internal->glyph_delta; - - inverse = loader->trans_matrix; - FT_Matrix_Invert( &inverse ); - FT_Vector_Transform( &loader->trans_delta, &inverse ); - } - - /* set linear metrics */ - slot->linearHoriAdvance = slot->metrics.horiAdvance; - slot->linearVertAdvance = slot->metrics.vertAdvance; - - switch ( slot->format ) - { - case FT_GLYPH_FORMAT_OUTLINE: - /* translate the loaded glyph when an internal transform - * is needed - */ - if ( loader->transformed ) - FT_Outline_Translate( &slot->outline, - loader->trans_delta.x, - loader->trans_delta.y ); - - /* copy the outline points in the loader's current */ - /* extra points which is used to keep original glyph coordinates */ - error = FT_GlyphLoader_CheckPoints( gloader, - slot->outline.n_points + 4, - slot->outline.n_contours ); - if ( error ) - goto Exit; - - FT_ARRAY_COPY( gloader->current.outline.points, - slot->outline.points, - slot->outline.n_points ); - - FT_ARRAY_COPY( gloader->current.extra_points, - slot->outline.points, - slot->outline.n_points ); - - FT_ARRAY_COPY( gloader->current.outline.contours, - slot->outline.contours, - slot->outline.n_contours ); - - FT_ARRAY_COPY( gloader->current.outline.tags, - slot->outline.tags, - slot->outline.n_points ); - - gloader->current.outline.n_points = slot->outline.n_points; - gloader->current.outline.n_contours = slot->outline.n_contours; - - /* compute original horizontal phantom points (and ignore */ - /* vertical ones) */ - loader->pp1.x = hints->x_delta; - loader->pp1.y = hints->y_delta; - loader->pp2.x = FT_MulFix( slot->metrics.horiAdvance, - hints->x_scale ) + hints->x_delta; - loader->pp2.y = hints->y_delta; - - /* be sure to check for spacing glyphs */ - if ( slot->outline.n_points == 0 ) - goto Hint_Metrics; - - /* now load the slot image into the auto-outline and run the */ - /* automatic hinting process */ - metrics->clazz->script_hints_apply( hints, - &gloader->current.outline, - metrics ); - - /* we now need to hint the metrics according to the change in */ - /* width/positioning that occured during the hinting process */ - { - FT_Pos old_advance, old_rsb, old_lsb, new_lsb; - FT_Pos pp1x_uh, pp2x_uh; - AF_AxisHints axis = &hints->axis[ AF_DIMENSION_HORZ ]; - AF_Edge edge1 = axis->edges; /* leftmost edge */ - AF_Edge edge2 = edge1 + - axis->num_edges - 1; /* rightmost edge */ - - - if ( edge2 > edge1 ) - { - old_advance = loader->pp2.x; - old_rsb = old_advance - edge2->opos; - old_lsb = edge1->opos; - new_lsb = edge1->pos; - - /* remember unhinted values to later account */ - /* for rounding errors */ - - pp1x_uh = new_lsb - old_lsb; - pp2x_uh = edge2->pos + old_rsb; - - /* prefer too much space over too little space */ - /* for very small sizes */ - - if ( old_lsb < 24 ) - pp1x_uh -= 5; - - if ( old_rsb < 24 ) - pp2x_uh += 5; - - loader->pp1.x = FT_PIX_ROUND( pp1x_uh ); - loader->pp2.x = FT_PIX_ROUND( pp2x_uh ); - - slot->lsb_delta = loader->pp1.x - pp1x_uh; - slot->rsb_delta = loader->pp2.x - pp2x_uh; - -#if 0 - /* try to fix certain bad advance computations */ - if ( loader->pp2.x + loader->pp1.x == edge2->pos && old_rsb > 4 ) - loader->pp2.x += 64; -#endif - } - else - { - loader->pp1.x = FT_PIX_ROUND( loader->pp1.x ); - loader->pp2.x = FT_PIX_ROUND( loader->pp2.x ); - } - } - - /* good, we simply add the glyph to our loader's base */ - FT_GlyphLoader_Add( gloader ); - break; - - case FT_GLYPH_FORMAT_COMPOSITE: - { - FT_UInt nn, num_subglyphs = slot->num_subglyphs; - FT_UInt num_base_subgs, start_point; - FT_SubGlyph subglyph; - - - start_point = gloader->base.outline.n_points; - - /* first of all, copy the subglyph descriptors in the glyph loader */ - error = FT_GlyphLoader_CheckSubGlyphs( gloader, num_subglyphs ); - if ( error ) - goto Exit; - - FT_ARRAY_COPY( gloader->current.subglyphs, - slot->subglyphs, - num_subglyphs ); - - gloader->current.num_subglyphs = num_subglyphs; - num_base_subgs = gloader->base.num_subglyphs; - - /* now, read each subglyph independently */ - for ( nn = 0; nn < num_subglyphs; nn++ ) - { - FT_Vector pp1, pp2; - FT_Pos x, y; - FT_UInt num_points, num_new_points, num_base_points; - - - /* gloader.current.subglyphs can change during glyph loading due */ - /* to re-allocation -- we must recompute the current subglyph on */ - /* each iteration */ - subglyph = gloader->base.subglyphs + num_base_subgs + nn; - - pp1 = loader->pp1; - pp2 = loader->pp2; - - num_base_points = gloader->base.outline.n_points; - - error = af_loader_load_g( loader, scaler, subglyph->index, - load_flags, depth + 1 ); - if ( error ) - goto Exit; - - /* recompute subglyph pointer */ - subglyph = gloader->base.subglyphs + num_base_subgs + nn; - - if ( subglyph->flags & FT_SUBGLYPH_FLAG_USE_MY_METRICS ) - { - pp1 = loader->pp1; - pp2 = loader->pp2; - } - else - { - loader->pp1 = pp1; - loader->pp2 = pp2; - } - - num_points = gloader->base.outline.n_points; - num_new_points = num_points - num_base_points; - - /* now perform the transform required for this subglyph */ - - if ( subglyph->flags & ( FT_SUBGLYPH_FLAG_SCALE | - FT_SUBGLYPH_FLAG_XY_SCALE | - FT_SUBGLYPH_FLAG_2X2 ) ) - { - FT_Vector* cur = gloader->base.outline.points + - num_base_points; - FT_Vector* org = gloader->base.extra_points + - num_base_points; - FT_Vector* limit = cur + num_new_points; - - - for ( ; cur < limit; cur++, org++ ) - { - FT_Vector_Transform( cur, &subglyph->transform ); - FT_Vector_Transform( org, &subglyph->transform ); - } - } - - /* apply offset */ - - if ( !( subglyph->flags & FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES ) ) - { - FT_Int k = subglyph->arg1; - FT_UInt l = subglyph->arg2; - FT_Vector* p1; - FT_Vector* p2; - - - if ( start_point + k >= num_base_points || - l >= (FT_UInt)num_new_points ) - { - error = FT_Err_Invalid_Composite; - goto Exit; - } - - l += num_base_points; - - /* for now, only use the current point coordinates; */ - /* we may consider another approach in the near future */ - p1 = gloader->base.outline.points + start_point + k; - p2 = gloader->base.outline.points + start_point + l; - - x = p1->x - p2->x; - y = p1->y - p2->y; - } - else - { - x = FT_MulFix( subglyph->arg1, hints->x_scale ) + hints->x_delta; - y = FT_MulFix( subglyph->arg2, hints->y_scale ) + hints->y_delta; - - x = FT_PIX_ROUND(x); - y = FT_PIX_ROUND(y); - } - - { - FT_Outline dummy = gloader->base.outline; - - - dummy.points += num_base_points; - dummy.n_points = (short)num_new_points; - - FT_Outline_Translate( &dummy, x, y ); - } - } - } - break; - - default: - /* we don't support other formats (yet?) */ - error = FT_Err_Unimplemented_Feature; - } - - Hint_Metrics: - if ( depth == 0 ) - { - FT_BBox bbox; - - - /* transform the hinted outline if needed */ - if ( loader->transformed ) - FT_Outline_Transform( &gloader->base.outline, &loader->trans_matrix ); - - /* we must translate our final outline by -pp1.x and compute */ - /* the new metrics */ - if ( loader->pp1.x ) - FT_Outline_Translate( &gloader->base.outline, -loader->pp1.x, 0 ); - - FT_Outline_Get_CBox( &gloader->base.outline, &bbox ); - - bbox.xMin = FT_PIX_FLOOR( bbox.xMin ); - bbox.yMin = FT_PIX_FLOOR( bbox.yMin ); - bbox.xMax = FT_PIX_CEIL( bbox.xMax ); - bbox.yMax = FT_PIX_CEIL( bbox.yMax ); - - slot->metrics.width = bbox.xMax - bbox.xMin; - slot->metrics.height = bbox.yMax - bbox.yMin; - slot->metrics.horiBearingX = bbox.xMin; - slot->metrics.horiBearingY = bbox.yMax; - - /* for mono-width fonts (like Andale, Courier, etc.) we need */ - /* to keep the original rounded advance width */ -#if 0 - if ( !FT_IS_FIXED_WIDTH( slot->face ) ) - slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x; - else - slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance, - x_scale ); -#else - /* for mono-width fonts (like Andale, Courier, etc.) we need */ - /* to keep the original rounded advance width */ - if ( !FT_IS_FIXED_WIDTH( slot->face ) ) - slot->metrics.horiAdvance = loader->pp2.x - loader->pp1.x; - else - slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance, - metrics->scaler.x_scale ); -#endif - - slot->metrics.horiAdvance = FT_PIX_ROUND( slot->metrics.horiAdvance ); - - /* now copy outline into glyph slot */ - FT_GlyphLoader_Rewind( internal->loader ); - error = FT_GlyphLoader_CopyPoints( internal->loader, gloader ); - if ( error ) - goto Exit; - - slot->outline = internal->loader->base.outline; - slot->format = FT_GLYPH_FORMAT_OUTLINE; - } - -#ifdef DEBUG_HINTER - af_debug_hinter = hinter; -#endif - - Exit: - return error; - } - - - - - FT_LOCAL_DEF( FT_Error ) - af_loader_load_glyph( AF_Loader loader, - FT_Face face, - FT_UInt gindex, - FT_UInt32 load_flags ) - { - FT_Error error; - FT_Size size = face->size; - AF_ScalerRec scaler; - - if ( !size ) - return FT_Err_Invalid_Argument; - - FT_ZERO( &scaler ); - - scaler.face = face; - scaler.x_scale = size->metrics.x_scale; - scaler.x_delta = 0; /* XXX: TODO: add support for sub-pixel hinting */ - scaler.y_scale = size->metrics.y_scale; - scaler.y_delta = 0; /* XXX: TODO: add support for sub-pixel hinting */ - - scaler.render_mode = FT_LOAD_TARGET_MODE( load_flags ); - scaler.flags = 0; /* XXX: fix this */ - - error = af_loader_reset( loader, face ); - if ( !error ) - { - AF_ScriptMetrics metrics; - - error = af_face_globals_get_metrics( loader->globals, gindex, &metrics ); - if ( !error ) - { - loader->metrics = metrics; - - metrics->scaler = scaler; - - if ( metrics->clazz->script_metrics_scale ) - metrics->clazz->script_metrics_scale( metrics, &scaler ); - - load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_IGNORE_TRANSFORM; - load_flags &= ~FT_LOAD_RENDER; - - error = metrics->clazz->script_hints_init( &loader->hints, metrics ); - if ( error ) - goto Exit; - - error = af_loader_load_g( loader, &scaler, gindex, load_flags, 0 ); - } - } - Exit: - return error; - } diff --git a/nx-X11/extras/freetype2/src/autofit/afloader.h b/nx-X11/extras/freetype2/src/autofit/afloader.h deleted file mode 100644 index 12361560a..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afloader.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef __AF_LOADER_H__ -#define __AF_LOADER_H__ - -#include "afhints.h" -#include "afglobal.h" - -FT_BEGIN_HEADER - - typedef struct AF_LoaderRec_ - { - FT_Face face; /* current face */ - AF_FaceGlobals globals; /* current face globals */ - FT_GlyphLoader gloader; /* glyph loader */ - AF_GlyphHintsRec hints; - AF_ScriptMetrics metrics; - FT_Bool transformed; - FT_Matrix trans_matrix; - FT_Vector trans_delta; - FT_Vector pp1; - FT_Vector pp2; - /* we don't handle vertical phantom points */ - - } AF_LoaderRec, *AF_Loader; - - - FT_LOCAL( FT_Error ) - af_loader_init( AF_Loader loader, - FT_Memory memory ); - - - FT_LOCAL( FT_Error ) - af_loader_reset( AF_Loader loader, - FT_Face face ); - - - FT_LOCAL( void ) - af_loader_done( AF_Loader loader ); - - - FT_LOCAL( FT_Error ) - af_loader_load_glyph( AF_Loader loader, - FT_Face face, - FT_UInt gindex, - FT_UInt32 load_flags ); - -/* */ - -FT_END_HEADER - -#endif /* __AF_LOADER_H__ */ diff --git a/nx-X11/extras/freetype2/src/autofit/afmodule.c b/nx-X11/extras/freetype2/src/autofit/afmodule.c deleted file mode 100644 index e22ffffc6..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afmodule.c +++ /dev/null @@ -1,70 +0,0 @@ -#include "afmodule.h" -#include "afloader.h" -#include FT_INTERNAL_OBJECTS_H - - typedef struct FT_AutofitterRec_ - { - FT_ModuleRec root; - AF_LoaderRec loader[1]; - - } FT_AutofitterRec, *FT_Autofitter; - - - FT_CALLBACK_DEF( FT_Error ) - af_autofitter_init( FT_Autofitter module ) - { - return af_loader_init( module->loader, module->root.library->memory ); - } - - - FT_CALLBACK_DEF( void ) - af_autofitter_done( FT_Autofitter module ) - { - af_loader_done( module->loader ); - } - - - FT_CALLBACK_DEF( FT_Error ) - af_autofitter_load_glyph( FT_Autofitter module, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - FT_UNUSED( size ); - - return af_loader_load_glyph( module->loader, slot->face, - glyph_index, load_flags ); - } - - - - FT_CALLBACK_TABLE_DEF - const FT_AutoHinter_ServiceRec af_autofitter_service = - { - NULL, - NULL, - NULL, - (FT_AutoHinter_GlyphLoadFunc) af_autofitter_load_glyph - }; - - - FT_CALLBACK_TABLE_DEF - const FT_Module_Class autofit_module_class = - { - FT_MODULE_HINTER, - sizeof ( FT_AutofitterRec ), - - "autofitter", - 0x10000L, /* version 1.0 of the autofitter */ - 0x20000L, /* requires FreeType 2.0 or above */ - - (const void*) &af_autofitter_service, - - (FT_Module_Constructor) af_autofitter_init, - (FT_Module_Destructor) af_autofitter_done, - (FT_Module_Requester) 0 - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autofit/afmodule.h b/nx-X11/extras/freetype2/src/autofit/afmodule.h deleted file mode 100644 index b898cb375..000000000 --- a/nx-X11/extras/freetype2/src/autofit/afmodule.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef __AFMODULE_H__ -#define __AFMODULE_H__ - -#include <ft2build.h> -#include FT_MODULE_H - - -FT_BEGIN_HEADER - - FT_CALLBACK_TABLE - const FT_Module_Class autofit_module_class; - - -FT_END_HEADER - -#endif /* __AFMODULE_H__ */ diff --git a/nx-X11/extras/freetype2/src/autofit/aftypes.h b/nx-X11/extras/freetype2/src/autofit/aftypes.h deleted file mode 100644 index 5d0371fcb..000000000 --- a/nx-X11/extras/freetype2/src/autofit/aftypes.h +++ /dev/null @@ -1,290 +0,0 @@ -/*************************************************************************** - * - * FreeType auto-fitter - * - * (c) 2004 David Turner - * - * The auto-fitter is a complete rewrite of the old auto-hinter. - * its main feature is the ability to differentiate between different - * scripts in order to apply language-specific rules. - * - * the code has also been compartimentized into several entities that - * should make algorithmic experimentation easier than with the old - * code. - * - * finally, we get rid of the Catharon license, since this code is - * released under the FreeType one. - */ -#ifndef __AFTYPES_H__ -#define __AFTYPES_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_OUTLINE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H - -FT_BEGIN_HEADER - - /**************************************************************************/ - /**************************************************************************/ - /***** *****/ - /***** D E B U G G I N G *****/ - /***** *****/ - /**************************************************************************/ - /**************************************************************************/ - -#define xxAF_DEBUG - -#ifdef AF_DEBUG - -# include <stdio.h> -# define AF_LOG( x ) printf x - -#else - -# define AF_LOG( x ) do ; while ( 0 ) /* nothing */ - -#endif /* AF_DEBUG */ - - /**************************************************************************/ - /**************************************************************************/ - /***** *****/ - /***** U T I L I T Y *****/ - /***** *****/ - /**************************************************************************/ - /**************************************************************************/ - - typedef struct AF_WidthRec_ - { - FT_Pos org; /* original position/width in font units */ - FT_Pos cur; /* current/scaled position/width in device sub-pixels */ - FT_Pos fit; /* current/fitted position/width in device sub-pixels */ - - } AF_WidthRec, *AF_Width; - - - FT_LOCAL( void ) - af_sort_pos( FT_UInt count, - FT_Pos* table ); - - FT_LOCAL( void ) - af_sort_widths( FT_UInt count, - AF_Width widths ); - - - /**************************************************************************/ - /**************************************************************************/ - /***** *****/ - /***** A N G L E T Y P E S *****/ - /***** *****/ - /**************************************************************************/ - /**************************************************************************/ - - /* - * Angle type. The auto-fitter doesn't need a very high angular accuracy, - * and this allows us to speed up some computations considerably with a - * light Cordic algorithm (see afangles.c) - * - */ - - typedef FT_Int AF_Angle; - -#define AF_ANGLE_PI 256 -#define AF_ANGLE_2PI (AF_ANGLE_PI*2) -#define AF_ANGLE_PI2 (AF_ANGLE_PI/2) -#define AF_ANGLE_PI4 (AF_ANGLE_PI/4) - - /* - * compute the angle of a given 2-D vector - * - */ - FT_LOCAL( AF_Angle ) - af_angle_atan( FT_Pos dx, - FT_Pos dy ); - - - /* - * computes "angle2 - angle1", the result is always within - * the range [ -AF_ANGLE_PI .. AF_ANGLE_PI-1 ] - * - */ - FT_LOCAL( AF_Angle ) - af_angle_diff( AF_Angle angle1, - AF_Angle angle2 ); - - - /**************************************************************************/ - /**************************************************************************/ - /***** *****/ - /***** O U T L I N E S *****/ - /***** *****/ - /**************************************************************************/ - /**************************************************************************/ - - /* opaque handle to glyph-specific hints. see "afhints.h" for more - * details - */ - typedef struct AF_GlyphHintsRec_* AF_GlyphHints; - - /* this structure is used to model an input glyph outline to - * the auto-hinter. The latter will set the "hints" field - * depending on the glyph's script - */ - typedef struct AF_OutlineRec_ - { - FT_Face face; - FT_Outline outline; - FT_UInt outline_resolution; - - FT_Int advance; - FT_UInt metrics_resolution; - - AF_GlyphHints hints; - - } AF_OutlineRec; - - - /**************************************************************************/ - /**************************************************************************/ - /***** *****/ - /***** S C A L E R S *****/ - /***** *****/ - /**************************************************************************/ - /**************************************************************************/ - - /* - * A scaler models the target pixel device that will receive the - * auto-hinted glyph image - * - */ - - typedef enum - { - AF_SCALER_FLAG_NO_HORIZONTAL = 1, /* disable horizontal hinting */ - AF_SCALER_FLAG_NO_VERTICAL = 2, /* disable vertical hinting */ - AF_SCALER_FLAG_NO_ADVANCE = 4 /* disable advance hinting */ - - } AF_ScalerFlags; - - - typedef struct AF_ScalerRec_ - { - FT_Face face; /* source font face */ - FT_Fixed x_scale; /* from font units to 1/64th device pixels */ - FT_Fixed y_scale; /* from font units to 1/64th device pixels */ - FT_Pos x_delta; /* in 1/64th device pixels */ - FT_Pos y_delta; /* in 1/64th device pixels */ - FT_Render_Mode render_mode; /* monochrome, anti-aliased, LCD, etc.. */ - FT_UInt32 flags; /* additionnal control flags, see above */ - - } AF_ScalerRec, *AF_Scaler; - - -#define AF_SCALER_EQUAL_SCALES(a,b) \ - ( (a)->x_scale == (b)->x_scale && \ - (a)->y_scale == (b)->y_scale && \ - (a)->x_delta == (b)->x_delta && \ - (a)->y_delta == (b)->y_delta ) - - - /**************************************************************************/ - /**************************************************************************/ - /***** *****/ - /***** S C R I P T S *****/ - /***** *****/ - /**************************************************************************/ - /**************************************************************************/ - - /* - * the list of know scripts. Each different script correspond to the - * following information: - * - * - a set of Unicode ranges to test weither the face supports the - * script - * - * - a specific global analyzer that will compute global metrics - * specific to the script. - * - * - a specific glyph analyzer that will compute segments and - * edges for each glyph covered by the script - * - * - a specific grid-fitting algorithm that will distort the - * scaled glyph outline according to the results of the glyph - * analyzer - * - * note that a given analyzer and/or grid-fitting algorithm can be - * used by more than one script - */ - typedef enum - { - AF_SCRIPT_NONE = 0, - AF_SCRIPT_LATIN = 1, - /* add new scripts here. don't forget to update the list in "afglobal.c" */ - - AF_SCRIPT_MAX /* do not remove */ - - } AF_Script; - - - - typedef struct AF_ScriptClassRec_ const* AF_ScriptClass; - - typedef struct AF_ScriptMetricsRec_ - { - AF_ScriptClass clazz; - AF_ScalerRec scaler; - - } AF_ScriptMetricsRec, *AF_ScriptMetrics; - - - /* this function parses a FT_Face to compute global metrics for - * a specific script - */ - typedef FT_Error (*AF_Script_InitMetricsFunc)( AF_ScriptMetrics metrics, - FT_Face face ); - - typedef void (*AF_Script_ScaleMetricsFunc)( AF_ScriptMetrics metrics, - AF_Scaler scaler ); - - typedef void (*AF_Script_DoneMetricsFunc)( AF_ScriptMetrics metrics ); - - - typedef FT_Error (*AF_Script_InitHintsFunc)( AF_GlyphHints hints, - AF_ScriptMetrics metrics ); - - typedef void (*AF_Script_ApplyHintsFunc)( AF_GlyphHints hints, - FT_Outline* outline, - AF_ScriptMetrics metrics ); - - - typedef struct AF_Script_UniRangeRec_ - { - FT_UInt32 first; - FT_UInt32 last; - - } AF_Script_UniRangeRec; - - typedef const AF_Script_UniRangeRec * AF_Script_UniRange; - - typedef struct AF_ScriptClassRec_ - { - AF_Script script; - AF_Script_UniRange script_uni_ranges; /* last must be { 0, 0 } */ - - FT_UInt script_metrics_size; - AF_Script_InitMetricsFunc script_metrics_init; - AF_Script_ScaleMetricsFunc script_metrics_scale; - AF_Script_DoneMetricsFunc script_metrics_done; - - AF_Script_InitHintsFunc script_hints_init; - AF_Script_ApplyHintsFunc script_hints_apply; - - } AF_ScriptClassRec; - - -/* */ - -FT_END_HEADER - -#endif /* __AFTYPES_H__ */ diff --git a/nx-X11/extras/freetype2/src/autofit/autofit.c b/nx-X11/extras/freetype2/src/autofit/autofit.c deleted file mode 100644 index c258e0d7a..000000000 --- a/nx-X11/extras/freetype2/src/autofit/autofit.c +++ /dev/null @@ -1,9 +0,0 @@ -#define FT_MAKE_OPTION_SINGLE_OBJECT -#include <ft2build.h> -#include "afangles.c" -#include "afglobal.c" -#include "afhints.c" -#include "afdummy.c" -#include "aflatin.c" -#include "afloader.c" -#include "afmodule.c" diff --git a/nx-X11/extras/freetype2/src/autohint/CatharonLicense.txt b/nx-X11/extras/freetype2/src/autohint/CatharonLicense.txt deleted file mode 100644 index 789c8c9fe..000000000 --- a/nx-X11/extras/freetype2/src/autohint/CatharonLicense.txt +++ /dev/null @@ -1,123 +0,0 @@ - The Catharon Open Source LICENSE - ---------------------------- - - 2000-Jul-04 - - Copyright (C) 2000 by Catharon Productions, Inc. - - - -Introduction -============ - - This license applies to source files distributed by Catharon - Productions, Inc. in several archive packages. This license - applies to all files found in such packages which do not fall - under their own explicit license. - - This license was inspired by the BSD, Artistic, and IJG - (Independent JPEG Group) licenses, which all encourage inclusion - and use of free software in commercial and freeware products - alike. As a consequence, its main points are that: - - o We don't promise that this software works. However, we are - interested in any kind of bug reports. (`as is' distribution) - - o You can use this software for whatever you want, in parts or - full form, without having to pay us. (`royalty-free' usage) - - o You may not pretend that you wrote this software. If you use - it, or only parts of it, in a program, you must acknowledge - somewhere in your documentation that you have used the - Catharon Code. (`credits') - - We specifically permit and encourage the inclusion of this - software, with or without modifications, in commercial products. - We disclaim all warranties covering the packages distributed by - Catharon Productions, Inc. and assume no liability related to - their use. - - -Legal Terms -=========== - -0. Definitions --------------- - - Throughout this license, the terms `Catharon Package', `package', - and `Catharon Code' refer to the set of files originally - distributed by Catharon Productions, Inc. - - `You' refers to the licensee, or person using the project, where - `using' is a generic term including compiling the project's source - code as well as linking it to form a `program' or `executable'. - This program is referred to as `a program using one of the - Catharon Packages'. - - This license applies to all files distributed in the original - Catharon Package(s), including all source code, binaries and - documentation, unless otherwise stated in the file in its - original, unmodified form as distributed in the original archive. - If you are unsure whether or not a particular file is covered by - this license, you must contact us to verify this. - - The Catharon Packages are copyright (C) 2000 by Catharon - Productions, Inc. All rights reserved except as specified below. - -1. No Warranty --------------- - - THE CATHARON PACKAGES ARE PROVIDED `AS IS' WITHOUT WARRANTY OF ANY - KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS - BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OF OR THE INABILITY TO - USE THE CATHARON PACKAGE. - -2. Redistribution ------------------ - - This license grants a worldwide, royalty-free, perpetual and - irrevocable right and license to use, execute, perform, compile, - display, copy, create derivative works of, distribute and - sublicense the Catharon Packages (in both source and object code - forms) and derivative works thereof for any purpose; and to - authorize others to exercise some or all of the rights granted - herein, subject to the following conditions: - - o Redistribution of source code must retain this license file - (`license.txt') unaltered; any additions, deletions or changes - to the original files must be clearly indicated in - accompanying documentation. The copyright notices of the - unaltered, original files must be preserved in all copies of - source files. - - o Redistribution in binary form must provide a disclaimer that - states that the software is based in part on the work of - Catharon Productions, Inc. in the distribution documentation. - - These conditions apply to any software derived from or based on - the Catharon Packages, not just the unmodified files. If you use - our work, you must acknowledge us. However, no fee need be paid - to us. - -3. Advertising --------------- - - Neither Catharon Productions, Inc. and contributors nor you shall - use the name of the other for commercial, advertising, or - promotional purposes without specific prior written permission. - - We suggest, but do not require, that you use the following phrase - to refer to this software in your documentation: 'this software is - based in part on the Catharon Typography Project'. - - As you have not signed this license, you are not required to - accept it. However, as the Catharon Packages are copyrighted - material, only this license, or another one contracted with the - authors, grants you the right to use, distribute, and modify it. - Therefore, by using, distributing, or modifying the Catharon - Packages, you indicate that you understand and accept all the - terms of this license. - ---- end of license.txt --- diff --git a/nx-X11/extras/freetype2/src/autohint/Jamfile b/nx-X11/extras/freetype2/src/autohint/Jamfile deleted file mode 100644 index a129e5eea..000000000 --- a/nx-X11/extras/freetype2/src/autohint/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/autohint Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) autohint ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ahangles ahglobal ahglyph ahhint ahmodule ; - } - else - { - _sources = autohint ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/autohint Jamfile diff --git a/nx-X11/extras/freetype2/src/autohint/ahangles.c b/nx-X11/extras/freetype2/src/autohint/ahangles.c deleted file mode 100644 index ef5a88ee6..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahangles.c +++ /dev/null @@ -1,147 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahangles.h */ -/* */ -/* A routine used to compute vector angles with limited accuracy */ -/* and very high speed (body). */ -/* */ -/* Copyright 2000-2001, 2002 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "ahangles.h" - - - /* the following table has been automatically generated with */ - /* the `mather.py' Python script */ - - const AH_Angle ah_arctan[1L << AH_ATAN_BITS] = - { - 0, 0, 1, 1, 1, 2, 2, 2, - 3, 3, 3, 3, 4, 4, 4, 5, - 5, 5, 6, 6, 6, 7, 7, 7, - 8, 8, 8, 9, 9, 9, 10, 10, - 10, 10, 11, 11, 11, 12, 12, 12, - 13, 13, 13, 14, 14, 14, 14, 15, - 15, 15, 16, 16, 16, 17, 17, 17, - 18, 18, 18, 18, 19, 19, 19, 20, - 20, 20, 21, 21, 21, 21, 22, 22, - 22, 23, 23, 23, 24, 24, 24, 24, - 25, 25, 25, 26, 26, 26, 26, 27, - 27, 27, 28, 28, 28, 28, 29, 29, - 29, 30, 30, 30, 30, 31, 31, 31, - 31, 32, 32, 32, 33, 33, 33, 33, - 34, 34, 34, 34, 35, 35, 35, 35, - 36, 36, 36, 36, 37, 37, 37, 38, - 38, 38, 38, 39, 39, 39, 39, 40, - 40, 40, 40, 41, 41, 41, 41, 42, - 42, 42, 42, 42, 43, 43, 43, 43, - 44, 44, 44, 44, 45, 45, 45, 45, - 46, 46, 46, 46, 46, 47, 47, 47, - 47, 48, 48, 48, 48, 48, 49, 49, - 49, 49, 50, 50, 50, 50, 50, 51, - 51, 51, 51, 51, 52, 52, 52, 52, - 52, 53, 53, 53, 53, 53, 54, 54, - 54, 54, 54, 55, 55, 55, 55, 55, - 56, 56, 56, 56, 56, 57, 57, 57, - 57, 57, 57, 58, 58, 58, 58, 58, - 59, 59, 59, 59, 59, 59, 60, 60, - 60, 60, 60, 61, 61, 61, 61, 61, - 61, 62, 62, 62, 62, 62, 62, 63, - 63, 63, 63, 63, 63, 64, 64, 64 - }; - - - FT_LOCAL_DEF( AH_Angle ) - ah_angle( FT_Vector* v ) - { - FT_Pos dx, dy; - AH_Angle angle; - - - dx = v->x; - dy = v->y; - - /* check trivial cases */ - if ( dy == 0 ) - { - angle = 0; - if ( dx < 0 ) - angle = AH_PI; - return angle; - } - else if ( dx == 0 ) - { - angle = AH_HALF_PI; - if ( dy < 0 ) - angle = -AH_HALF_PI; - return angle; - } - - angle = 0; - if ( dx < 0 ) - { - dx = -v->x; - dy = -v->y; - angle = AH_PI; - } - - if ( dy < 0 ) - { - FT_Pos tmp; - - - tmp = dx; - dx = -dy; - dy = tmp; - angle -= AH_HALF_PI; - } - - if ( dx == 0 && dy == 0 ) - return 0; - - if ( dx == dy ) - angle += AH_PI / 4; - else if ( dx > dy ) - angle += ah_arctan[FT_DivFix( dy, dx ) >> ( 16 - AH_ATAN_BITS )]; - else - angle += AH_HALF_PI - - ah_arctan[FT_DivFix( dx, dy ) >> ( 16 - AH_ATAN_BITS )]; - - if ( angle > AH_PI ) - angle -= AH_2PI; - - return angle; - } - - - FT_LOCAL_DEF( AH_Angle ) - ah_angle_diff( AH_Angle angle1, - AH_Angle angle2 ) - { - AH_Angle delta; - - - delta = ( angle2 - angle1 ); - if ( delta < 0 ) - delta += AH_2PI; - - if ( delta > AH_PI ) - delta -= AH_2PI; - - return delta; - } - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahangles.h b/nx-X11/extras/freetype2/src/autohint/ahangles.h deleted file mode 100644 index f46bfaad7..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahangles.h +++ /dev/null @@ -1,64 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahangles.h */ -/* */ -/* A routine used to compute vector angles with limited accuracy */ -/* and very high speed (specification). */ -/* */ -/* Copyright 2000-2001, 2002 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#ifndef __AHANGLES_H__ -#define __AHANGLES_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include "ahtypes.h" - - -FT_BEGIN_HEADER - - - /* PI expressed in ah_angles -- we don't really need an important */ - /* precision, so 256 should be enough */ -#define AH_PI 256 -#define AH_2PI ( AH_PI * 2 ) -#define AH_HALF_PI ( AH_PI / 2 ) -#define AH_2PIMASK ( AH_2PI - 1 ) - - /* the number of bits used to express an arc tangent; */ - /* see the structure of the lookup table */ -#define AH_ATAN_BITS 8 - - extern - const AH_Angle ah_arctan[1L << AH_ATAN_BITS]; - - - FT_LOCAL( AH_Angle ) - ah_angle( FT_Vector* v ); - - - FT_LOCAL( AH_Angle ) - ah_angle_diff( AH_Angle angle1, - AH_Angle angle2 ); - - -FT_END_HEADER - -#endif /* __AHANGLES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/aherrors.h b/nx-X11/extras/freetype2/src/autohint/aherrors.h deleted file mode 100644 index bce6107d3..000000000 --- a/nx-X11/extras/freetype2/src/autohint/aherrors.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* aherrors.h */ -/* */ -/* Autohinter error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the Autohinter error enumeration */ - /* constants. */ - /* */ - /*************************************************************************/ - -#ifndef __AHERRORS_H__ -#define __AHERRORS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX AH_Err_ -#define FT_ERR_BASE FT_Mod_Err_Autohint - -#include FT_ERRORS_H - -#endif /* __AHERRORS_H__ */ - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahglobal.c b/nx-X11/extras/freetype2/src/autohint/ahglobal.c deleted file mode 100644 index e157014b5..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahglobal.c +++ /dev/null @@ -1,402 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahglobal.c */ -/* */ -/* Routines used to compute global metrics automatically (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include "ahglobal.h" -#include "ahglyph.h" - - -#define MAX_TEST_CHARACTERS 12 - - /* cf. AH_BLUE_XXX constants in ahtypes.h */ - - static - const char* const blue_chars[AH_BLUE_MAX] = - { - "THEZOCQS", - "HEZLOCUS", -#ifdef FT_CONFIG_CHESTER_SMALL_F - "fijkdbh", -#endif - "xzroesc", - "xzroesc", - "pqgjy" - }; - - - /* simple insertion sort */ - static void - sort_values( FT_Int count, - FT_Pos* table ) - { - FT_Int i, j; - FT_Pos swap; - - - for ( i = 1; i < count; i++ ) - { - for ( j = i; j > 0; j-- ) - { - if ( table[j] > table[j - 1] ) - break; - - swap = table[j]; - table[j] = table[j - 1]; - table[j - 1] = swap; - } - } - } - - - static FT_Error - ah_hinter_compute_blues( AH_Hinter hinter ) - { - AH_Blue blue; - AH_Globals globals = &hinter->globals->design; - FT_Pos flats [MAX_TEST_CHARACTERS]; - FT_Pos rounds[MAX_TEST_CHARACTERS]; - FT_Int num_flats; - FT_Int num_rounds; - - FT_Face face; - FT_GlyphSlot glyph; - FT_Error error; - FT_CharMap charmap; - - - face = hinter->face; - glyph = face->glyph; - - /* save current charmap */ - charmap = face->charmap; - - /* do we have a Unicode charmap in there? */ - error = FT_Select_Charmap( face, FT_ENCODING_UNICODE ); - if ( error ) - goto Exit; - - /* we compute the blues simply by loading each character from the */ - /* `blue_chars[blues]' string, then compute its top-most or */ - /* bottom-most points (depending on `AH_IS_TOP_BLUE') */ - - AH_LOG(( "blue zones computation\n" )); - AH_LOG(( "------------------------------------------------\n" )); - - for ( blue = AH_BLUE_CAPITAL_TOP; blue < AH_BLUE_MAX; blue++ ) - { - const char* p = blue_chars[blue]; - const char* limit = p + MAX_TEST_CHARACTERS; - - FT_Pos *blue_ref, *blue_shoot; - - - AH_LOG(( "blue %3d: ", blue )); - - num_flats = 0; - num_rounds = 0; - - for ( ; p < limit; p++ ) - { - FT_UInt glyph_index; - FT_Vector* extremum; - FT_Vector* points; - FT_Vector* point_limit; - FT_Vector* point; - FT_Bool round; - - - /* exit if we reach the end of the string */ - if ( !*p ) - break; - - AH_LOG(( "`%c'", *p )); - - /* load the character in the face -- skip unknown or empty ones */ - glyph_index = FT_Get_Char_Index( face, (FT_UInt)*p ); - if ( glyph_index == 0 ) - continue; - - error = FT_Load_Glyph( face, glyph_index, FT_LOAD_NO_SCALE ); - if ( error || glyph->outline.n_points <= 0 ) - continue; - - /* now compute min or max point indices and coordinates */ - points = glyph->outline.points; - point_limit = points + glyph->outline.n_points; - point = points; - extremum = point; - point++; - - if ( AH_IS_TOP_BLUE( blue ) ) - { - for ( ; point < point_limit; point++ ) - if ( point->y > extremum->y ) - extremum = point; - } - else - { - for ( ; point < point_limit; point++ ) - if ( point->y < extremum->y ) - extremum = point; - } - - AH_LOG(( "%5d", (int)extremum->y )); - - /* now, check whether the point belongs to a straight or round */ - /* segment; we first need to find in which contour the extremum */ - /* lies, then see its previous and next points */ - { - FT_Int idx = (FT_Int)( extremum - points ); - FT_Int n; - FT_Int first, last, prev, next, end; - FT_Pos dist; - - - last = -1; - first = 0; - - for ( n = 0; n < glyph->outline.n_contours; n++ ) - { - end = glyph->outline.contours[n]; - if ( end >= idx ) - { - last = end; - break; - } - first = end + 1; - } - - /* XXX: should never happen! */ - if ( last < 0 ) - continue; - - /* now look for the previous and next points that are not on the */ - /* same Y coordinate. Threshold the `closeness'... */ - - prev = idx; - next = prev; - - do - { - if ( prev > first ) - prev--; - else - prev = last; - - dist = points[prev].y - extremum->y; - if ( dist < -5 || dist > 5 ) - break; - - } while ( prev != idx ); - - do - { - if ( next < last ) - next++; - else - next = first; - - dist = points[next].y - extremum->y; - if ( dist < -5 || dist > 5 ) - break; - - } while ( next != idx ); - - /* now, set the `round' flag depending on the segment's kind */ - round = FT_BOOL( - FT_CURVE_TAG( glyph->outline.tags[prev] ) != FT_CURVE_TAG_ON || - FT_CURVE_TAG( glyph->outline.tags[next] ) != FT_CURVE_TAG_ON ); - - AH_LOG(( "%c ", round ? 'r' : 'f' )); - } - - if ( round ) - rounds[num_rounds++] = extremum->y; - else - flats[num_flats++] = extremum->y; - } - - AH_LOG(( "\n" )); - - /* we have computed the contents of the `rounds' and `flats' tables, */ - /* now determine the reference and overshoot position of the blue -- */ - /* we simply take the median value after a simple sort */ - sort_values( num_rounds, rounds ); - sort_values( num_flats, flats ); - - blue_ref = globals->blue_refs + blue; - blue_shoot = globals->blue_shoots + blue; - if ( num_flats == 0 && num_rounds == 0 ) - { - *blue_ref = -10000; - *blue_shoot = -10000; - } - else if ( num_flats == 0 ) - { - *blue_ref = - *blue_shoot = rounds[num_rounds / 2]; - } - else if ( num_rounds == 0 ) - { - *blue_ref = - *blue_shoot = flats[num_flats / 2]; - } - else - { - *blue_ref = flats[num_flats / 2]; - *blue_shoot = rounds[num_rounds / 2]; - } - - /* there are sometimes problems: if the overshoot position of top */ - /* zones is under its reference position, or the opposite for bottom */ - /* zones. We must thus check everything there and correct the errors */ - if ( *blue_shoot != *blue_ref ) - { - FT_Pos ref = *blue_ref; - FT_Pos shoot = *blue_shoot; - FT_Bool over_ref = FT_BOOL( shoot > ref ); - - - if ( AH_IS_TOP_BLUE( blue ) ^ over_ref ) - *blue_shoot = *blue_ref = ( shoot + ref ) / 2; - } - - AH_LOG(( "-- ref = %ld, shoot = %ld\n", *blue_ref, *blue_shoot )); - } - - /* reset original face charmap */ - FT_Set_Charmap( face, charmap ); - error = 0; - - Exit: - return error; - } - - - static FT_Error - ah_hinter_compute_widths( AH_Hinter hinter ) - { - /* scan the array of segments in each direction */ - AH_Outline outline = hinter->glyph; - AH_Segment segments; - AH_Segment limit; - AH_Globals globals = &hinter->globals->design; - FT_Pos* widths; - FT_Int dimension; - FT_Int* p_num_widths; - FT_Error error = 0; - FT_Pos edge_distance_threshold = 32000; - - - globals->num_widths = 0; - globals->num_heights = 0; - - /* For now, compute the standard width and height from the `o' */ - /* character. I started computing the stem width of the `i' and the */ - /* stem height of the "-", but it wasn't too good. Moreover, we now */ - /* have a single character that gives us standard width and height. */ - { - FT_UInt glyph_index; - - - glyph_index = FT_Get_Char_Index( hinter->face, 'o' ); - if ( glyph_index == 0 ) - return 0; - - error = FT_Load_Glyph( hinter->face, glyph_index, FT_LOAD_NO_SCALE ); - if ( error ) - goto Exit; - - error = ah_outline_load( hinter->glyph, 0x10000L, 0x10000L, - hinter->face ); - if ( error ) - goto Exit; - - ah_outline_compute_segments( hinter->glyph ); - ah_outline_link_segments( hinter->glyph ); - } - - segments = outline->horz_segments; - limit = segments + outline->num_hsegments; - widths = globals->heights; - p_num_widths = &globals->num_heights; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Segment seg = segments; - AH_Segment link; - FT_Int num_widths = 0; - - - for ( ; seg < limit; seg++ ) - { - link = seg->link; - /* we only consider stem segments there! */ - if ( link && link->link == seg && link > seg ) - { - FT_Pos dist; - - - dist = seg->pos - link->pos; - if ( dist < 0 ) - dist = -dist; - - if ( num_widths < AH_MAX_WIDTHS ) - widths[num_widths++] = dist; - } - } - - sort_values( num_widths, widths ); - *p_num_widths = num_widths; - - /* we will now try to find the smallest width */ - if ( num_widths > 0 && widths[0] < edge_distance_threshold ) - edge_distance_threshold = widths[0]; - - segments = outline->vert_segments; - limit = segments + outline->num_vsegments; - widths = globals->widths; - p_num_widths = &globals->num_widths; - } - - /* Now, compute the edge distance threshold as a fraction of the */ - /* smallest width in the font. Set it in `hinter->glyph' too! */ - if ( edge_distance_threshold == 32000 ) - edge_distance_threshold = 50; - - /* let's try 20% */ - hinter->glyph->edge_distance_threshold = edge_distance_threshold / 5; - - Exit: - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - ah_hinter_compute_globals( AH_Hinter hinter ) - { - return ah_hinter_compute_widths( hinter ) || - ah_hinter_compute_blues ( hinter ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahglobal.h b/nx-X11/extras/freetype2/src/autohint/ahglobal.h deleted file mode 100644 index 5a9bcf835..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahglobal.h +++ /dev/null @@ -1,59 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahglobal.h */ -/* */ -/* Routines used to compute global metrics automatically */ -/* (specification). */ -/* */ -/* Copyright 2000-2001, 2002, 2003 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#ifndef __AHGLOBAL_H__ -#define __AHGLOBAL_H__ - - -#include <ft2build.h> -#include "ahtypes.h" -#include FT_INTERNAL_OBJECTS_H - - -FT_BEGIN_HEADER - - -#ifdef FT_CONFIG_CHESTER_SMALL_F - -#define AH_IS_TOP_BLUE( b ) ( (b) == AH_BLUE_CAPITAL_TOP || \ - (b) == AH_BLUE_SMALL_F_TOP || \ - (b) == AH_BLUE_SMALL_TOP ) - -#else /* !FT_CONFIG_CHESTER_SMALL_F */ - -#define AH_IS_TOP_BLUE( b ) ( (b) == AH_BLUE_CAPITAL_TOP || \ - (b) == AH_BLUE_SMALL_TOP ) - -#endif /* !FT_CONFIG_CHESTER_SMALL_F */ - - - /* compute global metrics automatically */ - FT_LOCAL( FT_Error ) - ah_hinter_compute_globals( AH_Hinter hinter ); - - -FT_END_HEADER - -#endif /* __AHGLOBAL_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahglyph.c b/nx-X11/extras/freetype2/src/autohint/ahglyph.c deleted file mode 100644 index 2a0390be4..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahglyph.c +++ /dev/null @@ -1,1699 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahglyph.c */ -/* */ -/* Routines used to load and analyze a given glyph before hinting */ -/* (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "ahglyph.h" -#include "ahangles.h" -#include "ahglobal.h" -#include "aherrors.h" - - -#ifdef AH_DEBUG - -#include <stdio.h> - - void - ah_dump_edges( AH_Outline outline ) - { - AH_Edge edges; - AH_Edge edge_limit; - AH_Segment segments; - FT_Int dimension; - - - edges = outline->horz_edges; - edge_limit = edges + outline->num_hedges; - segments = outline->horz_segments; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Edge edge; - - - printf ( "Table of %s edges:\n", - !dimension ? "vertical" : "horizontal" ); - printf ( " [ index | pos | dir | link |" - " serif | blue | opos | pos ]\n" ); - - for ( edge = edges; edge < edge_limit; edge++ ) - { - printf ( " [ %5d | %4d | %5s | %4d | %5d | %c | %5.2f | %5.2f ]\n", - edge - edges, - (int)edge->fpos, - edge->dir == AH_DIR_UP - ? "up" - : ( edge->dir == AH_DIR_DOWN - ? "down" - : ( edge->dir == AH_DIR_LEFT - ? "left" - : ( edge->dir == AH_DIR_RIGHT - ? "right" - : "none" ) ) ), - edge->link ? ( edge->link - edges ) : -1, - edge->serif ? ( edge->serif - edges ) : -1, - edge->blue_edge ? 'y' : 'n', - edge->opos / 64.0, - edge->pos / 64.0 ); - } - - edges = outline->vert_edges; - edge_limit = edges + outline->num_vedges; - segments = outline->vert_segments; - } - } - - - /* A function used to dump the array of linked segments */ - void - ah_dump_segments( AH_Outline outline ) - { - AH_Segment segments; - AH_Segment segment_limit; - AH_Point points; - FT_Int dimension; - - - points = outline->points; - segments = outline->horz_segments; - segment_limit = segments + outline->num_hsegments; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Segment seg; - - - printf ( "Table of %s segments:\n", - !dimension ? "vertical" : "horizontal" ); - printf ( " [ index | pos | dir | link | serif |" - " numl | first | start ]\n" ); - - for ( seg = segments; seg < segment_limit; seg++ ) - { - printf ( " [ %5d | %4d | %5s | %4d | %5d | %4d | %5d | %5d ]\n", - seg - segments, - (int)seg->pos, - seg->dir == AH_DIR_UP - ? "up" - : ( seg->dir == AH_DIR_DOWN - ? "down" - : ( seg->dir == AH_DIR_LEFT - ? "left" - : ( seg->dir == AH_DIR_RIGHT - ? "right" - : "none" ) ) ), - seg->link ? ( seg->link - segments ) : -1, - seg->serif ? ( seg->serif - segments ) : -1, - (int)seg->num_linked, - seg->first - points, - seg->last - points ); - } - - segments = outline->vert_segments; - segment_limit = segments + outline->num_vsegments; - } - } - -#endif /* AH_DEBUG */ - - - /* compute the direction value of a given vector */ - static AH_Direction - ah_compute_direction( FT_Pos dx, - FT_Pos dy ) - { - AH_Direction dir; - FT_Pos ax = FT_ABS( dx ); - FT_Pos ay = FT_ABS( dy ); - - - dir = AH_DIR_NONE; - - /* atan(1/12) == 4.7 degrees */ - - /* test for vertical direction */ - if ( ax * 12 < ay ) - { - dir = dy > 0 ? AH_DIR_UP : AH_DIR_DOWN; - } - /* test for horizontal direction */ - else if ( ay * 12 < ax ) - { - dir = dx > 0 ? AH_DIR_RIGHT : AH_DIR_LEFT; - } - - return dir; - } - - - /* this function is used by ah_get_orientation (see below) to test */ - /* the fill direction of given bbox extremum */ - static FT_Int - ah_test_extremum( FT_Outline* outline, - FT_Int n ) - { - FT_Vector *prev, *cur, *next; - FT_Pos product; - FT_Int first, last, c; - FT_Int retval; - - - /* we need to compute the `previous' and `next' point */ - /* for this extremum; we check whether the extremum */ - /* is start or end of a contour and providing */ - /* appropriate values if so */ - cur = outline->points + n; - prev = cur - 1; - next = cur + 1; - - first = 0; - for ( c = 0; c < outline->n_contours; c++ ) - { - last = outline->contours[c]; - - if ( n == first ) - prev = outline->points + last; - - if ( n == last ) - next = outline->points + first; - - first = last + 1; - } - - /* compute the vectorial product -- since we know that the angle */ - /* is <= 180 degrees (otherwise it wouldn't be an extremum) we */ - /* can determine the filling orientation if the product is */ - /* either positive or negative */ - product = FT_MulDiv( cur->x - prev->x, /* in.x */ - next->y - cur->y, /* out.y */ - 0x40 ) - - - FT_MulDiv( cur->y - prev->y, /* in.y */ - next->x - cur->x, /* out.x */ - 0x40 ); - - retval = 0; - if ( product ) - retval = product > 0 ? 2 : 1; - - return retval; - } - - - /* Compute the orientation of path filling. It differs between TrueType */ - /* and Type1 formats. We could use the `FT_OUTLINE_REVERSE_FILL' flag, */ - /* but it is better to re-compute it directly (it seems that this flag */ - /* isn't correctly set for some weird composite glyphs currently). */ - /* */ - /* We do this by computing bounding box points, and computing their */ - /* curvature. */ - /* */ - /* The function returns either 1 or 2. */ - /* */ - static FT_Int - ah_get_orientation( FT_Outline* outline ) - { - FT_BBox box; - FT_Int indices_xMin, indices_yMin, indices_xMax, indices_yMax; - FT_Int n, last; - - - indices_xMin = -1; - indices_yMin = -1; - indices_xMax = -1; - indices_yMax = -1; - - box.xMin = box.yMin = 32767L; - box.xMax = box.yMax = -32768L; - - /* is it empty? */ - if ( outline->n_contours < 1 ) - return 1; - - last = outline->contours[outline->n_contours - 1]; - - for ( n = 0; n <= last; n++ ) - { - FT_Pos x, y; - - - x = outline->points[n].x; - if ( x < box.xMin ) - { - box.xMin = x; - indices_xMin = n; - } - if ( x > box.xMax ) - { - box.xMax = x; - indices_xMax = n; - } - - y = outline->points[n].y; - if ( y < box.yMin ) - { - box.yMin = y; - indices_yMin = n; - } - if ( y > box.yMax ) - { - box.yMax = y; - indices_yMax = n; - } - } - - /* test orientation of the extrema */ - n = ah_test_extremum( outline, indices_xMin ); - if ( n ) - goto Exit; - - n = ah_test_extremum( outline, indices_yMin ); - if ( n ) - goto Exit; - - n = ah_test_extremum( outline, indices_xMax ); - if ( n ) - goto Exit; - - n = ah_test_extremum( outline, indices_yMax ); - if ( !n ) - n = 1; - - Exit: - return n; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ah_outline_new */ - /* */ - /* <Description> */ - /* Creates a new and empty AH_OutlineRec object. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - ah_outline_new( FT_Memory memory, - AH_Outline* aoutline ) - { - FT_Error error; - AH_Outline outline; - - - if ( !FT_NEW( outline ) ) - { - outline->memory = memory; - *aoutline = outline; - } - - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ah_outline_done */ - /* */ - /* <Description> */ - /* Destroys a given AH_OutlineRec object. */ - /* */ - FT_LOCAL_DEF( void ) - ah_outline_done( AH_Outline outline ) - { - FT_Memory memory = outline->memory; - - - FT_FREE( outline->horz_edges ); - FT_FREE( outline->horz_segments ); - FT_FREE( outline->contours ); - FT_FREE( outline->points ); - - FT_FREE( outline ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ah_outline_save */ - /* */ - /* <Description> */ - /* Saves the contents of a given AH_OutlineRec object into a face's */ - /* glyph slot. */ - /* */ - FT_LOCAL_DEF( void ) - ah_outline_save( AH_Outline outline, - AH_Loader gloader ) - { - AH_Point point = outline->points; - AH_Point point_limit = point + outline->num_points; - FT_Vector* vec = gloader->current.outline.points; - char* tag = gloader->current.outline.tags; - - - /* we assume that the glyph loader has already been checked for storage */ - for ( ; point < point_limit; point++, vec++, tag++ ) - { - vec->x = point->x; - vec->y = point->y; - - if ( point->flags & AH_FLAG_CONIC ) - tag[0] = FT_CURVE_TAG_CONIC; - else if ( point->flags & AH_FLAG_CUBIC ) - tag[0] = FT_CURVE_TAG_CUBIC; - else - tag[0] = FT_CURVE_TAG_ON; - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ah_outline_load */ - /* */ - /* <Description> */ - /* Loads an unscaled outline from a glyph slot into an AH_OutlineRec */ - /* object. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - ah_outline_load( AH_Outline outline, - FT_Fixed x_scale, - FT_Fixed y_scale, - FT_Face face ) - { - FT_Memory memory = outline->memory; - FT_Error error = AH_Err_Ok; - FT_Outline* source = &face->glyph->outline; - FT_Int num_points = source->n_points; - FT_Int num_contours = source->n_contours; - AH_Point points; - - - /* check arguments */ - if ( !face || - !face->size || - face->glyph->format != FT_GLYPH_FORMAT_OUTLINE ) - return AH_Err_Invalid_Argument; - - /* first of all, reallocate the contours array if necessary */ - if ( num_contours > outline->max_contours ) - { - FT_Int new_contours = FT_PAD_CEIL( num_contours, 4 ); - - - if ( FT_RENEW_ARRAY( outline->contours, - outline->max_contours, - new_contours ) ) - goto Exit; - - outline->max_contours = new_contours; - } - - /* then, reallocate the points, segments & edges arrays if needed -- */ - /* note that we reserved two additional point positions, used to */ - /* hint metrics appropriately */ - /* */ - if ( num_points + 2 > outline->max_points ) - { - FT_Int news = FT_PAD_CEIL( num_points + 2, 8 ); - FT_Int max = outline->max_points; - - - if ( FT_RENEW_ARRAY( outline->points, max, news ) || - FT_RENEW_ARRAY( outline->horz_edges, max * 2, news * 2 ) || - FT_RENEW_ARRAY( outline->horz_segments, max * 2, news * 2 ) ) - goto Exit; - - /* readjust some pointers */ - outline->vert_edges = outline->horz_edges + news; - outline->vert_segments = outline->horz_segments + news; - outline->max_points = news; - } - - outline->num_points = num_points; - outline->num_contours = num_contours; - - outline->num_hedges = 0; - outline->num_vedges = 0; - outline->num_hsegments = 0; - outline->num_vsegments = 0; - - /* We can't rely on the value of `FT_Outline.flags' to know the fill */ - /* direction used for a glyph, given that some fonts are broken (e.g. */ - /* the Arphic ones). We thus recompute it each time we need to. */ - /* */ - outline->vert_major_dir = AH_DIR_UP; - outline->horz_major_dir = AH_DIR_LEFT; - - if ( ah_get_orientation( source ) > 1 ) - { - outline->vert_major_dir = AH_DIR_DOWN; - outline->horz_major_dir = AH_DIR_RIGHT; - } - - outline->x_scale = x_scale; - outline->y_scale = y_scale; - - points = outline->points; - if ( outline->num_points == 0 ) - goto Exit; - - { - /* do one thing at a time -- it is easier to understand, and */ - /* the code is clearer */ - AH_Point point; - AH_Point point_limit = points + outline->num_points; - - - /* compute coordinates */ - { - FT_Vector* vec = source->points; - - - for ( point = points; point < point_limit; vec++, point++ ) - { - point->fx = vec->x; - point->fy = vec->y; - point->ox = point->x = FT_MulFix( vec->x, x_scale ); - point->oy = point->y = FT_MulFix( vec->y, y_scale ); - - point->flags = 0; - } - } - - /* compute Bezier flags */ - { - char* tag = source->tags; - - - for ( point = points; point < point_limit; point++, tag++ ) - { - switch ( FT_CURVE_TAG( *tag ) ) - { - case FT_CURVE_TAG_CONIC: - point->flags = AH_FLAG_CONIC; - break; - case FT_CURVE_TAG_CUBIC: - point->flags = AH_FLAG_CUBIC; - break; - default: - ; - } - } - } - - /* compute `next' and `prev' */ - { - FT_Int contour_index; - AH_Point prev; - AH_Point first; - AH_Point end; - - - contour_index = 0; - - first = points; - end = points + source->contours[0]; - prev = end; - - for ( point = points; point < point_limit; point++ ) - { - point->prev = prev; - if ( point < end ) - { - point->next = point + 1; - prev = point; - } - else - { - point->next = first; - contour_index++; - if ( point + 1 < point_limit ) - { - end = points + source->contours[contour_index]; - first = point + 1; - prev = end; - } - } - } - } - - /* set-up the contours array */ - { - AH_Point* contour = outline->contours; - AH_Point* contour_limit = contour + outline->num_contours; - short* end = source->contours; - short idx = 0; - - - for ( ; contour < contour_limit; contour++, end++ ) - { - contour[0] = points + idx; - idx = (short)( end[0] + 1 ); - } - } - - /* compute directions of in & out vectors */ - { - for ( point = points; point < point_limit; point++ ) - { - AH_Point prev; - AH_Point next; - FT_Vector ivec, ovec; - - - prev = point->prev; - ivec.x = point->fx - prev->fx; - ivec.y = point->fy - prev->fy; - - point->in_dir = ah_compute_direction( ivec.x, ivec.y ); - - next = point->next; - ovec.x = next->fx - point->fx; - ovec.y = next->fy - point->fy; - - point->out_dir = ah_compute_direction( ovec.x, ovec.y ); - -#ifndef AH_OPTION_NO_WEAK_INTERPOLATION - if ( point->flags & ( AH_FLAG_CONIC | AH_FLAG_CUBIC ) ) - { - Is_Weak_Point: - point->flags |= AH_FLAG_WEAK_INTERPOLATION; - } - else if ( point->out_dir == point->in_dir ) - { - AH_Angle angle_in, angle_out, delta; - - - if ( point->out_dir != AH_DIR_NONE ) - goto Is_Weak_Point; - - angle_in = ah_angle( &ivec ); - angle_out = ah_angle( &ovec ); - delta = angle_in - angle_out; - - if ( delta > AH_PI ) - delta = AH_2PI - delta; - - if ( delta < 0 ) - delta = -delta; - - if ( delta < 2 ) - goto Is_Weak_Point; - } - else if ( point->in_dir == -point->out_dir ) - goto Is_Weak_Point; -#endif - } - } - } - - Exit: - return error; - } - - - FT_LOCAL_DEF( void ) - ah_setup_uv( AH_Outline outline, - AH_UV source ) - { - AH_Point point = outline->points; - AH_Point point_limit = point + outline->num_points; - - - switch ( source ) - { - case AH_UV_FXY: - for ( ; point < point_limit; point++ ) - { - point->u = point->fx; - point->v = point->fy; - } - break; - - case AH_UV_FYX: - for ( ; point < point_limit; point++ ) - { - point->u = point->fy; - point->v = point->fx; - } - break; - - case AH_UV_OXY: - for ( ; point < point_limit; point++ ) - { - point->u = point->ox; - point->v = point->oy; - } - break; - - case AH_UV_OYX: - for ( ; point < point_limit; point++ ) - { - point->u = point->oy; - point->v = point->ox; - } - break; - - case AH_UV_YX: - for ( ; point < point_limit; point++ ) - { - point->u = point->y; - point->v = point->x; - } - break; - - case AH_UV_OX: - for ( ; point < point_limit; point++ ) - { - point->u = point->x; - point->v = point->ox; - } - break; - - case AH_UV_OY: - for ( ; point < point_limit; point++ ) - { - point->u = point->y; - point->v = point->oy; - } - break; - - default: - for ( ; point < point_limit; point++ ) - { - point->u = point->x; - point->v = point->y; - } - } - } - - - /* compute all inflex points in a given glyph */ - static void - ah_outline_compute_inflections( AH_Outline outline ) - { - AH_Point* contour = outline->contours; - AH_Point* contour_limit = contour + outline->num_contours; - - - /* load original coordinates in (u,v) */ - ah_setup_uv( outline, AH_UV_FXY ); - - /* do each contour separately */ - for ( ; contour < contour_limit; contour++ ) - { - FT_Vector vec; - AH_Point point = contour[0]; - AH_Point first = point; - AH_Point start = point; - AH_Point end = point; - AH_Point before; - AH_Point after; - AH_Angle angle_in, angle_seg, angle_out; - AH_Angle diff_in, diff_out; - FT_Int finished = 0; - - - /* compute first segment in contour */ - first = point; - - start = end = first; - do - { - end = end->next; - if ( end == first ) - goto Skip; - - } while ( end->u == first->u && end->v == first->v ); - - vec.x = end->u - start->u; - vec.y = end->v - start->v; - angle_seg = ah_angle( &vec ); - - /* extend the segment start whenever possible */ - before = start; - do - { - do - { - start = before; - before = before->prev; - if ( before == first ) - goto Skip; - - } while ( before->u == start->u && before->v == start->v ); - - vec.x = start->u - before->u; - vec.y = start->v - before->v; - angle_in = ah_angle( &vec ); - - } while ( angle_in == angle_seg ); - - first = start; - diff_in = ah_angle_diff( angle_in, angle_seg ); - - /* now, process all segments in the contour */ - do - { - /* first, extend current segment's end whenever possible */ - after = end; - do - { - do - { - end = after; - after = after->next; - if ( after == first ) - finished = 1; - - } while ( end->u == after->u && end->v == after->v ); - - vec.x = after->u - end->u; - vec.y = after->v - end->v; - angle_out = ah_angle( &vec ); - - } while ( angle_out == angle_seg ); - - diff_out = ah_angle_diff( angle_seg, angle_out ); - - if ( ( diff_in ^ diff_out ) < 0 ) - { - /* diff_in and diff_out have different signs, we have */ - /* inflection points here... */ - do - { - start->flags |= AH_FLAG_INFLECTION; - start = start->next; - - } while ( start != end ); - - start->flags |= AH_FLAG_INFLECTION; - } - - start = end; - end = after; - angle_seg = angle_out; - diff_in = diff_out; - - } while ( !finished ); - - Skip: - ; - } - } - - - FT_LOCAL_DEF( void ) - ah_outline_compute_segments( AH_Outline outline ) - { - int dimension; - AH_Segment segments; - FT_Int* p_num_segments; - AH_Direction segment_dir; - AH_Direction major_dir; - - - segments = outline->horz_segments; - p_num_segments = &outline->num_hsegments; - major_dir = AH_DIR_RIGHT; /* This value must be positive! */ - segment_dir = major_dir; - - /* set up (u,v) in each point */ - ah_setup_uv( outline, AH_UV_FYX ); - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Point* contour = outline->contours; - AH_Point* contour_limit = contour + outline->num_contours; - AH_Segment segment = segments; - FT_Int num_segments = 0; - -#ifdef AH_HINT_METRICS - AH_Point min_point = 0; - AH_Point max_point = 0; - FT_Pos min_coord = 32000; - FT_Pos max_coord = -32000; -#endif - - - /* do each contour separately */ - for ( ; contour < contour_limit; contour++ ) - { - AH_Point point = contour[0]; - AH_Point last = point->prev; - int on_edge = 0; - FT_Pos min_pos = 32000; /* minimum segment pos != min_coord */ - FT_Pos max_pos = -32000; /* maximum segment pos != max_coord */ - FT_Bool passed; - - -#ifdef AH_HINT_METRICS - if ( point->u < min_coord ) - { - min_coord = point->u; - min_point = point; - } - if ( point->u > max_coord ) - { - max_coord = point->u; - max_point = point; - } -#endif - - if ( point == last ) /* skip singletons -- just in case */ - continue; - - if ( FT_ABS( last->out_dir ) == major_dir && - FT_ABS( point->out_dir ) == major_dir ) - { - /* we are already on an edge, try to locate its start */ - last = point; - - for (;;) - { - point = point->prev; - if ( FT_ABS( point->out_dir ) != major_dir ) - { - point = point->next; - break; - } - if ( point == last ) - break; - } - } - - last = point; - passed = 0; - - for (;;) - { - FT_Pos u, v; - - - if ( on_edge ) - { - u = point->u; - if ( u < min_pos ) - min_pos = u; - if ( u > max_pos ) - max_pos = u; - - if ( point->out_dir != segment_dir || point == last ) - { - /* we are just leaving an edge; record a new segment! */ - segment->last = point; - segment->pos = ( min_pos + max_pos ) >> 1; - - /* a segment is round if either its first or last point */ - /* is a control point */ - if ( ( segment->first->flags | point->flags ) & - AH_FLAG_CONTROL ) - segment->flags |= AH_EDGE_ROUND; - - /* compute segment size */ - min_pos = max_pos = point->v; - - v = segment->first->v; - if ( v < min_pos ) - min_pos = v; - if ( v > max_pos ) - max_pos = v; - - segment->min_coord = min_pos; - segment->max_coord = max_pos; - - on_edge = 0; - num_segments++; - segment++; - /* fallthrough */ - } - } - - /* now exit if we are at the start/end point */ - if ( point == last ) - { - if ( passed ) - break; - passed = 1; - } - - if ( !on_edge && FT_ABS( point->out_dir ) == major_dir ) - { - /* this is the start of a new segment! */ - segment_dir = point->out_dir; - - /* clear all segment fields */ - FT_ZERO( segment ); - - segment->dir = segment_dir; - segment->flags = AH_EDGE_NORMAL; - min_pos = max_pos = point->u; - segment->first = point; - segment->last = point; - segment->contour = contour; - segment->score = 32000; - segment->link = NULL; - on_edge = 1; - -#ifdef AH_HINT_METRICS - if ( point == max_point ) - max_point = 0; - - if ( point == min_point ) - min_point = 0; -#endif - } - - point = point->next; - } - - } /* contours */ - -#ifdef AH_HINT_METRICS - /* we need to ensure that there are edges on the left-most and */ - /* right-most points of the glyph in order to hint the metrics; */ - /* we do this by inserting fake segments when needed */ - if ( dimension == 0 ) - { - AH_Point point = outline->points; - AH_Point point_limit = point + outline->num_points; - - FT_Pos min_pos = 32000; - FT_Pos max_pos = -32000; - - - min_point = 0; - max_point = 0; - - /* compute minimum and maximum points */ - for ( ; point < point_limit; point++ ) - { - FT_Pos x = point->fx; - - - if ( x < min_pos ) - { - min_pos = x; - min_point = point; - } - if ( x > max_pos ) - { - max_pos = x; - max_point = point; - } - } - - /* insert minimum segment */ - if ( min_point ) - { - /* clear all segment fields */ - FT_ZERO( segment ); - - segment->dir = segment_dir; - segment->flags = AH_EDGE_NORMAL; - segment->first = min_point; - segment->last = min_point; - segment->pos = min_pos; - segment->score = 32000; - segment->link = NULL; - - num_segments++; - segment++; - } - - /* insert maximum segment */ - if ( max_point ) - { - /* clear all segment fields */ - FT_ZERO( segment ); - - segment->dir = segment_dir; - segment->flags = AH_EDGE_NORMAL; - segment->first = max_point; - segment->last = max_point; - segment->pos = max_pos; - segment->score = 32000; - segment->link = NULL; - - num_segments++; - segment++; - } - } -#endif /* AH_HINT_METRICS */ - - *p_num_segments = num_segments; - - segments = outline->vert_segments; - major_dir = AH_DIR_UP; - p_num_segments = &outline->num_vsegments; - - ah_setup_uv( outline, AH_UV_FXY ); - } - } - - - FT_LOCAL_DEF( void ) - ah_outline_link_segments( AH_Outline outline ) - { - AH_Segment segments; - AH_Segment segment_limit; - AH_Direction major_dir; - int dimension; - - - segments = outline->horz_segments; - segment_limit = segments + outline->num_hsegments; - major_dir = outline->horz_major_dir; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Segment seg1; - AH_Segment seg2; - -#if 0 - /* now compare each segment to the others */ - for ( seg1 = segments; seg1 < segment_limit; seg1++ ) - { - FT_Pos best_score; - AH_Segment best_segment; - - - /* the fake segments are introduced to hint the metrics -- */ - /* we must never link them to anything */ - if ( seg1->first == seg1->last ) - continue; - - best_segment = seg1->link; - if ( best_segment ) - best_score = seg1->score; - else - best_score = +32000; - - for ( seg2 = segments; seg2 < segment_limit; seg2++ ) - if ( seg1 != seg2 && seg1->dir + seg2->dir == 0 ) - { - FT_Pos pos1 = seg1->pos; - FT_Pos pos2 = seg2->pos; - FT_Bool is_dir; - FT_Bool is_pos; - - - /* check that the segments are correctly oriented and */ - /* positioned to form a black distance */ - - is_dir = (FT_Bool)( seg1->dir == outline->horz_major_dir || - seg1->dir == outline->vert_major_dir ); - is_pos = (FT_Bool)( pos1 > pos2 ); - - if ( pos1 == pos2 || !(is_dir ^ is_pos) ) - continue; - - { - FT_Pos min = seg1->min_coord; - FT_Pos max = seg1->max_coord; - FT_Pos len, dist, score; - - - if ( min < seg2->min_coord ) - min = seg2->min_coord; - - if ( max > seg2->max_coord ) - max = seg2->max_coord; - - len = max - min; - if ( len >= 8 ) - { - dist = seg2->pos - seg1->pos; - if ( dist < 0 ) - dist = -dist; - - score = dist + 3000 / len; - - if ( score < best_score ) - { - best_score = score; - best_segment = seg2; - } - } - } - } - - if ( best_segment ) - { - seg1->link = best_segment; - seg1->score = best_score; - best_segment->num_linked++; - } - } -#endif /* 0 */ - -#if 1 - /* the following code does the same, but much faster! */ - - /* now compare each segment to the others */ - for ( seg1 = segments; seg1 < segment_limit; seg1++ ) - { - /* the fake segments are introduced to hint the metrics -- */ - /* we must never link them to anything */ - if ( seg1->first == seg1->last || seg1->dir != major_dir ) - continue; - - for ( seg2 = segments; seg2 < segment_limit; seg2++ ) - if ( seg2 != seg1 && seg1->dir + seg2->dir == 0 ) - { - FT_Pos pos1 = seg1->pos; - FT_Pos pos2 = seg2->pos; - FT_Pos dist = pos2 - pos1; - - - if ( dist < 0 ) - continue; - - { - FT_Pos min = seg1->min_coord; - FT_Pos max = seg1->max_coord; - FT_Pos len, score; - - - if ( min < seg2->min_coord ) - min = seg2->min_coord; - - if ( max > seg2->max_coord ) - max = seg2->max_coord; - - len = max - min; - if ( len >= 8 ) - { - score = dist + 3000 / len; - - if ( score < seg1->score ) - { - seg1->score = score; - seg1->link = seg2; - } - - if ( score < seg2->score ) - { - seg2->score = score; - seg2->link = seg1; - } - } - } - } - } -#endif /* 1 */ - - /* now, compute the `serif' segments */ - for ( seg1 = segments; seg1 < segment_limit; seg1++ ) - { - seg2 = seg1->link; - - if ( seg2 ) - { - seg2->num_linked++; - if ( seg2->link != seg1 ) - { - seg1->link = 0; - seg1->serif = seg2->link; - } - } - } - - segments = outline->vert_segments; - segment_limit = segments + outline->num_vsegments; - major_dir = outline->vert_major_dir; - } - } - - - static void - ah_outline_compute_edges( AH_Outline outline ) - { - AH_Edge edges; - AH_Segment segments; - AH_Segment segment_limit; - AH_Direction up_dir; - FT_Int* p_num_edges; - FT_Int dimension; - FT_Fixed scale; - FT_Pos edge_distance_threshold; - - - edges = outline->horz_edges; - segments = outline->horz_segments; - segment_limit = segments + outline->num_hsegments; - p_num_edges = &outline->num_hedges; - up_dir = AH_DIR_RIGHT; - scale = outline->y_scale; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Edge edge; - AH_Edge edge_limit; /* really == edge + num_edges */ - AH_Segment seg; - - - /*********************************************************************/ - /* */ - /* We will begin by generating a sorted table of edges for the */ - /* current direction. To do so, we simply scan each segment and try */ - /* to find an edge in our table that corresponds to its position. */ - /* */ - /* If no edge is found, we create and insert a new edge in the */ - /* sorted table. Otherwise, we simply add the segment to the edge's */ - /* list which will be processed in the second step to compute the */ - /* edge's properties. */ - /* */ - /* Note that the edges table is sorted along the segment/edge */ - /* position. */ - /* */ - /*********************************************************************/ - - edge_distance_threshold = FT_MulFix( outline->edge_distance_threshold, - scale ); - if ( edge_distance_threshold > 64 / 4 ) - edge_distance_threshold = 64 / 4; - - edge_distance_threshold = FT_DivFix( edge_distance_threshold, - scale ); - - edge_limit = edges; - for ( seg = segments; seg < segment_limit; seg++ ) - { - AH_Edge found = 0; - - - /* look for an edge corresponding to the segment */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - FT_Pos dist; - - - dist = seg->pos - edge->fpos; - if ( dist < 0 ) - dist = -dist; - - if ( dist < edge_distance_threshold ) - { - found = edge; - break; - } - } - - if ( !found ) - { - /* insert a new edge in the list and */ - /* sort according to the position */ - while ( edge > edges && edge[-1].fpos > seg->pos ) - { - edge[0] = edge[-1]; - edge--; - } - edge_limit++; - - /* clear all edge fields */ - FT_MEM_ZERO( edge, sizeof ( *edge ) ); - - /* add the segment to the new edge's list */ - edge->first = seg; - edge->last = seg; - edge->fpos = seg->pos; - edge->opos = edge->pos = FT_MulFix( seg->pos, scale ); - seg->edge_next = seg; - } - else - { - /* if an edge was found, simply add the segment to the edge's */ - /* list */ - seg->edge_next = edge->first; - edge->last->edge_next = seg; - edge->last = seg; - } - } - *p_num_edges = (FT_Int)( edge_limit - edges ); - - - /*********************************************************************/ - /* */ - /* Good, we will now compute each edge's properties according to */ - /* segments found on its position. Basically, these are: */ - /* */ - /* - edge's main direction */ - /* - stem edge, serif edge or both (which defaults to stem then) */ - /* - rounded edge, straight or both (which defaults to straight) */ - /* - link for edge */ - /* */ - /*********************************************************************/ - - /* first of all, set the `edge' field in each segment -- this is */ - /* required in order to compute edge links */ - - /* Note that I've tried to remove this loop, setting - * the "edge" field of each segment directly in the - * code above. For some reason, it slows down execution - * speed -- on a Sun. - */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - seg = edge->first; - if ( seg ) - do - { - seg->edge = edge; - seg = seg->edge_next; - } - while ( seg != edge->first ); - } - - /* now, compute each edge properties */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - FT_Int is_round = 0; /* does it contain round segments? */ - FT_Int is_straight = 0; /* does it contain straight segments? */ - FT_Pos ups = 0; /* number of upwards segments */ - FT_Pos downs = 0; /* number of downwards segments */ - - - seg = edge->first; - - do - { - FT_Bool is_serif; - - - /* check for roundness of segment */ - if ( seg->flags & AH_EDGE_ROUND ) - is_round++; - else - is_straight++; - - /* check for segment direction */ - if ( seg->dir == up_dir ) - ups += seg->max_coord-seg->min_coord; - else - downs += seg->max_coord-seg->min_coord; - - /* check for links -- if seg->serif is set, then seg->link must */ - /* be ignored */ - is_serif = (FT_Bool)( seg->serif && seg->serif->edge != edge ); - - if ( seg->link || is_serif ) - { - AH_Edge edge2; - AH_Segment seg2; - - - edge2 = edge->link; - seg2 = seg->link; - - if ( is_serif ) - { - seg2 = seg->serif; - edge2 = edge->serif; - } - - if ( edge2 ) - { - FT_Pos edge_delta; - FT_Pos seg_delta; - - - edge_delta = edge->fpos - edge2->fpos; - if ( edge_delta < 0 ) - edge_delta = -edge_delta; - - seg_delta = seg->pos - seg2->pos; - if ( seg_delta < 0 ) - seg_delta = -seg_delta; - - if ( seg_delta < edge_delta ) - edge2 = seg2->edge; - } - else - edge2 = seg2->edge; - -#ifdef FT_CONFIG_CHESTER_SERIF - if ( is_serif ) - { - edge->serif = edge2; - edge2->flags |= AH_EDGE_SERIF; - } - else - edge->link = edge2; -#else /* !FT_CONFIG_CHESTER_SERIF */ - if ( is_serif ) - edge->serif = edge2; - else - edge->link = edge2; -#endif /* !FT_CONFIG_CHESTER_SERIF */ - } - - seg = seg->edge_next; - - } while ( seg != edge->first ); - - /* set the round/straight flags */ - edge->flags = AH_EDGE_NORMAL; - - if ( is_round > 0 && is_round >= is_straight ) - edge->flags |= AH_EDGE_ROUND; - - /* set the edge's main direction */ - edge->dir = AH_DIR_NONE; - - if ( ups > downs ) - edge->dir = up_dir; - - else if ( ups < downs ) - edge->dir = -up_dir; - - else if ( ups == downs ) - edge->dir = 0; /* both up and down! */ - - /* gets rid of serifs if link is set */ - /* XXX: This gets rid of many unpleasant artefacts! */ - /* Example: the `c' in cour.pfa at size 13 */ - - if ( edge->serif && edge->link ) - edge->serif = 0; - } - - edges = outline->vert_edges; - segments = outline->vert_segments; - segment_limit = segments + outline->num_vsegments; - p_num_edges = &outline->num_vedges; - up_dir = AH_DIR_UP; - scale = outline->x_scale; - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ah_outline_detect_features */ - /* */ - /* <Description> */ - /* Performs feature detection on a given AH_OutlineRec object. */ - /* */ - FT_LOCAL_DEF( void ) - ah_outline_detect_features( AH_Outline outline ) - { - ah_outline_compute_segments ( outline ); - ah_outline_link_segments ( outline ); - ah_outline_compute_edges ( outline ); - ah_outline_compute_inflections( outline ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ah_outline_compute_blue_edges */ - /* */ - /* <Description> */ - /* Computes the `blue edges' in a given outline (i.e. those that must */ - /* be snapped to a blue zone edge (top or bottom). */ - /* */ - FT_LOCAL_DEF( void ) - ah_outline_compute_blue_edges( AH_Outline outline, - AH_Face_Globals face_globals ) - { - AH_Edge edge = outline->horz_edges; - AH_Edge edge_limit = edge + outline->num_hedges; - AH_Globals globals = &face_globals->design; - FT_Fixed y_scale = outline->y_scale; - - FT_Bool blue_active[AH_BLUE_MAX]; - - - /* compute which blue zones are active, i.e. have their scaled */ - /* size < 3/4 pixels */ - { - AH_Blue blue; - FT_Bool check = 0; - - - for ( blue = AH_BLUE_CAPITAL_TOP; blue < AH_BLUE_MAX; blue++ ) - { - FT_Pos ref, shoot, dist; - - - ref = globals->blue_refs[blue]; - shoot = globals->blue_shoots[blue]; - dist = ref - shoot; - if ( dist < 0 ) - dist = -dist; - - blue_active[blue] = 0; - - if ( FT_MulFix( dist, y_scale ) < 48 ) - { - blue_active[blue] = 1; - check = 1; - } - } - - /* return immediately if no blue zone is active */ - if ( !check ) - return; - } - - /* for each horizontal edge search the blue zone which is closest */ - for ( ; edge < edge_limit; edge++ ) - { - AH_Blue blue; - FT_Pos* best_blue = 0; - FT_Pos best_dist; /* initial threshold */ - - - /* compute the initial threshold as a fraction of the EM size */ - best_dist = FT_MulFix( face_globals->face->units_per_EM / 40, y_scale ); - -#ifdef FT_CONFIG_CHESTER_SMALL_F - if ( best_dist > 64 / 2 ) - best_dist = 64 / 2; -#else - if ( best_dist > 64 / 4 ) - best_dist = 64 / 4; -#endif - - for ( blue = AH_BLUE_CAPITAL_TOP; blue < AH_BLUE_MAX; blue++ ) - { - /* if it is a top zone, check for right edges -- if it is a bottom */ - /* zone, check for left edges */ - /* */ - /* of course, that's for TrueType XXX */ - FT_Bool is_top_blue = - FT_BOOL( AH_IS_TOP_BLUE( blue ) ); - FT_Bool is_major_dir = - FT_BOOL( edge->dir == outline->horz_major_dir ); - - - if ( !blue_active[blue] ) - continue; - - /* if it is a top zone, the edge must be against the major */ - /* direction; if it is a bottom zone, it must be in the major */ - /* direction */ - if ( is_top_blue ^ is_major_dir ) - { - FT_Pos dist; - FT_Pos* blue_pos = globals->blue_refs + blue; - - - /* first of all, compare it to the reference position */ - dist = edge->fpos - *blue_pos; - if ( dist < 0 ) - dist = -dist; - - dist = FT_MulFix( dist, y_scale ); - if ( dist < best_dist ) - { - best_dist = dist; - best_blue = blue_pos; - } - - /* now, compare it to the overshoot position if the edge is */ - /* rounded, and if the edge is over the reference position of a */ - /* top zone, or under the reference position of a bottom zone */ - if ( edge->flags & AH_EDGE_ROUND && dist != 0 ) - { - FT_Bool is_under_ref = FT_BOOL( edge->fpos < *blue_pos ); - - - if ( is_top_blue ^ is_under_ref ) - { - blue_pos = globals->blue_shoots + blue; - dist = edge->fpos - *blue_pos; - if ( dist < 0 ) - dist = -dist; - - dist = FT_MulFix( dist, y_scale ); - if ( dist < best_dist ) - { - best_dist = dist; - best_blue = blue_pos; - } - } - } - } - } - - if ( best_blue ) - edge->blue_edge = best_blue; - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ah_outline_scale_blue_edges */ - /* */ - /* <Description> */ - /* This function must be called before hinting in order to re-adjust */ - /* the contents of the detected edges (basically change the `blue */ - /* edge' pointer from `design units' to `scaled ones'). */ - /* */ - FT_LOCAL_DEF( void ) - ah_outline_scale_blue_edges( AH_Outline outline, - AH_Face_Globals globals ) - { - AH_Edge edge = outline->horz_edges; - AH_Edge edge_limit = edge + outline->num_hedges; - FT_Pos delta; - - - delta = globals->scaled.blue_refs - globals->design.blue_refs; - - for ( ; edge < edge_limit; edge++ ) - { - if ( edge->blue_edge ) - edge->blue_edge += delta; - } - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahglyph.h b/nx-X11/extras/freetype2/src/autohint/ahglyph.h deleted file mode 100644 index b346cbe8b..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahglyph.h +++ /dev/null @@ -1,95 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahglyph.h */ -/* */ -/* Routines used to load and analyze a given glyph before hinting */ -/* (specification). */ -/* */ -/* Copyright 2000-2001, 2002 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#ifndef __AHGLYPH_H__ -#define __AHGLYPH_H__ - - -#include <ft2build.h> -#include "ahtypes.h" - - -FT_BEGIN_HEADER - - - typedef enum AH_UV_ - { - AH_UV_FXY, - AH_UV_FYX, - AH_UV_OXY, - AH_UV_OYX, - AH_UV_OX, - AH_UV_OY, - AH_UV_YX, - AH_UV_XY /* should always be last! */ - - } AH_UV; - - - FT_LOCAL( void ) - ah_setup_uv( AH_Outline outline, - AH_UV source ); - - - /* AH_OutlineRec functions - they should be typically called in this order */ - - FT_LOCAL( FT_Error ) - ah_outline_new( FT_Memory memory, - AH_Outline* aoutline ); - - FT_LOCAL( FT_Error ) - ah_outline_load( AH_Outline outline, - FT_Fixed x_scale, - FT_Fixed y_scale, - FT_Face face ); - - FT_LOCAL( void ) - ah_outline_compute_segments( AH_Outline outline ); - - FT_LOCAL( void ) - ah_outline_link_segments( AH_Outline outline ); - - FT_LOCAL( void ) - ah_outline_detect_features( AH_Outline outline ); - - FT_LOCAL( void ) - ah_outline_compute_blue_edges( AH_Outline outline, - AH_Face_Globals globals ); - - FT_LOCAL( void ) - ah_outline_scale_blue_edges( AH_Outline outline, - AH_Face_Globals globals ); - - FT_LOCAL( void ) - ah_outline_save( AH_Outline outline, - AH_Loader loader ); - - FT_LOCAL( void ) - ah_outline_done( AH_Outline outline ); - - -FT_END_HEADER - -#endif /* __AHGLYPH_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahhint.c b/nx-X11/extras/freetype2/src/autohint/ahhint.c deleted file mode 100644 index 8e8afeac4..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahhint.c +++ /dev/null @@ -1,1937 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahhint.c */ -/* */ -/* Glyph hinter (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "ahhint.h" -#include "ahglyph.h" -#include "ahangles.h" -#include "aherrors.h" -#include FT_OUTLINE_H - - -#define FACE_GLOBALS( face ) ( (AH_Face_Globals)(face)->autohint.data ) - -#define AH_USE_IUP -#define OPTIM_STEM_SNAP - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** Hinting routines ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - /* snap a given width in scaled coordinates to one of the */ - /* current standard widths */ - static FT_Pos - ah_snap_width( FT_Pos* widths, - FT_Int count, - FT_Pos width ) - { - int n; - FT_Pos best = 64 + 32 + 2; - FT_Pos reference = width; - FT_Pos scaled; - - - for ( n = 0; n < count; n++ ) - { - FT_Pos w; - FT_Pos dist; - - - w = widths[n]; - dist = width - w; - if ( dist < 0 ) - dist = -dist; - if ( dist < best ) - { - best = dist; - reference = w; - } - } - - scaled = FT_PIX_ROUND( reference ); - - if ( width >= reference ) - { - if ( width < scaled + 48 ) - width = reference; - } - else - { - if ( width > scaled - 48 ) - width = reference; - } - - return width; - } - - - /* compute the snapped width of a given stem */ - -#ifdef FT_CONFIG_CHESTER_SERIF - - static FT_Pos - ah_compute_stem_width( AH_Hinter hinter, - int vertical, - FT_Pos width, - AH_Edge_Flags base_flags, - AH_Edge_Flags stem_flags ) - { - AH_Globals globals = &hinter->globals->scaled; - FT_Pos dist = width; - FT_Int sign = 0; - - - if ( dist < 0 ) - { - dist = -width; - sign = 1; - } - - if ( !hinter->do_stem_adjust ) - { - /* leave stem widths unchanged */ - } - else if ( ( vertical && !hinter->do_vert_snapping ) || - ( !vertical && !hinter->do_horz_snapping ) ) - { - /* smooth hinting process: very lightly quantize the stem width */ - /* */ - - /* leave the widths of serifs alone */ - - if ( ( stem_flags & AH_EDGE_SERIF ) && vertical && ( dist < 3 * 64 ) ) - goto Done_Width; - - else if ( ( base_flags & AH_EDGE_ROUND ) ) - { - if ( dist < 80 ) - dist = 64; - } - else if ( dist < 56 ) - dist = 56; - - { - FT_Pos delta = dist - globals->stds[vertical]; - - - if ( delta < 0 ) - delta = -delta; - - if ( delta < 40 ) - { - dist = globals->stds[vertical]; - if ( dist < 48 ) - dist = 48; - - goto Done_Width; - } - - if ( dist < 3 * 64 ) - { - delta = dist & 63; - dist &= -64; - - if ( delta < 10 ) - dist += delta; - - else if ( delta < 32 ) - dist += 10; - - else if ( delta < 54 ) - dist += 54; - - else - dist += delta; - } - else - dist = ( dist + 32 ) & ~63; - } - } - else - { - /* strong hinting process: snap the stem width to integer pixels */ - /* */ - if ( vertical ) - { - dist = ah_snap_width( globals->heights, globals->num_heights, dist ); - - /* in the case of vertical hinting, always round */ - /* the stem heights to integer pixels */ - if ( dist >= 64 ) - dist = ( dist + 16 ) & ~63; - else - dist = 64; - } - else - { - dist = ah_snap_width( globals->widths, globals->num_widths, dist ); - - if ( hinter->flags & AH_HINTER_MONOCHROME ) - { - /* monochrome horizontal hinting: snap widths to integer pixels */ - /* with a different threshold */ - if ( dist < 64 ) - dist = 64; - else - dist = ( dist + 32 ) & ~63; - } - else - { - /* for horizontal anti-aliased hinting, we adopt a more subtle */ - /* approach: we strengthen small stems, round stems whose size */ - /* is between 1 and 2 pixels to an integer, otherwise nothing */ - if ( dist < 48 ) - dist = ( dist + 64 ) >> 1; - - else if ( dist < 128 ) - dist = ( dist + 22 ) & ~63; - else - /* XXX: round otherwise to prevent color fringes in LCD mode */ - dist = ( dist + 32 ) & ~63; - } - } - } - - Done_Width: - if ( sign ) - dist = -dist; - - return dist; - } - -#else /* !FT_CONFIG_CHESTER_SERIF */ - - static FT_Pos - ah_compute_stem_width( AH_Hinter hinter, - int vertical, - FT_Pos width ) - { - AH_Globals globals = &hinter->globals->scaled; - FT_Pos dist = width; - FT_Int sign = 0; - - - if ( dist < 0 ) - { - dist = -width; - sign = 1; - } - - if ( !hinter->do_stem_adjust ) - { - /* leave stem widths unchanged */ - } - else if ( ( vertical && !hinter->do_vert_snapping ) || - ( !vertical && !hinter->do_horz_snapping ) ) - { - /* smooth hinting process: very lightly quantize the stem width */ - /* */ - if ( dist < 64 ) - dist = 64; - - { - FT_Pos delta = dist - globals->stds[vertical]; - - - if ( delta < 0 ) - delta = -delta; - - if ( delta < 40 ) - { - dist = globals->stds[vertical]; - if ( dist < 48 ) - dist = 48; - } - - if ( dist < 3 * 64 ) - { - delta = dist & 63; - dist &= -64; - - if ( delta < 10 ) - dist += delta; - - else if ( delta < 32 ) - dist += 10; - - else if ( delta < 54 ) - dist += 54; - - else - dist += delta; - } - else - dist = ( dist + 32 ) & ~63; - } - } - else - { - /* strong hinting process: snap the stem width to integer pixels */ - /* */ - if ( vertical ) - { - dist = ah_snap_width( globals->heights, globals->num_heights, dist ); - - /* in the case of vertical hinting, always round */ - /* the stem heights to integer pixels */ - if ( dist >= 64 ) - dist = ( dist + 16 ) & ~63; - else - dist = 64; - } - else - { - dist = ah_snap_width( globals->widths, globals->num_widths, dist ); - - if ( hinter->flags & AH_HINTER_MONOCHROME ) - { - /* monochrome horizontal hinting: snap widths to integer pixels */ - /* with a different threshold */ - if ( dist < 64 ) - dist = 64; - else - dist = ( dist + 32 ) & ~63; - } - else - { - /* for horizontal anti-aliased hinting, we adopt a more subtle */ - /* approach: we strengthen small stems, round stems whose size */ - /* is between 1 and 2 pixels to an integer, otherwise nothing */ - if ( dist < 48 ) - dist = ( dist + 64 ) >> 1; - - else if ( dist < 128 ) - dist = ( dist + 22 ) & ~63; - else - /* XXX: round otherwise to prevent color fringes in LCD mode */ - dist = ( dist + 32 ) & ~63; - } - } - } - - if ( sign ) - dist = -dist; - - return dist; - } - -#endif /* !FT_CONFIG_CHESTER_SERIF */ - - - /* align one stem edge relative to the previous stem edge */ - static void - ah_align_linked_edge( AH_Hinter hinter, - AH_Edge base_edge, - AH_Edge stem_edge, - int vertical ) - { - FT_Pos dist = stem_edge->opos - base_edge->opos; - -#ifdef FT_CONFIG_CHESTER_SERIF - - FT_Pos fitted_width = ah_compute_stem_width( hinter, - vertical, - dist, - base_edge->flags, - stem_edge->flags ); - - - stem_edge->pos = base_edge->pos + fitted_width; - -#else - - stem_edge->pos = base_edge->pos + - ah_compute_stem_width( hinter, vertical, dist ); - -#endif - - } - - - static void - ah_align_serif_edge( AH_Hinter hinter, - AH_Edge base, - AH_Edge serif, - int vertical ) - { - FT_Pos dist; - FT_Pos sign = 1; - - FT_UNUSED( hinter ); - FT_UNUSED( vertical ); - - - dist = serif->opos - base->opos; - if ( dist < 0 ) - { - dist = -dist; - sign = -1; - } - -#if 0 - /* do not touch serifs widths! */ - if ( base->flags & AH_EDGE_DONE ) - { - if ( dist >= 64 ) - dist = ( dist + 8 ) & ~63; - - else if ( dist <= 32 && !vertical ) - dist = ( dist + 33 ) >> 1; - - else - dist = 0; - } -#endif - - serif->pos = base->pos + sign * dist; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** E D G E H I N T I N G ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( void ) - ah_hinter_hint_edges( AH_Hinter hinter ) - { - AH_Edge edges; - AH_Edge edge_limit; - AH_Outline outline = hinter->glyph; - FT_Int dimension; - FT_Int n_edges; - - - edges = outline->horz_edges; - edge_limit = edges + outline->num_hedges; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Edge edge; - AH_Edge anchor = 0; - int has_serifs = 0; - - - if ( !hinter->do_horz_hints && !dimension ) - goto Next_Dimension; - - if ( !hinter->do_vert_hints && dimension ) - goto Next_Dimension; - - /* we begin by aligning all stems relative to the blue zone */ - /* if needed -- that's only for horizontal edges */ - if ( dimension ) - { - for ( edge = edges; edge < edge_limit; edge++ ) - { - FT_Pos* blue; - AH_EdgeRec *edge1, *edge2; - - - if ( edge->flags & AH_EDGE_DONE ) - continue; - - blue = edge->blue_edge; - edge1 = 0; - edge2 = edge->link; - - if ( blue ) - { - edge1 = edge; - } - else if ( edge2 && edge2->blue_edge ) - { - blue = edge2->blue_edge; - edge1 = edge2; - edge2 = edge; - } - - if ( !edge1 ) - continue; - - edge1->pos = blue[0]; - edge1->flags |= AH_EDGE_DONE; - - if ( edge2 && !edge2->blue_edge ) - { - ah_align_linked_edge( hinter, edge1, edge2, dimension ); - edge2->flags |= AH_EDGE_DONE; - } - - if ( !anchor ) - anchor = edge; - } - } - - /* now we will align all stem edges, trying to maintain the */ - /* relative order of stems in the glyph */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - AH_EdgeRec* edge2; - - - if ( edge->flags & AH_EDGE_DONE ) - continue; - - /* skip all non-stem edges */ - edge2 = edge->link; - if ( !edge2 ) - { - has_serifs++; - continue; - } - - /* now align the stem */ - - /* this should not happen, but it's better to be safe */ - if ( edge2->blue_edge || edge2 < edge ) - { - ah_align_linked_edge( hinter, edge2, edge, dimension ); - edge->flags |= AH_EDGE_DONE; - continue; - } - - if ( !anchor ) - { - -#ifdef FT_CONFIG_CHESTER_STEM - - FT_Pos org_len, org_center, cur_len; - FT_Pos cur_pos1, error1, error2, u_off, d_off; - - - org_len = edge2->opos - edge->opos; - cur_len = ah_compute_stem_width( hinter, dimension, org_len, - edge->flags, edge2->flags ); - - if ( cur_len <= 64 ) - u_off = d_off = 32; - else - { - u_off = 38; - d_off = 26; - } - - if ( cur_len < 96 ) - { - org_center = edge->opos + ( org_len >> 1 ); - - cur_pos1 = FT_PIX_ROUND( org_center ); - - error1 = org_center - ( cur_pos1 - u_off ); - if ( error1 < 0 ) - error1 = -error1; - - error2 = org_center - ( cur_pos1 + d_off ); - if ( error2 < 0 ) - error2 = -error2; - - if ( error1 < error2 ) - cur_pos1 -= u_off; - else - cur_pos1 += d_off; - - edge->pos = cur_pos1 - cur_len / 2; - edge2->pos = cur_pos1 + cur_len / 2; - - } - else - edge->pos = FT_PIX_ROUND( edge->opos ); - - anchor = edge; - - edge->flags |= AH_EDGE_DONE; - - ah_align_linked_edge( hinter, edge, edge2, dimension ); - -#else /* !FT_CONFIG_CHESTER_STEM */ - - edge->pos = FT_PIX_ROUND( edge->opos ); - anchor = edge; - - edge->flags |= AH_EDGE_DONE; - - ah_align_linked_edge( hinter, edge, edge2, dimension ); - -#endif /* !FT_CONFIG_CHESTER_STEM */ - - } - else - { - FT_Pos org_pos, org_len, org_center, cur_len; - FT_Pos cur_pos1, cur_pos2, delta1, delta2; - - - org_pos = anchor->pos + ( edge->opos - anchor->opos ); - org_len = edge2->opos - edge->opos; - org_center = org_pos + ( org_len >> 1 ); - -#ifdef FT_CONFIG_CHESTER_SERIF - - cur_len = ah_compute_stem_width( hinter, dimension, org_len, - edge->flags, edge2->flags ); - - -#else /* !FT_CONFIG_CHESTER_SERIF */ - - cur_len = ah_compute_stem_width( hinter, dimension, org_len ); - -#endif /* !FT_CONFIG_CHESTER_SERIF */ - -#ifdef FT_CONFIG_CHESTER_STEM - - if ( cur_len < 96 ) - { - FT_Pos u_off, d_off; - - - cur_pos1 = FT_PIX_ROUND( org_center ); - - if (cur_len <= 64 ) - u_off = d_off = 32; - else - { - u_off = 38; - d_off = 26; - } - - delta1 = org_center - ( cur_pos1 - u_off ); - if ( delta1 < 0 ) - delta1 = -delta1; - - delta2 = org_center - ( cur_pos1 + d_off ); - if ( delta2 < 0 ) - delta2 = -delta2; - - if ( delta1 < delta2 ) - cur_pos1 -= u_off; - else - cur_pos1 += d_off; - - edge->pos = cur_pos1 - cur_len / 2; - edge2->pos = cur_pos1 + cur_len / 2; - } - else - { - org_pos = anchor->pos + ( edge->opos - anchor->opos ); - org_len = edge2->opos - edge->opos; - org_center = org_pos + ( org_len >> 1 ); - - cur_len = ah_compute_stem_width( hinter, dimension, org_len, - edge->flags, edge2->flags ); - - cur_pos1 = FT_PIX_ROUND( org_pos ); - delta1 = ( cur_pos1 + ( cur_len >> 1 ) - org_center ); - if ( delta1 < 0 ) - delta1 = -delta1; - - cur_pos2 = FT_PIX_ROUND( org_pos + org_len ) - cur_len; - delta2 = ( cur_pos2 + ( cur_len >> 1 ) - org_center ); - if ( delta2 < 0 ) - delta2 = -delta2; - - edge->pos = ( delta1 < delta2 ) ? cur_pos1 : cur_pos2; - edge2->pos = edge->pos + cur_len; - } - -#else /* !FT_CONFIG_CHESTER_STEM */ - - cur_pos1 = FT_PIX_ROUND( org_pos ); - delta1 = ( cur_pos1 + ( cur_len >> 1 ) - org_center ); - if ( delta1 < 0 ) - delta1 = -delta1; - - cur_pos2 = FT_PIX_ROUND( org_pos + org_len ) - cur_len; - delta2 = ( cur_pos2 + ( cur_len >> 1 ) - org_center ); - if ( delta2 < 0 ) - delta2 = -delta2; - - edge->pos = ( delta1 <= delta2 ) ? cur_pos1 : cur_pos2; - edge2->pos = edge->pos + cur_len; - -#endif /* !FT_CONFIG_CHESTER_STEM */ - - edge->flags |= AH_EDGE_DONE; - edge2->flags |= AH_EDGE_DONE; - - if ( edge > edges && edge->pos < edge[-1].pos ) - edge->pos = edge[-1].pos; - } - } - - /* make sure that lowercase m's maintain their symmetry */ - - /* In general, lowercase m's have six vertical edges if they are sans */ - /* serif, or twelve if they are avec serif. This implementation is */ - /* based on that assumption, and seems to work very well with most */ - /* faces. However, if for a certain face this assumption is not */ - /* true, the m is just rendered like before. In addition, any stem */ - /* correction will only be applied to symmetrical glyphs (even if the */ - /* glyph is not an m), so the potential for unwanted distortion is */ - /* relatively low. */ - - /* We don't handle horizontal edges since we can't easily assure that */ - /* the third (lowest) stem aligns with the base line; it might end up */ - /* one pixel higher or lower. */ - - n_edges = (FT_Int)( edge_limit - edges ); - if ( !dimension && ( n_edges == 6 || n_edges == 12 ) ) - { - AH_EdgeRec *edge1, *edge2, *edge3; - FT_Pos dist1, dist2, span, delta; - - - if ( n_edges == 6 ) - { - edge1 = edges; - edge2 = edges + 2; - edge3 = edges + 4; - } - else - { - edge1 = edges + 1; - edge2 = edges + 5; - edge3 = edges + 9; - } - - dist1 = edge2->opos - edge1->opos; - dist2 = edge3->opos - edge2->opos; - - span = dist1 - dist2; - if ( span < 0 ) - span = -span; - - if ( span < 8 ) - { - delta = edge3->pos - ( 2 * edge2->pos - edge1->pos ); - edge3->pos -= delta; - if ( edge3->link ) - edge3->link->pos -= delta; - - /* move the serifs along with the stem */ - if ( n_edges == 12 ) - { - ( edges + 8 )->pos -= delta; - ( edges + 11 )->pos -= delta; - } - - edge3->flags |= AH_EDGE_DONE; - if ( edge3->link ) - edge3->link->flags |= AH_EDGE_DONE; - } - } - - if ( !has_serifs ) - goto Next_Dimension; - - /* now hint the remaining edges (serifs and single) in order */ - /* to complete our processing */ - for ( edge = edges; edge < edge_limit; edge++ ) - { - if ( edge->flags & AH_EDGE_DONE ) - continue; - - if ( edge->serif ) - ah_align_serif_edge( hinter, edge->serif, edge, dimension ); - else if ( !anchor ) - { - edge->pos = FT_PIX_ROUND( edge->opos ); - anchor = edge; - } - else - edge->pos = anchor->pos + - FT_PIX_ROUND( edge->opos - anchor->opos ); - - edge->flags |= AH_EDGE_DONE; - - if ( edge > edges && edge->pos < edge[-1].pos ) - edge->pos = edge[-1].pos; - - if ( edge + 1 < edge_limit && - edge[1].flags & AH_EDGE_DONE && - edge->pos > edge[1].pos ) - edge->pos = edge[1].pos; - } - - Next_Dimension: - edges = outline->vert_edges; - edge_limit = edges + outline->num_vedges; - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** P O I N T H I N T I N G ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - static void - ah_hinter_align_edge_points( AH_Hinter hinter ) - { - AH_Outline outline = hinter->glyph; - AH_Edge edges; - AH_Edge edge_limit; - FT_Int dimension; - - - edges = outline->horz_edges; - edge_limit = edges + outline->num_hedges; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Edge edge; - - - edge = edges; - for ( ; edge < edge_limit; edge++ ) - { - /* move the points of each segment */ - /* in each edge to the edge's position */ - AH_Segment seg = edge->first; - - - do - { - AH_Point point = seg->first; - - - for (;;) - { - if ( dimension ) - { - point->y = edge->pos; - point->flags |= AH_FLAG_TOUCH_Y; - } - else - { - point->x = edge->pos; - point->flags |= AH_FLAG_TOUCH_X; - } - - if ( point == seg->last ) - break; - - point = point->next; - } - - seg = seg->edge_next; - - } while ( seg != edge->first ); - } - - edges = outline->vert_edges; - edge_limit = edges + outline->num_vedges; - } - } - - - /* hint the strong points -- this is equivalent to the TrueType `IP' */ - /* hinting instruction */ - static void - ah_hinter_align_strong_points( AH_Hinter hinter ) - { - AH_Outline outline = hinter->glyph; - FT_Int dimension; - AH_Edge edges; - AH_Edge edge_limit; - AH_Point points; - AH_Point point_limit; - AH_Flags touch_flag; - - - points = outline->points; - point_limit = points + outline->num_points; - - edges = outline->horz_edges; - edge_limit = edges + outline->num_hedges; - touch_flag = AH_FLAG_TOUCH_Y; - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Point point; - AH_Edge edge; - - - if ( edges < edge_limit ) - for ( point = points; point < point_limit; point++ ) - { - FT_Pos u, ou, fu; /* point position */ - FT_Pos delta; - - - if ( point->flags & touch_flag ) - continue; - -#ifndef AH_OPTION_NO_WEAK_INTERPOLATION - /* if this point is candidate to weak interpolation, we will */ - /* interpolate it after all strong points have been processed */ - if ( ( point->flags & AH_FLAG_WEAK_INTERPOLATION ) && - !( point->flags & AH_FLAG_INFLECTION ) ) - continue; -#endif - - if ( dimension ) - { - u = point->fy; - ou = point->oy; - } - else - { - u = point->fx; - ou = point->ox; - } - - fu = u; - - /* is the point before the first edge? */ - edge = edges; - delta = edge->fpos - u; - if ( delta >= 0 ) - { - u = edge->pos - ( edge->opos - ou ); - goto Store_Point; - } - - /* is the point after the last edge? */ - edge = edge_limit - 1; - delta = u - edge->fpos; - if ( delta >= 0 ) - { - u = edge->pos + ( ou - edge->opos ); - goto Store_Point; - } - -#if 1 - { - FT_UInt min, max, mid; - FT_Pos fpos; - - - /* find enclosing edges */ - min = 0; - max = (FT_UInt)( edge_limit - edges ); - - while ( min < max ) - { - mid = ( max + min ) >> 1; - edge = edges + mid; - fpos = edge->fpos; - - if ( u < fpos ) - max = mid; - else if ( u > fpos ) - min = mid + 1; - else - { - /* we are on the edge */ - u = edge->pos; - goto Store_Point; - } - } - - { - AH_Edge before = edges + min - 1; - AH_Edge after = edges + min + 0; - - - /* assert( before && after && before != after ) */ - if ( before->scale == 0 ) - before->scale = FT_DivFix( after->pos - before->pos, - after->fpos - before->fpos ); - - u = before->pos + FT_MulFix( fu - before->fpos, - before->scale ); - } - } - -#else /* !0 */ - - /* otherwise, interpolate the point in between */ - { - AH_Edge before = 0; - AH_Edge after = 0; - - - for ( edge = edges; edge < edge_limit; edge++ ) - { - if ( u == edge->fpos ) - { - u = edge->pos; - goto Store_Point; - } - if ( u < edge->fpos ) - break; - before = edge; - } - - for ( edge = edge_limit - 1; edge >= edges; edge-- ) - { - if ( u == edge->fpos ) - { - u = edge->pos; - goto Store_Point; - } - if ( u > edge->fpos ) - break; - after = edge; - } - - if ( before->scale == 0 ) - before->scale = FT_DivFix( after->pos - before->pos, - after->fpos - before->fpos ); - - u = before->pos + FT_MulFix( fu - before->fpos, - before->scale ); - } - -#endif /* !0 */ - - Store_Point: - - /* save the point position */ - if ( dimension ) - point->y = u; - else - point->x = u; - - point->flags |= touch_flag; - } - - edges = outline->vert_edges; - edge_limit = edges + outline->num_vedges; - touch_flag = AH_FLAG_TOUCH_X; - } - } - - -#ifndef AH_OPTION_NO_WEAK_INTERPOLATION - - static void - ah_iup_shift( AH_Point p1, - AH_Point p2, - AH_Point ref ) - { - AH_Point p; - FT_Pos delta = ref->u - ref->v; - - - for ( p = p1; p < ref; p++ ) - p->u = p->v + delta; - - for ( p = ref + 1; p <= p2; p++ ) - p->u = p->v + delta; - } - - - static void - ah_iup_interp( AH_Point p1, - AH_Point p2, - AH_Point ref1, - AH_Point ref2 ) - { - AH_Point p; - FT_Pos u; - FT_Pos v1 = ref1->v; - FT_Pos v2 = ref2->v; - FT_Pos d1 = ref1->u - v1; - FT_Pos d2 = ref2->u - v2; - - - if ( p1 > p2 ) - return; - - if ( v1 == v2 ) - { - for ( p = p1; p <= p2; p++ ) - { - u = p->v; - - if ( u <= v1 ) - u += d1; - else - u += d2; - - p->u = u; - } - return; - } - - if ( v1 < v2 ) - { - for ( p = p1; p <= p2; p++ ) - { - u = p->v; - - if ( u <= v1 ) - u += d1; - else if ( u >= v2 ) - u += d2; - else - u = ref1->u + FT_MulDiv( u - v1, ref2->u - ref1->u, v2 - v1 ); - - p->u = u; - } - } - else - { - for ( p = p1; p <= p2; p++ ) - { - u = p->v; - - if ( u <= v2 ) - u += d2; - else if ( u >= v1 ) - u += d1; - else - u = ref1->u + FT_MulDiv( u - v1, ref2->u - ref1->u, v2 - v1 ); - - p->u = u; - } - } - } - - - /* interpolate weak points -- this is equivalent to the TrueType `IUP' */ - /* hinting instruction */ - static void - ah_hinter_align_weak_points( AH_Hinter hinter ) - { - AH_Outline outline = hinter->glyph; - FT_Int dimension; - AH_Point points; - AH_Point point_limit; - AH_Point* contour_limit; - AH_Flags touch_flag; - - - points = outline->points; - point_limit = points + outline->num_points; - - /* PASS 1: Move segment points to edge positions */ - - touch_flag = AH_FLAG_TOUCH_Y; - - contour_limit = outline->contours + outline->num_contours; - - ah_setup_uv( outline, AH_UV_OY ); - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - AH_Point point; - AH_Point end_point; - AH_Point first_point; - AH_Point* contour; - - - point = points; - contour = outline->contours; - - for ( ; contour < contour_limit; contour++ ) - { - point = *contour; - end_point = point->prev; - first_point = point; - - while ( point <= end_point && !( point->flags & touch_flag ) ) - point++; - - if ( point <= end_point ) - { - AH_Point first_touched = point; - AH_Point cur_touched = point; - - - point++; - while ( point <= end_point ) - { - if ( point->flags & touch_flag ) - { - /* we found two successive touched points; we interpolate */ - /* all contour points between them */ - ah_iup_interp( cur_touched + 1, point - 1, - cur_touched, point ); - cur_touched = point; - } - point++; - } - - if ( cur_touched == first_touched ) - { - /* this is a special case: only one point was touched in the */ - /* contour; we thus simply shift the whole contour */ - ah_iup_shift( first_point, end_point, cur_touched ); - } - else - { - /* now interpolate after the last touched point to the end */ - /* of the contour */ - ah_iup_interp( cur_touched + 1, end_point, - cur_touched, first_touched ); - - /* if the first contour point isn't touched, interpolate */ - /* from the contour start to the first touched point */ - if ( first_touched > points ) - ah_iup_interp( first_point, first_touched - 1, - cur_touched, first_touched ); - } - } - } - - /* now save the interpolated values back to x/y */ - if ( dimension ) - { - for ( point = points; point < point_limit; point++ ) - point->y = point->u; - - touch_flag = AH_FLAG_TOUCH_X; - ah_setup_uv( outline, AH_UV_OX ); - } - else - { - for ( point = points; point < point_limit; point++ ) - point->x = point->u; - - break; /* exit loop */ - } - } - } - -#endif /* !AH_OPTION_NO_WEAK_INTERPOLATION */ - - - FT_LOCAL_DEF( void ) - ah_hinter_align_points( AH_Hinter hinter ) - { - ah_hinter_align_edge_points( hinter ); - -#ifndef AH_OPTION_NO_STRONG_INTERPOLATION - ah_hinter_align_strong_points( hinter ); -#endif - -#ifndef AH_OPTION_NO_WEAK_INTERPOLATION - ah_hinter_align_weak_points( hinter ); -#endif - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** H I N T E R O B J E C T M E T H O D S ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /* scale and fit the global metrics */ - static void - ah_hinter_scale_globals( AH_Hinter hinter, - FT_Fixed x_scale, - FT_Fixed y_scale ) - { - FT_Int n; - AH_Face_Globals globals = hinter->globals; - AH_Globals design = &globals->design; - AH_Globals scaled = &globals->scaled; - - - /* copy content */ - *scaled = *design; - - /* scale the standard widths & heights */ - for ( n = 0; n < design->num_widths; n++ ) - scaled->widths[n] = FT_MulFix( design->widths[n], x_scale ); - - for ( n = 0; n < design->num_heights; n++ ) - scaled->heights[n] = FT_MulFix( design->heights[n], y_scale ); - - scaled->stds[0] = ( design->num_widths > 0 ) ? scaled->widths[0] : 32000; - scaled->stds[1] = ( design->num_heights > 0 ) ? scaled->heights[0] : 32000; - - /* scale the blue zones */ - for ( n = 0; n < AH_BLUE_MAX; n++ ) - { - FT_Pos delta, delta2; - - - delta = design->blue_shoots[n] - design->blue_refs[n]; - delta2 = delta; - if ( delta < 0 ) - delta2 = -delta2; - delta2 = FT_MulFix( delta2, y_scale ); - - if ( delta2 < 32 ) - delta2 = 0; - else if ( delta2 < 64 ) - delta2 = 32 + ( ( ( delta2 - 32 ) + 16 ) & ~31 ); - else - delta2 = FT_PIX_ROUND( delta2 ); - - if ( delta < 0 ) - delta2 = -delta2; - - scaled->blue_refs[n] = - FT_PIX_ROUND( FT_MulFix( design->blue_refs[n], y_scale ) ); - - scaled->blue_shoots[n] = scaled->blue_refs[n] + delta2; - } - - globals->x_scale = x_scale; - globals->y_scale = y_scale; - } - - - static void - ah_hinter_align( AH_Hinter hinter ) - { - ah_hinter_align_edge_points( hinter ); - ah_hinter_align_points( hinter ); - } - - - /* finalize a hinter object */ - FT_LOCAL_DEF( void ) - ah_hinter_done( AH_Hinter hinter ) - { - if ( hinter ) - { - FT_Memory memory = hinter->memory; - - - ah_loader_done( hinter->loader ); - ah_outline_done( hinter->glyph ); - - /* note: the `globals' pointer is _not_ owned by the hinter */ - /* but by the current face object; we don't need to */ - /* release it */ - hinter->globals = 0; - hinter->face = 0; - - FT_FREE( hinter ); - } - } - - - /* create a new empty hinter object */ - FT_LOCAL_DEF( FT_Error ) - ah_hinter_new( FT_Library library, - AH_Hinter *ahinter ) - { - AH_Hinter hinter = 0; - FT_Memory memory = library->memory; - FT_Error error; - - - *ahinter = 0; - - /* allocate object */ - if ( FT_NEW( hinter ) ) - goto Exit; - - hinter->memory = memory; - hinter->flags = 0; - - /* allocate outline and loader */ - error = ah_outline_new( memory, &hinter->glyph ) || - ah_loader_new ( memory, &hinter->loader ) || - ah_loader_create_extra( hinter->loader ); - if ( error ) - goto Exit; - - *ahinter = hinter; - - Exit: - if ( error ) - ah_hinter_done( hinter ); - - return error; - } - - - /* create a face's autohint globals */ - FT_LOCAL_DEF( FT_Error ) - ah_hinter_new_face_globals( AH_Hinter hinter, - FT_Face face, - AH_Globals globals ) - { - FT_Error error; - FT_Memory memory = hinter->memory; - AH_Face_Globals face_globals; - - - if ( FT_NEW( face_globals ) ) - goto Exit; - - hinter->face = face; - hinter->globals = face_globals; - - if ( globals ) - face_globals->design = *globals; - else - ah_hinter_compute_globals( hinter ); - - face->autohint.data = face_globals; - face->autohint.finalizer = (FT_Generic_Finalizer) - ah_hinter_done_face_globals; - face_globals->face = face; - - Exit: - return error; - } - - - /* discard a face's autohint globals */ - FT_LOCAL_DEF( void ) - ah_hinter_done_face_globals( AH_Face_Globals globals ) - { - FT_Face face = globals->face; - FT_Memory memory = face->memory; - - - FT_FREE( globals ); - } - - - static FT_Error - ah_hinter_load( AH_Hinter hinter, - FT_UInt glyph_index, - FT_Int32 load_flags, - FT_UInt depth ) - { - FT_Face face = hinter->face; - FT_GlyphSlot slot = face->glyph; - FT_Slot_Internal internal = slot->internal; - FT_Fixed x_scale = hinter->globals->x_scale; - FT_Fixed y_scale = hinter->globals->y_scale; - FT_Error error; - AH_Outline outline = hinter->glyph; - AH_Loader gloader = hinter->loader; - - - /* load the glyph */ - error = FT_Load_Glyph( face, glyph_index, load_flags ); - if ( error ) - goto Exit; - - /* Set `hinter->transformed' after loading with FT_LOAD_NO_RECURSE. */ - hinter->transformed = internal->glyph_transformed; - - if ( hinter->transformed ) - { - FT_Matrix imatrix; - - - imatrix = internal->glyph_matrix; - hinter->trans_delta = internal->glyph_delta; - hinter->trans_matrix = imatrix; - - FT_Matrix_Invert( &imatrix ); - FT_Vector_Transform( &hinter->trans_delta, &imatrix ); - } - - /* set linear horizontal metrics */ - slot->linearHoriAdvance = slot->metrics.horiAdvance; - slot->linearVertAdvance = slot->metrics.vertAdvance; - - switch ( slot->format ) - { - case FT_GLYPH_FORMAT_OUTLINE: - - /* translate glyph outline if we need to */ - if ( hinter->transformed ) - { - FT_UInt n = slot->outline.n_points; - FT_Vector* point = slot->outline.points; - - - for ( ; n > 0; point++, n-- ) - { - point->x += hinter->trans_delta.x; - point->y += hinter->trans_delta.y; - } - } - - /* copy the outline points in the loader's current */ - /* extra points which is used to keep original glyph coordinates */ - error = ah_loader_check_points( gloader, slot->outline.n_points + 4, - slot->outline.n_contours ); - if ( error ) - goto Exit; - - FT_ARRAY_COPY( gloader->current.extra_points, slot->outline.points, - slot->outline.n_points ); - - FT_ARRAY_COPY( gloader->current.outline.contours, slot->outline.contours, - slot->outline.n_contours ); - - FT_ARRAY_COPY( gloader->current.outline.tags, slot->outline.tags, - slot->outline.n_points ); - - gloader->current.outline.n_points = slot->outline.n_points; - gloader->current.outline.n_contours = slot->outline.n_contours; - - /* compute original horizontal phantom points, ignoring vertical ones */ - hinter->pp1.x = 0; - hinter->pp1.y = 0; - hinter->pp2.x = FT_MulFix( slot->metrics.horiAdvance, x_scale ); - hinter->pp2.y = 0; - - /* be sure to check for spacing glyphs */ - if ( slot->outline.n_points == 0 ) - goto Hint_Metrics; - - /* now load the slot image into the auto-outline and run the */ - /* automatic hinting process */ - error = ah_outline_load( outline, x_scale, y_scale, face ); - if ( error ) - goto Exit; - - /* perform feature detection */ - ah_outline_detect_features( outline ); - - if ( hinter->do_vert_hints ) - { - ah_outline_compute_blue_edges( outline, hinter->globals ); - ah_outline_scale_blue_edges( outline, hinter->globals ); - } - - /* perform alignment control */ - ah_hinter_hint_edges( hinter ); - ah_hinter_align( hinter ); - - /* now save the current outline into the loader's current table */ - ah_outline_save( outline, gloader ); - - /* we now need to hint the metrics according to the change in */ - /* width/positioning that occured during the hinting process */ - if ( outline->num_vedges > 0 ) - { - FT_Pos old_advance, old_rsb, old_lsb, new_lsb, pp1x_uh, pp2x_uh; - AH_Edge edge1 = outline->vert_edges; /* leftmost edge */ - AH_Edge edge2 = edge1 + - outline->num_vedges - 1; /* rightmost edge */ - - - old_advance = hinter->pp2.x; - old_rsb = old_advance - edge2->opos; - old_lsb = edge1->opos; - new_lsb = edge1->pos; - - /* remember unhinted values to later account for rounding errors */ - - pp1x_uh = new_lsb - old_lsb; - pp2x_uh = edge2->pos + old_rsb; - - /* prefer too much space over too little space for very small sizes */ - - if ( old_lsb < 24 ) - pp1x_uh -= 5; - - if ( old_rsb < 24 ) - pp2x_uh += 5; - - hinter->pp1.x = FT_PIX_ROUND( pp1x_uh ); - hinter->pp2.x = FT_PIX_ROUND( pp2x_uh ); - - slot->lsb_delta = hinter->pp1.x - pp1x_uh; - slot->rsb_delta = hinter->pp2.x - pp2x_uh; - -#if 0 - /* try to fix certain bad advance computations */ - if ( hinter->pp2.x + hinter->pp1.x == edge2->pos && old_rsb > 4 ) - hinter->pp2.x += 64; -#endif - } - - else - { - hinter->pp1.x = ( hinter->pp1.x + 32 ) & -64; - hinter->pp2.x = ( hinter->pp2.x + 32 ) & -64; - } - - /* good, we simply add the glyph to our loader's base */ - ah_loader_add( gloader ); - break; - - case FT_GLYPH_FORMAT_COMPOSITE: - { - FT_UInt nn, num_subglyphs = slot->num_subglyphs; - FT_UInt num_base_subgs, start_point; - FT_SubGlyph subglyph; - - - start_point = gloader->base.outline.n_points; - - /* first of all, copy the subglyph descriptors in the glyph loader */ - error = ah_loader_check_subglyphs( gloader, num_subglyphs ); - if ( error ) - goto Exit; - - FT_ARRAY_COPY( gloader->current.subglyphs, slot->subglyphs, - num_subglyphs ); - - gloader->current.num_subglyphs = num_subglyphs; - num_base_subgs = gloader->base.num_subglyphs; - - /* now, read each subglyph independently */ - for ( nn = 0; nn < num_subglyphs; nn++ ) - { - FT_Vector pp1, pp2; - FT_Pos x, y; - FT_UInt num_points, num_new_points, num_base_points; - - - /* gloader.current.subglyphs can change during glyph loading due */ - /* to re-allocation -- we must recompute the current subglyph on */ - /* each iteration */ - subglyph = gloader->base.subglyphs + num_base_subgs + nn; - - pp1 = hinter->pp1; - pp2 = hinter->pp2; - - num_base_points = gloader->base.outline.n_points; - - error = ah_hinter_load( hinter, subglyph->index, - load_flags, depth + 1 ); - if ( error ) - goto Exit; - - /* recompute subglyph pointer */ - subglyph = gloader->base.subglyphs + num_base_subgs + nn; - - if ( subglyph->flags & FT_SUBGLYPH_FLAG_USE_MY_METRICS ) - { - pp1 = hinter->pp1; - pp2 = hinter->pp2; - } - else - { - hinter->pp1 = pp1; - hinter->pp2 = pp2; - } - - num_points = gloader->base.outline.n_points; - num_new_points = num_points - num_base_points; - - /* now perform the transform required for this subglyph */ - - if ( subglyph->flags & ( FT_SUBGLYPH_FLAG_SCALE | - FT_SUBGLYPH_FLAG_XY_SCALE | - FT_SUBGLYPH_FLAG_2X2 ) ) - { - FT_Vector* cur = gloader->base.outline.points + - num_base_points; - FT_Vector* org = gloader->base.extra_points + - num_base_points; - FT_Vector* limit = cur + num_new_points; - - - for ( ; cur < limit; cur++, org++ ) - { - FT_Vector_Transform( cur, &subglyph->transform ); - FT_Vector_Transform( org, &subglyph->transform ); - } - } - - /* apply offset */ - - if ( !( subglyph->flags & FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES ) ) - { - FT_Int k = subglyph->arg1; - FT_UInt l = subglyph->arg2; - FT_Vector* p1; - FT_Vector* p2; - - - if ( start_point + k >= num_base_points || - l >= (FT_UInt)num_new_points ) - { - error = AH_Err_Invalid_Composite; - goto Exit; - } - - l += num_base_points; - - /* for now, only use the current point coordinates; */ - /* we may consider another approach in the near future */ - p1 = gloader->base.outline.points + start_point + k; - p2 = gloader->base.outline.points + start_point + l; - - x = p1->x - p2->x; - y = p1->y - p2->y; - } - else - { - x = FT_MulFix( subglyph->arg1, x_scale ); - y = FT_MulFix( subglyph->arg2, y_scale ); - - x = FT_PIX_ROUND(x); - y = FT_PIX_ROUND(y); - } - - { - FT_Outline dummy = gloader->base.outline; - - - dummy.points += num_base_points; - dummy.n_points = (short)num_new_points; - - FT_Outline_Translate( &dummy, x, y ); - } - } - } - break; - - default: - /* we don't support other formats (yet?) */ - error = AH_Err_Unimplemented_Feature; - } - - Hint_Metrics: - if ( depth == 0 ) - { - FT_BBox bbox; - - - /* transform the hinted outline if needed */ - if ( hinter->transformed ) - FT_Outline_Transform( &gloader->base.outline, &hinter->trans_matrix ); - - /* we must translate our final outline by -pp1.x and compute */ - /* the new metrics */ - if ( hinter->pp1.x ) - FT_Outline_Translate( &gloader->base.outline, -hinter->pp1.x, 0 ); - - FT_Outline_Get_CBox( &gloader->base.outline, &bbox ); - bbox.xMin = FT_PIX_FLOOR( bbox.xMin ); - bbox.yMin = FT_PIX_FLOOR( bbox.yMin ); - bbox.xMax = FT_PIX_CEIL( bbox.xMax ); - bbox.yMax = FT_PIX_CEIL( bbox.yMax ); - - slot->metrics.width = bbox.xMax - bbox.xMin; - slot->metrics.height = bbox.yMax - bbox.yMin; - slot->metrics.horiBearingX = bbox.xMin; - slot->metrics.horiBearingY = bbox.yMax; - - /* for mono-width fonts (like Andale, Courier, etc.) we need */ - /* to keep the original rounded advance width */ - if ( !FT_IS_FIXED_WIDTH( slot->face ) ) - slot->metrics.horiAdvance = hinter->pp2.x - hinter->pp1.x; - else - slot->metrics.horiAdvance = FT_MulFix( slot->metrics.horiAdvance, - x_scale ); - - slot->metrics.horiAdvance = FT_PIX_ROUND( slot->metrics.horiAdvance ); - - /* now copy outline into glyph slot */ - ah_loader_rewind( slot->internal->loader ); - error = ah_loader_copy_points( slot->internal->loader, gloader ); - if ( error ) - goto Exit; - - slot->outline = slot->internal->loader->base.outline; - slot->format = FT_GLYPH_FORMAT_OUTLINE; - } - -#ifdef DEBUG_HINTER - ah_debug_hinter = hinter; -#endif - - Exit: - return error; - } - - - /* load and hint a given glyph */ - FT_LOCAL_DEF( FT_Error ) - ah_hinter_load_glyph( AH_Hinter hinter, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - FT_Face face = slot->face; - FT_Error error; - FT_Fixed x_scale = size->metrics.x_scale; - FT_Fixed y_scale = size->metrics.y_scale; - AH_Face_Globals face_globals = FACE_GLOBALS( face ); - FT_Render_Mode hint_mode = FT_LOAD_TARGET_MODE( load_flags ); - - - /* first of all, we need to check that we're using the correct face and */ - /* global hints to load the glyph */ - if ( hinter->face != face || hinter->globals != face_globals ) - { - hinter->face = face; - if ( !face_globals ) - { - error = ah_hinter_new_face_globals( hinter, face, 0 ); - if ( error ) - goto Exit; - - } - hinter->globals = FACE_GLOBALS( face ); - face_globals = FACE_GLOBALS( face ); - - } - -#ifdef FT_CONFIG_CHESTER_BLUE_SCALE - - /* try to optimize the y_scale so that the top of non-capital letters - * is aligned on a pixel boundary whenever possible - */ - { - AH_Globals design = &face_globals->design; - FT_Pos shoot = design->blue_shoots[AH_BLUE_SMALL_TOP]; - - - /* the value of 'shoot' will be -1000 if the font doesn't have */ - /* small latin letters; we simply check the sign here... */ - if ( shoot > 0 ) - { - FT_Pos scaled = FT_MulFix( shoot, y_scale ); - FT_Pos fitted = FT_PIX_ROUND( scaled ); - - - if ( scaled != fitted ) - { - /* adjust y_scale - */ - y_scale = FT_MulDiv( y_scale, fitted, scaled ); - - /* adust x_scale - */ - if ( fitted < scaled ) - x_scale -= x_scale / 50; /* x_scale*0.98 with integers */ - } - } - } - -#endif /* FT_CONFIG_CHESTER_BLUE_SCALE */ - - /* now, we must check the current character pixel size to see if we */ - /* need to rescale the global metrics */ - if ( face_globals->x_scale != x_scale || - face_globals->y_scale != y_scale ) - ah_hinter_scale_globals( hinter, x_scale, y_scale ); - - ah_loader_rewind( hinter->loader ); - - /* reset hinting flags according to load flags and current render target */ - hinter->do_horz_hints = FT_BOOL( !(load_flags & FT_LOAD_NO_AUTOHINT) ); - hinter->do_vert_hints = FT_BOOL( !(load_flags & FT_LOAD_NO_AUTOHINT) ); - -#ifdef DEBUG_HINTER - hinter->do_horz_hints = !ah_debug_disable_vert; /* not a bug, the meaning */ - hinter->do_vert_hints = !ah_debug_disable_horz; /* of h/v is inverted! */ -#endif - - /* we snap the width of vertical stems for the monochrome and */ - /* horizontal LCD rendering targets only. Corresponds to X snapping. */ - hinter->do_horz_snapping = FT_BOOL( hint_mode == FT_RENDER_MODE_MONO || - hint_mode == FT_RENDER_MODE_LCD ); - - /* we snap the width of horizontal stems for the monochrome and */ - /* vertical LCD rendering targets only. Corresponds to Y snapping. */ - hinter->do_vert_snapping = FT_BOOL( hint_mode == FT_RENDER_MODE_MONO || - hint_mode == FT_RENDER_MODE_LCD_V ); - - hinter->do_stem_adjust = FT_BOOL( hint_mode != FT_RENDER_MODE_LIGHT ); - - load_flags |= FT_LOAD_NO_SCALE - | FT_LOAD_IGNORE_TRANSFORM; - load_flags &= ~FT_LOAD_RENDER; - - error = ah_hinter_load( hinter, glyph_index, load_flags, 0 ); - - Exit: - return error; - } - - - /* retrieve a face's autohint globals for client applications */ - FT_LOCAL_DEF( void ) - ah_hinter_get_global_hints( AH_Hinter hinter, - FT_Face face, - void** global_hints, - long* global_len ) - { - AH_Globals globals = 0; - FT_Memory memory = hinter->memory; - FT_Error error; - - - /* allocate new master globals */ - if ( FT_NEW( globals ) ) - goto Fail; - - /* compute face globals if needed */ - if ( !FACE_GLOBALS( face ) ) - { - error = ah_hinter_new_face_globals( hinter, face, 0 ); - if ( error ) - goto Fail; - } - - *globals = FACE_GLOBALS( face )->design; - *global_hints = globals; - *global_len = sizeof( *globals ); - - return; - - Fail: - FT_FREE( globals ); - - *global_hints = 0; - *global_len = 0; - } - - - FT_LOCAL_DEF( void ) - ah_hinter_done_global_hints( AH_Hinter hinter, - void* global_hints ) - { - FT_Memory memory = hinter->memory; - - - FT_FREE( global_hints ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahhint.h b/nx-X11/extras/freetype2/src/autohint/ahhint.h deleted file mode 100644 index 2c352d0c9..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahhint.h +++ /dev/null @@ -1,75 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahhint.h */ -/* */ -/* Glyph hinter (declaration). */ -/* */ -/* Copyright 2000-2001, 2002 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#ifndef __AHHINT_H__ -#define __AHHINT_H__ - - -#include <ft2build.h> -#include "ahglobal.h" - - -FT_BEGIN_HEADER - - -#define AH_HINT_DEFAULT 0 -#define AH_HINT_NO_ALIGNMENT 1 -#define AH_HINT_NO_HORZ_EDGES 0x200000L /* temporary hack */ -#define AH_HINT_NO_VERT_EDGES 0x400000L /* temporary hack */ - - - /* create a new empty hinter object */ - FT_LOCAL( FT_Error ) - ah_hinter_new( FT_Library library, - AH_Hinter* ahinter ); - - /* Load a hinted glyph in the hinter */ - FT_LOCAL( FT_Error ) - ah_hinter_load_glyph( AH_Hinter hinter, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - /* finalize a hinter object */ - FT_LOCAL( void ) - ah_hinter_done( AH_Hinter hinter ); - - FT_LOCAL( void ) - ah_hinter_done_face_globals( AH_Face_Globals globals ); - - FT_LOCAL( void ) - ah_hinter_get_global_hints( AH_Hinter hinter, - FT_Face face, - void** global_hints, - long* global_len ); - - FT_LOCAL( void ) - ah_hinter_done_global_hints( AH_Hinter hinter, - void* global_hints ); - - -FT_END_HEADER - -#endif /* __AHHINT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahloader.h b/nx-X11/extras/freetype2/src/autohint/ahloader.h deleted file mode 100644 index c8e42ef22..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahloader.h +++ /dev/null @@ -1,61 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahloader.h */ -/* */ -/* Glyph loader for the auto-hinting module (declaration only). */ -/* */ -/* Copyright 2000-2001, 2002 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This defines the AH_GlyphLoader type; it is simply a typedef to */ - /* FT_GlyphLoader. */ - /* */ - /*************************************************************************/ - - -#ifndef __AHLOADER_H__ -#define __AHLOADER_H__ - - -#include <ft2build.h> - - -FT_BEGIN_HEADER - -#include FT_INTERNAL_GLYPH_LOADER_H - - #define AH_Load FT_GlyphLoad - #define AH_Loader FT_GlyphLoader - - #define ah_loader_new FT_GlyphLoader_New - #define ah_loader_done FT_GlyphLoader_Done - #define ah_loader_reset FT_GlyphLoader_Reset - #define ah_loader_rewind FT_GlyphLoader_Rewind - #define ah_loader_create_extra FT_GlyphLoader_CreateExtra - #define ah_loader_check_points FT_GlyphLoader_CheckPoints - #define ah_loader_check_subglyphs FT_GlyphLoader_CheckSubGlyphs - #define ah_loader_prepare FT_GlyphLoader_Prepare - #define ah_loader_add FT_GlyphLoader_Add - #define ah_loader_copy_points FT_GlyphLoader_CopyPoints - - -FT_END_HEADER - -#endif /* __AHLOADER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahmodule.c b/nx-X11/extras/freetype2/src/autohint/ahmodule.c deleted file mode 100644 index 03d067b87..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahmodule.c +++ /dev/null @@ -1,143 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahmodule.c */ -/* */ -/* Auto-hinting module implementation (declaration). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_MODULE_H -#include "ahhint.h" - - -#ifdef DEBUG_HINTER - AH_Hinter ah_debug_hinter = NULL; - FT_Bool ah_debug_disable_horz = 0; - FT_Bool ah_debug_disable_vert = 0; -#endif - - typedef struct FT_AutoHinterRec_ - { - FT_ModuleRec root; - AH_Hinter hinter; - - } FT_AutoHinterRec; - - - FT_CALLBACK_DEF( FT_Error ) - ft_autohinter_init( FT_Module module ) /* FT_AutoHinter */ - { - FT_AutoHinter autohinter = (FT_AutoHinter)module; - FT_Error error; - - - error = ah_hinter_new( module->library, &autohinter->hinter ); - -#ifdef DEBUG_HINTER - if ( !error ) - ah_debug_hinter = autohinter->hinter; -#endif - - return error; - } - - - FT_CALLBACK_DEF( void ) - ft_autohinter_done( FT_Module module ) - { - FT_AutoHinter autohinter = (FT_AutoHinter)module; - - - ah_hinter_done( autohinter->hinter ); - -#ifdef DEBUG_HINTER - ah_debug_hinter = NULL; -#endif - } - - - FT_CALLBACK_DEF( FT_Error ) - ft_autohinter_load_glyph( FT_AutoHinter module, - FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - return ah_hinter_load_glyph( module->hinter, - slot, size, glyph_index, load_flags ); - } - - - FT_CALLBACK_DEF( void ) - ft_autohinter_reset_globals( FT_AutoHinter module, - FT_Face face ) - { - FT_UNUSED( module ); - - if ( face->autohint.data ) - ah_hinter_done_face_globals( (AH_Face_Globals)(face->autohint.data) ); - } - - - FT_CALLBACK_DEF( void ) - ft_autohinter_get_globals( FT_AutoHinter module, - FT_Face face, - void** global_hints, - long* global_len ) - { - ah_hinter_get_global_hints( module->hinter, face, - global_hints, global_len ); - } - - - FT_CALLBACK_DEF( void ) - ft_autohinter_done_globals( FT_AutoHinter module, - void* global_hints ) - { - ah_hinter_done_global_hints( module->hinter, global_hints ); - } - - - FT_CALLBACK_TABLE_DEF - const FT_AutoHinter_ServiceRec ft_autohinter_service = - { - ft_autohinter_reset_globals, - ft_autohinter_get_globals, - ft_autohinter_done_globals, - ft_autohinter_load_glyph - }; - - - FT_CALLBACK_TABLE_DEF - const FT_Module_Class autohint_module_class = - { - FT_MODULE_HINTER, - sizeof ( FT_AutoHinterRec ), - - "autohinter", - 0x10000L, /* version 1.0 of the autohinter */ - 0x20000L, /* requires FreeType 2.0 or above */ - - (const void*) &ft_autohinter_service, - - ft_autohinter_init, - ft_autohinter_done, - 0 /* FT_Module_Requester */ - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahmodule.h b/nx-X11/extras/freetype2/src/autohint/ahmodule.h deleted file mode 100644 index 43b1dbe98..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahmodule.h +++ /dev/null @@ -1,42 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahmodule.h */ -/* */ -/* Auto-hinting module (declaration). */ -/* */ -/* Copyright 2000-2001 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#ifndef __AHMODULE_H__ -#define __AHMODULE_H__ - - -#include <ft2build.h> -#include FT_MODULE_H - - -FT_BEGIN_HEADER - - - FT_CALLBACK_TABLE - const FT_Module_Class autohint_module_class; - - -FT_END_HEADER - -#endif /* __AHMODULE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/ahtypes.h b/nx-X11/extras/freetype2/src/autohint/ahtypes.h deleted file mode 100644 index f2cedd288..000000000 --- a/nx-X11/extras/freetype2/src/autohint/ahtypes.h +++ /dev/null @@ -1,527 +0,0 @@ -/***************************************************************************/ -/* */ -/* ahtypes.h */ -/* */ -/* General types and definitions for the auto-hint module */ -/* (specification only). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#ifndef __AHTYPES_H__ -#define __AHTYPES_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H - -#ifdef DEBUG_HINTER -#include <../src/autohint/ahloader.h> -#else -#include "ahloader.h" -#endif - - -#define xxAH_DEBUG - - -#ifdef AH_DEBUG - -#include <stdio.h> -#define AH_LOG( x ) printf ## x - -#else - -#define AH_LOG( x ) do ; while ( 0 ) /* nothing */ - -#endif /* AH_DEBUG */ - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** COMPILE-TIME BUILD OPTIONS ****/ - /**** ****/ - /**** Toggle these configuration macros to experiment with `features' ****/ - /**** of the auto-hinter. ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* If this option is defined, only strong interpolation will be used to */ - /* place the points between edges. Otherwise, `smooth' points are */ - /* detected and later hinted through weak interpolation to correct some */ - /* unpleasant artefacts. */ - /* */ -#undef AH_OPTION_NO_WEAK_INTERPOLATION - - - /*************************************************************************/ - /* */ - /* Undefine this macro if you don't want to hint the metrics. There is */ - /* no reason to do this (at least for non-CJK scripts), except for */ - /* experimentation. */ - /* */ -#undef AH_HINT_METRICS - - - /*************************************************************************/ - /* */ - /* Define this macro if you do not want to insert extra edges at a */ - /* glyph's x and y extremum (if there isn't one already available). */ - /* This helps to reduce a number of artefacts and allows hinting of */ - /* metrics. */ - /* */ -#undef AH_OPTION_NO_EXTREMUM_EDGES - - - /* don't touch for now */ -#define AH_MAX_WIDTHS 12 -#define AH_MAX_HEIGHTS 12 - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** TYPE DEFINITIONS ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /* see ahangles.h */ - typedef FT_Int AH_Angle; - - - /* hint flags */ -#define AH_FLAG_NONE 0 - - /* bezier control points flags */ -#define AH_FLAG_CONIC 1 -#define AH_FLAG_CUBIC 2 -#define AH_FLAG_CONTROL ( AH_FLAG_CONIC | AH_FLAG_CUBIC ) - - /* extrema flags */ -#define AH_FLAG_EXTREMA_X 4 -#define AH_FLAG_EXTREMA_Y 8 - - /* roundness */ -#define AH_FLAG_ROUND_X 16 -#define AH_FLAG_ROUND_Y 32 - - /* touched */ -#define AH_FLAG_TOUCH_X 64 -#define AH_FLAG_TOUCH_Y 128 - - /* weak interpolation */ -#define AH_FLAG_WEAK_INTERPOLATION 256 -#define AH_FLAG_INFLECTION 512 - - typedef FT_Int AH_Flags; - - - /* edge hint flags */ -#define AH_EDGE_NORMAL 0 -#define AH_EDGE_ROUND 1 -#define AH_EDGE_SERIF 2 -#define AH_EDGE_DONE 4 - - typedef FT_Int AH_Edge_Flags; - - - /* hint directions -- the values are computed so that two vectors are */ - /* in opposite directions iff `dir1+dir2 == 0' */ -#define AH_DIR_NONE 4 -#define AH_DIR_RIGHT 1 -#define AH_DIR_LEFT -1 -#define AH_DIR_UP 2 -#define AH_DIR_DOWN -2 - - typedef FT_Int AH_Direction; - - - typedef struct AH_PointRec_* AH_Point; - typedef struct AH_SegmentRec_* AH_Segment; - typedef struct AH_EdgeRec_* AH_Edge; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* AH_PointRec */ - /* */ - /* <Description> */ - /* A structure used to model an outline point to the AH_OutlineRec */ - /* type. */ - /* */ - /* <Fields> */ - /* flags :: The current point hint flags. */ - /* */ - /* ox, oy :: The current original scaled coordinates. */ - /* */ - /* fx, fy :: The current coordinates in font units. */ - /* */ - /* x, y :: The current hinted coordinates. */ - /* */ - /* u, v :: Point coordinates -- meaning varies with context. */ - /* */ - /* in_dir :: The direction of the inwards vector (prev->point). */ - /* */ - /* out_dir :: The direction of the outwards vector (point->next). */ - /* */ - /* next :: The next point in same contour. */ - /* */ - /* prev :: The previous point in same contour. */ - /* */ - typedef struct AH_PointRec_ - { - AH_Flags flags; /* point flags used by hinter */ - FT_Pos ox, oy; - FT_Pos fx, fy; - FT_Pos x, y; - FT_Pos u, v; - - AH_Direction in_dir; /* direction of inwards vector */ - AH_Direction out_dir; /* direction of outwards vector */ - - AH_Point next; /* next point in contour */ - AH_Point prev; /* previous point in contour */ - - } AH_PointRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* AH_SegmentRec */ - /* */ - /* <Description> */ - /* A structure used to describe an edge segment to the auto-hinter. */ - /* A segment is simply a sequence of successive points located on the */ - /* same horizontal or vertical `position', in a given direction. */ - /* */ - /* <Fields> */ - /* flags :: The segment edge flags (straight, rounded, etc.). */ - /* */ - /* dir :: The segment direction. */ - /* */ - /* min_coord :: The minimum coordinate of the segment. */ - /* */ - /* max_coord :: The maximum coordinate of the segment. */ - /* */ - /* edge :: The edge of the current segment. */ - /* */ - /* edge_next :: The next segment on the same edge. */ - /* */ - /* link :: The pairing segment for this edge. */ - /* */ - /* serif :: The primary segment for serifs. */ - /* */ - /* num_linked :: The number of other segments that link to this one. */ - /* */ - /* score :: Used to score the segment when selecting them. */ - /* */ - /* first :: The first point in the segment. */ - /* */ - /* last :: The last point in the segment. */ - /* */ - /* contour :: A pointer to the first point of the segment's */ - /* contour. */ - /* */ - typedef struct AH_SegmentRec_ - { - AH_Edge_Flags flags; - AH_Direction dir; - FT_Pos pos; /* position of segment */ - FT_Pos min_coord; /* minimum coordinate of segment */ - FT_Pos max_coord; /* maximum coordinate of segment */ - - AH_Edge edge; - AH_Segment edge_next; - - AH_Segment link; /* link segment */ - AH_Segment serif; /* primary segment for serifs */ - FT_Pos num_linked; /* number of linked segments */ - FT_Pos score; - - AH_Point first; /* first point in edge segment */ - AH_Point last; /* last point in edge segment */ - AH_Point* contour; /* ptr to first point of segment's contour */ - - } AH_SegmentRec; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* AH_EdgeRec */ - /* */ - /* <Description> */ - /* A structure used to describe an edge, which really is a horizontal */ - /* or vertical coordinate to be hinted depending on the segments */ - /* located on it. */ - /* */ - /* <Fields> */ - /* fpos :: The original edge position in font units. */ - /* */ - /* opos :: The original scaled edge position. */ - /* */ - /* pos :: The hinted edge position. */ - /* */ - /* flags :: The segment edge flags (straight, rounded, etc.). */ - /* */ - /* dir :: The main segment direction on this edge. */ - /* */ - /* scale :: Scaling factor between original and hinted edge */ - /* positions. */ - /* */ - /* blue_edge :: Indicate the blue zone edge this edge is related to. */ - /* Only set for some of the horizontal edges in a latin */ - /* font. */ - /* */ - /* link :: The linked edge. */ - /* */ - /* serif :: The serif edge. */ - /* */ - /* num_linked :: The number of other edges that pair to this one. */ - /* */ - /* score :: Used to score the edge when selecting them. */ - /* */ - /* first :: The first edge segment. */ - /* */ - /* last :: The last edge segment. */ - /* */ - typedef struct AH_EdgeRec_ - { - FT_Pos fpos; - FT_Pos opos; - FT_Pos pos; - - AH_Edge_Flags flags; - AH_Direction dir; - FT_Fixed scale; - FT_Pos* blue_edge; - - AH_Edge link; - AH_Edge serif; - FT_Int num_linked; - - FT_Int score; - - AH_Segment first; - AH_Segment last; - - - } AH_EdgeRec; - - - /* an outline as seen by the hinter */ - typedef struct AH_OutlineRec_ - { - FT_Memory memory; - - AH_Direction vert_major_dir; /* vertical major direction */ - AH_Direction horz_major_dir; /* horizontal major direction */ - - FT_Fixed x_scale; - FT_Fixed y_scale; - FT_Pos edge_distance_threshold; - - FT_Int max_points; - FT_Int num_points; - AH_Point points; - - FT_Int max_contours; - FT_Int num_contours; - AH_Point* contours; - - FT_Int num_hedges; - AH_Edge horz_edges; - - FT_Int num_vedges; - AH_Edge vert_edges; - - FT_Int num_hsegments; - AH_Segment horz_segments; - - FT_Int num_vsegments; - AH_Segment vert_segments; - - } AH_OutlineRec, *AH_Outline; - - -#ifdef FT_CONFIG_CHESTER_SMALL_F - -#define AH_BLUE_CAPITAL_TOP 0 /* THEZOCQS */ -#define AH_BLUE_CAPITAL_BOTTOM ( AH_BLUE_CAPITAL_TOP + 1 ) /* HEZLOCUS */ -#define AH_BLUE_SMALL_F_TOP ( AH_BLUE_CAPITAL_BOTTOM + 1 ) /* fijkdbh */ -#define AH_BLUE_SMALL_TOP ( AH_BLUE_SMALL_F_TOP + 1 ) /* xzroesc */ -#define AH_BLUE_SMALL_BOTTOM ( AH_BLUE_SMALL_TOP + 1 ) /* xzroesc */ -#define AH_BLUE_SMALL_MINOR ( AH_BLUE_SMALL_BOTTOM + 1 ) /* pqgjy */ -#define AH_BLUE_MAX ( AH_BLUE_SMALL_MINOR + 1 ) - -#else /* !FT_CONFIG_CHESTER_SMALL_F */ - -#define AH_BLUE_CAPITAL_TOP 0 /* THEZOCQS */ -#define AH_BLUE_CAPITAL_BOTTOM ( AH_BLUE_CAPITAL_TOP + 1 ) /* HEZLOCUS */ -#define AH_BLUE_SMALL_TOP ( AH_BLUE_CAPITAL_BOTTOM + 1 ) /* xzroesc */ -#define AH_BLUE_SMALL_BOTTOM ( AH_BLUE_SMALL_TOP + 1 ) /* xzroesc */ -#define AH_BLUE_SMALL_MINOR ( AH_BLUE_SMALL_BOTTOM + 1 ) /* pqgjy */ -#define AH_BLUE_MAX ( AH_BLUE_SMALL_MINOR + 1 ) - -#endif /* !FT_CONFIG_CHESTER_SMALL_F */ - - typedef FT_Int AH_Blue; - - -#define AH_HINTER_MONOCHROME 1 -#define AH_HINTER_OPTIMIZE 2 - - typedef FT_Int AH_Hinter_Flags; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* AH_GlobalsRec */ - /* */ - /* <Description> */ - /* Holds the global metrics for a given font face (be it in design */ - /* units or scaled pixel values). */ - /* */ - /* <Fields> */ - /* num_widths :: The number of widths. */ - /* */ - /* num_heights :: The number of heights. */ - /* */ - /* stds :: A two-element array giving the default stem width */ - /* and height. */ - /* */ - /* widths :: Snap widths, including standard one. */ - /* */ - /* heights :: Snap height, including standard one. */ - /* */ - /* blue_refs :: The reference positions of blue zones. */ - /* */ - /* blue_shoots :: The overshoot positions of blue zones. */ - /* */ - typedef struct AH_GlobalsRec_ - { - FT_Int num_widths; - FT_Int num_heights; - - FT_Pos stds[2]; - - FT_Pos widths [AH_MAX_WIDTHS]; - FT_Pos heights[AH_MAX_HEIGHTS]; - - FT_Pos blue_refs [AH_BLUE_MAX]; - FT_Pos blue_shoots[AH_BLUE_MAX]; - - } AH_GlobalsRec, *AH_Globals; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* AH_Face_GlobalsRec */ - /* */ - /* <Description> */ - /* Holds the complete global metrics for a given font face (i.e., the */ - /* design units version + a scaled version + the current scales */ - /* used). */ - /* */ - /* <Fields> */ - /* face :: A handle to the source face object */ - /* */ - /* design :: The globals in font design units. */ - /* */ - /* scaled :: Scaled globals in sub-pixel values. */ - /* */ - /* x_scale :: The current horizontal scale. */ - /* */ - /* y_scale :: The current vertical scale. */ - /* */ - /* control_overshoot :: */ - /* Currently unused. */ - /* */ - typedef struct AH_Face_GlobalsRec_ - { - FT_Face face; - AH_GlobalsRec design; - AH_GlobalsRec scaled; - FT_Fixed x_scale; - FT_Fixed y_scale; - FT_Bool control_overshoot; - - } AH_Face_GlobalsRec, *AH_Face_Globals; - - - typedef struct AH_HinterRec_ - { - FT_Memory memory; - AH_Hinter_Flags flags; - - FT_Int algorithm; - FT_Face face; - - AH_Face_Globals globals; - - AH_Outline glyph; - - AH_Loader loader; - FT_Vector pp1; /* horizontal phantom points */ - FT_Vector pp2; - /* we ignore vertical phantom points */ - - FT_Bool transformed; - FT_Vector trans_delta; - FT_Matrix trans_matrix; - - FT_Bool do_horz_hints; /* disable X hinting */ - FT_Bool do_vert_hints; /* disable Y hinting */ - FT_Bool do_horz_snapping; /* disable X stem size snapping */ - FT_Bool do_vert_snapping; /* disable Y stem size snapping */ - FT_Bool do_stem_adjust; /* disable light stem snapping */ - - } AH_HinterRec, *AH_Hinter; - - -#ifdef DEBUG_HINTER - extern AH_Hinter ah_debug_hinter; - extern FT_Bool ah_debug_disable_horz; - extern FT_Bool ah_debug_disable_vert; -#else -#define ah_debug_disable_horz 0 -#define ah_debug_disable_vert 0 -#endif /* DEBUG_HINTER */ - - -FT_END_HEADER - -#endif /* __AHTYPES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/autohint.c b/nx-X11/extras/freetype2/src/autohint/autohint.c deleted file mode 100644 index 3783a82d9..000000000 --- a/nx-X11/extras/freetype2/src/autohint/autohint.c +++ /dev/null @@ -1,32 +0,0 @@ -/***************************************************************************/ -/* */ -/* autohint.c */ -/* */ -/* Automatic Hinting wrapper (body only). */ -/* */ -/* Copyright 2000-2001 Catharon Productions Inc. */ -/* Author: David Turner */ -/* */ -/* This file is part of the Catharon Typography Project and shall only */ -/* be used, modified, and distributed under the terms of the Catharon */ -/* Open Source License that should come with this file under the name */ -/* `CatharonLicense.txt'. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/* Note that this license is compatible with the FreeType license. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "ahangles.c" -#include "ahglyph.c" -#include "ahglobal.c" -#include "ahhint.c" -#include "ahmodule.c" - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/autohint/mather.py b/nx-X11/extras/freetype2/src/autohint/mather.py deleted file mode 100644 index 8ad8b5535..000000000 --- a/nx-X11/extras/freetype2/src/autohint/mather.py +++ /dev/null @@ -1,78 +0,0 @@ -#!/usr/bin/env python -# - -# -# autohint math table builder -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -import math - -ag_pi = 256 - -def print_arctan( atan_bits ): - atan_base = 1 << atan_bits - - print " static AH_Angle ag_arctan[1L << AG_ATAN_BITS] =" - print " {" - - count = 0 - line = " " - - for n in range( atan_base ): - comma = "," - if ( n == atan_base - 1 ): - comma = "" - - angle = math.atan( n * 1.0 / atan_base ) / math.pi * ag_pi - line = line + " " + repr( int( angle + 0.5 ) ) + comma - count = count + 1; - if ( count == 8 ): - count = 0 - print line - line = " " - - if ( count > 0 ): - print line - print " };" - - -# This routine is not used currently. -# -def print_sines(): - print " static FT_Fixed ah_sines[AG_HALF_PI + 1] =" - print " {" - - count = 0 - line = " " - - for n in range( ag_pi / 2 ): - sinus = math.sin( n * math.pi / ag_pi ) - line = line + " " + repr( int( 65536.0 * sinus ) ) + "," - count = count + 1 - if ( count == 8 ): - count = 0 - print line - line = " " - - if ( count > 0 ): - print line - print " 65536" - print " };" - - -print_arctan( 8 ) -print - - -# END diff --git a/nx-X11/extras/freetype2/src/autohint/module.mk b/nx-X11/extras/freetype2/src/autohint/module.mk deleted file mode 100644 index edc9f4e1a..000000000 --- a/nx-X11/extras/freetype2/src/autohint/module.mk +++ /dev/null @@ -1,25 +0,0 @@ -# -# FreeType 2 auto-hinter module definition -# - - -# Copyright 2000 Catharon Productions Inc. -# Author: David Turner -# -# This file is part of the Catharon Typography Project and shall only -# be used, modified, and distributed under the terms of the Catharon -# Open Source License that should come with this file under the name -# `CatharonLicense.txt'. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. -# -# Note that this license is compatible with the FreeType license. - - -make_module_list: add_autohint_module - -add_autohint_module: - $(OPEN_DRIVER)autohint_module_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)autohint $(ECHO_DRIVER_DESC)automatic hinting module$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/autohint/rules.mk b/nx-X11/extras/freetype2/src/autohint/rules.mk deleted file mode 100644 index ee264e862..000000000 --- a/nx-X11/extras/freetype2/src/autohint/rules.mk +++ /dev/null @@ -1,77 +0,0 @@ -# -# FreeType 2 auto-hinter module configuration rules -# - - -# Copyright 2000, 2001, 2002, 2003 Catharon Productions Inc. -# Author: David Turner -# -# This file is part of the Catharon Typography Project and shall only -# be used, modified, and distributed under the terms of the Catharon -# Open Source License that should come with this file under the name -# `CatharonLicense.txt'. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. -# -# Note that this license is compatible with the FreeType license. - - -# AUTO driver directory -# -AUTO_DIR := $(SRC_DIR)/autohint - - -# compilation flags for the driver -# -AUTO_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(AUTO_DIR)) - - -# AUTO driver sources (i.e., C files) -# -AUTO_DRV_SRC := $(AUTO_DIR)/ahangles.c \ - $(AUTO_DIR)/ahglobal.c \ - $(AUTO_DIR)/ahglyph.c \ - $(AUTO_DIR)/ahhint.c \ - $(AUTO_DIR)/ahmodule.c - -# AUTO driver headers -# -AUTO_DRV_H := $(AUTO_DRV_SRC:%c=%h) \ - $(AUTO_DIR)/ahloader.h \ - $(AUTO_DIR)/ahtypes.h \ - $(AUTO_DIR)/aherrors.h - - -# AUTO driver object(s) -# -# AUTO_DRV_OBJ_M is used during `multi' builds. -# AUTO_DRV_OBJ_S is used during `single' builds. -# -AUTO_DRV_OBJ_M := $(AUTO_DRV_SRC:$(AUTO_DIR)/%.c=$(OBJ_DIR)/%.$O) -AUTO_DRV_OBJ_S := $(OBJ_DIR)/autohint.$O - -# AUTO driver source file for single build -# -AUTO_DRV_SRC_S := $(AUTO_DIR)/autohint.c - - -# AUTO driver - single object -# -$(AUTO_DRV_OBJ_S): $(AUTO_DRV_SRC_S) $(AUTO_DRV_SRC) \ - $(FREETYPE_H) $(AUTO_DRV_H) - $(AUTO_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(AUTO_DRV_SRC_S)) - - -# AUTO driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(AUTO_DIR)/%.c $(FREETYPE_H) $(AUTO_DRV_H) - $(AUTO_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(AUTO_DRV_OBJ_S) -DRV_OBJS_M += $(AUTO_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/base/Jamfile b/nx-X11/extras/freetype2/src/base/Jamfile deleted file mode 100644 index d82e65d6d..000000000 --- a/nx-X11/extras/freetype2/src/base/Jamfile +++ /dev/null @@ -1,36 +0,0 @@ -# FreeType 2 src/base Jamfile (c) 2001, 2002, 2003, 2004 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) base ; - - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ftutil ftdbgmem ftstream ftcalc fttrigon ftgloadr ftoutln - ftobjs ftnames ftrfork ; - } - else - { - _sources = ftbase ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# Add the optional/replaceable files. -# -Library $(FT2_LIB) : ftsystem.c ftinit.c ftglyph.c ftmm.c ftbdf.c - ftbbox.c ftdebug.c ftxf86.c fttype1.c ftpfr.c - ftstroke.c ftwinfnt.c ; - -# Add Macintosh-specific file to the library when necessary. -# -if $(MAC) -{ - Library $(FT2_LIB) : ftmac.c ; -} - -# end of src/base Jamfile diff --git a/nx-X11/extras/freetype2/src/base/descrip.mms b/nx-X11/extras/freetype2/src/base/descrip.mms deleted file mode 100644 index 73bad4d73..000000000 --- a/nx-X11/extras/freetype2/src/base/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 base layer compilation rules for VMS -# - - -# Copyright 2001, 2003, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.builds.vms],[--.include],[--.src.base]) - -OBJS=ftbase.obj,ftinit.obj,ftglyph.obj,ftdebug.obj,ftbdf.obj,ftmm.obj,fttype1.obj,ftxf86.obj,ftpfr.obj,ftstroke.obj,ftwinfnt.obj,ftbbox.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/base/ftapi.c b/nx-X11/extras/freetype2/src/base/ftapi.c deleted file mode 100644 index 1ef3005e2..000000000 --- a/nx-X11/extras/freetype2/src/base/ftapi.c +++ /dev/null @@ -1,121 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftapi.c */ -/* */ -/* The FreeType compatibility functions (body). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_LIST_H -#include FT_OUTLINE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TABLES_H -#include FT_OUTLINE_H - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** C O M P A T I B I L I T Y ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /* backwards compatibility API */ - - FT_BASE_DEF( void ) - FT_New_Memory_Stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream stream ) - { - FT_UNUSED( library ); - - FT_Stream_OpenMemory( stream, base, size ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Seek_Stream( FT_Stream stream, - FT_ULong pos ) - { - return FT_Stream_Seek( stream, pos ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Skip_Stream( FT_Stream stream, - FT_Long distance ) - { - return FT_Stream_Skip( stream, distance ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Read_Stream( FT_Stream stream, - FT_Byte* buffer, - FT_ULong count ) - { - return FT_Stream_Read( stream, buffer, count ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Read_Stream_At( FT_Stream stream, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ) - { - return FT_Stream_ReadAt( stream, pos, buffer, count ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Extract_Frame( FT_Stream stream, - FT_ULong count, - FT_Byte** pbytes ) - { - return FT_Stream_ExtractFrame( stream, count, pbytes ); - } - - - FT_BASE_DEF( void ) - FT_Release_Frame( FT_Stream stream, - FT_Byte** pbytes ) - { - FT_Stream_ReleaseFrame( stream, pbytes ); - } - - FT_BASE_DEF( FT_Error ) - FT_Access_Frame( FT_Stream stream, - FT_ULong count ) - { - return FT_Stream_EnterFrame( stream, count ); - } - - - FT_BASE_DEF( void ) - FT_Forget_Frame( FT_Stream stream ) - { - FT_Stream_ExitFrame( stream ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftbase.c b/nx-X11/extras/freetype2/src/base/ftbase.c deleted file mode 100644 index 7d5a7fd8e..000000000 --- a/nx-X11/extras/freetype2/src/base/ftbase.c +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbase.c */ -/* */ -/* Single object library component (body only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include "ftutil.c" -#include "ftdbgmem.c" -#include "ftstream.c" -#include "ftcalc.c" -#include "fttrigon.c" -#include "ftoutln.c" -#include "ftgloadr.c" -#include "ftobjs.c" -#include "ftnames.c" -#include "ftrfork.c" - -#if defined( __APPLE__ ) && !defined ( DARWIN_NO_CARBON ) -#include "ftmac.c" -#endif - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftbbox.c b/nx-X11/extras/freetype2/src/base/ftbbox.c deleted file mode 100644 index 888699573..000000000 --- a/nx-X11/extras/freetype2/src/base/ftbbox.c +++ /dev/null @@ -1,659 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbbox.c */ -/* */ -/* FreeType bbox computation (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used */ -/* modified and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This component has a _single_ role: to compute exact outline bounding */ - /* boxes. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_BBOX_H -#include FT_IMAGE_H -#include FT_OUTLINE_H -#include FT_INTERNAL_CALC_H - - - typedef struct TBBox_Rec_ - { - FT_Vector last; - FT_BBox bbox; - - } TBBox_Rec; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* BBox_Move_To */ - /* */ - /* <Description> */ - /* This function is used as a `move_to' and `line_to' emitter during */ - /* FT_Outline_Decompose(). It simply records the destination point */ - /* in `user->last'; no further computations are necessary since we */ - /* use the cbox as the starting bbox which must be refined. */ - /* */ - /* <Input> */ - /* to :: A pointer to the destination vector. */ - /* */ - /* <InOut> */ - /* user :: A pointer to the current walk context. */ - /* */ - /* <Return> */ - /* Always 0. Needed for the interface only. */ - /* */ - static int - BBox_Move_To( FT_Vector* to, - TBBox_Rec* user ) - { - user->last = *to; - - return 0; - } - - -#define CHECK_X( p, bbox ) \ - ( p->x < bbox.xMin || p->x > bbox.xMax ) - -#define CHECK_Y( p, bbox ) \ - ( p->y < bbox.yMin || p->y > bbox.yMax ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* BBox_Conic_Check */ - /* */ - /* <Description> */ - /* Finds the extrema of a 1-dimensional conic Bezier curve and update */ - /* a bounding range. This version uses direct computation, as it */ - /* doesn't need square roots. */ - /* */ - /* <Input> */ - /* y1 :: The start coordinate. */ - /* */ - /* y2 :: The coordinate of the control point. */ - /* */ - /* y3 :: The end coordinate. */ - /* */ - /* <InOut> */ - /* min :: The address of the current minimum. */ - /* */ - /* max :: The address of the current maximum. */ - /* */ - static void - BBox_Conic_Check( FT_Pos y1, - FT_Pos y2, - FT_Pos y3, - FT_Pos* min, - FT_Pos* max ) - { - if ( y1 <= y3 && y2 == y1 ) /* flat arc */ - goto Suite; - - if ( y1 < y3 ) - { - if ( y2 >= y1 && y2 <= y3 ) /* ascending arc */ - goto Suite; - } - else - { - if ( y2 >= y3 && y2 <= y1 ) /* descending arc */ - { - y2 = y1; - y1 = y3; - y3 = y2; - goto Suite; - } - } - - y1 = y3 = y1 - FT_MulDiv( y2 - y1, y2 - y1, y1 - 2*y2 + y3 ); - - Suite: - if ( y1 < *min ) *min = y1; - if ( y3 > *max ) *max = y3; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* BBox_Conic_To */ - /* */ - /* <Description> */ - /* This function is used as a `conic_to' emitter during */ - /* FT_Raster_Decompose(). It checks a conic Bezier curve with the */ - /* current bounding box, and computes its extrema if necessary to */ - /* update it. */ - /* */ - /* <Input> */ - /* control :: A pointer to a control point. */ - /* */ - /* to :: A pointer to the destination vector. */ - /* */ - /* <InOut> */ - /* user :: The address of the current walk context. */ - /* */ - /* <Return> */ - /* Always 0. Needed for the interface only. */ - /* */ - /* <Note> */ - /* In the case of a non-monotonous arc, we compute directly the */ - /* extremum coordinates, as it is sufficiently fast. */ - /* */ - static int - BBox_Conic_To( FT_Vector* control, - FT_Vector* to, - TBBox_Rec* user ) - { - /* we don't need to check `to' since it is always an `on' point, thus */ - /* within the bbox */ - - if ( CHECK_X( control, user->bbox ) ) - BBox_Conic_Check( user->last.x, - control->x, - to->x, - &user->bbox.xMin, - &user->bbox.xMax ); - - if ( CHECK_Y( control, user->bbox ) ) - BBox_Conic_Check( user->last.y, - control->y, - to->y, - &user->bbox.yMin, - &user->bbox.yMax ); - - user->last = *to; - - return 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* BBox_Cubic_Check */ - /* */ - /* <Description> */ - /* Finds the extrema of a 1-dimensional cubic Bezier curve and */ - /* updates a bounding range. This version uses splitting because we */ - /* don't want to use square roots and extra accuracy. */ - /* */ - /* <Input> */ - /* p1 :: The start coordinate. */ - /* */ - /* p2 :: The coordinate of the first control point. */ - /* */ - /* p3 :: The coordinate of the second control point. */ - /* */ - /* p4 :: The end coordinate. */ - /* */ - /* <InOut> */ - /* min :: The address of the current minimum. */ - /* */ - /* max :: The address of the current maximum. */ - /* */ - -#if 0 - - static void - BBox_Cubic_Check( FT_Pos p1, - FT_Pos p2, - FT_Pos p3, - FT_Pos p4, - FT_Pos* min, - FT_Pos* max ) - { - FT_Pos stack[32*3 + 1], *arc; - - - arc = stack; - - arc[0] = p1; - arc[1] = p2; - arc[2] = p3; - arc[3] = p4; - - do - { - FT_Pos y1 = arc[0]; - FT_Pos y2 = arc[1]; - FT_Pos y3 = arc[2]; - FT_Pos y4 = arc[3]; - - - if ( y1 == y4 ) - { - if ( y1 == y2 && y1 == y3 ) /* flat */ - goto Test; - } - else if ( y1 < y4 ) - { - if ( y2 >= y1 && y2 <= y4 && y3 >= y1 && y3 <= y4 ) /* ascending */ - goto Test; - } - else - { - if ( y2 >= y4 && y2 <= y1 && y3 >= y4 && y3 <= y1 ) /* descending */ - { - y2 = y1; - y1 = y4; - y4 = y2; - goto Test; - } - } - - /* unknown direction -- split the arc in two */ - arc[6] = y4; - arc[1] = y1 = ( y1 + y2 ) / 2; - arc[5] = y4 = ( y4 + y3 ) / 2; - y2 = ( y2 + y3 ) / 2; - arc[2] = y1 = ( y1 + y2 ) / 2; - arc[4] = y4 = ( y4 + y2 ) / 2; - arc[3] = ( y1 + y4 ) / 2; - - arc += 3; - goto Suite; - - Test: - if ( y1 < *min ) *min = y1; - if ( y4 > *max ) *max = y4; - arc -= 3; - - Suite: - ; - } while ( arc >= stack ); - } - -#else - - static void - test_cubic_extrema( FT_Pos y1, - FT_Pos y2, - FT_Pos y3, - FT_Pos y4, - FT_Fixed u, - FT_Pos* min, - FT_Pos* max ) - { - /* FT_Pos a = y4 - 3*y3 + 3*y2 - y1; */ - FT_Pos b = y3 - 2*y2 + y1; - FT_Pos c = y2 - y1; - FT_Pos d = y1; - FT_Pos y; - FT_Fixed uu; - - FT_UNUSED ( y4 ); - - - /* The polynom is */ - /* */ - /* P(x) = a*x^3 + 3b*x^2 + 3c*x + d , */ - /* */ - /* dP/dx = 3a*x^2 + 6b*x + 3c . */ - /* */ - /* However, we also have */ - /* */ - /* dP/dx(u) = 0 , */ - /* */ - /* which implies by subtraction that */ - /* */ - /* P(u) = b*u^2 + 2c*u + d . */ - - if ( u > 0 && u < 0x10000L ) - { - uu = FT_MulFix( u, u ); - y = d + FT_MulFix( c, 2*u ) + FT_MulFix( b, uu ); - - if ( y < *min ) *min = y; - if ( y > *max ) *max = y; - } - } - - - static void - BBox_Cubic_Check( FT_Pos y1, - FT_Pos y2, - FT_Pos y3, - FT_Pos y4, - FT_Pos* min, - FT_Pos* max ) - { - /* always compare first and last points */ - if ( y1 < *min ) *min = y1; - else if ( y1 > *max ) *max = y1; - - if ( y4 < *min ) *min = y4; - else if ( y4 > *max ) *max = y4; - - /* now, try to see if there are split points here */ - if ( y1 <= y4 ) - { - /* flat or ascending arc test */ - if ( y1 <= y2 && y2 <= y4 && y1 <= y3 && y3 <= y4 ) - return; - } - else /* y1 > y4 */ - { - /* descending arc test */ - if ( y1 >= y2 && y2 >= y4 && y1 >= y3 && y3 >= y4 ) - return; - } - - /* There are some split points. Find them. */ - { - FT_Pos a = y4 - 3*y3 + 3*y2 - y1; - FT_Pos b = y3 - 2*y2 + y1; - FT_Pos c = y2 - y1; - FT_Pos d; - FT_Fixed t; - - - /* We need to solve `ax^2+2bx+c' here, without floating points! */ - /* The trick is to normalize to a different representation in order */ - /* to use our 16.16 fixed point routines. */ - /* */ - /* We compute FT_MulFix(b,b) and FT_MulFix(a,c) after normalization. */ - /* These values must fit into a single 16.16 value. */ - /* */ - /* We normalize a, b, and c to `8.16' fixed float values to ensure */ - /* that its product is held in a `16.16' value. */ - - { - FT_ULong t1, t2; - int shift = 0; - - - /* The following computation is based on the fact that for */ - /* any value `y', if `n' is the position of the most */ - /* significant bit of `abs(y)' (starting from 0 for the */ - /* least significant bit), then `y' is in the range */ - /* */ - /* -2^n..2^n-1 */ - /* */ - /* We want to shift `a', `b', and `c' concurrently in order */ - /* to ensure that they all fit in 8.16 values, which maps */ - /* to the integer range `-2^23..2^23-1'. */ - /* */ - /* Necessarily, we need to shift `a', `b', and `c' so that */ - /* the most significant bit of its absolute values is at */ - /* _most_ at position 23. */ - /* */ - /* We begin by computing `t1' as the bitwise `OR' of the */ - /* absolute values of `a', `b', `c'. */ - - t1 = (FT_ULong)( ( a >= 0 ) ? a : -a ); - t2 = (FT_ULong)( ( b >= 0 ) ? b : -b ); - t1 |= t2; - t2 = (FT_ULong)( ( c >= 0 ) ? c : -c ); - t1 |= t2; - - /* Now we can be sure that the most significant bit of `t1' */ - /* is the most significant bit of either `a', `b', or `c', */ - /* depending on the greatest integer range of the particular */ - /* variable. */ - /* */ - /* Next, we compute the `shift', by shifting `t1' as many */ - /* times as necessary to move its MSB to position 23. This */ - /* corresponds to a value of `t1' that is in the range */ - /* 0x40_0000..0x7F_FFFF. */ - /* */ - /* Finally, we shift `a', `b', and `c' by the same amount. */ - /* This ensures that all values are now in the range */ - /* -2^23..2^23, i.e., they are now expressed as 8.16 */ - /* fixed-float numbers. This also means that we are using */ - /* 24 bits of precision to compute the zeros, independently */ - /* of the range of the original polynomial coefficients. */ - /* */ - /* This algorithm should ensure reasonably accurate values */ - /* for the zeros. Note that they are only expressed with */ - /* 16 bits when computing the extrema (the zeros need to */ - /* be in 0..1 exclusive to be considered part of the arc). */ - - if ( t1 == 0 ) /* all coefficients are 0! */ - return; - - if ( t1 > 0x7FFFFFUL ) - { - do - { - shift++; - t1 >>= 1; - - } while ( t1 > 0x7FFFFFUL ); - - /* this loses some bits of precision, but we use 24 of them */ - /* for the computation anyway */ - a >>= shift; - b >>= shift; - c >>= shift; - } - else if ( t1 < 0x400000UL ) - { - do - { - shift++; - t1 <<= 1; - - } while ( t1 < 0x400000UL ); - - a <<= shift; - b <<= shift; - c <<= shift; - } - } - - /* handle a == 0 */ - if ( a == 0 ) - { - if ( b != 0 ) - { - t = - FT_DivFix( c, b ) / 2; - test_cubic_extrema( y1, y2, y3, y4, t, min, max ); - } - } - else - { - /* solve the equation now */ - d = FT_MulFix( b, b ) - FT_MulFix( a, c ); - if ( d < 0 ) - return; - - if ( d == 0 ) - { - /* there is a single split point at -b/a */ - t = - FT_DivFix( b, a ); - test_cubic_extrema( y1, y2, y3, y4, t, min, max ); - } - else - { - /* there are two solutions; we need to filter them */ - d = FT_SqrtFixed( (FT_Int32)d ); - t = - FT_DivFix( b - d, a ); - test_cubic_extrema( y1, y2, y3, y4, t, min, max ); - - t = - FT_DivFix( b + d, a ); - test_cubic_extrema( y1, y2, y3, y4, t, min, max ); - } - } - } - } - -#endif - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* BBox_Cubic_To */ - /* */ - /* <Description> */ - /* This function is used as a `cubic_to' emitter during */ - /* FT_Raster_Decompose(). It checks a cubic Bezier curve with the */ - /* current bounding box, and computes its extrema if necessary to */ - /* update it. */ - /* */ - /* <Input> */ - /* control1 :: A pointer to the first control point. */ - /* */ - /* control2 :: A pointer to the second control point. */ - /* */ - /* to :: A pointer to the destination vector. */ - /* */ - /* <InOut> */ - /* user :: The address of the current walk context. */ - /* */ - /* <Return> */ - /* Always 0. Needed for the interface only. */ - /* */ - /* <Note> */ - /* In the case of a non-monotonous arc, we don't compute directly */ - /* extremum coordinates, we subdivide instead. */ - /* */ - static int - BBox_Cubic_To( FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to, - TBBox_Rec* user ) - { - /* we don't need to check `to' since it is always an `on' point, thus */ - /* within the bbox */ - - if ( CHECK_X( control1, user->bbox ) || - CHECK_X( control2, user->bbox ) ) - BBox_Cubic_Check( user->last.x, - control1->x, - control2->x, - to->x, - &user->bbox.xMin, - &user->bbox.xMax ); - - if ( CHECK_Y( control1, user->bbox ) || - CHECK_Y( control2, user->bbox ) ) - BBox_Cubic_Check( user->last.y, - control1->y, - control2->y, - to->y, - &user->bbox.yMin, - &user->bbox.yMax ); - - user->last = *to; - - return 0; - } - - - /* documentation is in ftbbox.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_Get_BBox( FT_Outline* outline, - FT_BBox *abbox ) - { - FT_BBox cbox; - FT_BBox bbox; - FT_Vector* vec; - FT_UShort n; - - - if ( !abbox ) - return FT_Err_Invalid_Argument; - - if ( !outline ) - return FT_Err_Invalid_Outline; - - /* if outline is empty, return (0,0,0,0) */ - if ( outline->n_points == 0 || outline->n_contours <= 0 ) - { - abbox->xMin = abbox->xMax = 0; - abbox->yMin = abbox->yMax = 0; - return 0; - } - - /* We compute the control box as well as the bounding box of */ - /* all `on' points in the outline. Then, if the two boxes */ - /* coincide, we exit immediately. */ - - vec = outline->points; - bbox.xMin = bbox.xMax = cbox.xMin = cbox.xMax = vec->x; - bbox.yMin = bbox.yMax = cbox.yMin = cbox.yMax = vec->y; - vec++; - - for ( n = 1; n < outline->n_points; n++ ) - { - FT_Pos x = vec->x; - FT_Pos y = vec->y; - - - /* update control box */ - if ( x < cbox.xMin ) cbox.xMin = x; - if ( x > cbox.xMax ) cbox.xMax = x; - - if ( y < cbox.yMin ) cbox.yMin = y; - if ( y > cbox.yMax ) cbox.yMax = y; - - if ( FT_CURVE_TAG( outline->tags[n] ) == FT_CURVE_TAG_ON ) - { - /* update bbox for `on' points only */ - if ( x < bbox.xMin ) bbox.xMin = x; - if ( x > bbox.xMax ) bbox.xMax = x; - - if ( y < bbox.yMin ) bbox.yMin = y; - if ( y > bbox.yMax ) bbox.yMax = y; - } - - vec++; - } - - /* test two boxes for equality */ - if ( cbox.xMin < bbox.xMin || cbox.xMax > bbox.xMax || - cbox.yMin < bbox.yMin || cbox.yMax > bbox.yMax ) - { - /* the two boxes are different, now walk over the outline to */ - /* get the Bezier arc extrema. */ - - static const FT_Outline_Funcs bbox_interface = - { - (FT_Outline_MoveTo_Func) BBox_Move_To, - (FT_Outline_LineTo_Func) BBox_Move_To, - (FT_Outline_ConicTo_Func)BBox_Conic_To, - (FT_Outline_CubicTo_Func)BBox_Cubic_To, - 0, 0 - }; - - FT_Error error; - TBBox_Rec user; - - - user.bbox = bbox; - - error = FT_Outline_Decompose( outline, &bbox_interface, &user ); - if ( error ) - return error; - - *abbox = user.bbox; - } - else - *abbox = bbox; - - return FT_Err_Ok; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftbdf.c b/nx-X11/extras/freetype2/src/base/ftbdf.c deleted file mode 100644 index d2f133db7..000000000 --- a/nx-X11/extras/freetype2/src/base/ftbdf.c +++ /dev/null @@ -1,84 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftbdf.c */ -/* */ -/* FreeType API for accessing BDF-specific strings (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_BDF_H - - - FT_EXPORT_DEF( FT_Error ) - FT_Get_BDF_Charset_ID( FT_Face face, - const char* *acharset_encoding, - const char* *acharset_registry ) - { - FT_Error error; - const char* encoding = NULL; - const char* registry = NULL; - - - error = FT_Err_Invalid_Argument; - - if ( face ) - { - FT_Service_BDF service; - - - FT_FACE_FIND_SERVICE( face, service, BDF ); - - if ( service && service->get_charset_id ) - error = service->get_charset_id( face, &encoding, ®istry ); - } - - if ( acharset_encoding ) - *acharset_encoding = encoding; - - if ( acharset_registry ) - *acharset_registry = registry; - - return error; - } - - - FT_EXPORT( FT_Error ) - FT_Get_BDF_Property( FT_Face face, - const char* prop_name, - BDF_PropertyRec *aproperty ) - { - FT_Error error; - - - error = FT_Err_Invalid_Argument; - - aproperty->type = BDF_PROPERTY_TYPE_NONE; - - if ( face ) - { - FT_Service_BDF service; - - - FT_FACE_FIND_SERVICE( face, service, BDF ); - - if ( service && service->get_property ) - error = service->get_property( face, prop_name, aproperty ); - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftcalc.c b/nx-X11/extras/freetype2/src/base/ftcalc.c deleted file mode 100644 index f169642e0..000000000 --- a/nx-X11/extras/freetype2/src/base/ftcalc.c +++ /dev/null @@ -1,624 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcalc.c */ -/* */ -/* Arithmetic computations (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* Support for 1-complement arithmetic has been totally dropped in this */ - /* release. You can still write your own code if you need it. */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* Implementing basic computation routines. */ - /* */ - /* FT_MulDiv(), FT_MulFix(), FT_DivFix(), FT_RoundFix(), FT_CeilFix(), */ - /* and FT_FloorFix() are declared in freetype.h. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H - - -/* we need to define a 64-bits data type here */ - -#ifdef FT_LONG64 - - typedef FT_INT64 FT_Int64; - -#else - - typedef struct FT_Int64_ - { - FT_UInt32 lo; - FT_UInt32 hi; - - } FT_Int64; - -#endif /* FT_LONG64 */ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_calc - - - /* The following three functions are available regardless of whether */ - /* FT_LONG64 is defined. */ - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Fixed ) - FT_RoundFix( FT_Fixed a ) - { - return ( a >= 0 ) ? ( a + 0x8000L ) & ~0xFFFFL - : -((-a + 0x8000L ) & ~0xFFFFL ); - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Fixed ) - FT_CeilFix( FT_Fixed a ) - { - return ( a >= 0 ) ? ( a + 0xFFFFL ) & ~0xFFFFL - : -((-a + 0xFFFFL ) & ~0xFFFFL ); - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Fixed ) - FT_FloorFix( FT_Fixed a ) - { - return ( a >= 0 ) ? a & ~0xFFFFL - : -((-a) & ~0xFFFFL ); - } - - - /* documentation is in ftcalc.h */ - - FT_EXPORT_DEF( FT_Int32 ) - FT_Sqrt32( FT_Int32 x ) - { - FT_ULong val, root, newroot, mask; - - - root = 0; - mask = 0x40000000L; - val = (FT_ULong)x; - - do - { - newroot = root + mask; - if ( newroot <= val ) - { - val -= newroot; - root = newroot + mask; - } - - root >>= 1; - mask >>= 2; - - } while ( mask != 0 ); - - return root; - } - - -#ifdef FT_LONG64 - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Long ) - FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ) - { - FT_Int s; - FT_Long d; - - - s = 1; - if ( a < 0 ) { a = -a; s = -1; } - if ( b < 0 ) { b = -b; s = -s; } - if ( c < 0 ) { c = -c; s = -s; } - - d = (FT_Long)( c > 0 ? ( (FT_Int64)a * b + ( c >> 1 ) ) / c - : 0x7FFFFFFFL ); - - return ( s > 0 ) ? d : -d; - } - - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - /* documentation is in ftcalc.h */ - - FT_BASE_DEF( FT_Long ) - FT_MulDiv_No_Round( FT_Long a, - FT_Long b, - FT_Long c ) - { - FT_Int s; - FT_Long d; - - - s = 1; - if ( a < 0 ) { a = -a; s = -1; } - if ( b < 0 ) { b = -b; s = -s; } - if ( c < 0 ) { c = -c; s = -s; } - - d = (FT_Long)( c > 0 ? (FT_Int64)a * b / c - : 0x7FFFFFFFL ); - - return ( s > 0 ) ? d : -d; - } - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Long ) - FT_MulFix( FT_Long a, - FT_Long b ) - { - FT_Int s = 1; - FT_Long c; - - - if ( a < 0 ) { a = -a; s = -1; } - if ( b < 0 ) { b = -b; s = -s; } - - c = (FT_Long)( ( (FT_Int64)a * b + 0x8000L ) >> 16 ); - return ( s > 0 ) ? c : -c ; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Long ) - FT_DivFix( FT_Long a, - FT_Long b ) - { - FT_Int32 s; - FT_UInt32 q; - - s = 1; - if ( a < 0 ) { a = -a; s = -1; } - if ( b < 0 ) { b = -b; s = -s; } - - if ( b == 0 ) - /* check for division by 0 */ - q = 0x7FFFFFFFL; - else - /* compute result directly */ - q = (FT_UInt32)( ( ( (FT_Int64)a << 16 ) + ( b >> 1 ) ) / b ); - - return ( s < 0 ? -(FT_Long)q : (FT_Long)q ); - } - - -#else /* FT_LONG64 */ - - - static void - ft_multo64( FT_UInt32 x, - FT_UInt32 y, - FT_Int64 *z ) - { - FT_UInt32 lo1, hi1, lo2, hi2, lo, hi, i1, i2; - - - lo1 = x & 0x0000FFFFU; hi1 = x >> 16; - lo2 = y & 0x0000FFFFU; hi2 = y >> 16; - - lo = lo1 * lo2; - i1 = lo1 * hi2; - i2 = lo2 * hi1; - hi = hi1 * hi2; - - /* Check carry overflow of i1 + i2 */ - i1 += i2; - hi += (FT_UInt32)( i1 < i2 ) << 16; - - hi += i1 >> 16; - i1 = i1 << 16; - - /* Check carry overflow of i1 + lo */ - lo += i1; - hi += ( lo < i1 ); - - z->lo = lo; - z->hi = hi; - } - - - static FT_UInt32 - ft_div64by32( FT_UInt32 hi, - FT_UInt32 lo, - FT_UInt32 y ) - { - FT_UInt32 r, q; - FT_Int i; - - - q = 0; - r = hi; - - if ( r >= y ) - return (FT_UInt32)0x7FFFFFFFL; - - i = 32; - do - { - r <<= 1; - q <<= 1; - r |= lo >> 31; - - if ( r >= (FT_UInt32)y ) - { - r -= y; - q |= 1; - } - lo <<= 1; - } while ( --i ); - - return q; - } - - - /* documentation is in ftcalc.h */ - - FT_EXPORT_DEF( void ) - FT_Add64( FT_Int64* x, - FT_Int64* y, - FT_Int64 *z ) - { - register FT_UInt32 lo, hi, max; - - - max = x->lo > y->lo ? x->lo : y->lo; - lo = x->lo + y->lo; - hi = x->hi + y->hi + ( lo < max ); - - z->lo = lo; - z->hi = hi; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Long ) - FT_MulDiv( FT_Long a, - FT_Long b, - FT_Long c ) - { - long s; - - - if ( a == 0 || b == c ) - return a; - - s = a; a = FT_ABS( a ); - s ^= b; b = FT_ABS( b ); - s ^= c; c = FT_ABS( c ); - - if ( a <= 46340L && b <= 46340L && c <= 176095L && c > 0 ) - a = ( a * b + ( c >> 1 ) ) / c; - - else if ( c > 0 ) - { - FT_Int64 temp, temp2; - - - ft_multo64( a, b, &temp ); - - temp2.hi = 0; - temp2.lo = (FT_UInt32)(c >> 1); - FT_Add64( &temp, &temp2, &temp ); - a = ft_div64by32( temp.hi, temp.lo, c ); - } - else - a = 0x7FFFFFFFL; - - return ( s < 0 ? -a : a ); - } - - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - FT_BASE_DEF( FT_Long ) - FT_MulDiv_No_Round( FT_Long a, - FT_Long b, - FT_Long c ) - { - long s; - - - if ( a == 0 || b == c ) - return a; - - s = a; a = FT_ABS( a ); - s ^= b; b = FT_ABS( b ); - s ^= c; c = FT_ABS( c ); - - if ( a <= 46340L && b <= 46340L && c > 0 ) - a = a * b / c; - - else if ( c > 0 ) - { - FT_Int64 temp; - - - ft_multo64( a, b, &temp ); - a = ft_div64by32( temp.hi, temp.lo, c ); - } - else - a = 0x7FFFFFFFL; - - return ( s < 0 ? -a : a ); - } - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Long ) - FT_MulFix( FT_Long a, - FT_Long b ) - { - FT_Long s; - FT_ULong ua, ub; - - - if ( a == 0 || b == 0x10000L ) - return a; - - s = a; a = FT_ABS(a); - s ^= b; b = FT_ABS(b); - - ua = (FT_ULong)a; - ub = (FT_ULong)b; - - if ( ua <= 2048 && ub <= 1048576L ) - { - ua = ( ua * ub + 0x8000L ) >> 16; - } - else - { - FT_ULong al = ua & 0xFFFFL; - - - ua = ( ua >> 16 ) * ub + al * ( ub >> 16 ) + - ( ( al * ( ub & 0xFFFFL ) + 0x8000L ) >> 16 ); - } - - return ( s < 0 ? -(FT_Long)ua : (FT_Long)ua ); - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Long ) - FT_DivFix( FT_Long a, - FT_Long b ) - { - FT_Int32 s; - FT_UInt32 q; - - - s = a; a = FT_ABS(a); - s ^= b; b = FT_ABS(b); - - if ( b == 0 ) - { - /* check for division by 0 */ - q = 0x7FFFFFFFL; - } - else if ( ( a >> 16 ) == 0 ) - { - /* compute result directly */ - q = (FT_UInt32)( (a << 16) + (b >> 1) ) / (FT_UInt32)b; - } - else - { - /* we need more bits; we have to do it by hand */ - FT_Int64 temp, temp2; - - temp.hi = (FT_Int32) (a >> 16); - temp.lo = (FT_UInt32)(a << 16); - temp2.hi = 0; - temp2.lo = (FT_UInt32)( b >> 1 ); - FT_Add64( &temp, &temp2, &temp ); - q = ft_div64by32( temp.hi, temp.lo, b ); - } - - return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); - } - - - /* documentation is in ftcalc.h */ - - FT_EXPORT_DEF( void ) - FT_MulTo64( FT_Int32 x, - FT_Int32 y, - FT_Int64 *z ) - { - FT_Int32 s; - - - s = x; x = FT_ABS( x ); - s ^= y; y = FT_ABS( y ); - - ft_multo64( x, y, z ); - - if ( s < 0 ) - { - z->lo = (FT_UInt32)-(FT_Int32)z->lo; - z->hi = ~z->hi + !( z->lo ); - } - } - - - /* documentation is in ftcalc.h */ - - /* apparently, the second version of this code is not compiled correctly */ - /* on Mac machines with the MPW C compiler.. tsss, tsss, tss... */ - -#if 1 - - FT_EXPORT_DEF( FT_Int32 ) - FT_Div64by32( FT_Int64* x, - FT_Int32 y ) - { - FT_Int32 s; - FT_UInt32 q, r, i, lo; - - - s = x->hi; - if ( s < 0 ) - { - x->lo = (FT_UInt32)-(FT_Int32)x->lo; - x->hi = ~x->hi + !x->lo; - } - s ^= y; y = FT_ABS( y ); - - /* Shortcut */ - if ( x->hi == 0 ) - { - if ( y > 0 ) - q = x->lo / y; - else - q = 0x7FFFFFFFL; - - return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); - } - - r = x->hi; - lo = x->lo; - - if ( r >= (FT_UInt32)y ) /* we know y is to be treated as unsigned here */ - return ( s < 0 ? 0x80000001UL : 0x7FFFFFFFUL ); - /* Return Max/Min Int32 if division overflow. */ - /* This includes division by zero! */ - q = 0; - for ( i = 0; i < 32; i++ ) - { - r <<= 1; - q <<= 1; - r |= lo >> 31; - - if ( r >= (FT_UInt32)y ) - { - r -= y; - q |= 1; - } - lo <<= 1; - } - - return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); - } - -#else /* 0 */ - - FT_EXPORT_DEF( FT_Int32 ) - FT_Div64by32( FT_Int64* x, - FT_Int32 y ) - { - FT_Int32 s; - FT_UInt32 q; - - - s = x->hi; - if ( s < 0 ) - { - x->lo = (FT_UInt32)-(FT_Int32)x->lo; - x->hi = ~x->hi + !x->lo; - } - s ^= y; y = FT_ABS( y ); - - /* Shortcut */ - if ( x->hi == 0 ) - { - if ( y > 0 ) - q = ( x->lo + ( y >> 1 ) ) / y; - else - q = 0x7FFFFFFFL; - - return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); - } - - q = ft_div64by32( x->hi, x->lo, y ); - - return ( s < 0 ? -(FT_Int32)q : (FT_Int32)q ); - } - -#endif /* 0 */ - - -#endif /* FT_LONG64 */ - - - /* a not-so-fast but working 16.16 fixed point square root function */ - - FT_EXPORT_DEF( FT_Int32 ) - FT_SqrtFixed( FT_Int32 x ) - { - FT_UInt32 root, rem_hi, rem_lo, test_div; - FT_Int count; - - - root = 0; - - if ( x > 0 ) - { - rem_hi = 0; - rem_lo = x; - count = 24; - do - { - rem_hi = ( rem_hi << 2 ) | ( rem_lo >> 30 ); - rem_lo <<= 2; - root <<= 1; - test_div = ( root << 1 ) + 1; - - if ( rem_hi >= test_div ) - { - rem_hi -= test_div; - root += 1; - } - } while ( --count ); - } - - return (FT_Int32)root; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftdbgmem.c b/nx-X11/extras/freetype2/src/base/ftdbgmem.c deleted file mode 100644 index 61227b64a..000000000 --- a/nx-X11/extras/freetype2/src/base/ftdbgmem.c +++ /dev/null @@ -1,763 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftdbgmem.c */ -/* */ -/* Memory debugger (body). */ -/* */ -/* Copyright 2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_MEMORY_H -#include FT_SYSTEM_H -#include FT_ERRORS_H -#include FT_TYPES_H - - -#ifdef FT_DEBUG_MEMORY - - -#include <stdio.h> -#include <stdlib.h> - - - typedef struct FT_MemNodeRec_* FT_MemNode; - typedef struct FT_MemTableRec_* FT_MemTable; - -#define FT_MEM_VAL( addr ) ((FT_ULong)(FT_Pointer)( addr )) - - typedef struct FT_MemNodeRec_ - { - FT_Byte* address; - FT_Long size; /* < 0 if the block was freed */ - - const char* alloc_file_name; - FT_Long alloc_line_no; - - const char* free_file_name; - FT_Long free_line_no; - - FT_MemNode link; - - } FT_MemNodeRec; - - - typedef struct FT_MemTableRec_ - { - FT_ULong size; - FT_ULong nodes; - FT_MemNode* buckets; - - FT_ULong alloc_total; - FT_ULong alloc_current; - FT_ULong alloc_max; - FT_ULong alloc_count; - - FT_Bool bound_total; - FT_ULong alloc_total_max; - - FT_Bool bound_count; - FT_ULong alloc_count_max; - - const char* file_name; - FT_Long line_no; - - FT_Memory memory; - FT_Pointer memory_user; - FT_Alloc_Func alloc; - FT_Free_Func free; - FT_Realloc_Func realloc; - - } FT_MemTableRec; - - -#define FT_MEM_SIZE_MIN 7 -#define FT_MEM_SIZE_MAX 13845163 - -#define FT_FILENAME( x ) ((x) ? (x) : "unknown file") - - - static const FT_UInt ft_mem_primes[] = - { - 7, - 11, - 19, - 37, - 73, - 109, - 163, - 251, - 367, - 557, - 823, - 1237, - 1861, - 2777, - 4177, - 6247, - 9371, - 14057, - 21089, - 31627, - 47431, - 71143, - 106721, - 160073, - 240101, - 360163, - 540217, - 810343, - 1215497, - 1823231, - 2734867, - 4102283, - 6153409, - 9230113, - 13845163, - }; - - - - extern void - ft_mem_debug_panic( const char* fmt, ... ) - { - va_list ap; - - - printf( "FreeType.Debug: " ); - - va_start( ap, fmt ); - vprintf( fmt, ap ); - va_end( ap ); - - printf( "\n" ); - exit( EXIT_FAILURE ); - } - - - static FT_ULong - ft_mem_closest_prime( FT_ULong num ) - { - FT_UInt i; - - - for ( i = 0; - i < sizeof ( ft_mem_primes ) / sizeof ( ft_mem_primes[0] ); i++ ) - if ( ft_mem_primes[i] > num ) - return ft_mem_primes[i]; - - return FT_MEM_SIZE_MAX; - } - - - static FT_Pointer - ft_mem_table_alloc( FT_MemTable table, - FT_Long size ) - { - FT_Memory memory = table->memory; - FT_Pointer block; - - - memory->user = table->memory_user; - block = table->alloc( memory, size ); - memory->user = table; - - return block; - } - - - static void - ft_mem_table_free( FT_MemTable table, - FT_Pointer block ) - { - FT_Memory memory = table->memory; - - - memory->user = table->memory_user; - table->free( memory, block ); - memory->user = table; - } - - - static void - ft_mem_table_resize( FT_MemTable table ) - { - FT_ULong new_size; - - - new_size = ft_mem_closest_prime( table->nodes ); - if ( new_size != table->size ) - { - FT_MemNode* new_buckets ; - FT_ULong i; - - - new_buckets = (FT_MemNode *) - ft_mem_table_alloc( table, - new_size * sizeof ( FT_MemNode ) ); - if ( new_buckets == NULL ) - return; - - FT_MEM_ZERO( new_buckets, sizeof ( FT_MemNode ) * new_size ); - - for ( i = 0; i < table->size; i++ ) - { - FT_MemNode node, next, *pnode; - FT_ULong hash; - - - node = table->buckets[i]; - while ( node ) - { - next = node->link; - hash = FT_MEM_VAL( node->address ) % new_size; - pnode = new_buckets + hash; - - node->link = pnode[0]; - pnode[0] = node; - - node = next; - } - } - - if ( table->buckets ) - ft_mem_table_free( table, table->buckets ); - - table->buckets = new_buckets; - table->size = new_size; - } - } - - - static FT_MemTable - ft_mem_table_new( FT_Memory memory ) - { - FT_MemTable table; - - - table = (FT_MemTable)memory->alloc( memory, sizeof ( *table ) ); - if ( table == NULL ) - goto Exit; - - FT_MEM_ZERO( table, sizeof ( *table ) ); - - table->size = FT_MEM_SIZE_MIN; - table->nodes = 0; - - table->memory = memory; - - table->memory_user = memory->user; - - table->alloc = memory->alloc; - table->realloc = memory->realloc; - table->free = memory->free; - - table->buckets = (FT_MemNode *) - memory->alloc( memory, - table->size * sizeof ( FT_MemNode ) ); - if ( table->buckets ) - FT_MEM_ZERO( table->buckets, sizeof ( FT_MemNode ) * table->size ); - else - { - memory->free( memory, table ); - table = NULL; - } - - Exit: - return table; - } - - - static void - ft_mem_table_destroy( FT_MemTable table ) - { - FT_ULong i; - - - if ( table ) - { - FT_Long leak_count = 0; - FT_ULong leaks = 0; - - - for ( i = 0; i < table->size; i++ ) - { - FT_MemNode *pnode = table->buckets + i, next, node = *pnode; - - - while ( node ) - { - next = node->link; - node->link = 0; - - if ( node->size > 0 ) - { - printf( - "leaked memory block at address %p, size %8ld in (%s:%ld)\n", - node->address, node->size, - FT_FILENAME( node->alloc_file_name ), - node->alloc_line_no ); - - leak_count++; - leaks += node->size; - - ft_mem_table_free( table, node->address ); - } - - node->address = NULL; - node->size = 0; - - free( node ); - node = next; - } - table->buckets[i] = 0; - } - ft_mem_table_free( table, table->buckets ); - table->buckets = NULL; - - table->size = 0; - table->nodes = 0; - - printf( - "FreeType: total memory allocations = %ld\n", table->alloc_total ); - printf( - "FreeType: maximum memory footprint = %ld\n", table->alloc_max ); - - free( table ); - - if ( leak_count > 0 ) - ft_mem_debug_panic( - "FreeType: %ld bytes of memory leaked in %ld blocks\n", - leaks, leak_count ); - printf( "FreeType: No memory leaks detected!\n" ); - } - } - - - static FT_MemNode* - ft_mem_table_get_nodep( FT_MemTable table, - FT_Byte* address ) - { - FT_ULong hash; - FT_MemNode *pnode, node; - - - hash = FT_MEM_VAL( address ); - pnode = table->buckets + ( hash % table->size ); - - for (;;) - { - node = pnode[0]; - if ( !node ) - break; - - if ( node->address == address ) - break; - - pnode = &node->link; - } - return pnode; - } - - - static void - ft_mem_table_set( FT_MemTable table, - FT_Byte* address, - FT_ULong size ) - { - FT_MemNode *pnode, node; - - - if ( table ) - { - pnode = ft_mem_table_get_nodep( table, address ); - node = *pnode; - if ( node ) - { - if ( node->size < 0 ) - { - /* this block was already freed. This means that our memory is */ - /* now completely corrupted! */ - ft_mem_debug_panic( - "memory heap corrupted (allocating freed block)" ); - } - else - { - /* this block was already allocated. This means that our memory */ - /* is also corrupted! */ - ft_mem_debug_panic( - "memory heap corrupted (re-allocating allocated block)" ); - } - } - - /* we need to create a new node in this table */ - node = (FT_MemNode)ft_mem_table_alloc( table, sizeof ( *node ) ); - if ( node == NULL ) - ft_mem_debug_panic( "not enough memory to run memory tests" ); - - node->address = address; - node->size = size; - - node->alloc_file_name = table->file_name; - node->alloc_line_no = table->line_no; - - node->free_file_name = NULL; - node->free_line_no = 0; - - node->link = pnode[0]; - - pnode[0] = node; - table->nodes++; - - table->alloc_total += size; - table->alloc_current += size; - if ( table->alloc_current > table->alloc_max ) - table->alloc_max = table->alloc_current; - - if ( table->nodes * 3 < table->size || - table->size * 3 < table->nodes ) - ft_mem_table_resize( table ); - } - } - - - static void - ft_mem_table_remove( FT_MemTable table, - FT_Byte* address ) - { - if ( table ) - { - FT_MemNode *pnode, node; - - - pnode = ft_mem_table_get_nodep( table, address ); - node = *pnode; - if ( node ) - { - if ( node->size < 0 ) - ft_mem_debug_panic( - "freeing memory block at %p more than once at (%s:%ld)\n" - "block allocated at (%s:%ld) and released at (%s:%ld)", - address, - FT_FILENAME( table->file_name ), table->line_no, - FT_FILENAME( node->alloc_file_name ), node->alloc_line_no, - FT_FILENAME( node->free_file_name ), node->free_line_no ); - - /* we simply invert the node's size to indicate that the node */ - /* was freed. We also change its contents. */ - FT_MEM_SET( address, 0xF3, node->size ); - - table->alloc_current -= node->size; - node->size = -node->size; - node->free_file_name = table->file_name; - node->free_line_no = table->line_no; - } - else - ft_mem_debug_panic( - "trying to free unknown block at %p in (%s:%ld)\n", - address, - FT_FILENAME( table->file_name ), table->line_no ); - } - } - - - extern FT_Pointer - ft_mem_debug_alloc( FT_Memory memory, - FT_Long size ) - { - FT_MemTable table = (FT_MemTable)memory->user; - FT_Byte* block; - - - if ( size <= 0 ) - ft_mem_debug_panic( "negative block size allocation (%ld)", size ); - - /* return NULL if the maximum number of allocations was reached */ - if ( table->bound_count && - table->alloc_count >= table->alloc_count_max ) - return NULL; - - /* return NULL if this allocation would overflow the maximum heap size */ - if ( table->bound_total && - table->alloc_current + (FT_ULong)size > table->alloc_total_max ) - return NULL; - - block = (FT_Byte *)ft_mem_table_alloc( table, size ); - if ( block ) - ft_mem_table_set( table, block, (FT_ULong)size ); - - table->alloc_count++; - - table->file_name = NULL; - table->line_no = 0; - - return (FT_Pointer) block; - } - - - extern void - ft_mem_debug_free( FT_Memory memory, - FT_Pointer block ) - { - FT_MemTable table = (FT_MemTable)memory->user; - - - if ( block == NULL ) - ft_mem_debug_panic( "trying to free NULL in (%s:%ld)", - FT_FILENAME( table->file_name ), - table->line_no ); - - ft_mem_table_remove( table, (FT_Byte*)block ); - - /* we never really free the block */ - table->file_name = NULL; - table->line_no = 0; - } - - - extern FT_Pointer - ft_mem_debug_realloc( FT_Memory memory, - FT_Long cur_size, - FT_Long new_size, - FT_Pointer block ) - { - FT_MemTable table = (FT_MemTable)memory->user; - FT_MemNode node, *pnode; - FT_Pointer new_block; - - const char* file_name = FT_FILENAME( table->file_name ); - FT_Long line_no = table->line_no; - - - /* the following is valid according to ANSI C */ -#if 0 - if ( block == NULL || cur_size == 0 ) - ft_mem_debug_panic( "trying to reallocate NULL in (%s:%ld)", - file_name, line_no ); -#endif - - /* while the following is allowed in ANSI C also, we abort since */ - /* such code shouldn't be in FreeType... */ - if ( new_size <= 0 ) - ft_mem_debug_panic( - "trying to reallocate %p to size 0 (current is %ld) in (%s:%ld)", - block, cur_size, file_name, line_no ); - - /* check 'cur_size' value */ - pnode = ft_mem_table_get_nodep( table, (FT_Byte*)block ); - node = *pnode; - if ( !node ) - ft_mem_debug_panic( - "trying to reallocate unknown block at %p in (%s:%ld)", - block, file_name, line_no ); - - if ( node->size <= 0 ) - ft_mem_debug_panic( - "trying to reallocate freed block at %p in (%s:%ld)", - block, file_name, line_no ); - - if ( node->size != cur_size ) - ft_mem_debug_panic( "invalid ft_realloc request for %p. cur_size is " - "%ld instead of %ld in (%s:%ld)", - block, cur_size, node->size, file_name, line_no ); - - new_block = ft_mem_debug_alloc( memory, new_size ); - if ( new_block == NULL ) - return NULL; - - ft_memcpy( new_block, block, cur_size < new_size ? cur_size : new_size ); - - table->file_name = file_name; - table->line_no = line_no; - - ft_mem_debug_free( memory, (FT_Byte*)block ); - - return new_block; - } - - - extern FT_Int - ft_mem_debug_init( FT_Memory memory ) - { - FT_MemTable table; - FT_Int result = 0; - - - if ( getenv( "FT2_DEBUG_MEMORY" ) ) - { - table = ft_mem_table_new( memory ); - if ( table ) - { - const char* p; - - memory->user = table; - memory->alloc = ft_mem_debug_alloc; - memory->realloc = ft_mem_debug_realloc; - memory->free = ft_mem_debug_free; - - p = getenv( "FT2_ALLOC_TOTAL_MAX" ); - if ( p != NULL ) - { - FT_Long total_max = ft_atol(p); - - if ( total_max > 0 ) - { - table->bound_total = 1; - table->alloc_total_max = (FT_ULong) total_max; - } - } - - p = getenv( "FT2_ALLOC_COUNT_MAX" ); - if ( p != NULL ) - { - FT_Long total_count = ft_atol(p); - - if ( total_count > 0 ) - { - table->bound_count = 1; - table->alloc_count_max = (FT_ULong) total_count; - } - } - - result = 1; - } - } - return result; - } - - - extern void - ft_mem_debug_done( FT_Memory memory ) - { - FT_MemTable table = (FT_MemTable)memory->user; - - - if ( table ) - { - memory->free = table->free; - memory->realloc = table->realloc; - memory->alloc = table->alloc; - - ft_mem_table_destroy( table ); - memory->user = NULL; - } - } - - - FT_BASE_DEF( FT_Error ) - FT_Alloc_Debug( FT_Memory memory, - FT_Long size, - void* *P, - const char* file_name, - FT_Long line_no ) - { - FT_MemTable table = (FT_MemTable)memory->user; - - - if ( table ) - { - table->file_name = file_name; - table->line_no = line_no; - } - return FT_Alloc( memory, size, P ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Realloc_Debug( FT_Memory memory, - FT_Long current, - FT_Long size, - void* *P, - const char* file_name, - FT_Long line_no ) - { - FT_MemTable table = (FT_MemTable)memory->user; - - - if ( table ) - { - table->file_name = file_name; - table->line_no = line_no; - } - return FT_Realloc( memory, current, size, P ); - } - - - FT_BASE_DEF( FT_Error ) - FT_QAlloc_Debug( FT_Memory memory, - FT_Long size, - void* *P, - const char* file_name, - FT_Long line_no ) - { - FT_MemTable table = (FT_MemTable)memory->user; - - - if ( table ) - { - table->file_name = file_name; - table->line_no = line_no; - } - - return FT_QAlloc( memory, size, P ); - } - - - FT_BASE_DEF( FT_Error ) - FT_QRealloc_Debug( FT_Memory memory, - FT_Long current, - FT_Long size, - void* *P, - const char* file_name, - FT_Long line_no ) - { - FT_MemTable table = (FT_MemTable)memory->user; - - - if ( table ) - { - table->file_name = file_name; - table->line_no = line_no; - } - return FT_QRealloc( memory, current, size, P ); - } - - - FT_BASE_DEF( void ) - FT_Free_Debug( FT_Memory memory, - FT_Pointer block, - const char* file_name, - FT_Long line_no ) - { - FT_MemTable table = (FT_MemTable)memory->user; - - - if ( table ) - { - table->file_name = file_name; - table->line_no = line_no; - } - FT_Free( memory, (void **)block ); - } - - -#else /* !FT_DEBUG_MEMORY */ - - /* ANSI C doesn't like empty source files */ - const FT_Byte _debug_mem_dummy = 0; - -#endif /* !FT_DEBUG_MEMORY */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftdebug.c b/nx-X11/extras/freetype2/src/base/ftdebug.c deleted file mode 100644 index a6c18412b..000000000 --- a/nx-X11/extras/freetype2/src/base/ftdebug.c +++ /dev/null @@ -1,242 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftdebug.c */ -/* */ -/* Debugging and logging component (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This component contains various macros and functions used to ease the */ - /* debugging of the FreeType engine. Its main purpose is in assertion */ - /* checking, tracing, and error detection. */ - /* */ - /* There are now three debugging modes: */ - /* */ - /* - trace mode */ - /* */ - /* Error and trace messages are sent to the log file (which can be the */ - /* standard error output). */ - /* */ - /* - error mode */ - /* */ - /* Only error messages are generated. */ - /* */ - /* - release mode: */ - /* */ - /* No error message is sent or generated. The code is free from any */ - /* debugging parts. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_DEBUG_H - - -#if defined( FT_DEBUG_LEVEL_ERROR ) - - FT_EXPORT_DEF( void ) - FT_Message( const char* fmt, ... ) - { - va_list ap; - - - va_start( ap, fmt ); - vprintf( fmt, ap ); - va_end( ap ); - } - - - FT_EXPORT_DEF( void ) - FT_Panic( const char* fmt, ... ) - { - va_list ap; - - - va_start( ap, fmt ); - vprintf( fmt, ap ); - va_end( ap ); - - exit( EXIT_FAILURE ); - } - -#endif /* FT_DEBUG_LEVEL_ERROR */ - - - -#ifdef FT_DEBUG_LEVEL_TRACE - - /* array of trace levels, initialized to 0 */ - int ft_trace_levels[trace_count]; - - - /* define array of trace toggle names */ -#define FT_TRACE_DEF( x ) #x , - - static const char* ft_trace_toggles[trace_count + 1] = - { -#include FT_INTERNAL_TRACE_H - NULL - }; - -#undef FT_TRACE_DEF - - - /* documentation is in ftdebug.h */ - - FT_EXPORT_DEF( FT_Int ) - FT_Trace_Get_Count( void ) - { - return trace_count; - } - - - /* documentation is in ftdebug.h */ - - FT_EXPORT_DEF( const char * ) - FT_Trace_Get_Name( FT_Int idx ) - { - int max = FT_Trace_Get_Count(); - - - if ( idx < max ) - return ft_trace_toggles[idx]; - else - return NULL; - } - - - /*************************************************************************/ - /* */ - /* Initialize the tracing sub-system. This is done by retrieving the */ - /* value of the `FT2_DEBUG' environment variable. It must be a list of */ - /* toggles, separated by spaces, `;', or `,'. Example: */ - /* */ - /* export FT2_DEBUG="any:3 memory:6 stream:5" */ - /* */ - /* This requests that all levels be set to 3, except the trace level for */ - /* the memory and stream components which are set to 6 and 5, */ - /* respectively. */ - /* */ - /* See the file <include/freetype/internal/fttrace.h> for details of the */ - /* available toggle names. */ - /* */ - /* The level must be between 0 and 6; 0 means quiet (except for serious */ - /* runtime errors), and 6 means _very_ verbose. */ - /* */ - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - const char* ft2_debug = getenv( "FT2_DEBUG" ); - - - if ( ft2_debug ) - { - const char* p = ft2_debug; - const char* q; - - - for ( ; *p; p++ ) - { - /* skip leading whitespace and separators */ - if ( *p == ' ' || *p == '\t' || *p == ',' || *p == ';' || *p == '=' ) - continue; - - /* read toggle name, followed by ':' */ - q = p; - while ( *p && *p != ':' ) - p++; - - if ( *p == ':' && p > q ) - { - FT_Int n, i, len = (FT_Int)( p - q ); - FT_Int level = -1, found = -1; - - - for ( n = 0; n < trace_count; n++ ) - { - const char* toggle = ft_trace_toggles[n]; - - - for ( i = 0; i < len; i++ ) - { - if ( toggle[i] != q[i] ) - break; - } - - if ( i == len && toggle[i] == 0 ) - { - found = n; - break; - } - } - - /* read level */ - p++; - if ( *p ) - { - level = *p++ - '0'; - if ( level < 0 || level > 6 ) - level = -1; - } - - if ( found >= 0 && level >= 0 ) - { - if ( found == trace_any ) - { - /* special case for `any' */ - for ( n = 0; n < trace_count; n++ ) - ft_trace_levels[n] = level; - } - else - ft_trace_levels[found] = level; - } - } - } - } - } - - -#else /* !FT_DEBUG_LEVEL_TRACE */ - - - FT_BASE_DEF( void ) - ft_debug_init( void ) - { - /* nothing */ - } - - - FT_EXPORT_DEF( FT_Int ) - FT_Trace_Get_Count( void ) - { - return 0; - } - - - FT_EXPORT_DEF( const char * ) - FT_Trace_Get_Name( FT_Int idx ) - { - FT_UNUSED( idx ); - - return NULL; - } - - -#endif /* !FT_DEBUG_LEVEL_TRACE */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftgloadr.c b/nx-X11/extras/freetype2/src/base/ftgloadr.c deleted file mode 100644 index 94a070673..000000000 --- a/nx-X11/extras/freetype2/src/base/ftgloadr.c +++ /dev/null @@ -1,362 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgloadr.c */ -/* */ -/* The FreeType glyph loader (body). */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_GLYPH_LOADER_H -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_OBJECTS_H - -#undef FT_COMPONENT -#define FT_COMPONENT trace_gloader - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** *****/ - /***** G L Y P H L O A D E R *****/ - /***** *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* The glyph loader is a simple object which is used to load a set of */ - /* glyphs easily. It is critical for the correct loading of composites. */ - /* */ - /* Ideally, one can see it as a stack of abstract `glyph' objects. */ - /* */ - /* loader.base Is really the bottom of the stack. It describes a */ - /* single glyph image made of the juxtaposition of */ - /* several glyphs (those `in the stack'). */ - /* */ - /* loader.current Describes the top of the stack, on which a new */ - /* glyph can be loaded. */ - /* */ - /* Rewind Clears the stack. */ - /* Prepare Set up `loader.current' for addition of a new glyph */ - /* image. */ - /* Add Add the `current' glyph image to the `base' one, */ - /* and prepare for another one. */ - /* */ - /* The glyph loader is now a base object. Each driver used to */ - /* re-implement it in one way or the other, which wasted code and */ - /* energy. */ - /* */ - /*************************************************************************/ - - - /* create a new glyph loader */ - FT_BASE_DEF( FT_Error ) - FT_GlyphLoader_New( FT_Memory memory, - FT_GlyphLoader *aloader ) - { - FT_GlyphLoader loader; - FT_Error error; - - - if ( !FT_NEW( loader ) ) - { - loader->memory = memory; - *aloader = loader; - } - return error; - } - - - /* rewind the glyph loader - reset counters to 0 */ - FT_BASE_DEF( void ) - FT_GlyphLoader_Rewind( FT_GlyphLoader loader ) - { - FT_GlyphLoad base = &loader->base; - FT_GlyphLoad current = &loader->current; - - - base->outline.n_points = 0; - base->outline.n_contours = 0; - base->num_subglyphs = 0; - - *current = *base; - } - - - /* reset the glyph loader, frees all allocated tables */ - /* and starts from zero */ - FT_BASE_DEF( void ) - FT_GlyphLoader_Reset( FT_GlyphLoader loader ) - { - FT_Memory memory = loader->memory; - - - FT_FREE( loader->base.outline.points ); - FT_FREE( loader->base.outline.tags ); - FT_FREE( loader->base.outline.contours ); - FT_FREE( loader->base.extra_points ); - FT_FREE( loader->base.subglyphs ); - - loader->max_points = 0; - loader->max_contours = 0; - loader->max_subglyphs = 0; - - FT_GlyphLoader_Rewind( loader ); - } - - - /* delete a glyph loader */ - FT_BASE_DEF( void ) - FT_GlyphLoader_Done( FT_GlyphLoader loader ) - { - if ( loader ) - { - FT_Memory memory = loader->memory; - - - FT_GlyphLoader_Reset( loader ); - FT_FREE( loader ); - } - } - - - /* re-adjust the `current' outline fields */ - static void - FT_GlyphLoader_Adjust_Points( FT_GlyphLoader loader ) - { - FT_Outline* base = &loader->base.outline; - FT_Outline* current = &loader->current.outline; - - - current->points = base->points + base->n_points; - current->tags = base->tags + base->n_points; - current->contours = base->contours + base->n_contours; - - /* handle extra points table - if any */ - if ( loader->use_extra ) - loader->current.extra_points = - loader->base.extra_points + base->n_points; - } - - - FT_BASE_DEF( FT_Error ) - FT_GlyphLoader_CreateExtra( FT_GlyphLoader loader ) - { - FT_Error error; - FT_Memory memory = loader->memory; - - - if ( !FT_NEW_ARRAY( loader->base.extra_points, loader->max_points ) ) - { - loader->use_extra = 1; - FT_GlyphLoader_Adjust_Points( loader ); - } - return error; - } - - - /* re-adjust the `current' subglyphs field */ - static void - FT_GlyphLoader_Adjust_Subglyphs( FT_GlyphLoader loader ) - { - FT_GlyphLoad base = &loader->base; - FT_GlyphLoad current = &loader->current; - - - current->subglyphs = base->subglyphs + base->num_subglyphs; - } - - - /* Ensure that we can add `n_points' and `n_contours' to our glyph. */ - /* This function reallocates its outline tables if necessary. Note that */ - /* it DOESN'T change the number of points within the loader! */ - /* */ - FT_BASE_DEF( FT_Error ) - FT_GlyphLoader_CheckPoints( FT_GlyphLoader loader, - FT_UInt n_points, - FT_UInt n_contours ) - { - FT_Memory memory = loader->memory; - FT_Error error = FT_Err_Ok; - FT_Outline* base = &loader->base.outline; - FT_Outline* current = &loader->current.outline; - FT_Bool adjust = 1; - - FT_UInt new_max, old_max; - - - /* check points & tags */ - new_max = base->n_points + current->n_points + n_points; - old_max = loader->max_points; - - if ( new_max > old_max ) - { - new_max = FT_PAD_CEIL( new_max, 8 ); - - if ( FT_RENEW_ARRAY( base->points, old_max, new_max ) || - FT_RENEW_ARRAY( base->tags, old_max, new_max ) ) - goto Exit; - - if ( loader->use_extra && - FT_RENEW_ARRAY( loader->base.extra_points, old_max, new_max ) ) - goto Exit; - - adjust = 1; - loader->max_points = new_max; - } - - /* check contours */ - old_max = loader->max_contours; - new_max = base->n_contours + current->n_contours + - n_contours; - if ( new_max > old_max ) - { - new_max = FT_PAD_CEIL( new_max, 4 ); - if ( FT_RENEW_ARRAY( base->contours, old_max, new_max ) ) - goto Exit; - - adjust = 1; - loader->max_contours = new_max; - } - - if ( adjust ) - FT_GlyphLoader_Adjust_Points( loader ); - - Exit: - return error; - } - - - /* Ensure that we can add `n_subglyphs' to our glyph. this function */ - /* reallocates its subglyphs table if necessary. Note that it DOES */ - /* NOT change the number of subglyphs within the loader! */ - /* */ - FT_BASE_DEF( FT_Error ) - FT_GlyphLoader_CheckSubGlyphs( FT_GlyphLoader loader, - FT_UInt n_subs ) - { - FT_Memory memory = loader->memory; - FT_Error error = FT_Err_Ok; - FT_UInt new_max, old_max; - - FT_GlyphLoad base = &loader->base; - FT_GlyphLoad current = &loader->current; - - - new_max = base->num_subglyphs + current->num_subglyphs + n_subs; - old_max = loader->max_subglyphs; - if ( new_max > old_max ) - { - new_max = FT_PAD_CEIL( new_max, 2 ); - if ( FT_RENEW_ARRAY( base->subglyphs, old_max, new_max ) ) - goto Exit; - - loader->max_subglyphs = new_max; - - FT_GlyphLoader_Adjust_Subglyphs( loader ); - } - - Exit: - return error; - } - - - /* prepare loader for the addition of a new glyph on top of the base one */ - FT_BASE_DEF( void ) - FT_GlyphLoader_Prepare( FT_GlyphLoader loader ) - { - FT_GlyphLoad current = &loader->current; - - - current->outline.n_points = 0; - current->outline.n_contours = 0; - current->num_subglyphs = 0; - - FT_GlyphLoader_Adjust_Points ( loader ); - FT_GlyphLoader_Adjust_Subglyphs( loader ); - } - - - /* add current glyph to the base image - and prepare for another */ - FT_BASE_DEF( void ) - FT_GlyphLoader_Add( FT_GlyphLoader loader ) - { - FT_GlyphLoad base = &loader->base; - FT_GlyphLoad current = &loader->current; - - FT_UInt n_curr_contours = current->outline.n_contours; - FT_UInt n_base_points = base->outline.n_points; - FT_UInt n; - - - base->outline.n_points = - (short)( base->outline.n_points + current->outline.n_points ); - base->outline.n_contours = - (short)( base->outline.n_contours + current->outline.n_contours ); - - base->num_subglyphs += current->num_subglyphs; - - /* adjust contours count in newest outline */ - for ( n = 0; n < n_curr_contours; n++ ) - current->outline.contours[n] = - (short)( current->outline.contours[n] + n_base_points ); - - /* prepare for another new glyph image */ - FT_GlyphLoader_Prepare( loader ); - } - - - FT_BASE_DEF( FT_Error ) - FT_GlyphLoader_CopyPoints( FT_GlyphLoader target, - FT_GlyphLoader source ) - { - FT_Error error; - FT_UInt num_points = source->base.outline.n_points; - FT_UInt num_contours = source->base.outline.n_contours; - - - error = FT_GlyphLoader_CheckPoints( target, num_points, num_contours ); - if ( !error ) - { - FT_Outline* out = &target->base.outline; - FT_Outline* in = &source->base.outline; - - - FT_ARRAY_COPY( out->points, in->points, - num_points ); - FT_ARRAY_COPY( out->tags, in->tags, - num_points ); - FT_ARRAY_COPY( out->contours, in->contours, - num_contours ); - - /* do we need to copy the extra points? */ - if ( target->use_extra && source->use_extra ) - FT_ARRAY_COPY( target->base.extra_points, source->base.extra_points, - num_points ); - - out->n_points = (short)num_points; - out->n_contours = (short)num_contours; - - FT_GlyphLoader_Adjust_Points( target ); - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftglyph.c b/nx-X11/extras/freetype2/src/base/ftglyph.c deleted file mode 100644 index 1b22ab6b3..000000000 --- a/nx-X11/extras/freetype2/src/base/ftglyph.c +++ /dev/null @@ -1,712 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftglyph.c */ -/* */ -/* FreeType convenience functions to handle glyphs (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* This file contains the definition of several convenience functions */ - /* that can be used by client applications to easily retrieve glyph */ - /* bitmaps and outlines from a given face. */ - /* */ - /* These functions should be optional if you are writing a font server */ - /* or text layout engine on top of FreeType. However, they are pretty */ - /* handy for many other simple uses of the library. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_GLYPH_H -#include FT_OUTLINE_H -#include FT_INTERNAL_OBJECTS_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_glyph - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** Convenience functions ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( void ) - FT_Matrix_Multiply( const FT_Matrix* a, - FT_Matrix *b ) - { - FT_Fixed xx, xy, yx, yy; - - - if ( !a || !b ) - return; - - xx = FT_MulFix( a->xx, b->xx ) + FT_MulFix( a->xy, b->yx ); - xy = FT_MulFix( a->xx, b->xy ) + FT_MulFix( a->xy, b->yy ); - yx = FT_MulFix( a->yx, b->xx ) + FT_MulFix( a->yy, b->yx ); - yy = FT_MulFix( a->yx, b->xy ) + FT_MulFix( a->yy, b->yy ); - - b->xx = xx; b->xy = xy; - b->yx = yx; b->yy = yy; - } - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Matrix_Invert( FT_Matrix* matrix ) - { - FT_Pos delta, xx, yy; - - - if ( !matrix ) - return FT_Err_Invalid_Argument; - - /* compute discriminant */ - delta = FT_MulFix( matrix->xx, matrix->yy ) - - FT_MulFix( matrix->xy, matrix->yx ); - - if ( !delta ) - return FT_Err_Invalid_Argument; /* matrix can't be inverted */ - - matrix->xy = - FT_DivFix( matrix->xy, delta ); - matrix->yx = - FT_DivFix( matrix->yx, delta ); - - xx = matrix->xx; - yy = matrix->yy; - - matrix->xx = FT_DivFix( yy, delta ); - matrix->yy = FT_DivFix( xx, delta ); - - return FT_Err_Ok; - } - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** FT_BitmapGlyph support ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - static FT_Error - ft_bitmap_copy( FT_Memory memory, - FT_Bitmap* source, - FT_Bitmap* target ) - { - FT_Error error; - FT_Int pitch = source->pitch; - FT_ULong size; - - - *target = *source; - - if ( pitch < 0 ) - pitch = -pitch; - - size = (FT_ULong)( pitch * source->rows ); - - if ( !FT_ALLOC( target->buffer, size ) ) - FT_MEM_COPY( target->buffer, source->buffer, size ); - - return error; - } - - - FT_CALLBACK_DEF( FT_Error ) - ft_bitmap_glyph_init( FT_Glyph bitmap_glyph, - FT_GlyphSlot slot ) - { - FT_BitmapGlyph glyph = (FT_BitmapGlyph)bitmap_glyph; - FT_Error error = FT_Err_Ok; - FT_Library library = FT_GLYPH( glyph )->library; - FT_Memory memory = library->memory; - - - if ( slot->format != FT_GLYPH_FORMAT_BITMAP ) - { - error = FT_Err_Invalid_Glyph_Format; - goto Exit; - } - - /* grab the bitmap in the slot - do lazy copying whenever possible */ - glyph->bitmap = slot->bitmap; - glyph->left = slot->bitmap_left; - glyph->top = slot->bitmap_top; - - if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) - slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP; - else - { - /* copy the bitmap into a new buffer */ - error = ft_bitmap_copy( memory, &slot->bitmap, &glyph->bitmap ); - } - - Exit: - return error; - } - - - FT_CALLBACK_DEF( FT_Error ) - ft_bitmap_glyph_copy( FT_Glyph bitmap_source, - FT_Glyph bitmap_target ) - { - FT_BitmapGlyph source = (FT_BitmapGlyph)bitmap_source; - FT_BitmapGlyph target = (FT_BitmapGlyph)bitmap_target; - FT_Memory memory = bitmap_source->library->memory; - - - target->left = source->left; - target->top = source->top; - - return ft_bitmap_copy( memory, &source->bitmap, &target->bitmap ); - } - - - FT_CALLBACK_DEF( void ) - ft_bitmap_glyph_done( FT_Glyph bitmap_glyph ) - { - FT_BitmapGlyph glyph = (FT_BitmapGlyph)bitmap_glyph; - FT_Memory memory = FT_GLYPH( glyph )->library->memory; - - - FT_FREE( glyph->bitmap.buffer ); - } - - - FT_CALLBACK_DEF( void ) - ft_bitmap_glyph_bbox( FT_Glyph bitmap_glyph, - FT_BBox* cbox ) - { - FT_BitmapGlyph glyph = (FT_BitmapGlyph)bitmap_glyph; - - - cbox->xMin = glyph->left << 6; - cbox->xMax = cbox->xMin + ( glyph->bitmap.width << 6 ); - cbox->yMax = glyph->top << 6; - cbox->yMin = cbox->yMax - ( glyph->bitmap.rows << 6 ); - } - - - FT_CALLBACK_TABLE_DEF - const FT_Glyph_Class ft_bitmap_glyph_class = - { - sizeof ( FT_BitmapGlyphRec ), - FT_GLYPH_FORMAT_BITMAP, - - ft_bitmap_glyph_init, - ft_bitmap_glyph_done, - ft_bitmap_glyph_copy, - 0, /* FT_Glyph_TransformFunc */ - ft_bitmap_glyph_bbox, - 0 /* FT_Glyph_PrepareFunc */ - }; - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** FT_OutlineGlyph support ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_CALLBACK_DEF( FT_Error ) - ft_outline_glyph_init( FT_Glyph outline_glyph, - FT_GlyphSlot slot ) - { - FT_OutlineGlyph glyph = (FT_OutlineGlyph)outline_glyph; - FT_Error error = FT_Err_Ok; - FT_Library library = FT_GLYPH( glyph )->library; - FT_Outline* source = &slot->outline; - FT_Outline* target = &glyph->outline; - - - /* check format in glyph slot */ - if ( slot->format != FT_GLYPH_FORMAT_OUTLINE ) - { - error = FT_Err_Invalid_Glyph_Format; - goto Exit; - } - - /* allocate new outline */ - error = FT_Outline_New( library, source->n_points, source->n_contours, - &glyph->outline ); - if ( error ) - goto Exit; - - /* copy it */ - FT_ARRAY_COPY( target->points, source->points, source->n_points ); - - FT_ARRAY_COPY( target->tags, source->tags, source->n_points ); - - FT_ARRAY_COPY( target->contours, source->contours, source->n_contours ); - - /* copy all flags, except the `FT_OUTLINE_OWNER' one */ - target->flags = source->flags | FT_OUTLINE_OWNER; - - Exit: - return error; - } - - - FT_CALLBACK_DEF( void ) - ft_outline_glyph_done( FT_Glyph outline_glyph ) - { - FT_OutlineGlyph glyph = (FT_OutlineGlyph)outline_glyph; - - - FT_Outline_Done( FT_GLYPH( glyph )->library, &glyph->outline ); - } - - - FT_CALLBACK_DEF( FT_Error ) - ft_outline_glyph_copy( FT_Glyph outline_source, - FT_Glyph outline_target ) - { - FT_OutlineGlyph source = (FT_OutlineGlyph)outline_source; - FT_OutlineGlyph target = (FT_OutlineGlyph)outline_target; - FT_Error error; - FT_Library library = FT_GLYPH( source )->library; - - - error = FT_Outline_New( library, source->outline.n_points, - source->outline.n_contours, &target->outline ); - if ( !error ) - FT_Outline_Copy( &source->outline, &target->outline ); - - return error; - } - - - FT_CALLBACK_DEF( void ) - ft_outline_glyph_transform( FT_Glyph outline_glyph, - FT_Matrix* matrix, - FT_Vector* delta ) - { - FT_OutlineGlyph glyph = (FT_OutlineGlyph)outline_glyph; - - - if ( matrix ) - FT_Outline_Transform( &glyph->outline, matrix ); - - if ( delta ) - FT_Outline_Translate( &glyph->outline, delta->x, delta->y ); - } - - - FT_CALLBACK_DEF( void ) - ft_outline_glyph_bbox( FT_Glyph outline_glyph, - FT_BBox* bbox ) - { - FT_OutlineGlyph glyph = (FT_OutlineGlyph)outline_glyph; - - - FT_Outline_Get_CBox( &glyph->outline, bbox ); - } - - - FT_CALLBACK_DEF( FT_Error ) - ft_outline_glyph_prepare( FT_Glyph outline_glyph, - FT_GlyphSlot slot ) - { - FT_OutlineGlyph glyph = (FT_OutlineGlyph)outline_glyph; - - - slot->format = FT_GLYPH_FORMAT_OUTLINE; - slot->outline = glyph->outline; - slot->outline.flags &= ~FT_OUTLINE_OWNER; - - return FT_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const FT_Glyph_Class ft_outline_glyph_class = - { - sizeof ( FT_OutlineGlyphRec ), - FT_GLYPH_FORMAT_OUTLINE, - - ft_outline_glyph_init, - ft_outline_glyph_done, - ft_outline_glyph_copy, - ft_outline_glyph_transform, - ft_outline_glyph_bbox, - ft_outline_glyph_prepare - }; - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** FT_Glyph class and API ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - static FT_Error - ft_new_glyph( FT_Library library, - const FT_Glyph_Class* clazz, - FT_Glyph* aglyph ) - { - FT_Memory memory = library->memory; - FT_Error error; - FT_Glyph glyph; - - - *aglyph = 0; - - if ( !FT_ALLOC( glyph, clazz->glyph_size ) ) - { - glyph->library = library; - glyph->clazz = clazz; - glyph->format = clazz->glyph_format; - - *aglyph = glyph; - } - - return error; - } - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Glyph_Copy( FT_Glyph source, - FT_Glyph *target ) - { - FT_Glyph copy; - FT_Error error; - const FT_Glyph_Class* clazz; - - - /* check arguments */ - if ( !target || !source || !source->clazz ) - { - error = FT_Err_Invalid_Argument; - goto Exit; - } - - *target = 0; - - clazz = source->clazz; - error = ft_new_glyph( source->library, clazz, © ); - if ( error ) - goto Exit; - - copy->advance = source->advance; - copy->format = source->format; - - if ( clazz->glyph_copy ) - error = clazz->glyph_copy( source, copy ); - - if ( error ) - FT_Done_Glyph( copy ); - else - *target = copy; - - Exit: - return error; - } - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Get_Glyph( FT_GlyphSlot slot, - FT_Glyph *aglyph ) - { - FT_Library library; - FT_Error error; - FT_Glyph glyph; - - const FT_Glyph_Class* clazz = 0; - - - if ( !slot ) - return FT_Err_Invalid_Slot_Handle; - - library = slot->library; - - if ( !aglyph ) - return FT_Err_Invalid_Argument; - - /* if it is a bitmap, that's easy :-) */ - if ( slot->format == FT_GLYPH_FORMAT_BITMAP ) - clazz = &ft_bitmap_glyph_class; - - /* it it is an outline too */ - else if ( slot->format == FT_GLYPH_FORMAT_OUTLINE ) - clazz = &ft_outline_glyph_class; - - else - { - /* try to find a renderer that supports the glyph image format */ - FT_Renderer render = FT_Lookup_Renderer( library, slot->format, 0 ); - - - if ( render ) - clazz = &render->glyph_class; - } - - if ( !clazz ) - { - error = FT_Err_Invalid_Glyph_Format; - goto Exit; - } - - /* create FT_Glyph object */ - error = ft_new_glyph( library, clazz, &glyph ); - if ( error ) - goto Exit; - - /* copy advance while converting it to 16.16 format */ - glyph->advance.x = slot->advance.x << 10; - glyph->advance.y = slot->advance.y << 10; - - /* now import the image from the glyph slot */ - error = clazz->glyph_init( glyph, slot ); - - /* if an error occurred, destroy the glyph */ - if ( error ) - FT_Done_Glyph( glyph ); - else - *aglyph = glyph; - - Exit: - return error; - } - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Glyph_Transform( FT_Glyph glyph, - FT_Matrix* matrix, - FT_Vector* delta ) - { - const FT_Glyph_Class* clazz; - FT_Error error = FT_Err_Ok; - - - if ( !glyph || !glyph->clazz ) - error = FT_Err_Invalid_Argument; - else - { - clazz = glyph->clazz; - if ( clazz->glyph_transform ) - { - /* transform glyph image */ - clazz->glyph_transform( glyph, matrix, delta ); - - /* transform advance vector */ - if ( matrix ) - FT_Vector_Transform( &glyph->advance, matrix ); - } - else - error = FT_Err_Invalid_Glyph_Format; - } - return error; - } - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( void ) - FT_Glyph_Get_CBox( FT_Glyph glyph, - FT_UInt bbox_mode, - FT_BBox *acbox ) - { - const FT_Glyph_Class* clazz; - - - if ( !acbox ) - return; - - acbox->xMin = acbox->yMin = acbox->xMax = acbox->yMax = 0; - - if ( !glyph || !glyph->clazz ) - return; - else - { - clazz = glyph->clazz; - if ( !clazz->glyph_bbox ) - return; - else - { - /* retrieve bbox in 26.6 coordinates */ - clazz->glyph_bbox( glyph, acbox ); - - /* perform grid fitting if needed */ - if ( bbox_mode == FT_GLYPH_BBOX_GRIDFIT || - bbox_mode == FT_GLYPH_BBOX_PIXELS ) - { - acbox->xMin = FT_PIX_FLOOR( acbox->xMin ); - acbox->yMin = FT_PIX_FLOOR( acbox->yMin ); - acbox->xMax = FT_PIX_CEIL( acbox->xMax ); - acbox->yMax = FT_PIX_CEIL( acbox->yMax ); - } - - /* convert to integer pixels if needed */ - if ( bbox_mode == FT_GLYPH_BBOX_TRUNCATE || - bbox_mode == FT_GLYPH_BBOX_PIXELS ) - { - acbox->xMin >>= 6; - acbox->yMin >>= 6; - acbox->xMax >>= 6; - acbox->yMax >>= 6; - } - } - } - return; - } - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Glyph_To_Bitmap( FT_Glyph* the_glyph, - FT_Render_Mode render_mode, - FT_Vector* origin, - FT_Bool destroy ) - { - FT_GlyphSlotRec dummy; - FT_GlyphSlot_InternalRec dummy_internal; - FT_Error error = FT_Err_Ok; - FT_Glyph glyph; - FT_BitmapGlyph bitmap = NULL; - - const FT_Glyph_Class* clazz; - - - /* check argument */ - if ( !the_glyph ) - goto Bad; - - /* we render the glyph into a glyph bitmap using a `dummy' glyph slot */ - /* then calling FT_Render_Glyph_Internal() */ - - glyph = *the_glyph; - if ( !glyph ) - goto Bad; - - clazz = glyph->clazz; - - /* when called with a bitmap glyph, do nothing and return successfully */ - if ( clazz == &ft_bitmap_glyph_class ) - goto Exit; - - if ( !clazz || !clazz->glyph_prepare ) - goto Bad; - - FT_MEM_ZERO( &dummy, sizeof ( dummy ) ); - FT_MEM_ZERO( &dummy_internal, sizeof ( dummy_internal ) ); - dummy.internal = &dummy_internal; - dummy.library = glyph->library; - dummy.format = clazz->glyph_format; - - /* create result bitmap glyph */ - error = ft_new_glyph( glyph->library, &ft_bitmap_glyph_class, - (FT_Glyph*)&bitmap ); - if ( error ) - goto Exit; - -#if 1 - /* if `origin' is set, translate the glyph image */ - if ( origin ) - FT_Glyph_Transform( glyph, 0, origin ); -#else - FT_UNUSED( origin ); -#endif - - /* prepare dummy slot for rendering */ - error = clazz->glyph_prepare( glyph, &dummy ); - if ( !error ) - error = FT_Render_Glyph_Internal( glyph->library, &dummy, render_mode ); - -#if 1 - if ( !destroy && origin ) - { - FT_Vector v; - - - v.x = -origin->x; - v.y = -origin->y; - FT_Glyph_Transform( glyph, 0, &v ); - } -#endif - - if ( error ) - goto Exit; - - /* in case of success, copy the bitmap to the glyph bitmap */ - error = ft_bitmap_glyph_init( (FT_Glyph)bitmap, &dummy ); - if ( error ) - goto Exit; - - /* copy advance */ - bitmap->root.advance = glyph->advance; - - if ( destroy ) - FT_Done_Glyph( glyph ); - - *the_glyph = FT_GLYPH( bitmap ); - - Exit: - if ( error && bitmap ) - FT_Done_Glyph( FT_GLYPH( bitmap ) ); - - return error; - - Bad: - error = FT_Err_Invalid_Argument; - goto Exit; - } - - - /* documentation is in ftglyph.h */ - - FT_EXPORT_DEF( void ) - FT_Done_Glyph( FT_Glyph glyph ) - { - if ( glyph ) - { - FT_Memory memory = glyph->library->memory; - const FT_Glyph_Class* clazz = glyph->clazz; - - - if ( clazz->glyph_done ) - clazz->glyph_done( glyph ); - - FT_FREE( glyph ); - } - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftinit.c b/nx-X11/extras/freetype2/src/base/ftinit.c deleted file mode 100644 index 79ba9f0bd..000000000 --- a/nx-X11/extras/freetype2/src/base/ftinit.c +++ /dev/null @@ -1,161 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftinit.c */ -/* */ -/* FreeType initialization layer (body). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* The purpose of this file is to implement the following two */ - /* functions: */ - /* */ - /* FT_Add_Default_Modules(): */ - /* This function is used to add the set of default modules to a */ - /* fresh new library object. The set is taken from the header file */ - /* `freetype/config/ftmodule.h'. See the document `FreeType 2.0 */ - /* Build System' for more information. */ - /* */ - /* FT_Init_FreeType(): */ - /* This function creates a system object for the current platform, */ - /* builds a library out of it, then calls FT_Default_Drivers(). */ - /* */ - /* Note that even if FT_Init_FreeType() uses the implementation of the */ - /* system object defined at build time, client applications are still */ - /* able to provide their own `ftsystem.c'. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_MODULE_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_init - -#undef FT_USE_MODULE -#ifdef __cplusplus -#define FT_USE_MODULE( x ) extern "C" const FT_Module_Class* x; -#else -#define FT_USE_MODULE( x ) extern const FT_Module_Class* x; -#endif - - -#include FT_CONFIG_MODULES_H - - -#undef FT_USE_MODULE -#define FT_USE_MODULE( x ) (const FT_Module_Class*)&x, - - static - const FT_Module_Class* const ft_default_modules[] = - { -#include FT_CONFIG_MODULES_H - 0 - }; - - - /* documentation is in ftmodule.h */ - - FT_EXPORT_DEF( void ) - FT_Add_Default_Modules( FT_Library library ) - { - FT_Error error; - const FT_Module_Class* const* cur; - - - /* test for valid `library' delayed to FT_Add_Module() */ - - cur = ft_default_modules; - while ( *cur ) - { - error = FT_Add_Module( library, *cur ); - /* notify errors, but don't stop */ - if ( error ) - { - FT_ERROR(( "FT_Add_Default_Module: Cannot install `%s', error = 0x%x\n", - (*cur)->module_name, error )); - } - cur++; - } - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Init_FreeType( FT_Library *alibrary ) - { - FT_Error error; - FT_Memory memory; - - - /* First of all, allocate a new system object -- this function is part */ - /* of the system-specific component, i.e. `ftsystem.c'. */ - - memory = FT_New_Memory(); - if ( !memory ) - { - FT_ERROR(( "FT_Init_FreeType: cannot find memory manager\n" )); - return FT_Err_Unimplemented_Feature; - } - - /* build a library out of it, then fill it with the set of */ - /* default drivers. */ - - error = FT_New_Library( memory, alibrary ); - if ( !error ) - { - (*alibrary)->version_major = FREETYPE_MAJOR; - (*alibrary)->version_minor = FREETYPE_MINOR; - (*alibrary)->version_patch = FREETYPE_PATCH; - - FT_Add_Default_Modules( *alibrary ); - } - - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Done_FreeType( FT_Library library ) - { - if ( library ) - { - FT_Memory memory = library->memory; - - - /* Discard the library object */ - FT_Done_Library( library ); - - /* discard memory manager */ - FT_Done_Memory( memory ); - } - - return FT_Err_Ok; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftmac.c b/nx-X11/extras/freetype2/src/base/ftmac.c deleted file mode 100644 index c71475382..000000000 --- a/nx-X11/extras/freetype2/src/base/ftmac.c +++ /dev/null @@ -1,1092 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmac.c */ -/* */ -/* Mac FOND support. Written by just@letterror.com. */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* Just van Rossum, David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /* - Notes - - Mac suitcase files can (and often do!) contain multiple fonts. To - support this I use the face_index argument of FT_(Open|New)_Face() - functions, and pretend the suitcase file is a collection. - - Warning: Although the FOND driver sets face->num_faces field to the - number of available fonts, but the Type 1 driver sets it to 1 anyway. - So this field is currently not reliable, and I don't see a clean way - to resolve that. The face_index argument translates to - - Get1IndResource( 'FOND', face_index + 1 ); - - so clients should figure out the resource index of the FOND. - (I'll try to provide some example code for this at some point.) - - The Mac FOND support works roughly like this: - - - Check whether the offered stream points to a Mac suitcase file. - This is done by checking the file type: it has to be 'FFIL' or 'tfil'. - The stream that gets passed to our init_face() routine is a stdio - stream, which isn't usable for us, since the FOND resources live - in the resource fork. So we just grab the stream->pathname field. - - - Read the FOND resource into memory, then check whether there is - a TrueType font and/or(!) a Type 1 font available. - - - If there is a Type 1 font available (as a separate 'LWFN' file), - read its data into memory, massage it slightly so it becomes - PFB data, wrap it into a memory stream, load the Type 1 driver - and delegate the rest of the work to it by calling FT_Open_Face(). - (XXX TODO: after this has been done, the kerning data from the FOND - resource should be appended to the face: On the Mac there are usually - no AFM files available. However, this is tricky since we need to map - Mac char codes to ps glyph names to glyph ID's...) - - - If there is a TrueType font (an 'sfnt' resource), read it into - memory, wrap it into a memory stream, load the TrueType driver - and delegate the rest of the work to it, by calling FT_Open_Face(). - */ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_STREAM_H - -#ifdef __GNUC__ -#include "../truetype/ttobjs.h" -#include "../type1/t1objs.h" - /* This is for Mac OS X. Without redefinition, OS_INLINE */ - /* expands to `static inline' which doesn't survive the */ - /* -ansi compilation flag of GCC. */ -#define OS_INLINE static __inline__ -#include <Carbon/Carbon.h> -#else -#include "truetype/ttobjs.h" -#include "type1/t1objs.h" -#include <Resources.h> -#include <Fonts.h> -#include <Errors.h> -#include <Files.h> -#include <TextUtils.h> -#endif - -#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO -#include <FSp_fopen.h> -#endif - -#include FT_MAC_H - - - /* Set PREFER_LWFN to 1 if LWFN (Type 1) is preferred over - TrueType in case *both* are available (this is not common, - but it *is* possible). */ -#ifndef PREFER_LWFN -#define PREFER_LWFN 1 -#endif - - -#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO - -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) - - - FT_CALLBACK_DEF( void ) - ft_FSp_stream_close( FT_Stream stream ) - { - fclose( STREAM_FILE( stream ) ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = 0; - } - - - FT_CALLBACK_DEF( unsigned long ) - ft_FSp_stream_io( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ) - { - FILE* file; - - - file = STREAM_FILE( stream ); - - fseek( file, offset, SEEK_SET ); - - return (unsigned long)fread( buffer, 1, count, file ); - } - -#endif /* __MWERKS__ && !TARGET_RT_MAC_MACHO */ - - - /* Given a pathname, fill in a file spec. */ - static int - file_spec_from_path( const char* pathname, - FSSpec* spec ) - { - -#if !TARGET_API_MAC_OS8 && \ - !( defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO ) - - OSErr e; - FSRef ref; - - - e = FSPathMakeRef( (UInt8 *)pathname, &ref, false /* not a directory */ ); - if ( e == noErr ) - e = FSGetCatalogInfo( &ref, kFSCatInfoNone, NULL, NULL, spec, NULL ); - - return ( e == noErr ) ? 0 : (-1); - -#else - - Str255 p_path; - FT_ULong path_len; - - - /* convert path to a pascal string */ - path_len = ft_strlen( pathname ); - if ( path_len > 255 ) - return -1; - p_path[0] = (unsigned char)path_len; - ft_strncpy( (char*)p_path + 1, pathname, path_len ); - - if ( FSMakeFSSpec( 0, 0, p_path, spec ) != noErr ) - return -1; - else - return 0; - -#endif - - } - - - /* Return the file type of the file specified by spec. */ - static OSType - get_file_type( const FSSpec* spec ) - { - FInfo finfo; - - - if ( FSpGetFInfo( spec, &finfo ) != noErr ) - return 0; /* file might not exist */ - - return finfo.fdType; - } - - - /* Given a PostScript font name, create the Macintosh LWFN file name. */ - static void - create_lwfn_name( char* ps_name, - Str255 lwfn_file_name ) - { - int max = 5, count = 0; - FT_Byte* p = lwfn_file_name; - FT_Byte* q = (FT_Byte*)ps_name; - - - lwfn_file_name[0] = 0; - - while ( *q ) - { - if ( ft_isupper( *q ) ) - { - if ( count ) - max = 3; - count = 0; - } - if ( count < max && ( ft_isalnum( *q ) || *q == '_' ) ) - { - *++p = *q; - lwfn_file_name[0]++; - count++; - } - q++; - } - } - - - /* Given a file reference, answer its location as a vRefNum - and a dirID. */ - static FT_Error - get_file_location( short ref_num, - short* v_ref_num, - long* dir_id, - unsigned char* file_name ) - { - FCBPBRec pb; - OSErr error; - - - pb.ioNamePtr = file_name; - pb.ioVRefNum = 0; - pb.ioRefNum = ref_num; - pb.ioFCBIndx = 0; - - error = PBGetFCBInfoSync( &pb ); - if ( error == noErr ) - { - *v_ref_num = pb.ioFCBVRefNum; - *dir_id = pb.ioFCBParID; - } - return error; - } - - - /* Make a file spec for an LWFN file from a FOND resource and - a file name. */ - static FT_Error - make_lwfn_spec( Handle fond, - const unsigned char* file_name, - FSSpec* spec ) - { - FT_Error error; - short ref_num, v_ref_num; - long dir_id; - Str255 fond_file_name; - - - ref_num = HomeResFile( fond ); - - error = ResError(); - if ( !error ) - error = get_file_location( ref_num, &v_ref_num, - &dir_id, fond_file_name ); - if ( !error ) - error = FSMakeFSSpec( v_ref_num, dir_id, file_name, spec ); - - return error; - } - - - static short - count_faces_sfnt( char *fond_data ) - { - /* The count is 1 greater than the value in the FOND. */ - /* Isn't that cute? :-) */ - - return 1 + *( (short *)( fond_data + sizeof ( FamRec ) ) ); - } - - - /* Look inside the FOND data, answer whether there should be an SFNT - resource, and answer the name of a possible LWFN Type 1 file. - - Thanks to Paul Miller (paulm@profoundeffects.com) for the fix - to load a face OTHER than the first one in the FOND! - */ - - - static void - parse_fond( char* fond_data, - short* have_sfnt, - short* sfnt_id, - Str255 lwfn_file_name, - short face_index ) - { - AsscEntry* assoc; - AsscEntry* base_assoc; - FamRec* fond; - - - *sfnt_id = 0; - *have_sfnt = 0; - lwfn_file_name[0] = 0; - - fond = (FamRec*)fond_data; - assoc = (AsscEntry*)( fond_data + sizeof ( FamRec ) + 2 ); - base_assoc = assoc; - - /* Let's do a little range checking before we get too excited here */ - if ( face_index < count_faces_sfnt( fond_data ) ) - { - assoc += face_index; /* add on the face_index! */ - - /* if the face at this index is not scalable, - fall back to the first one (old behavior) */ - if ( assoc->fontSize == 0 ) - { - *have_sfnt = 1; - *sfnt_id = assoc->fontID; - } - else if ( base_assoc->fontSize == 0 ) - { - *have_sfnt = 1; - *sfnt_id = base_assoc->fontID; - } - } - - if ( fond->ffStylOff ) - { - unsigned char* p = (unsigned char*)fond_data; - StyleTable* style; - unsigned short string_count; - char ps_name[256]; - unsigned char* names[64]; - int i; - - - p += fond->ffStylOff; - style = (StyleTable*)p; - p += sizeof ( StyleTable ); - string_count = *(unsigned short*)(p); - p += sizeof ( short ); - - for ( i = 0 ; i < string_count && i < 64; i++ ) - { - names[i] = p; - p += names[i][0]; - p++; - } - - { - size_t ps_name_len = (size_t)names[0][0]; - - - if ( ps_name_len != 0 ) - { - ft_memcpy(ps_name, names[0] + 1, ps_name_len); - ps_name[ps_name_len] = 0; - } - if ( style->indexes[0] > 1 ) - { - unsigned char* suffixes = names[style->indexes[0] - 1]; - - - for ( i = 1; i <= suffixes[0]; i++ ) - { - unsigned char* s; - size_t j = suffixes[i] - 1; - - - if ( j < string_count && ( s = names[j] ) != NULL ) - { - size_t s_len = (size_t)s[0]; - - - if ( s_len != 0 && ps_name_len + s_len < sizeof ( ps_name ) ) - { - ft_memcpy( ps_name + ps_name_len, s + 1, s_len ); - ps_name_len += s_len; - ps_name[ps_name_len] = 0; - } - } - } - } - } - - create_lwfn_name( ps_name, lwfn_file_name ); - } - } - - - static short - count_faces( Handle fond ) - { - short sfnt_id, have_sfnt, have_lwfn = 0; - Str255 lwfn_file_name; - FSSpec lwfn_spec; - - - HLock( fond ); - parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, 0 ); - HUnlock( fond ); - - if ( lwfn_file_name[0] ) - { - if ( make_lwfn_spec( fond, lwfn_file_name, &lwfn_spec ) == FT_Err_Ok ) - have_lwfn = 1; /* yeah, we got one! */ - else - have_lwfn = 0; /* no LWFN file found */ - } - - if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) ) - return 1; - else - return count_faces_sfnt( *fond ); - } - - - /* Read Type 1 data from the POST resources inside the LWFN file, - return a PFB buffer. This is somewhat convoluted because the FT2 - PFB parser wants the ASCII header as one chunk, and the LWFN - chunks are often not organized that way, so we'll glue chunks - of the same type together. */ - static FT_Error - read_lwfn( FT_Memory memory, - short res_ref, - FT_Byte** pfb_data, - FT_ULong* size ) - { - FT_Error error = FT_Err_Ok; - short res_id; - unsigned char *buffer, *p, *size_p = NULL; - FT_ULong total_size = 0; - FT_ULong post_size, pfb_chunk_size; - Handle post_data; - char code, last_code; - - - UseResFile( res_ref ); - - /* First pass: load all POST resources, and determine the size of */ - /* the output buffer. */ - res_id = 501; - last_code = -1; - - for (;;) - { - post_data = Get1Resource( 'POST', res_id++ ); - if ( post_data == NULL ) - break; /* we're done */ - - code = (*post_data)[0]; - - if ( code != last_code ) - { - if ( code == 5 ) - total_size += 2; /* just the end code */ - else - total_size += 6; /* code + 4 bytes chunk length */ - } - - total_size += GetHandleSize( post_data ) - 2; - last_code = code; - } - - if ( FT_ALLOC( buffer, (FT_Long)total_size ) ) - goto Error; - - /* Second pass: append all POST data to the buffer, add PFB fields. */ - /* Glue all consecutive chunks of the same type together. */ - p = buffer; - res_id = 501; - last_code = -1; - pfb_chunk_size = 0; - - for (;;) - { - post_data = Get1Resource( 'POST', res_id++ ); - if ( post_data == NULL ) - break; /* we're done */ - - post_size = (FT_ULong)GetHandleSize( post_data ) - 2; - code = (*post_data)[0]; - - if ( code != last_code ) - { - if ( last_code != -1 ) - { - /* we're done adding a chunk, fill in the size field */ - if ( size_p != NULL ) - { - *size_p++ = (FT_Byte)( pfb_chunk_size & 0xFF ); - *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 8 ) & 0xFF ); - *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 16 ) & 0xFF ); - *size_p++ = (FT_Byte)( ( pfb_chunk_size >> 24 ) & 0xFF ); - } - pfb_chunk_size = 0; - } - - *p++ = 0x80; - if ( code == 5 ) - *p++ = 0x03; /* the end */ - else if ( code == 2 ) - *p++ = 0x02; /* binary segment */ - else - *p++ = 0x01; /* ASCII segment */ - - if ( code != 5 ) - { - size_p = p; /* save for later */ - p += 4; /* make space for size field */ - } - } - - ft_memcpy( p, *post_data + 2, post_size ); - pfb_chunk_size += post_size; - p += post_size; - last_code = code; - } - - *pfb_data = buffer; - *size = total_size; - - Error: - CloseResFile( res_ref ); - return error; - } - - - /* Finalizer for a memory stream; gets called by FT_Done_Face(). - It frees the memory it uses. */ - static void - memory_stream_close( FT_Stream stream ) - { - FT_Memory memory = stream->memory; - - - FT_FREE( stream->base ); - - stream->size = 0; - stream->base = 0; - stream->close = 0; - } - - - /* Create a new memory stream from a buffer and a size. */ - static FT_Error - new_memory_stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream_CloseFunc close, - FT_Stream *astream ) - { - FT_Error error; - FT_Memory memory; - FT_Stream stream; - - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( !base ) - return FT_Err_Invalid_Argument; - - *astream = 0; - memory = library->memory; - if ( FT_NEW( stream ) ) - goto Exit; - - FT_Stream_OpenMemory( stream, base, size ); - - stream->close = close; - - *astream = stream; - - Exit: - return error; - } - - - /* Create a new FT_Face given a buffer and a driver name. */ - static FT_Error - open_face_from_buffer( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Long face_index, - char* driver_name, - FT_Face *aface ) - { - FT_Open_Args args; - FT_Error error; - FT_Stream stream; - FT_Memory memory = library->memory; - - - error = new_memory_stream( library, - base, - size, - memory_stream_close, - &stream ); - if ( error ) - { - FT_FREE( base ); - return error; - } - - args.flags = FT_OPEN_STREAM; - args.stream = stream; - if ( driver_name ) - { - args.flags = args.flags | FT_OPEN_DRIVER; - args.driver = FT_Get_Module( library, driver_name ); - } - - /* At this point, face_index has served its purpose; */ - /* whoever calls this function has already used it to */ - /* locate the correct font data. We should not propagate */ - /* this index to FT_Open_Face() (unless it is negative). */ - - if ( face_index > 0 ) - face_index = 0; - - error = FT_Open_Face( library, &args, face_index, aface ); - if ( error == FT_Err_Ok ) - (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; - - return error; - } - - - static FT_Error - OpenFileAsResource( const FSSpec* spec, - short *p_res_ref ) - { - FT_Error error; - -#if !TARGET_API_MAC_OS8 - - FSRef hostContainerRef; - - - error = FSpMakeFSRef( spec, &hostContainerRef ); - if ( error == noErr ) - error = FSOpenResourceFile( &hostContainerRef, - 0, NULL, fsRdPerm, p_res_ref ); - - /* If the above fails, then it is probably not a resource file */ - /* However, it has been reported that FSOpenResourceFile() sometimes */ - /* fails on some old resource-fork files, which FSpOpenResFile() can */ - /* open. So, just try again with FSpOpenResFile() and see what */ - /* happens :-) */ - - if ( error != noErr ) - -#endif /* !TARGET_API_MAC_OS8 */ - - { - *p_res_ref = FSpOpenResFile( spec, fsRdPerm ); - error = ResError(); - } - - return error ? FT_Err_Cannot_Open_Resource : FT_Err_Ok; - } - - - /* Create a new FT_Face from a file spec to an LWFN file. */ - static FT_Error - FT_New_Face_From_LWFN( FT_Library library, - const FSSpec* lwfn_spec, - FT_Long face_index, - FT_Face *aface ) - { - FT_Byte* pfb_data; - FT_ULong pfb_size; - FT_Error error; - short res_ref; - - - error = OpenFileAsResource( lwfn_spec, &res_ref ); - if ( error ) - return error; - - error = read_lwfn( library->memory, res_ref, &pfb_data, &pfb_size ); - if ( error ) - return error; - - return open_face_from_buffer( library, - pfb_data, - pfb_size, - face_index, - "type1", - aface ); - } - - - /* Create a new FT_Face from an SFNT resource, specified by res ID. */ - static FT_Error - FT_New_Face_From_SFNT( FT_Library library, - short sfnt_id, - FT_Long face_index, - FT_Face *aface ) - { - Handle sfnt = NULL; - FT_Byte* sfnt_data; - size_t sfnt_size; - FT_Error error = 0; - FT_Memory memory = library->memory; - int is_cff; - - - sfnt = GetResource( 'sfnt', sfnt_id ); - if ( ResError() ) - return FT_Err_Invalid_Handle; - - sfnt_size = (FT_ULong)GetHandleSize( sfnt ); - if ( FT_ALLOC( sfnt_data, (FT_Long)sfnt_size ) ) - { - ReleaseResource( sfnt ); - return error; - } - - HLock( sfnt ); - ft_memcpy( sfnt_data, *sfnt, sfnt_size ); - HUnlock( sfnt ); - ReleaseResource( sfnt ); - - is_cff = sfnt_size > 4 && sfnt_data[0] == 'O' && - sfnt_data[1] == 'T' && - sfnt_data[2] == 'T' && - sfnt_data[3] == 'O'; - - return open_face_from_buffer( library, - sfnt_data, - sfnt_size, - face_index, - is_cff ? "cff" : "truetype", - aface ); - } - - - /* Create a new FT_Face from a file spec to a suitcase file. */ - static FT_Error - FT_New_Face_From_Suitcase( FT_Library library, - short res_ref, - FT_Long face_index, - FT_Face *aface ) - { - FT_Error error = FT_Err_Ok; - short res_index; - Handle fond; - short num_faces; - - - UseResFile( res_ref ); - - for ( res_index = 1; ; ++res_index ) - { - fond = Get1IndResource( 'FOND', res_index ); - if ( ResError() ) - { - error = FT_Err_Cannot_Open_Resource; - goto Error; - } - if ( face_index < 0 ) - break; - - num_faces = count_faces( fond ); - if ( face_index < num_faces ) - break; - - face_index -= num_faces; - } - - error = FT_New_Face_From_FOND( library, fond, face_index, aface ); - - Error: - CloseResFile( res_ref ); - return error; - } - - - /* documentation is in ftmac.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_New_Face_From_FOND( FT_Library library, - Handle fond, - FT_Long face_index, - FT_Face *aface ) - { - short sfnt_id, have_sfnt, have_lwfn = 0; - Str255 lwfn_file_name; - short fond_id; - OSType fond_type; - Str255 fond_name; - FSSpec lwfn_spec; - - - GetResInfo( fond, &fond_id, &fond_type, fond_name ); - if ( ResError() != noErr || fond_type != 'FOND' ) - return FT_Err_Invalid_File_Format; - - HLock( fond ); - parse_fond( *fond, &have_sfnt, &sfnt_id, lwfn_file_name, face_index ); - HUnlock( fond ); - - if ( lwfn_file_name[0] ) - { - if ( make_lwfn_spec( fond, lwfn_file_name, &lwfn_spec ) == FT_Err_Ok ) - have_lwfn = 1; /* yeah, we got one! */ - else - have_lwfn = 0; /* no LWFN file found */ - } - - if ( have_lwfn && ( !have_sfnt || PREFER_LWFN ) ) - return FT_New_Face_From_LWFN( library, - &lwfn_spec, - face_index, - aface ); - else if ( have_sfnt ) - return FT_New_Face_From_SFNT( library, - sfnt_id, - face_index, - aface ); - - return FT_Err_Unknown_File_Format; - } - - - /* documentation is in ftmac.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_GetFile_From_Mac_Name( const char* fontName, - FSSpec* pathSpec, - FT_Long* face_index ) - { - OptionBits options = kFMUseGlobalScopeOption; - - FMFontFamilyIterator famIter; - OSStatus status = FMCreateFontFamilyIterator( NULL, NULL, - options, - &famIter ); - FMFont the_font = NULL; - FMFontFamily family = NULL; - - - *face_index = 0; - while ( status == 0 && !the_font ) - { - status = FMGetNextFontFamily( &famIter, &family ); - if ( status == 0 ) - { - int stat2; - FMFontFamilyInstanceIterator instIter; - Str255 famNameStr; - char famName[256]; - - - /* get the family name */ - FMGetFontFamilyName( family, famNameStr ); - CopyPascalStringToC( famNameStr, famName ); - - /* iterate through the styles */ - FMCreateFontFamilyInstanceIterator( family, &instIter ); - - *face_index = 0; - stat2 = 0; - while ( stat2 == 0 && !the_font ) - { - FMFontStyle style; - FMFontSize size; - FMFont font; - - - stat2 = FMGetNextFontFamilyInstance( &instIter, &font, - &style, &size ); - if ( stat2 == 0 && size == 0 ) - { - char fullName[256]; - - - /* build up a complete face name */ - ft_strcpy( fullName, famName ); - if ( style & bold ) - strcat( fullName, " Bold" ); - if ( style & italic ) - strcat( fullName, " Italic" ); - - /* compare with the name we are looking for */ - if ( ft_strcmp( fullName, fontName ) == 0 ) - { - /* found it! */ - the_font = font; - } - else - ++(*face_index); - } - } - - FMDisposeFontFamilyInstanceIterator( &instIter ); - } - } - - FMDisposeFontFamilyIterator( &famIter ); - - if ( the_font ) - { - FMGetFontContainer( the_font, pathSpec ); - return FT_Err_Ok; - } - else - return FT_Err_Unknown_File_Format; - } - - /* Common function to load a new FT_Face from a resource file. */ - - static FT_Error - FT_New_Face_From_Resource( FT_Library library, - const FSSpec *spec, - FT_Long face_index, - FT_Face *aface ) - { - OSType file_type; - short res_ref; - FT_Error error; - - - if ( OpenFileAsResource( spec, &res_ref ) == FT_Err_Ok ) - { - /* LWFN is a (very) specific file format, check for it explicitly */ - - file_type = get_file_type( spec ); - if ( file_type == 'LWFN' ) - return FT_New_Face_From_LWFN( library, spec, face_index, aface ); - - /* Otherwise the file type doesn't matter (there are more than */ - /* `FFIL' and `tfil'). Just try opening it as a font suitcase; */ - /* if it works, fine. */ - - error = FT_New_Face_From_Suitcase( library, res_ref, - face_index, aface ); - if ( error == 0 ) - return error; - - /* else forget about the resource fork and fall through to */ - /* data fork formats */ - - CloseResFile( res_ref ); - } - - /* let it fall through to normal loader (.ttf, .otf, etc.); */ - /* we signal this by returning no error and no FT_Face */ - *aface = NULL; - return 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face */ - /* */ - /* <Description> */ - /* This is the Mac-specific implementation of FT_New_Face. In */ - /* addition to the standard FT_New_Face() functionality, it also */ - /* accepts pathnames to Mac suitcase files. For further */ - /* documentation see the original FT_New_Face() in freetype.h. */ - /* */ - FT_EXPORT_DEF( FT_Error ) - FT_New_Face( FT_Library library, - const char* pathname, - FT_Long face_index, - FT_Face *aface ) - { - FT_Open_Args args; - FSSpec spec; - FT_Error error; - - - /* test for valid `library' and `aface' delayed to FT_Open_Face() */ - if ( !pathname ) - return FT_Err_Invalid_Argument; - - if ( file_spec_from_path( pathname, &spec ) ) - return FT_Err_Invalid_Argument; - - error = FT_New_Face_From_Resource( library, &spec, face_index, aface ); - if ( error != 0 || *aface != NULL ) - return error; - - /* let it fall through to normal loader (.ttf, .otf, etc.) */ - args.flags = FT_OPEN_PATHNAME; - args.pathname = (char*)pathname; - return FT_Open_Face( library, &args, face_index, aface ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_New_Face_From_FSSpec */ - /* */ - /* <Description> */ - /* FT_New_Face_From_FSSpec is identical to FT_New_Face except it */ - /* accepts an FSSpec instead of a path. */ - /* */ - FT_EXPORT_DEF( FT_Error ) - FT_New_Face_From_FSSpec( FT_Library library, - const FSSpec *spec, - FT_Long face_index, - FT_Face *aface ) - { - FT_Open_Args args; - FT_Error error; - FT_Stream stream; - FILE* file; - FT_Memory memory; - - - /* test for valid `library' and `aface' delayed to FT_Open_Face() */ - if ( !spec ) - return FT_Err_Invalid_Argument; - - error = FT_New_Face_From_Resource( library, spec, face_index, aface ); - if ( error != 0 || *aface != NULL ) - return error; - - /* let it fall through to normal loader (.ttf, .otf, etc.) */ - -#if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO - - /* Codewarrior's C library can open a FILE from a FSSpec */ - /* but we must compile with FSp_fopen.c in addition to */ - /* runtime libraries. */ - - memory = library->memory; - - if ( FT_NEW( stream ) ) - return error; - stream->memory = memory; - - file = FSp_fopen( spec, "rb" ); - if ( !file ) - return FT_Err_Cannot_Open_Resource; - - fseek( file, 0, SEEK_END ); - stream->size = ftell( file ); - fseek( file, 0, SEEK_SET ); - - stream->descriptor.pointer = file; - stream->pathname.pointer = NULL; - stream->pos = 0; - - stream->read = ft_FSp_stream_io; - stream->close = ft_FSp_stream_close; - - args.flags = FT_OPEN_STREAM; - args.stream = stream; - - error = FT_Open_Face( library, &args, face_index, aface ); - if ( error == FT_Err_Ok ) - (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; - -#else /* !(__MWERKS__ && !TARGET_RT_MAC_MACHO) */ - - { - FSRef ref; - UInt8 path[256]; - OSErr err; - - - err = FSpMakeFSRef(spec, &ref); - if ( !err ) - { - err = FSRefMakePath( &ref, path, sizeof ( path ) ); - if ( !err ) - error = FT_New_Face( library, (const char*)path, - face_index, aface ); - } - if ( err ) - error = FT_Err_Cannot_Open_Resource; - } - -#endif /* !(__MWERKS__ && !TARGET_RT_MAC_MACHO) */ - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftmm.c b/nx-X11/extras/freetype2/src/base/ftmm.c deleted file mode 100644 index 940f8640a..000000000 --- a/nx-X11/extras/freetype2/src/base/ftmm.c +++ /dev/null @@ -1,202 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftmm.c */ -/* */ -/* Multiple Master font support (body). */ -/* */ -/* Copyright 1996-2001, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_MULTIPLE_MASTERS_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_mm - - - static FT_Error - ft_face_get_mm_service( FT_Face face, - FT_Service_MultiMasters *aservice ) - { - FT_Error error; - - - *aservice = NULL; - - if ( !face ) - return FT_Err_Invalid_Face_Handle; - - error = FT_Err_Invalid_Argument; - - if ( FT_HAS_MULTIPLE_MASTERS( face ) ) - { - FT_FACE_LOOKUP_SERVICE( face, - *aservice, - MULTI_MASTERS ); - - if ( aservice ) - error = FT_Err_Ok; - } - - return error; - } - - - /* documentation is in ftmm.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Get_Multi_Master( FT_Face face, - FT_Multi_Master *amaster ) - { - FT_Error error; - FT_Service_MultiMasters service; - - - error = ft_face_get_mm_service( face, &service ); - if ( !error ) - { - error = FT_Err_Invalid_Argument; - if ( service->get_mm ) - error = service->get_mm( face, amaster ); - } - - return error; - } - - - /* documentation is in ftmm.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Get_MM_Var( FT_Face face, - FT_MM_Var* *amaster ) - { - FT_Error error; - FT_Service_MultiMasters service; - - - error = ft_face_get_mm_service( face, &service ); - if ( !error ) - { - error = FT_Err_Invalid_Argument; - if ( service->get_mm_var ) - error = service->get_mm_var( face, amaster ); - } - - return error; - } - - - /* documentation is in ftmm.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Set_MM_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Long* coords ) - { - FT_Error error; - FT_Service_MultiMasters service; - - - error = ft_face_get_mm_service( face, &service ); - if ( !error ) - { - error = FT_Err_Invalid_Argument; - if ( service->set_mm_design ) - error = service->set_mm_design( face, num_coords, coords ); - } - - return error; - } - - - /* documentation is in ftmm.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Set_Var_Design_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ) - { - FT_Error error; - FT_Service_MultiMasters service; - - - error = ft_face_get_mm_service( face, &service ); - if ( !error ) - { - error = FT_Err_Invalid_Argument; - if ( service->set_var_design ) - error = service->set_var_design( face, num_coords, coords ); - } - - return error; - } - - - /* documentation is in ftmm.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Set_MM_Blend_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ) - { - FT_Error error; - FT_Service_MultiMasters service; - - - error = ft_face_get_mm_service( face, &service ); - if ( !error ) - { - error = FT_Err_Invalid_Argument; - if ( service->set_mm_blend ) - error = service->set_mm_blend( face, num_coords, coords ); - } - - return error; - } - - - /* documentation is in ftmm.h */ - - /* This is exactly the same as the previous function. It exists for */ - /* orthogonality. */ - - FT_EXPORT_DEF( FT_Error ) - FT_Set_Var_Blend_Coordinates( FT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ) - { - FT_Error error; - FT_Service_MultiMasters service; - - - error = ft_face_get_mm_service( face, &service ); - if ( !error ) - { - error = FT_Err_Invalid_Argument; - if ( service->set_mm_blend ) - error = service->set_mm_blend( face, num_coords, coords ); - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftnames.c b/nx-X11/extras/freetype2/src/base/ftnames.c deleted file mode 100644 index 7fde5c40b..000000000 --- a/nx-X11/extras/freetype2/src/base/ftnames.c +++ /dev/null @@ -1,94 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftnames.c */ -/* */ -/* Simple interface to access SFNT name tables (which are used */ -/* to hold font names, copyright info, notices, etc.) (body). */ -/* */ -/* This is _not_ used to retrieve glyph names! */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_SFNT_NAMES_H -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_INTERNAL_STREAM_H - - -#ifdef TT_CONFIG_OPTION_SFNT_NAMES - - - /* documentation is in ftnames.h */ - - FT_EXPORT_DEF( FT_UInt ) - FT_Get_Sfnt_Name_Count( FT_Face face ) - { - return (face && FT_IS_SFNT( face )) ? ((TT_Face)face)->num_names : 0; - } - - - /* documentation is in ftnames.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Get_Sfnt_Name( FT_Face face, - FT_UInt idx, - FT_SfntName *aname ) - { - FT_Error error = FT_Err_Invalid_Argument; - - - if ( aname && face && FT_IS_SFNT( face ) ) - { - TT_Face ttface = (TT_Face)face; - - - if ( idx < (FT_UInt)ttface->num_names ) - { - TT_NameEntryRec* entry = ttface->name_table.names + idx; - - - /* load name on demand */ - if ( entry->stringLength > 0 && entry->string == NULL ) - { - FT_Memory memory = face->memory; - FT_Stream stream = face->stream; - - - if ( FT_NEW_ARRAY ( entry->string, entry->stringLength ) || - FT_STREAM_SEEK( entry->stringOffset ) || - FT_STREAM_READ( entry->string, entry->stringLength ) ) - { - FT_FREE( entry->string ); - entry->stringLength = 0; - } - } - - aname->platform_id = entry->platformID; - aname->encoding_id = entry->encodingID; - aname->language_id = entry->languageID; - aname->name_id = entry->nameID; - aname->string = (FT_Byte*)entry->string; - aname->string_len = entry->stringLength; - - error = FT_Err_Ok; - } - } - - return error; - } - - -#endif /* TT_CONFIG_OPTION_SFNT_NAMES */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftobjs.c b/nx-X11/extras/freetype2/src/base/ftobjs.c deleted file mode 100644 index bbd6ce6be..000000000 --- a/nx-X11/extras/freetype2/src/base/ftobjs.c +++ /dev/null @@ -1,3311 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftobjs.c */ -/* */ -/* The FreeType private base classes (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_LIST_H -#include FT_OUTLINE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_RFORK_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H /* for SFNT_Load_Table_Func */ -#include FT_TRUETYPE_TABLES_H -#include FT_TRUETYPE_IDS_H -#include FT_OUTLINE_H - -#include FT_SERVICE_SFNT_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_TT_CMAP_H - - - FT_BASE_DEF( FT_Pointer ) - ft_service_list_lookup( FT_ServiceDesc service_descriptors, - const char* service_id ) - { - FT_Pointer result = NULL; - FT_ServiceDesc desc = service_descriptors; - - - if ( desc && service_id ) - { - for ( ; desc->serv_id != NULL; desc++ ) - { - if ( ft_strcmp( desc->serv_id, service_id ) == 0 ) - { - result = (FT_Pointer)desc->serv_data; - break; - } - } - } - - return result; - } - - - FT_BASE_DEF( void ) - ft_validator_init( FT_Validator valid, - const FT_Byte* base, - const FT_Byte* limit, - FT_ValidationLevel level ) - { - valid->base = base; - valid->limit = limit; - valid->level = level; - valid->error = 0; - } - - - FT_BASE_DEF( FT_Int ) - ft_validator_run( FT_Validator valid ) - { - int result; - - - result = ft_setjmp( valid->jump_buffer ); - return result; - } - - - FT_BASE_DEF( void ) - ft_validator_error( FT_Validator valid, - FT_Error error ) - { - valid->error = error; - ft_longjmp( valid->jump_buffer, 1 ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** S T R E A M ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /* create a new input stream from an FT_Open_Args structure */ - /* */ - FT_BASE_DEF( FT_Error ) - FT_Stream_New( FT_Library library, - const FT_Open_Args* args, - FT_Stream *astream ) - { - FT_Error error; - FT_Memory memory; - FT_Stream stream; - - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( !args ) - return FT_Err_Invalid_Argument; - - *astream = 0; - memory = library->memory; - - if ( FT_NEW( stream ) ) - goto Exit; - - stream->memory = memory; - - if ( args->flags & FT_OPEN_MEMORY ) - { - /* create a memory-based stream */ - FT_Stream_OpenMemory( stream, - (const FT_Byte*)args->memory_base, - args->memory_size ); - } - else if ( args->flags & FT_OPEN_PATHNAME ) - { - /* create a normal system stream */ - error = FT_Stream_Open( stream, args->pathname ); - stream->pathname.pointer = args->pathname; - } - else if ( ( args->flags & FT_OPEN_STREAM ) && args->stream ) - { - /* use an existing, user-provided stream */ - - /* in this case, we do not need to allocate a new stream object */ - /* since the caller is responsible for closing it himself */ - FT_FREE( stream ); - stream = args->stream; - } - else - error = FT_Err_Invalid_Argument; - - if ( error ) - FT_FREE( stream ); - else - stream->memory = memory; /* just to be certain */ - - *astream = stream; - - Exit: - return error; - } - - - FT_BASE_DEF( void ) - FT_Stream_Free( FT_Stream stream, - FT_Int external ) - { - if ( stream ) - { - FT_Memory memory = stream->memory; - - - FT_Stream_Close( stream ); - - if ( !external ) - FT_FREE( stream ); - } - } - - -#undef FT_COMPONENT -#define FT_COMPONENT trace_objs - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** FACE, SIZE & GLYPH SLOT OBJECTS ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - static FT_Error - ft_glyphslot_init( FT_GlyphSlot slot ) - { - FT_Driver driver = slot->face->driver; - FT_Driver_Class clazz = driver->clazz; - FT_Memory memory = driver->root.memory; - FT_Error error = FT_Err_Ok; - FT_Slot_Internal internal; - - - slot->library = driver->root.library; - - if ( FT_NEW( internal ) ) - goto Exit; - - slot->internal = internal; - - if ( FT_DRIVER_USES_OUTLINES( driver ) ) - error = FT_GlyphLoader_New( memory, &internal->loader ); - - if ( !error && clazz->init_slot ) - error = clazz->init_slot( slot ); - - Exit: - return error; - } - - - FT_BASE_DEF( void ) - ft_glyphslot_free_bitmap( FT_GlyphSlot slot ) - { - if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) - { - FT_Memory memory = FT_FACE_MEMORY( slot->face ); - - - FT_FREE( slot->bitmap.buffer ); - slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP; - } - else - { - /* assume that the bitmap buffer was stolen or not */ - /* allocated from the heap */ - slot->bitmap.buffer = NULL; - } - } - - - FT_BASE_DEF( void ) - ft_glyphslot_set_bitmap( FT_GlyphSlot slot, - FT_Byte* buffer ) - { - ft_glyphslot_free_bitmap( slot ); - - slot->bitmap.buffer = buffer; - - FT_ASSERT( (slot->internal->flags & FT_GLYPH_OWN_BITMAP) == 0 ); - } - - - FT_BASE_DEF( FT_Error ) - ft_glyphslot_alloc_bitmap( FT_GlyphSlot slot, - FT_ULong size ) - { - FT_Memory memory = FT_FACE_MEMORY( slot->face ); - - - if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) - FT_FREE( slot->bitmap.buffer ); - else - slot->internal->flags |= FT_GLYPH_OWN_BITMAP; - - return FT_MEM_ALLOC( slot->bitmap.buffer, size ); - } - - - static void - ft_glyphslot_clear( FT_GlyphSlot slot ) - { - /* free bitmap if needed */ - ft_glyphslot_free_bitmap( slot ); - - /* clear all public fields in the glyph slot */ - FT_ZERO( &slot->metrics ); - FT_ZERO( &slot->outline ); - - slot->bitmap.width = 0; - slot->bitmap.rows = 0; - slot->bitmap.pitch = 0; - slot->bitmap.pixel_mode = 0; - /* don't touch 'slot->bitmap.buffer'! */ - - slot->bitmap_left = 0; - slot->bitmap_top = 0; - slot->num_subglyphs = 0; - slot->subglyphs = 0; - slot->control_data = 0; - slot->control_len = 0; - slot->other = 0; - slot->format = FT_GLYPH_FORMAT_NONE; - - slot->linearHoriAdvance = 0; - slot->linearVertAdvance = 0; - } - - - static void - ft_glyphslot_done( FT_GlyphSlot slot ) - { - FT_Driver driver = slot->face->driver; - FT_Driver_Class clazz = driver->clazz; - FT_Memory memory = driver->root.memory; - - - if ( clazz->done_slot ) - clazz->done_slot( slot ); - - /* free bitmap buffer if needed */ - ft_glyphslot_free_bitmap( slot ); - - /* free glyph loader */ - if ( FT_DRIVER_USES_OUTLINES( driver ) ) - { - FT_GlyphLoader_Done( slot->internal->loader ); - slot->internal->loader = 0; - } - - FT_FREE( slot->internal ); - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( FT_Error ) - FT_New_GlyphSlot( FT_Face face, - FT_GlyphSlot *aslot ) - { - FT_Error error; - FT_Driver driver; - FT_Driver_Class clazz; - FT_Memory memory; - FT_GlyphSlot slot; - - - if ( !face || !aslot || !face->driver ) - return FT_Err_Invalid_Argument; - - *aslot = 0; - - driver = face->driver; - clazz = driver->clazz; - memory = driver->root.memory; - - FT_TRACE4(( "FT_New_GlyphSlot: Creating new slot object\n" )); - if ( !FT_ALLOC( slot, clazz->slot_object_size ) ) - { - slot->face = face; - - error = ft_glyphslot_init( slot ); - if ( error ) - { - ft_glyphslot_done( slot ); - FT_FREE( slot ); - goto Exit; - } - - *aslot = slot; - } - - Exit: - FT_TRACE4(( "FT_New_GlyphSlot: Return %d\n", error )); - return error; - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( void ) - FT_Done_GlyphSlot( FT_GlyphSlot slot ) - { - if ( slot ) - { - FT_Driver driver = slot->face->driver; - FT_Memory memory = driver->root.memory; - FT_GlyphSlot* parent; - FT_GlyphSlot cur; - - - /* Remove slot from its parent face's list */ - parent = &slot->face->glyph; - cur = *parent; - - while ( cur ) - { - if ( cur == slot ) - { - *parent = cur->next; - ft_glyphslot_done( slot ); - FT_FREE( slot ); - break; - } - cur = cur->next; - } - } - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( void ) - FT_Set_Transform( FT_Face face, - FT_Matrix* matrix, - FT_Vector* delta ) - { - FT_Face_Internal internal; - - - if ( !face ) - return; - - internal = face->internal; - - internal->transform_flags = 0; - - if ( !matrix ) - { - internal->transform_matrix.xx = 0x10000L; - internal->transform_matrix.xy = 0; - internal->transform_matrix.yx = 0; - internal->transform_matrix.yy = 0x10000L; - matrix = &internal->transform_matrix; - } - else - internal->transform_matrix = *matrix; - - /* set transform_flags bit flag 0 if `matrix' isn't the identity */ - if ( ( matrix->xy | matrix->yx ) || - matrix->xx != 0x10000L || - matrix->yy != 0x10000L ) - internal->transform_flags |= 1; - - if ( !delta ) - { - internal->transform_delta.x = 0; - internal->transform_delta.y = 0; - delta = &internal->transform_delta; - } - else - internal->transform_delta = *delta; - - /* set transform_flags bit flag 1 if `delta' isn't the null vector */ - if ( delta->x | delta->y ) - internal->transform_flags |= 2; - } - - - static FT_Renderer - ft_lookup_glyph_renderer( FT_GlyphSlot slot ); - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Load_Glyph( FT_Face face, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - FT_Error error; - FT_Driver driver; - FT_GlyphSlot slot; - FT_Library library; - FT_Bool autohint; - FT_Module hinter; - - - if ( !face || !face->size || !face->glyph ) - return FT_Err_Invalid_Face_Handle; - - if ( glyph_index >= (FT_UInt)face->num_glyphs ) - return FT_Err_Invalid_Argument; - - slot = face->glyph; - ft_glyphslot_clear( slot ); - - driver = face->driver; - - /* if the flag NO_RECURSE is set, we disable hinting and scaling */ - if ( load_flags & FT_LOAD_NO_RECURSE ) - { - /* disable scaling, hinting, and transformation */ - load_flags |= FT_LOAD_NO_SCALE | - FT_LOAD_NO_HINTING | - FT_LOAD_NO_BITMAP | - FT_LOAD_IGNORE_TRANSFORM; - - /* disable bitmap rendering */ - load_flags &= ~FT_LOAD_RENDER; - } - - /* do we need to load the glyph through the auto-hinter? */ - library = driver->root.library; - hinter = library->auto_hinter; - autohint = - FT_BOOL( hinter && - !( load_flags & ( FT_LOAD_NO_SCALE | - FT_LOAD_NO_HINTING | - FT_LOAD_NO_AUTOHINT ) ) && - FT_DRIVER_IS_SCALABLE( driver ) && - FT_DRIVER_USES_OUTLINES( driver ) ); - if ( autohint ) - { - if ( FT_DRIVER_HAS_HINTER( driver ) && - !( load_flags & FT_LOAD_FORCE_AUTOHINT ) ) - autohint = 0; - } - - /* don't apply autohinting if glyph is vertically distorted or */ - /* mirrored */ - if ( autohint && !( face->internal->transform_matrix.yy <= 0 || - face->internal->transform_matrix.yx != 0 ) ) - { - FT_AutoHinter_Service hinting; - - - /* try to load embedded bitmaps first if available */ - /* */ - /* XXX: This is really a temporary hack that should disappear */ - /* promptly with FreeType 2.1! */ - /* */ - if ( FT_HAS_FIXED_SIZES( face ) && - ( load_flags & FT_LOAD_NO_BITMAP ) == 0 ) - { - error = driver->clazz->load_glyph( slot, face->size, - glyph_index, - load_flags | FT_LOAD_SBITS_ONLY ); - - if ( !error && slot->format == FT_GLYPH_FORMAT_BITMAP ) - goto Load_Ok; - } - - /* load auto-hinted outline */ - hinting = (FT_AutoHinter_Service)hinter->clazz->module_interface; - - error = hinting->load_glyph( (FT_AutoHinter)hinter, - slot, face->size, - glyph_index, load_flags ); - } - else - { - error = driver->clazz->load_glyph( slot, - face->size, - glyph_index, - load_flags ); - if ( error ) - goto Exit; - - /* check that the loaded outline is correct */ - error = FT_Outline_Check( &slot->outline ); - if ( error ) - goto Exit; - } - - Load_Ok: - /* compute the advance */ - if ( load_flags & FT_LOAD_VERTICAL_LAYOUT ) - { - slot->advance.x = 0; - slot->advance.y = slot->metrics.vertAdvance; - } - else - { - slot->advance.x = slot->metrics.horiAdvance; - slot->advance.y = 0; - } - - /* compute the linear advance in 16.16 pixels */ - if ( ( load_flags & FT_LOAD_LINEAR_DESIGN ) == 0 && - ( face->face_flags & FT_FACE_FLAG_SCALABLE ) ) - { - FT_Size_Metrics* metrics = &face->size->metrics; - - - slot->linearHoriAdvance = FT_MulDiv( slot->linearHoriAdvance, - metrics->x_scale, 64 ); - - slot->linearVertAdvance = FT_MulDiv( slot->linearVertAdvance, - metrics->y_scale, 64 ); - } - - if ( ( load_flags & FT_LOAD_IGNORE_TRANSFORM ) == 0 ) - { - FT_Face_Internal internal = face->internal; - - - /* now, transform the glyph image if needed */ - if ( internal->transform_flags ) - { - /* get renderer */ - FT_Renderer renderer = ft_lookup_glyph_renderer( slot ); - - - if ( renderer ) - error = renderer->clazz->transform_glyph( - renderer, slot, - &internal->transform_matrix, - &internal->transform_delta ); - /* transform advance */ - FT_Vector_Transform( &slot->advance, &internal->transform_matrix ); - } - } - - /* do we need to render the image now? */ - if ( !error && - slot->format != FT_GLYPH_FORMAT_BITMAP && - slot->format != FT_GLYPH_FORMAT_COMPOSITE && - load_flags & FT_LOAD_RENDER ) - { - FT_Render_Mode mode = FT_LOAD_TARGET_MODE( load_flags ); - - - if ( mode == FT_RENDER_MODE_NORMAL && - (load_flags & FT_LOAD_MONOCHROME ) ) - mode = FT_RENDER_MODE_MONO; - - error = FT_Render_Glyph( slot, mode ); - } - - Exit: - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Load_Char( FT_Face face, - FT_ULong char_code, - FT_Int32 load_flags ) - { - FT_UInt glyph_index; - - - if ( !face ) - return FT_Err_Invalid_Face_Handle; - - glyph_index = (FT_UInt)char_code; - if ( face->charmap ) - glyph_index = FT_Get_Char_Index( face, char_code ); - - return FT_Load_Glyph( face, glyph_index, load_flags ); - } - - - /* destructor for sizes list */ - static void - destroy_size( FT_Memory memory, - FT_Size size, - FT_Driver driver ) - { - /* finalize client-specific data */ - if ( size->generic.finalizer ) - size->generic.finalizer( size ); - - /* finalize format-specific stuff */ - if ( driver->clazz->done_size ) - driver->clazz->done_size( size ); - - FT_FREE( size->internal ); - FT_FREE( size ); - } - - - static void - destroy_charmaps( FT_Face face, - FT_Memory memory ) - { - FT_Int n; - - - for ( n = 0; n < face->num_charmaps; n++ ) - { - FT_CMap cmap = FT_CMAP( face->charmaps[n] ); - - - FT_CMap_Done( cmap ); - - face->charmaps[n] = NULL; - } - - FT_FREE( face->charmaps ); - face->num_charmaps = 0; - } - - - /* destructor for faces list */ - static void - destroy_face( FT_Memory memory, - FT_Face face, - FT_Driver driver ) - { - FT_Driver_Class clazz = driver->clazz; - - - /* discard auto-hinting data */ - if ( face->autohint.finalizer ) - face->autohint.finalizer( face->autohint.data ); - - /* Discard glyph slots for this face. */ - /* Beware! FT_Done_GlyphSlot() changes the field `face->glyph' */ - while ( face->glyph ) - FT_Done_GlyphSlot( face->glyph ); - - /* discard all sizes for this face */ - FT_List_Finalize( &face->sizes_list, - (FT_List_Destructor)destroy_size, - memory, - driver ); - face->size = 0; - - /* now discard client data */ - if ( face->generic.finalizer ) - face->generic.finalizer( face ); - - /* discard charmaps */ - destroy_charmaps( face, memory ); - - /* finalize format-specific stuff */ - if ( clazz->done_face ) - clazz->done_face( face ); - - /* close the stream for this face if needed */ - FT_Stream_Free( - face->stream, - ( face->face_flags & FT_FACE_FLAG_EXTERNAL_STREAM ) != 0 ); - - face->stream = 0; - - /* get rid of it */ - if ( face->internal ) - { - FT_FREE( face->internal ); - } - FT_FREE( face ); - } - - - static void - Destroy_Driver( FT_Driver driver ) - { - FT_List_Finalize( &driver->faces_list, - (FT_List_Destructor)destroy_face, - driver->root.memory, - driver ); - - /* check whether we need to drop the driver's glyph loader */ - if ( FT_DRIVER_USES_OUTLINES( driver ) ) - FT_GlyphLoader_Done( driver->glyph_loader ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* find_unicode_charmap */ - /* */ - /* <Description> */ - /* This function finds a Unicode charmap, if there is one. */ - /* And if there is more than one, it tries to favour the more */ - /* extensive one, i.e., one that supports UCS-4 against those which */ - /* are limited to the BMP (said UCS-2 encoding.) */ - /* */ - /* This function is called from open_face() (just below), and also */ - /* from FT_Select_Charmap( ..., FT_ENCODING_UNICODE). */ - /* */ - static FT_Error - find_unicode_charmap( FT_Face face ) - { - FT_CharMap* first; - FT_CharMap* cur; - FT_CharMap* unicmap = NULL; /* some UCS-2 map, if we found it */ - - - /* caller should have already checked that `face' is valid */ - FT_ASSERT( face ); - - first = face->charmaps; - - if ( !first ) - return FT_Err_Invalid_CharMap_Handle; - - /* - * The original TrueType specification(s) only specified charmap - * formats that are capable of mapping 8 or 16 bit character codes to - * glyph indices. - * - * However, recent updates to the Apple and OpenType specifications - * introduced new formats that are capable of mapping 32-bit character - * codes as well. And these are already used on some fonts, mainly to - * map non-BMP Asian ideographs as defined in Unicode. - * - * For compatibility purposes, these fonts generally come with - * *several* Unicode charmaps: - * - * - One of them in the "old" 16-bit format, that cannot access - * all glyphs in the font. - * - * - Another one in the "new" 32-bit format, that can access all - * the glyphs. - * - * This function has been written to always favor a 32-bit charmap - * when found. Otherwise, a 16-bit one is returned when found. - */ - - /* since the `interesting' table, with id's 3,10, is normally the */ - /* last one, we loop backwards. This looses with type1 fonts with */ - /* non-BMP characters (<.0001%), this wins with .ttf with non-BMP */ - /* chars (.01% ?), and this is the same about 99.99% of the time! */ - - cur = first + face->num_charmaps; /* points after the last one */ - - for ( ; --cur >= first; ) - { - if ( cur[0]->encoding == FT_ENCODING_UNICODE ) - { - unicmap = cur; /* record we found a Unicode charmap */ - - /* XXX If some new encodings to represent UCS-4 are added, */ - /* they should be added here. */ - if ( ( cur[0]->platform_id == TT_PLATFORM_MICROSOFT && - cur[0]->encoding_id == TT_MS_ID_UCS_4 ) || - ( cur[0]->platform_id == TT_PLATFORM_APPLE_UNICODE && - cur[0]->encoding_id == TT_APPLE_ID_UNICODE_32 ) ) - - /* Hurray! We found a UCS-4 charmap. We can stop the scan! */ - { - face->charmap = cur[0]; - return 0; - } - } - } - - /* We do not have any UCS-4 charmap. Sigh. */ - /* Let's see if we have some other kind of Unicode charmap, though. */ - if ( unicmap != NULL ) - { - face->charmap = unicmap[0]; - return 0; - } - - /* Chou blanc! */ - return FT_Err_Invalid_CharMap_Handle; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* open_face */ - /* */ - /* <Description> */ - /* This function does some work for FT_Open_Face(). */ - /* */ - static FT_Error - open_face( FT_Driver driver, - FT_Stream stream, - FT_Long face_index, - FT_Int num_params, - FT_Parameter* params, - FT_Face *aface ) - { - FT_Memory memory; - FT_Driver_Class clazz; - FT_Face face = 0; - FT_Error error, error2; - FT_Face_Internal internal; - - - clazz = driver->clazz; - memory = driver->root.memory; - - /* allocate the face object and perform basic initialization */ - if ( FT_ALLOC( face, clazz->face_object_size ) ) - goto Fail; - - if ( FT_NEW( internal ) ) - goto Fail; - - face->internal = internal; - - face->driver = driver; - face->memory = memory; - face->stream = stream; - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - { - int i; - - - face->internal->incremental_interface = 0; - for ( i = 0; i < num_params && !face->internal->incremental_interface; - i++ ) - if ( params[i].tag == FT_PARAM_TAG_INCREMENTAL ) - face->internal->incremental_interface = params[i].data; - } -#endif - - error = clazz->init_face( stream, - face, - (FT_Int)face_index, - num_params, - params ); - if ( error ) - goto Fail; - - /* select Unicode charmap by default */ - error2 = find_unicode_charmap( face ); - - /* if no Unicode charmap can be found, FT_Err_Invalid_CharMap_Handle */ - /* is returned. */ - - /* no error should happen, but we want to play safe */ - if ( error2 && error2 != FT_Err_Invalid_CharMap_Handle ) - { - error = error2; - goto Fail; - } - - *aface = face; - - Fail: - if ( error ) - { - destroy_charmaps( face, memory ); - clazz->done_face( face ); - FT_FREE( internal ); - FT_FREE( face ); - *aface = 0; - } - - return error; - } - - - /* there's a Mac-specific extended implementation of FT_New_Face() */ - /* in src/base/ftmac.c */ - -#ifndef FT_MACINTOSH - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_New_Face( FT_Library library, - const char* pathname, - FT_Long face_index, - FT_Face *aface ) - { - FT_Open_Args args; - - - /* test for valid `library' and `aface' delayed to FT_Open_Face() */ - if ( !pathname ) - return FT_Err_Invalid_Argument; - - args.flags = FT_OPEN_PATHNAME; - args.pathname = (char*)pathname; - - return FT_Open_Face( library, &args, face_index, aface ); - } - -#endif /* !FT_MACINTOSH */ - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_New_Memory_Face( FT_Library library, - const FT_Byte* file_base, - FT_Long file_size, - FT_Long face_index, - FT_Face *aface ) - { - FT_Open_Args args; - - - /* test for valid `library' and `face' delayed to FT_Open_Face() */ - if ( !file_base ) - return FT_Err_Invalid_Argument; - - args.flags = FT_OPEN_MEMORY; - args.memory_base = file_base; - args.memory_size = file_size; - - return FT_Open_Face( library, &args, face_index, aface ); - } - - -#if !defined( FT_MACINTOSH ) && defined( FT_CONFIG_OPTION_MAC_FONTS ) - - /* The behavior here is very similar to that in base/ftmac.c, but it */ - /* is designed to work on non-mac systems, so no mac specific calls. */ - /* */ - /* We look at the file and determine if it is a mac dfont file or a mac */ - /* resource file, or a macbinary file containing a mac resource file. */ - /* */ - /* Unlike ftmac I'm not going to look at a `FOND'. I don't really see */ - /* the point, especially since there may be multiple `FOND' resources. */ - /* Instead I'll just look for `sfnt' and `POST' resources, ordered as */ - /* they occur in the file. */ - /* */ - /* Note that multiple `POST' resources do not mean multiple postscript */ - /* fonts; they all get jammed together to make what is essentially a */ - /* pfb file. */ - /* */ - /* We aren't interested in `NFNT' or `FONT' bitmap resources. */ - /* */ - /* As soon as we get an `sfnt' load it into memory and pass it off to */ - /* FT_Open_Face. */ - /* */ - /* If we have a (set of) `POST' resources, massage them into a (memory) */ - /* pfb file and pass that to FT_Open_Face. (As with ftmac.c I'm not */ - /* going to try to save the kerning info. After all that lives in the */ - /* `FOND' which isn't in the file containing the `POST' resources so */ - /* we don't really have access to it. */ - - - /* Finalizer for a memory stream; gets called by FT_Done_Face(). - It frees the memory it uses. */ - /* from ftmac.c */ - static void - memory_stream_close( FT_Stream stream ) - { - FT_Memory memory = stream->memory; - - - FT_FREE( stream->base ); - - stream->size = 0; - stream->base = 0; - stream->close = 0; - } - - - /* Create a new memory stream from a buffer and a size. */ - /* from ftmac.c */ - static FT_Error - new_memory_stream( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Stream_CloseFunc close, - FT_Stream *astream ) - { - FT_Error error; - FT_Memory memory; - FT_Stream stream; - - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( !base ) - return FT_Err_Invalid_Argument; - - *astream = 0; - memory = library->memory; - if ( FT_NEW( stream ) ) - goto Exit; - - FT_Stream_OpenMemory( stream, base, size ); - - stream->close = close; - - *astream = stream; - - Exit: - return error; - } - - - /* Create a new FT_Face given a buffer and a driver name. */ - /* from ftmac.c */ - static FT_Error - open_face_from_buffer( FT_Library library, - FT_Byte* base, - FT_ULong size, - FT_Long face_index, - const char* driver_name, - FT_Face *aface ) - { - FT_Open_Args args; - FT_Error error; - FT_Stream stream; - FT_Memory memory = library->memory; - - - error = new_memory_stream( library, - base, - size, - memory_stream_close, - &stream ); - if ( error ) - { - FT_FREE( base ); - return error; - } - - args.flags = FT_OPEN_STREAM; - args.stream = stream; - if ( driver_name ) - { - args.flags = args.flags | FT_OPEN_DRIVER; - args.driver = FT_Get_Module( library, driver_name ); - } - - error = FT_Open_Face( library, &args, face_index, aface ); - - if ( error == FT_Err_Ok ) - (*aface)->face_flags &= ~FT_FACE_FLAG_EXTERNAL_STREAM; - else - { - FT_Stream_Close( stream ); - FT_FREE( stream ); - } - - return error; - } - - - /* The resource header says we've got resource_cnt `POST' (type1) */ - /* resources in this file. They all need to be coalesced into */ - /* one lump which gets passed on to the type1 driver. */ - /* Here can be only one PostScript font in a file so face_index */ - /* must be 0 (or -1). */ - /* */ - static FT_Error - Mac_Read_POST_Resource( FT_Library library, - FT_Stream stream, - FT_Long *offsets, - FT_Long resource_cnt, - FT_Long face_index, - FT_Face *aface ) - { - FT_Error error = FT_Err_Cannot_Open_Resource; - FT_Memory memory = library->memory; - FT_Byte* pfb_data; - int i, type, flags; - FT_Long len; - FT_Long pfb_len, pfb_pos, pfb_lenpos; - FT_Long rlen, temp; - - - if ( face_index == -1 ) - face_index = 0; - if ( face_index != 0 ) - return error; - - /* Find the length of all the POST resources, concatenated. Assume */ - /* worst case (each resource in its own section). */ - pfb_len = 0; - for ( i = 0; i < resource_cnt; ++i ) - { - error = FT_Stream_Seek( stream, offsets[i] ); - if ( error ) - goto Exit; - if ( FT_READ_LONG( temp ) ) - goto Exit; - pfb_len += temp + 6; - } - - if ( FT_ALLOC( pfb_data, (FT_Long)pfb_len + 2 ) ) - goto Exit; - - pfb_data[0] = 0x80; - pfb_data[1] = 1; /* Ascii section */ - pfb_data[2] = 0; /* 4-byte length, fill in later */ - pfb_data[3] = 0; - pfb_data[4] = 0; - pfb_data[5] = 0; - pfb_pos = 7; - pfb_lenpos = 2; - - len = 0; - type = 1; - for ( i = 0; i < resource_cnt; ++i ) - { - error = FT_Stream_Seek( stream, offsets[i] ); - if ( error ) - goto Exit2; - if ( FT_READ_LONG( rlen ) ) - goto Exit; - if ( FT_READ_USHORT( flags ) ) - goto Exit; - rlen -= 2; /* the flags are part of the resource */ - if ( ( flags >> 8 ) == type ) - len += rlen; - else - { - pfb_data[pfb_lenpos ] = (FT_Byte)( len ); - pfb_data[pfb_lenpos + 1] = (FT_Byte)( len >> 8 ); - pfb_data[pfb_lenpos + 2] = (FT_Byte)( len >> 16 ); - pfb_data[pfb_lenpos + 3] = (FT_Byte)( len >> 24 ); - - if ( ( flags >> 8 ) == 5 ) /* End of font mark */ - break; - - pfb_data[pfb_pos++] = 0x80; - - type = flags >> 8; - len = rlen; - - pfb_data[pfb_pos++] = (FT_Byte)type; - pfb_lenpos = (FT_Byte)pfb_pos; - pfb_data[pfb_pos++] = 0; /* 4-byte length, fill in later */ - pfb_data[pfb_pos++] = 0; - pfb_data[pfb_pos++] = 0; - pfb_data[pfb_pos++] = 0; - } - - error = FT_Stream_Read( stream, (FT_Byte *)pfb_data + pfb_pos, rlen ); - pfb_pos += rlen; - } - - pfb_data[pfb_pos++] = 0x80; - pfb_data[pfb_pos++] = 3; - - pfb_data[pfb_lenpos ] = (FT_Byte)( len ); - pfb_data[pfb_lenpos + 1] = (FT_Byte)( len >> 8 ); - pfb_data[pfb_lenpos + 2] = (FT_Byte)( len >> 16 ); - pfb_data[pfb_lenpos + 3] = (FT_Byte)( len >> 24 ); - - return open_face_from_buffer( library, - pfb_data, - pfb_pos, - face_index, - "type1", - aface ); - - Exit2: - FT_FREE( pfb_data ); - - Exit: - return error; - } - - - /* The resource header says we've got resource_cnt `sfnt' */ - /* (TrueType/OpenType) resources in this file. Look through */ - /* them for the one indicated by face_index, load it into mem, */ - /* pass it on the the truetype driver and return it. */ - /* */ - static FT_Error - Mac_Read_sfnt_Resource( FT_Library library, - FT_Stream stream, - FT_Long *offsets, - FT_Long resource_cnt, - FT_Long face_index, - FT_Face *aface ) - { - FT_Memory memory = library->memory; - FT_Byte* sfnt_data; - FT_Error error; - FT_Long flag_offset; - FT_Long rlen; - int is_cff; - - - if ( face_index == -1 ) - face_index = 0; - if ( face_index >= resource_cnt ) - return FT_Err_Cannot_Open_Resource; - - flag_offset = offsets[face_index]; - error = FT_Stream_Seek( stream, flag_offset ); - if ( error ) - goto Exit; - - if ( FT_READ_LONG( rlen ) ) - goto Exit; - if ( rlen == -1 ) - return FT_Err_Cannot_Open_Resource; - - if ( FT_ALLOC( sfnt_data, (FT_Long)rlen ) ) - return error; - error = FT_Stream_Read( stream, (FT_Byte *)sfnt_data, rlen ); - if ( error ) - goto Exit; - - is_cff = rlen > 4 && sfnt_data[0] == 'O' && - sfnt_data[1] == 'T' && - sfnt_data[2] == 'T' && - sfnt_data[3] == 'O'; - - error = open_face_from_buffer( library, - sfnt_data, - rlen, - face_index, - is_cff ? "cff" : "truetype", - aface ); - - Exit: - return error; - } - - - /* Check for a valid resource fork header, or a valid dfont */ - /* header. In a resource fork the first 16 bytes are repeated */ - /* at the location specified by bytes 4-7. In a dfont bytes */ - /* 4-7 point to 16 bytes of zeroes instead. */ - /* */ - static FT_Error - IsMacResource( FT_Library library, - FT_Stream stream, - FT_Long resource_offset, - FT_Long face_index, - FT_Face *aface ) - { - FT_Memory memory = library->memory; - FT_Error error; - FT_Long map_offset, rdara_pos; - FT_Long *data_offsets; - FT_Long count; - - - error = FT_Raccess_Get_HeaderInfo( library, stream, resource_offset, - &map_offset, &rdara_pos ); - if ( error ) - return error; - - error = FT_Raccess_Get_DataOffsets( library, stream, - map_offset, rdara_pos, - FT_MAKE_TAG( 'P', 'O', 'S', 'T' ), - &data_offsets, &count ); - if ( !error ) - { - error = Mac_Read_POST_Resource( library, stream, data_offsets, count, - face_index, aface ); - FT_FREE( data_offsets ); - return error; - } - - error = FT_Raccess_Get_DataOffsets( library, stream, - map_offset, rdara_pos, - FT_MAKE_TAG( 's', 'f', 'n', 't' ), - &data_offsets, &count ); - if ( !error ) - { - error = Mac_Read_sfnt_Resource( library, stream, data_offsets, count, - face_index, aface ); - FT_FREE( data_offsets ); - } - - return error; - } - - - /* Check for a valid macbinary header, and if we find one */ - /* check that the (flattened) resource fork in it is valid. */ - /* */ - static FT_Error - IsMacBinary( FT_Library library, - FT_Stream stream, - FT_Long face_index, - FT_Face *aface ) - { - unsigned char header[128]; - FT_Error error; - FT_Long dlen, offset; - - - error = FT_Stream_Seek( stream, 0 ); - if ( error ) - goto Exit; - - error = FT_Stream_Read( stream, (FT_Byte*)header, 128 ); - if ( error ) - goto Exit; - - if ( header[ 0] != 0 || - header[74] != 0 || - header[82] != 0 || - header[ 1] == 0 || - header[ 1] > 33 || - header[63] != 0 || - header[2 + header[1]] != 0 ) - return FT_Err_Unknown_File_Format; - - dlen = ( header[0x53] << 24 ) | - ( header[0x54] << 16 ) | - ( header[0x55] << 8 ) | - header[0x56]; -#if 0 - rlen = ( header[0x57] << 24 ) | - ( header[0x58] << 16 ) | - ( header[0x59] << 8 ) | - header[0x5a]; -#endif /* 0 */ - offset = 128 + ( ( dlen + 127 ) & ~127 ); - - return IsMacResource( library, stream, offset, face_index, aface ); - - Exit: - return error; - } - - - static FT_Error - load_face_in_embedded_rfork( FT_Library library, - FT_Stream stream, - FT_Long face_index, - FT_Face *aface, - const FT_Open_Args *args ) - { - -#undef FT_COMPONENT -#define FT_COMPONENT trace_raccess - - FT_Memory memory = library->memory; - FT_Error error = FT_Err_Unknown_File_Format; - int i; - - char * file_names[FT_RACCESS_N_RULES]; - FT_Long offsets[FT_RACCESS_N_RULES]; - FT_Error errors[FT_RACCESS_N_RULES]; - - FT_Open_Args args2; - FT_Stream stream2; - - - FT_Raccess_Guess( library, stream, - args->pathname, file_names, offsets, errors ); - - for ( i = 0; i < FT_RACCESS_N_RULES; i++ ) - { - if ( errors[i] ) - { - FT_TRACE3(( "Error[%d] has occurred in rule %d\n", errors[i], i )); - continue; - } - - args2.flags = FT_OPEN_PATHNAME; - args2.pathname = file_names[i] ? file_names[i] : args->pathname; - - FT_TRACE3(( "Try rule %d: %s (offset=%d) ...", - i, args2.pathname, offsets[i] )); - - error = FT_Stream_New( library, &args2, &stream2 ); - if ( error ) - { - FT_TRACE3(( "failed\n" )); - continue; - } - - error = IsMacResource( library, stream2, offsets[i], - face_index, aface ); - FT_Stream_Close( stream2 ); - - FT_TRACE3(( "%s\n", error ? "failed": "successful" )); - - if ( !error ) - break; - } - - for (i = 0; i < FT_RACCESS_N_RULES; i++) - { - if ( file_names[i] ) - FT_FREE( file_names[i] ); - } - - /* Caller (load_mac_face) requires FT_Err_Unknown_File_Format. */ - if ( error ) - error = FT_Err_Unknown_File_Format; - - return error; - -#undef FT_COMPONENT -#define FT_COMPONENT trace_objs - - } - - - /* Check for some macintosh formats. */ - /* Is this a macbinary file? If so look at the resource fork. */ - /* Is this a mac dfont file? */ - /* Is this an old style resource fork? (in data) */ - /* Else call load_face_in_embedded_rfork to try extra rules */ - /* (defined in `ftrfork.c'). */ - /* */ - static FT_Error - load_mac_face( FT_Library library, - FT_Stream stream, - FT_Long face_index, - FT_Face *aface, - const FT_Open_Args *args ) - { - FT_Error error; - FT_UNUSED( args ); - - - error = IsMacBinary( library, stream, face_index, aface ); - if ( FT_ERROR_BASE( error ) == FT_Err_Unknown_File_Format ) - { - -#undef FT_COMPONENT -#define FT_COMPONENT trace_raccess - - FT_TRACE3(( "Try as dfont: %s ...", args->pathname )); - - error = IsMacResource( library, stream, 0, face_index, aface ); - - FT_TRACE3(( "%s\n", error ? "failed" : "successful" )); - -#undef FT_COMPONENT -#define FT_COMPONENT trace_objs - - } - - if ( ( FT_ERROR_BASE( error ) == FT_Err_Unknown_File_Format || - FT_ERROR_BASE( error ) == FT_Err_Invalid_Stream_Operation ) && - ( args->flags & FT_OPEN_PATHNAME ) ) - error = load_face_in_embedded_rfork( library, stream, - face_index, aface, args ); - return error; - } - -#endif /* !FT_MACINTOSH && FT_CONFIG_OPTION_MAC_FONTS */ - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Open_Face( FT_Library library, - const FT_Open_Args* args, - FT_Long face_index, - FT_Face *aface ) - { - FT_Error error; - FT_Driver driver; - FT_Memory memory; - FT_Stream stream; - FT_Face face = 0; - FT_ListNode node = 0; - FT_Bool external_stream; - - - /* test for valid `library' delayed to */ - /* FT_Stream_New() */ - - if ( !aface || !args ) - return FT_Err_Invalid_Argument; - - *aface = 0; - - external_stream = FT_BOOL( ( args->flags & FT_OPEN_STREAM ) && - args->stream ); - - /* create input stream */ - error = FT_Stream_New( library, args, &stream ); - if ( error ) - goto Exit; - - memory = library->memory; - - /* If the font driver is specified in the `args' structure, use */ - /* it. Otherwise, we scan the list of registered drivers. */ - if ( ( args->flags & FT_OPEN_DRIVER ) && args->driver ) - { - driver = FT_DRIVER( args->driver ); - - /* not all modules are drivers, so check... */ - if ( FT_MODULE_IS_DRIVER( driver ) ) - { - FT_Int num_params = 0; - FT_Parameter* params = 0; - - - if ( args->flags & FT_OPEN_PARAMS ) - { - num_params = args->num_params; - params = args->params; - } - - error = open_face( driver, stream, face_index, - num_params, params, &face ); - if ( !error ) - goto Success; - } - else - error = FT_Err_Invalid_Handle; - - FT_Stream_Free( stream, external_stream ); - goto Fail; - } - else - { - /* check each font driver for an appropriate format */ - FT_Module* cur = library->modules; - FT_Module* limit = cur + library->num_modules; - - - for ( ; cur < limit; cur++ ) - { - /* not all modules are font drivers, so check... */ - if ( FT_MODULE_IS_DRIVER( cur[0] ) ) - { - FT_Int num_params = 0; - FT_Parameter* params = 0; - - - driver = FT_DRIVER( cur[0] ); - - if ( args->flags & FT_OPEN_PARAMS ) - { - num_params = args->num_params; - params = args->params; - } - - error = open_face( driver, stream, face_index, - num_params, params, &face ); - if ( !error ) - goto Success; - - if ( FT_ERROR_BASE( error ) != FT_Err_Unknown_File_Format ) - goto Fail3; - } - } - - Fail3: - /* If we are on the mac, and we get an FT_Err_Invalid_Stream_Operation */ - /* it may be because we have an empty data fork, so we need to check */ - /* the resource fork. */ - if ( FT_ERROR_BASE( error ) != FT_Err_Unknown_File_Format && - FT_ERROR_BASE( error ) != FT_Err_Invalid_Stream_Operation ) - goto Fail2; - -#if !defined( FT_MACINTOSH ) && defined( FT_CONFIG_OPTION_MAC_FONTS ) - error = load_mac_face( library, stream, face_index, aface, args ); - if ( !error ) - { - /* We don't want to go to Success here. We've already done that. */ - /* On the other hand, if we succeeded we still need to close this */ - /* stream (we opened a different stream which extracted the */ - /* interesting information out of this stream here. That stream */ - /* will still be open and the face will point to it). */ - FT_Stream_Free( stream, external_stream ); - return error; - } - - if ( FT_ERROR_BASE( error ) != FT_Err_Unknown_File_Format ) - goto Fail2; -#endif /* !FT_MACINTOSH && FT_CONFIG_OPTION_MAC_FONTS */ - - /* no driver is able to handle this format */ - error = FT_Err_Unknown_File_Format; - - Fail2: - FT_Stream_Free( stream, external_stream ); - goto Fail; - } - - Success: - FT_TRACE4(( "FT_Open_Face: New face object, adding to list\n" )); - - /* set the FT_FACE_FLAG_EXTERNAL_STREAM bit for FT_Done_Face */ - if ( external_stream ) - face->face_flags |= FT_FACE_FLAG_EXTERNAL_STREAM; - - /* add the face object to its driver's list */ - if ( FT_NEW( node ) ) - goto Fail; - - node->data = face; - /* don't assume driver is the same as face->driver, so use */ - /* face->driver instead. */ - FT_List_Add( &face->driver->faces_list, node ); - - /* now allocate a glyph slot object for the face */ - { - FT_GlyphSlot slot; - - - FT_TRACE4(( "FT_Open_Face: Creating glyph slot\n" )); - - error = FT_New_GlyphSlot( face, &slot ); - if ( error ) - goto Fail; - - face->glyph = slot; - } - - /* finally, allocate a size object for the face */ - { - FT_Size size; - - - FT_TRACE4(( "FT_Open_Face: Creating size object\n" )); - - error = FT_New_Size( face, &size ); - if ( error ) - goto Fail; - - face->size = size; - } - - /* initialize internal face data */ - { - FT_Face_Internal internal = face->internal; - - - internal->transform_matrix.xx = 0x10000L; - internal->transform_matrix.xy = 0; - internal->transform_matrix.yx = 0; - internal->transform_matrix.yy = 0x10000L; - - internal->transform_delta.x = 0; - internal->transform_delta.y = 0; - } - - *aface = face; - goto Exit; - - Fail: - FT_Done_Face( face ); - - Exit: - FT_TRACE4(( "FT_Open_Face: Return %d\n", error )); - - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Attach_File( FT_Face face, - const char* filepathname ) - { - FT_Open_Args open; - - - /* test for valid `face' delayed to FT_Attach_Stream() */ - - if ( !filepathname ) - return FT_Err_Invalid_Argument; - - open.flags = FT_OPEN_PATHNAME; - open.pathname = (char*)filepathname; - - return FT_Attach_Stream( face, &open ); - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Attach_Stream( FT_Face face, - FT_Open_Args* parameters ) - { - FT_Stream stream; - FT_Error error; - FT_Driver driver; - - FT_Driver_Class clazz; - - - /* test for valid `parameters' delayed to FT_Stream_New() */ - - if ( !face ) - return FT_Err_Invalid_Face_Handle; - - driver = face->driver; - if ( !driver ) - return FT_Err_Invalid_Driver_Handle; - - error = FT_Stream_New( driver->root.library, parameters, &stream ); - if ( error ) - goto Exit; - - /* we implement FT_Attach_Stream in each driver through the */ - /* `attach_file' interface */ - - error = FT_Err_Unimplemented_Feature; - clazz = driver->clazz; - if ( clazz->attach_file ) - error = clazz->attach_file( face, stream ); - - /* close the attached stream */ - FT_Stream_Free( stream, - (FT_Bool)( parameters->stream && - ( parameters->flags & FT_OPEN_STREAM ) ) ); - - Exit: - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Done_Face( FT_Face face ) - { - FT_Error error; - FT_Driver driver; - FT_Memory memory; - FT_ListNode node; - - - error = FT_Err_Invalid_Face_Handle; - if ( face && face->driver ) - { - driver = face->driver; - memory = driver->root.memory; - - /* find face in driver's list */ - node = FT_List_Find( &driver->faces_list, face ); - if ( node ) - { - /* remove face object from the driver's list */ - FT_List_Remove( &driver->faces_list, node ); - FT_FREE( node ); - - /* now destroy the object proper */ - destroy_face( memory, face, driver ); - error = FT_Err_Ok; - } - } - return error; - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_New_Size( FT_Face face, - FT_Size *asize ) - { - FT_Error error; - FT_Memory memory; - FT_Driver driver; - FT_Driver_Class clazz; - - FT_Size size = 0; - FT_ListNode node = 0; - - - if ( !face ) - return FT_Err_Invalid_Face_Handle; - - if ( !asize ) - return FT_Err_Invalid_Size_Handle; - - if ( !face->driver ) - return FT_Err_Invalid_Driver_Handle; - - *asize = 0; - - driver = face->driver; - clazz = driver->clazz; - memory = face->memory; - - /* Allocate new size object and perform basic initialisation */ - if ( FT_ALLOC( size, clazz->size_object_size ) || FT_NEW( node ) ) - goto Exit; - - size->face = face; - - /* for now, do not use any internal fields in size objects */ - size->internal = 0; - - if ( clazz->init_size ) - error = clazz->init_size( size ); - - /* in case of success, add to the face's list */ - if ( !error ) - { - *asize = size; - node->data = size; - FT_List_Add( &face->sizes_list, node ); - } - - Exit: - if ( error ) - { - FT_FREE( node ); - FT_FREE( size ); - } - - return error; - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Done_Size( FT_Size size ) - { - FT_Error error; - FT_Driver driver; - FT_Memory memory; - FT_Face face; - FT_ListNode node; - - - if ( !size ) - return FT_Err_Invalid_Size_Handle; - - face = size->face; - if ( !face ) - return FT_Err_Invalid_Face_Handle; - - driver = face->driver; - if ( !driver ) - return FT_Err_Invalid_Driver_Handle; - - memory = driver->root.memory; - - error = FT_Err_Ok; - node = FT_List_Find( &face->sizes_list, size ); - if ( node ) - { - FT_List_Remove( &face->sizes_list, node ); - FT_FREE( node ); - - if ( face->size == size ) - { - face->size = 0; - if ( face->sizes_list.head ) - face->size = (FT_Size)(face->sizes_list.head->data); - } - - destroy_size( memory, size, driver ); - } - else - error = FT_Err_Invalid_Size_Handle; - - return error; - } - - - static void - ft_recompute_scaled_metrics( FT_Face face, - FT_Size_Metrics* metrics ) - { - /* Compute root ascender, descender, test height, and max_advance */ - - metrics->ascender = FT_PIX_CEIL( FT_MulFix( face->ascender, - metrics->y_scale ) ); - - metrics->descender = FT_PIX_FLOOR( FT_MulFix( face->descender, - metrics->y_scale ) ); - - metrics->height = FT_PIX_ROUND( FT_MulFix( face->height, - metrics->y_scale ) ); - - metrics->max_advance = FT_PIX_ROUND( FT_MulFix( face->max_advance_width, - metrics->x_scale ) ); - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Set_Char_Size( FT_Face face, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) - { - FT_Error error = FT_Err_Ok; - FT_Driver driver; - FT_Driver_Class clazz; - FT_Size_Metrics* metrics; - FT_Long dim_x, dim_y; - - - if ( !face || !face->size || !face->driver ) - return FT_Err_Invalid_Face_Handle; - - driver = face->driver; - metrics = &face->size->metrics; - clazz = driver->clazz; - - if ( !char_width ) - char_width = char_height; - - else if ( !char_height ) - char_height = char_width; - - if ( !horz_resolution ) - horz_resolution = 72; - - if ( !vert_resolution ) - vert_resolution = 72; - - /* default processing -- this can be overridden by the driver */ - if ( char_width < 1 * 64 ) - char_width = 1 * 64; - if ( char_height < 1 * 64 ) - char_height = 1 * 64; - - /* Compute pixel sizes in 26.6 units */ - dim_x = ( char_width * horz_resolution + 36 ) / 72; - dim_y = ( char_height * vert_resolution + 36 ) / 72; - - { - FT_UShort x_ppem = (FT_UShort)( ( dim_x + 32 ) >> 6 ); - FT_UShort y_ppem = (FT_UShort)( ( dim_y + 32 ) >> 6 ); - - if ( x_ppem == metrics->x_ppem && y_ppem == metrics->y_ppem ) - return FT_Err_Ok; - - metrics->x_ppem = x_ppem; - metrics->y_ppem = y_ppem; - } - - metrics->x_scale = 0x10000L; - metrics->y_scale = 0x10000L; - - if ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - { - metrics->x_scale = FT_DivFix( dim_x, face->units_per_EM ); - metrics->y_scale = FT_DivFix( dim_y, face->units_per_EM ); - - ft_recompute_scaled_metrics( face, metrics ); - } - - if ( clazz->set_char_sizes ) - error = clazz->set_char_sizes( face->size, - char_width, - char_height, - horz_resolution, - vert_resolution ); - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Set_Pixel_Sizes( FT_Face face, - FT_UInt pixel_width, - FT_UInt pixel_height ) - { - FT_Error error = FT_Err_Ok; - FT_Driver driver; - FT_Driver_Class clazz; - FT_Size_Metrics* metrics; - - - if ( !face || !face->size || !face->driver ) - return FT_Err_Invalid_Face_Handle; - - driver = face->driver; - metrics = &face->size->metrics; - clazz = driver->clazz; - - if ( pixel_width == 0 ) - pixel_width = pixel_height; - - else if ( pixel_height == 0 ) - pixel_height = pixel_width; - - if ( pixel_width < 1 ) - pixel_width = 1; - if ( pixel_height < 1 ) - pixel_height = 1; - - /* use `>=' to avoid potention compiler warning on 16bit platforms */ - if ( pixel_width >= 0xFFFFU ) - pixel_width = 0xFFFFU; - if ( pixel_height >= 0xFFFFU ) - pixel_height = 0xFFFFU; - - metrics->x_ppem = (FT_UShort)pixel_width; - metrics->y_ppem = (FT_UShort)pixel_height; - - if ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - { - metrics->x_scale = FT_DivFix( metrics->x_ppem << 6, - face->units_per_EM ); - - metrics->y_scale = FT_DivFix( metrics->y_ppem << 6, - face->units_per_EM ); - - ft_recompute_scaled_metrics( face, metrics ); - } - - if ( clazz->set_pixel_sizes ) - error = clazz->set_pixel_sizes( face->size, - pixel_width, - pixel_height ); - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Get_Kerning( FT_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_UInt kern_mode, - FT_Vector *akerning ) - { - FT_Error error = FT_Err_Ok; - FT_Driver driver; - - - if ( !face ) - return FT_Err_Invalid_Face_Handle; - - if ( !akerning ) - return FT_Err_Invalid_Argument; - - driver = face->driver; - - akerning->x = 0; - akerning->y = 0; - - if ( driver->clazz->get_kerning ) - { - error = driver->clazz->get_kerning( face, - left_glyph, - right_glyph, - akerning ); - if ( !error ) - { - if ( kern_mode != FT_KERNING_UNSCALED ) - { - akerning->x = FT_MulFix( akerning->x, face->size->metrics.x_scale ); - akerning->y = FT_MulFix( akerning->y, face->size->metrics.y_scale ); - - if ( kern_mode != FT_KERNING_UNFITTED ) - { - akerning->x = FT_PIX_ROUND( akerning->x ); - akerning->y = FT_PIX_ROUND( akerning->y ); - } - } - } - } - - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Select_Charmap( FT_Face face, - FT_Encoding encoding ) - { - FT_CharMap* cur; - FT_CharMap* limit; - - - if ( !face ) - return FT_Err_Invalid_Face_Handle; - - /* FT_ENCODING_UNICODE is special. We try to find the `best' Unicode */ - /* charmap available, i.e., one with UCS-4 characters, if possible. */ - /* */ - /* This is done by find_unicode_charmap() above, to share code. */ - if ( encoding == FT_ENCODING_UNICODE ) - return find_unicode_charmap( face ); - - cur = face->charmaps; - if ( !cur ) - return FT_Err_Invalid_CharMap_Handle; - - limit = cur + face->num_charmaps; - - for ( ; cur < limit; cur++ ) - { - if ( cur[0]->encoding == encoding ) - { - face->charmap = cur[0]; - return 0; - } - } - - return FT_Err_Invalid_Argument; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Set_Charmap( FT_Face face, - FT_CharMap charmap ) - { - FT_CharMap* cur; - FT_CharMap* limit; - - - if ( !face ) - return FT_Err_Invalid_Face_Handle; - - cur = face->charmaps; - if ( !cur ) - return FT_Err_Invalid_CharMap_Handle; - - limit = cur + face->num_charmaps; - - for ( ; cur < limit; cur++ ) - { - if ( cur[0] == charmap ) - { - face->charmap = cur[0]; - return 0; - } - } - return FT_Err_Invalid_Argument; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Int ) - FT_Get_Charmap_Index( FT_CharMap charmap ) - { - FT_Int i; - - - for ( i = 0; i < charmap->face->num_charmaps; i++ ) - if ( charmap->face->charmaps[i] == charmap ) - break; - - FT_ASSERT( i < charmap->face->num_charmaps ); - - return i; - } - - - FT_BASE_DEF( void ) - FT_CMap_Done( FT_CMap cmap ) - { - if ( cmap ) - { - FT_CMap_Class clazz = cmap->clazz; - FT_Face face = cmap->charmap.face; - FT_Memory memory = FT_FACE_MEMORY(face); - - - if ( clazz->done ) - clazz->done( cmap ); - - FT_FREE( cmap ); - } - } - - - FT_BASE_DEF( FT_Error ) - FT_CMap_New( FT_CMap_Class clazz, - FT_Pointer init_data, - FT_CharMap charmap, - FT_CMap *acmap ) - { - FT_Error error = 0; - FT_Face face; - FT_Memory memory; - FT_CMap cmap; - - - if ( clazz == NULL || charmap == NULL || charmap->face == NULL ) - return FT_Err_Invalid_Argument; - - face = charmap->face; - memory = FT_FACE_MEMORY( face ); - - if ( !FT_ALLOC( cmap, clazz->size ) ) - { - cmap->charmap = *charmap; - cmap->clazz = clazz; - - if ( clazz->init ) - { - error = clazz->init( cmap, init_data ); - if ( error ) - goto Fail; - } - - /* add it to our list of charmaps */ - if ( FT_RENEW_ARRAY( face->charmaps, - face->num_charmaps, - face->num_charmaps+1 ) ) - goto Fail; - - face->charmaps[face->num_charmaps++] = (FT_CharMap)cmap; - } - - Exit: - if ( acmap ) - *acmap = cmap; - - return error; - - Fail: - FT_CMap_Done( cmap ); - cmap = NULL; - goto Exit; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_UInt ) - FT_Get_Char_Index( FT_Face face, - FT_ULong charcode ) - { - FT_UInt result = 0; - - - if ( face && face->charmap ) - { - FT_CMap cmap = FT_CMAP( face->charmap ); - - - result = cmap->clazz->char_index( cmap, charcode ); - } - return result; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_ULong ) - FT_Get_First_Char( FT_Face face, - FT_UInt *agindex ) - { - FT_ULong result = 0; - FT_UInt gindex = 0; - - - if ( face && face->charmap ) - { - gindex = FT_Get_Char_Index( face, 0 ); - if ( gindex == 0 ) - result = FT_Get_Next_Char( face, 0, &gindex ); - } - - if ( agindex ) - *agindex = gindex; - - return result; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_ULong ) - FT_Get_Next_Char( FT_Face face, - FT_ULong charcode, - FT_UInt *agindex ) - { - FT_ULong result = 0; - FT_UInt gindex = 0; - - - if ( face && face->charmap ) - { - FT_UInt32 code = (FT_UInt32)charcode; - FT_CMap cmap = FT_CMAP( face->charmap ); - - - gindex = cmap->clazz->char_next( cmap, &code ); - result = ( gindex == 0 ) ? 0 : code; - } - - if ( agindex ) - *agindex = gindex; - - return result; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_UInt ) - FT_Get_Name_Index( FT_Face face, - FT_String* glyph_name ) - { - FT_UInt result = 0; - - - if ( face && FT_HAS_GLYPH_NAMES( face ) ) - { - FT_Service_GlyphDict service; - - - FT_FACE_LOOKUP_SERVICE( face, - service, - GLYPH_DICT ); - - if ( service && service->name_index ) - result = service->name_index( face, glyph_name ); - } - - return result; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Get_Glyph_Name( FT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) - { - FT_Error error = FT_Err_Invalid_Argument; - - - /* clean up buffer */ - if ( buffer && buffer_max > 0 ) - ((FT_Byte*)buffer)[0] = 0; - - if ( face && - glyph_index <= (FT_UInt)face->num_glyphs && - FT_HAS_GLYPH_NAMES( face ) ) - { - FT_Service_GlyphDict service; - - - FT_FACE_LOOKUP_SERVICE( face, - service, - GLYPH_DICT ); - - if ( service && service->get_name ) - error = service->get_name( face, glyph_index, buffer, buffer_max ); - } - - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( const char* ) - FT_Get_Postscript_Name( FT_Face face ) - { - const char* result = NULL; - - - if ( !face ) - goto Exit; - - if ( !result ) - { - FT_Service_PsFontName service; - - - FT_FACE_LOOKUP_SERVICE( face, - service, - POSTSCRIPT_FONT_NAME ); - - if ( service && service->get_ps_font_name ) - result = service->get_ps_font_name( face ); - } - - Exit: - return result; - } - - - /* documentation is in tttables.h */ - - FT_EXPORT_DEF( void* ) - FT_Get_Sfnt_Table( FT_Face face, - FT_Sfnt_Tag tag ) - { - void* table = 0; - FT_Service_SFNT_Table service; - - - if ( face && FT_IS_SFNT( face ) ) - { - FT_FACE_FIND_SERVICE( face, service, SFNT_TABLE ); - if ( service != NULL ) - table = service->get_table( face, tag ); - } - - return table; - } - - - /* documentation is in tttables.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Load_Sfnt_Table( FT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ) - { - FT_Service_SFNT_Table service; - - - if ( !face || !FT_IS_SFNT( face ) ) - return FT_Err_Invalid_Face_Handle; - - FT_FACE_FIND_SERVICE( face, service, SFNT_TABLE ); - if ( service == NULL ) - return FT_Err_Unimplemented_Feature; - - return service->load_table( face, tag, offset, buffer, length ); - } - - - FT_EXPORT_DEF( FT_ULong ) - FT_Get_CMap_Language_ID( FT_CharMap charmap ) - { - FT_Service_TTCMaps service; - FT_Face face; - TT_CMapInfo cmap_info; - - - if ( !charmap || !charmap->face ) - return 0; - - face = charmap->face; - FT_FACE_FIND_SERVICE( face, service, TT_CMAP ); - if ( service == NULL ) - return 0; - if ( service->get_cmap_info( charmap, &cmap_info )) - return 0; - - return cmap_info.language; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Activate_Size( FT_Size size ) - { - FT_Face face; - - - if ( size == NULL ) - return FT_Err_Bad_Argument; - - face = size->face; - if ( face == NULL || face->driver == NULL ) - return FT_Err_Bad_Argument; - - /* we don't need anything more complex than that; all size objects */ - /* are already listed by the face */ - face->size = size; - - return FT_Err_Ok; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** R E N D E R E R S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /* lookup a renderer by glyph format in the library's list */ - FT_BASE_DEF( FT_Renderer ) - FT_Lookup_Renderer( FT_Library library, - FT_Glyph_Format format, - FT_ListNode* node ) - { - FT_ListNode cur; - FT_Renderer result = 0; - - - if ( !library ) - goto Exit; - - cur = library->renderers.head; - - if ( node ) - { - if ( *node ) - cur = (*node)->next; - *node = 0; - } - - while ( cur ) - { - FT_Renderer renderer = FT_RENDERER( cur->data ); - - - if ( renderer->glyph_format == format ) - { - if ( node ) - *node = cur; - - result = renderer; - break; - } - cur = cur->next; - } - - Exit: - return result; - } - - - static FT_Renderer - ft_lookup_glyph_renderer( FT_GlyphSlot slot ) - { - FT_Face face = slot->face; - FT_Library library = FT_FACE_LIBRARY( face ); - FT_Renderer result = library->cur_renderer; - - - if ( !result || result->glyph_format != slot->format ) - result = FT_Lookup_Renderer( library, slot->format, 0 ); - - return result; - } - - - static void - ft_set_current_renderer( FT_Library library ) - { - FT_Renderer renderer; - - - renderer = FT_Lookup_Renderer( library, FT_GLYPH_FORMAT_OUTLINE, 0 ); - library->cur_renderer = renderer; - } - - - static FT_Error - ft_add_renderer( FT_Module module ) - { - FT_Library library = module->library; - FT_Memory memory = library->memory; - FT_Error error; - FT_ListNode node; - - - if ( FT_NEW( node ) ) - goto Exit; - - { - FT_Renderer render = FT_RENDERER( module ); - FT_Renderer_Class* clazz = (FT_Renderer_Class*)module->clazz; - - - render->clazz = clazz; - render->glyph_format = clazz->glyph_format; - - /* allocate raster object if needed */ - if ( clazz->glyph_format == FT_GLYPH_FORMAT_OUTLINE && - clazz->raster_class->raster_new ) - { - error = clazz->raster_class->raster_new( memory, &render->raster ); - if ( error ) - goto Fail; - - render->raster_render = clazz->raster_class->raster_render; - render->render = clazz->render_glyph; - } - - /* add to list */ - node->data = module; - FT_List_Add( &library->renderers, node ); - - ft_set_current_renderer( library ); - } - - Fail: - if ( error ) - FT_FREE( node ); - - Exit: - return error; - } - - - static void - ft_remove_renderer( FT_Module module ) - { - FT_Library library = module->library; - FT_Memory memory = library->memory; - FT_ListNode node; - - - node = FT_List_Find( &library->renderers, module ); - if ( node ) - { - FT_Renderer render = FT_RENDERER( module ); - - - /* release raster object, if any */ - if ( render->raster ) - render->clazz->raster_class->raster_done( render->raster ); - - /* remove from list */ - FT_List_Remove( &library->renderers, node ); - FT_FREE( node ); - - ft_set_current_renderer( library ); - } - } - - - /* documentation is in ftrender.h */ - - FT_EXPORT_DEF( FT_Renderer ) - FT_Get_Renderer( FT_Library library, - FT_Glyph_Format format ) - { - /* test for valid `library' delayed to FT_Lookup_Renderer() */ - - return FT_Lookup_Renderer( library, format, 0 ); - } - - - /* documentation is in ftrender.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Set_Renderer( FT_Library library, - FT_Renderer renderer, - FT_UInt num_params, - FT_Parameter* parameters ) - { - FT_ListNode node; - FT_Error error = FT_Err_Ok; - - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( !renderer ) - return FT_Err_Invalid_Argument; - - node = FT_List_Find( &library->renderers, renderer ); - if ( !node ) - { - error = FT_Err_Invalid_Argument; - goto Exit; - } - - FT_List_Up( &library->renderers, node ); - - if ( renderer->glyph_format == FT_GLYPH_FORMAT_OUTLINE ) - library->cur_renderer = renderer; - - if ( num_params > 0 ) - { - FT_Renderer_SetModeFunc set_mode = renderer->clazz->set_mode; - - - for ( ; num_params > 0; num_params-- ) - { - error = set_mode( renderer, parameters->tag, parameters->data ); - if ( error ) - break; - } - } - - Exit: - return error; - } - - - FT_BASE_DEF( FT_Error ) - FT_Render_Glyph_Internal( FT_Library library, - FT_GlyphSlot slot, - FT_Render_Mode render_mode ) - { - FT_Error error = FT_Err_Ok; - FT_Renderer renderer; - - - /* if it is already a bitmap, no need to do anything */ - switch ( slot->format ) - { - case FT_GLYPH_FORMAT_BITMAP: /* already a bitmap, don't do anything */ - break; - - default: - { - FT_ListNode node = 0; - FT_Bool update = 0; - - - /* small shortcut for the very common case */ - if ( slot->format == FT_GLYPH_FORMAT_OUTLINE ) - { - renderer = library->cur_renderer; - node = library->renderers.head; - } - else - renderer = FT_Lookup_Renderer( library, slot->format, &node ); - - error = FT_Err_Unimplemented_Feature; - while ( renderer ) - { - error = renderer->render( renderer, slot, render_mode, NULL ); - if ( !error || - FT_ERROR_BASE( error ) != FT_Err_Cannot_Render_Glyph ) - break; - - /* FT_Err_Cannot_Render_Glyph is returned if the render mode */ - /* is unsupported by the current renderer for this glyph image */ - /* format. */ - - /* now, look for another renderer that supports the same */ - /* format. */ - renderer = FT_Lookup_Renderer( library, slot->format, &node ); - update = 1; - } - - /* if we changed the current renderer for the glyph image format */ - /* we need to select it as the next current one */ - if ( !error && update && renderer ) - FT_Set_Renderer( library, renderer, 0, 0 ); - } - } - - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Render_Glyph( FT_GlyphSlot slot, - FT_Render_Mode render_mode ) - { - FT_Library library; - - - if ( !slot ) - return FT_Err_Invalid_Argument; - - library = FT_FACE_LIBRARY( slot->face ); - - return FT_Render_Glyph_Internal( library, slot, render_mode ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** M O D U L E S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Destroy_Module */ - /* */ - /* <Description> */ - /* Destroys a given module object. For drivers, this also destroys */ - /* all child faces. */ - /* */ - /* <InOut> */ - /* module :: A handle to the target driver object. */ - /* */ - /* <Note> */ - /* The driver _must_ be LOCKED! */ - /* */ - static void - Destroy_Module( FT_Module module ) - { - FT_Memory memory = module->memory; - FT_Module_Class* clazz = module->clazz; - FT_Library library = module->library; - - - /* finalize client-data - before anything else */ - if ( module->generic.finalizer ) - module->generic.finalizer( module ); - - if ( library && library->auto_hinter == module ) - library->auto_hinter = 0; - - /* if the module is a renderer */ - if ( FT_MODULE_IS_RENDERER( module ) ) - ft_remove_renderer( module ); - - /* if the module is a font driver, add some steps */ - if ( FT_MODULE_IS_DRIVER( module ) ) - Destroy_Driver( FT_DRIVER( module ) ); - - /* finalize the module object */ - if ( clazz->module_done ) - clazz->module_done( module ); - - /* discard it */ - FT_FREE( module ); - } - - - /* documentation is in ftmodule.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Add_Module( FT_Library library, - const FT_Module_Class* clazz ) - { - FT_Error error; - FT_Memory memory; - FT_Module module; - FT_UInt nn; - - -#define FREETYPE_VER_FIXED ( ( (FT_Long)FREETYPE_MAJOR << 16 ) | \ - FREETYPE_MINOR ) - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( !clazz ) - return FT_Err_Invalid_Argument; - - /* check freetype version */ - if ( clazz->module_requires > FREETYPE_VER_FIXED ) - return FT_Err_Invalid_Version; - - /* look for a module with the same name in the library's table */ - for ( nn = 0; nn < library->num_modules; nn++ ) - { - module = library->modules[nn]; - if ( ft_strcmp( module->clazz->module_name, clazz->module_name ) == 0 ) - { - /* this installed module has the same name, compare their versions */ - if ( clazz->module_version <= module->clazz->module_version ) - return FT_Err_Lower_Module_Version; - - /* remove the module from our list, then exit the loop to replace */ - /* it by our new version.. */ - FT_Remove_Module( library, module ); - break; - } - } - - memory = library->memory; - error = FT_Err_Ok; - - if ( library->num_modules >= FT_MAX_MODULES ) - { - error = FT_Err_Too_Many_Drivers; - goto Exit; - } - - /* allocate module object */ - if ( FT_ALLOC( module, clazz->module_size ) ) - goto Exit; - - /* base initialization */ - module->library = library; - module->memory = memory; - module->clazz = (FT_Module_Class*)clazz; - - /* check whether the module is a renderer - this must be performed */ - /* before the normal module initialization */ - if ( FT_MODULE_IS_RENDERER( module ) ) - { - /* add to the renderers list */ - error = ft_add_renderer( module ); - if ( error ) - goto Fail; - } - - /* is the module a auto-hinter? */ - if ( FT_MODULE_IS_HINTER( module ) ) - library->auto_hinter = module; - - /* if the module is a font driver */ - if ( FT_MODULE_IS_DRIVER( module ) ) - { - /* allocate glyph loader if needed */ - FT_Driver driver = FT_DRIVER( module ); - - - driver->clazz = (FT_Driver_Class)module->clazz; - if ( FT_DRIVER_USES_OUTLINES( driver ) ) - { - error = FT_GlyphLoader_New( memory, &driver->glyph_loader ); - if ( error ) - goto Fail; - } - } - - if ( clazz->module_init ) - { - error = clazz->module_init( module ); - if ( error ) - goto Fail; - } - - /* add module to the library's table */ - library->modules[library->num_modules++] = module; - - Exit: - return error; - - Fail: - if ( FT_MODULE_IS_DRIVER( module ) ) - { - FT_Driver driver = FT_DRIVER( module ); - - - if ( FT_DRIVER_USES_OUTLINES( driver ) ) - FT_GlyphLoader_Done( driver->glyph_loader ); - } - - if ( FT_MODULE_IS_RENDERER( module ) ) - { - FT_Renderer renderer = FT_RENDERER( module ); - - - if ( renderer->raster ) - renderer->clazz->raster_class->raster_done( renderer->raster ); - } - - FT_FREE( module ); - goto Exit; - } - - - /* documentation is in ftmodule.h */ - - FT_EXPORT_DEF( FT_Module ) - FT_Get_Module( FT_Library library, - const char* module_name ) - { - FT_Module result = 0; - FT_Module* cur; - FT_Module* limit; - - - if ( !library || !module_name ) - return result; - - cur = library->modules; - limit = cur + library->num_modules; - - for ( ; cur < limit; cur++ ) - if ( ft_strcmp( cur[0]->clazz->module_name, module_name ) == 0 ) - { - result = cur[0]; - break; - } - - return result; - } - - - /* documentation is in ftobjs.h */ - - FT_BASE_DEF( const void* ) - FT_Get_Module_Interface( FT_Library library, - const char* mod_name ) - { - FT_Module module; - - - /* test for valid `library' delayed to FT_Get_Module() */ - - module = FT_Get_Module( library, mod_name ); - - return module ? module->clazz->module_interface : 0; - } - - - FT_BASE_DEF( FT_Pointer ) - ft_module_get_service( FT_Module module, - const char* service_id ) - { - FT_Pointer result = NULL; - - if ( module ) - { - FT_ASSERT( module->clazz && module->clazz->get_interface ); - - /* first, look for the service in the module - */ - if ( module->clazz->get_interface ) - result = module->clazz->get_interface( module, service_id ); - - if ( result == NULL ) - { - /* we didn't find it, look in all other modules then - */ - FT_Library library = module->library; - FT_Module* cur = library->modules; - FT_Module* limit = cur + library->num_modules; - - for ( ; cur < limit; cur++ ) - { - if ( cur[0] != module ) - { - FT_ASSERT( cur[0]->clazz ); - - if ( cur[0]->clazz->get_interface ) - { - result = cur[0]->clazz->get_interface( cur[0], service_id ); - if ( result != NULL ) - break; - } - } - } - } - } - - return result; - } - - - /* documentation is in ftmodule.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Remove_Module( FT_Library library, - FT_Module module ) - { - /* try to find the module from the table, then remove it from there */ - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( module ) - { - FT_Module* cur = library->modules; - FT_Module* limit = cur + library->num_modules; - - - for ( ; cur < limit; cur++ ) - { - if ( cur[0] == module ) - { - /* remove it from the table */ - library->num_modules--; - limit--; - while ( cur < limit ) - { - cur[0] = cur[1]; - cur++; - } - limit[0] = 0; - - /* destroy the module */ - Destroy_Module( module ); - - return FT_Err_Ok; - } - } - } - return FT_Err_Invalid_Driver_Handle; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** L I B R A R Y ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /* documentation is in ftmodule.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_New_Library( FT_Memory memory, - FT_Library *alibrary ) - { - FT_Library library = 0; - FT_Error error; - - - if ( !memory ) - return FT_Err_Invalid_Argument; - -#ifdef FT_DEBUG_LEVEL_ERROR - /* init debugging support */ - ft_debug_init(); -#endif - - /* first of all, allocate the library object */ - if ( FT_NEW( library ) ) - return error; - - library->memory = memory; - - /* allocate the render pool */ - library->raster_pool_size = FT_RENDER_POOL_SIZE; - if ( FT_ALLOC( library->raster_pool, FT_RENDER_POOL_SIZE ) ) - goto Fail; - - /* That's ok now */ - *alibrary = library; - - return FT_Err_Ok; - - Fail: - FT_FREE( library ); - return error; - } - - - /* documentation is in freetype.h */ - - FT_EXPORT_DEF( void ) - FT_Library_Version( FT_Library library, - FT_Int *amajor, - FT_Int *aminor, - FT_Int *apatch ) - { - FT_Int major = 0; - FT_Int minor = 0; - FT_Int patch = 0; - - - if ( library ) - { - major = library->version_major; - minor = library->version_minor; - patch = library->version_patch; - } - - if ( amajor ) - *amajor = major; - - if ( aminor ) - *aminor = minor; - - if ( apatch ) - *apatch = patch; - } - - - /* documentation is in ftmodule.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Done_Library( FT_Library library ) - { - FT_Memory memory; - - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - memory = library->memory; - - /* Discard client-data */ - if ( library->generic.finalizer ) - library->generic.finalizer( library ); - - /* Close all modules in the library */ -#if 1 - while ( library->num_modules > 0 ) - FT_Remove_Module( library, library->modules[0] ); -#else - { - FT_UInt n; - - - for ( n = 0; n < library->num_modules; n++ ) - { - FT_Module module = library->modules[n]; - - - if ( module ) - { - Destroy_Module( module ); - library->modules[n] = 0; - } - } - } -#endif - - /* Destroy raster objects */ - FT_FREE( library->raster_pool ); - library->raster_pool_size = 0; - - FT_FREE( library ); - return FT_Err_Ok; - } - - - /* documentation is in ftmodule.h */ - - FT_EXPORT_DEF( void ) - FT_Set_Debug_Hook( FT_Library library, - FT_UInt hook_index, - FT_DebugHook_Func debug_hook ) - { - if ( library && debug_hook && - hook_index < - ( sizeof ( library->debug_hooks ) / sizeof ( void* ) ) ) - library->debug_hooks[hook_index] = debug_hook; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftoutln.c b/nx-X11/extras/freetype2/src/base/ftoutln.c deleted file mode 100644 index 5cae931f6..000000000 --- a/nx-X11/extras/freetype2/src/base/ftoutln.c +++ /dev/null @@ -1,795 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftoutln.c */ -/* */ -/* FreeType outline management (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* All functions are declared in freetype.h. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_OUTLINE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_TRIGONOMETRY_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_outline - - - static - const FT_Outline null_outline = { 0, 0, 0, 0, 0, 0 }; - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_Decompose( FT_Outline* outline, - const FT_Outline_Funcs* func_interface, - void* user ) - { -#undef SCALED -#define SCALED( x ) ( ( (x) << shift ) - delta ) - - FT_Vector v_last; - FT_Vector v_control; - FT_Vector v_start; - - FT_Vector* point; - FT_Vector* limit; - char* tags; - - FT_Error error; - - FT_Int n; /* index of contour in outline */ - FT_UInt first; /* index of first point in contour */ - FT_Int tag; /* current point's state */ - - FT_Int shift; - FT_Pos delta; - - - if ( !outline || !func_interface ) - return FT_Err_Invalid_Argument; - - shift = func_interface->shift; - delta = func_interface->delta; - first = 0; - - for ( n = 0; n < outline->n_contours; n++ ) - { - FT_Int last; /* index of last point in contour */ - - - last = outline->contours[n]; - limit = outline->points + last; - - v_start = outline->points[first]; - v_last = outline->points[last]; - - v_start.x = SCALED( v_start.x ); v_start.y = SCALED( v_start.y ); - v_last.x = SCALED( v_last.x ); v_last.y = SCALED( v_last.y ); - - v_control = v_start; - - point = outline->points + first; - tags = outline->tags + first; - tag = FT_CURVE_TAG( tags[0] ); - - /* A contour cannot start with a cubic control point! */ - if ( tag == FT_CURVE_TAG_CUBIC ) - goto Invalid_Outline; - - /* check first point to determine origin */ - if ( tag == FT_CURVE_TAG_CONIC ) - { - /* first point is conic control. Yes, this happens. */ - if ( FT_CURVE_TAG( outline->tags[last] ) == FT_CURVE_TAG_ON ) - { - /* start at last point if it is on the curve */ - v_start = v_last; - limit--; - } - else - { - /* if both first and last points are conic, */ - /* start at their middle and record its position */ - /* for closure */ - v_start.x = ( v_start.x + v_last.x ) / 2; - v_start.y = ( v_start.y + v_last.y ) / 2; - - v_last = v_start; - } - point--; - tags--; - } - - error = func_interface->move_to( &v_start, user ); - if ( error ) - goto Exit; - - while ( point < limit ) - { - point++; - tags++; - - tag = FT_CURVE_TAG( tags[0] ); - switch ( tag ) - { - case FT_CURVE_TAG_ON: /* emit a single line_to */ - { - FT_Vector vec; - - - vec.x = SCALED( point->x ); - vec.y = SCALED( point->y ); - - error = func_interface->line_to( &vec, user ); - if ( error ) - goto Exit; - continue; - } - - case FT_CURVE_TAG_CONIC: /* consume conic arcs */ - v_control.x = SCALED( point->x ); - v_control.y = SCALED( point->y ); - - Do_Conic: - if ( point < limit ) - { - FT_Vector vec; - FT_Vector v_middle; - - - point++; - tags++; - tag = FT_CURVE_TAG( tags[0] ); - - vec.x = SCALED( point->x ); - vec.y = SCALED( point->y ); - - if ( tag == FT_CURVE_TAG_ON ) - { - error = func_interface->conic_to( &v_control, &vec, user ); - if ( error ) - goto Exit; - continue; - } - - if ( tag != FT_CURVE_TAG_CONIC ) - goto Invalid_Outline; - - v_middle.x = ( v_control.x + vec.x ) / 2; - v_middle.y = ( v_control.y + vec.y ) / 2; - - error = func_interface->conic_to( &v_control, &v_middle, user ); - if ( error ) - goto Exit; - - v_control = vec; - goto Do_Conic; - } - - error = func_interface->conic_to( &v_control, &v_start, user ); - goto Close; - - default: /* FT_CURVE_TAG_CUBIC */ - { - FT_Vector vec1, vec2; - - - if ( point + 1 > limit || - FT_CURVE_TAG( tags[1] ) != FT_CURVE_TAG_CUBIC ) - goto Invalid_Outline; - - point += 2; - tags += 2; - - vec1.x = SCALED( point[-2].x ); vec1.y = SCALED( point[-2].y ); - vec2.x = SCALED( point[-1].x ); vec2.y = SCALED( point[-1].y ); - - if ( point <= limit ) - { - FT_Vector vec; - - - vec.x = SCALED( point->x ); - vec.y = SCALED( point->y ); - - error = func_interface->cubic_to( &vec1, &vec2, &vec, user ); - if ( error ) - goto Exit; - continue; - } - - error = func_interface->cubic_to( &vec1, &vec2, &v_start, user ); - goto Close; - } - } - } - - /* close the contour with a line segment */ - error = func_interface->line_to( &v_start, user ); - - Close: - if ( error ) - goto Exit; - - first = last + 1; - } - - return 0; - - Exit: - return error; - - Invalid_Outline: - return FT_Err_Invalid_Outline; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_New_Internal( FT_Memory memory, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ) - { - FT_Error error; - - - if ( !anoutline || !memory ) - return FT_Err_Invalid_Argument; - - *anoutline = null_outline; - - if ( FT_NEW_ARRAY( anoutline->points, numPoints * 2L ) || - FT_NEW_ARRAY( anoutline->tags, numPoints ) || - FT_NEW_ARRAY( anoutline->contours, numContours ) ) - goto Fail; - - anoutline->n_points = (FT_UShort)numPoints; - anoutline->n_contours = (FT_Short)numContours; - anoutline->flags |= FT_OUTLINE_OWNER; - - return FT_Err_Ok; - - Fail: - anoutline->flags |= FT_OUTLINE_OWNER; - FT_Outline_Done_Internal( memory, anoutline ); - - return error; - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_New( FT_Library library, - FT_UInt numPoints, - FT_Int numContours, - FT_Outline *anoutline ) - { - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - return FT_Outline_New_Internal( library->memory, numPoints, - numContours, anoutline ); - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_Check( FT_Outline* outline ) - { - if ( outline ) - { - FT_Int n_points = outline->n_points; - FT_Int n_contours = outline->n_contours; - FT_Int end0, end; - FT_Int n; - - - /* empty glyph? */ - if ( n_points == 0 && n_contours == 0 ) - return 0; - - /* check point and contour counts */ - if ( n_points <= 0 || n_contours <= 0 ) - goto Bad; - - end0 = end = -1; - for ( n = 0; n < n_contours; n++ ) - { - end = outline->contours[n]; - - /* note that we don't accept empty contours */ - if ( end <= end0 || end >= n_points ) - goto Bad; - - end0 = end; - } - - if ( end != n_points - 1 ) - goto Bad; - - /* XXX: check the tags array */ - return 0; - } - - Bad: - return FT_Err_Invalid_Argument; - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_Copy( FT_Outline* source, - FT_Outline *target ) - { - FT_Int is_owner; - - - if ( !source || !target || - source->n_points != target->n_points || - source->n_contours != target->n_contours ) - return FT_Err_Invalid_Argument; - - FT_ARRAY_COPY( target->points, source->points, source->n_points ); - - FT_ARRAY_COPY( target->tags, source->tags, source->n_points ); - - FT_ARRAY_COPY( target->contours, source->contours, source->n_contours ); - - /* copy all flags, except the `FT_OUTLINE_OWNER' one */ - is_owner = target->flags & FT_OUTLINE_OWNER; - target->flags = source->flags; - - target->flags &= ~FT_OUTLINE_OWNER; - target->flags |= is_owner; - - return FT_Err_Ok; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_Done_Internal( FT_Memory memory, - FT_Outline* outline ) - { - if ( outline ) - { - if ( outline->flags & FT_OUTLINE_OWNER ) - { - FT_FREE( outline->points ); - FT_FREE( outline->tags ); - FT_FREE( outline->contours ); - } - *outline = null_outline; - - return FT_Err_Ok; - } - else - return FT_Err_Invalid_Argument; - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_Done( FT_Library library, - FT_Outline* outline ) - { - /* check for valid `outline' in FT_Outline_Done_Internal() */ - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - return FT_Outline_Done_Internal( library->memory, outline ); - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( void ) - FT_Outline_Get_CBox( FT_Outline* outline, - FT_BBox *acbox ) - { - FT_Pos xMin, yMin, xMax, yMax; - - - if ( outline && acbox ) - { - if ( outline->n_points == 0 ) - { - xMin = 0; - yMin = 0; - xMax = 0; - yMax = 0; - } - else - { - FT_Vector* vec = outline->points; - FT_Vector* limit = vec + outline->n_points; - - - xMin = xMax = vec->x; - yMin = yMax = vec->y; - vec++; - - for ( ; vec < limit; vec++ ) - { - FT_Pos x, y; - - - x = vec->x; - if ( x < xMin ) xMin = x; - if ( x > xMax ) xMax = x; - - y = vec->y; - if ( y < yMin ) yMin = y; - if ( y > yMax ) yMax = y; - } - } - acbox->xMin = xMin; - acbox->xMax = xMax; - acbox->yMin = yMin; - acbox->yMax = yMax; - } - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( void ) - FT_Outline_Translate( FT_Outline* outline, - FT_Pos xOffset, - FT_Pos yOffset ) - { - FT_UShort n; - FT_Vector* vec = outline->points; - - - for ( n = 0; n < outline->n_points; n++ ) - { - vec->x += xOffset; - vec->y += yOffset; - vec++; - } - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( void ) - FT_Outline_Reverse( FT_Outline* outline ) - { - FT_UShort n; - FT_Int first, last; - - - first = 0; - - for ( n = 0; n < outline->n_contours; n++ ) - { - last = outline->contours[n]; - - /* reverse point table */ - { - FT_Vector* p = outline->points + first; - FT_Vector* q = outline->points + last; - FT_Vector swap; - - - while ( p < q ) - { - swap = *p; - *p = *q; - *q = swap; - p++; - q--; - } - } - - /* reverse tags table */ - { - char* p = outline->tags + first; - char* q = outline->tags + last; - char swap; - - - while ( p < q ) - { - swap = *p; - *p = *q; - *q = swap; - p++; - q--; - } - } - - first = last + 1; - } - - outline->flags ^= FT_OUTLINE_REVERSE_FILL; - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_Render( FT_Library library, - FT_Outline* outline, - FT_Raster_Params* params ) - { - FT_Error error; - FT_Bool update = 0; - FT_Renderer renderer; - FT_ListNode node; - - - if ( !library ) - return FT_Err_Invalid_Library_Handle; - - if ( !params ) - return FT_Err_Invalid_Argument; - - renderer = library->cur_renderer; - node = library->renderers.head; - - params->source = (void*)outline; - - error = FT_Err_Cannot_Render_Glyph; - while ( renderer ) - { - error = renderer->raster_render( renderer->raster, params ); - if ( !error || FT_ERROR_BASE( error ) != FT_Err_Cannot_Render_Glyph ) - break; - - /* FT_Err_Cannot_Render_Glyph is returned if the render mode */ - /* is unsupported by the current renderer for this glyph image */ - /* format */ - - /* now, look for another renderer that supports the same */ - /* format */ - renderer = FT_Lookup_Renderer( library, FT_GLYPH_FORMAT_OUTLINE, - &node ); - update = 1; - } - - /* if we changed the current renderer for the glyph image format */ - /* we need to select it as the next current one */ - if ( !error && update && renderer ) - FT_Set_Renderer( library, renderer, 0, 0 ); - - return error; - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Outline_Get_Bitmap( FT_Library library, - FT_Outline* outline, - FT_Bitmap *abitmap ) - { - FT_Raster_Params params; - - - if ( !abitmap ) - return FT_Err_Invalid_Argument; - - /* other checks are delayed to FT_Outline_Render() */ - - params.target = abitmap; - params.flags = 0; - - if ( abitmap->pixel_mode == FT_PIXEL_MODE_GRAY || - abitmap->pixel_mode == FT_PIXEL_MODE_LCD || - abitmap->pixel_mode == FT_PIXEL_MODE_LCD_V ) - params.flags |= FT_RASTER_FLAG_AA; - - return FT_Outline_Render( library, outline, ¶ms ); - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( void ) - FT_Vector_Transform( FT_Vector* vector, - FT_Matrix* matrix ) - { - FT_Pos xz, yz; - - - if ( !vector || !matrix ) - return; - - xz = FT_MulFix( vector->x, matrix->xx ) + - FT_MulFix( vector->y, matrix->xy ); - - yz = FT_MulFix( vector->x, matrix->yx ) + - FT_MulFix( vector->y, matrix->yy ); - - vector->x = xz; - vector->y = yz; - } - - - /* documentation is in ftoutln.h */ - - FT_EXPORT_DEF( void ) - FT_Outline_Transform( FT_Outline* outline, - FT_Matrix* matrix ) - { - FT_Vector* vec = outline->points; - FT_Vector* limit = vec + outline->n_points; - - - for ( ; vec < limit; vec++ ) - FT_Vector_Transform( vec, matrix ); - } - - - typedef struct FT_OrientationExtremumRec_ - { - FT_Int index; - FT_Long pos; - FT_Int first; - FT_Int last; - - } FT_OrientationExtremumRec; - - - static FT_Orientation - ft_orientation_extremum_compute( FT_OrientationExtremumRec* extremum, - FT_Outline* outline ) - { - FT_Vector *point, *first, *last, *prev, *next; - FT_Vector* points = outline->points; - FT_Angle angle_in, angle_out; - - - /* compute the previous and next points in the same contour */ - point = points + extremum->index; - first = points + extremum->first; - last = points + extremum->last; - - prev = point; - next = point; - - do - { - prev = ( prev == first ) ? last : prev - 1; - if ( prev == point ) - return FT_ORIENTATION_TRUETYPE; /* degenerate case */ - - } while ( prev->x != point->x || prev->y != point->y ); - - do - { - next = ( next == last ) ? first : next + 1; - if ( next == point ) - return FT_ORIENTATION_TRUETYPE; /* shouldn't happen */ - - } while ( next->x != point->x || next->y != point->y ); - - /* now compute the orientation of the `out' vector relative */ - /* to the `in' vector. */ - angle_in = FT_Atan2( point->x - prev->x, point->y - prev->y ); - angle_out = FT_Atan2( next->x - point->x, next->y - point->y ); - - return ( FT_Angle_Diff( angle_in, angle_out ) >= 0 ) - ? FT_ORIENTATION_TRUETYPE - : FT_ORIENTATION_POSTSCRIPT; - } - - - FT_EXPORT_DEF( FT_Orientation ) - FT_Outline_Get_Orientation( FT_Outline* outline ) - { - FT_Orientation result = FT_ORIENTATION_TRUETYPE; - - - if ( outline && outline->n_points > 0 ) - { - FT_OrientationExtremumRec xmin, ymin, xmax, ymax; - FT_Int n; - FT_Int first, last; - FT_Vector* points = outline->points; - - - xmin.pos = ymin.pos = +32768L; - xmax.pos = ymax.pos = -32768L; - - xmin.index = ymin.index = xmax.index = ymax.index = -1; - - first = 0; - for ( n = 0; n < outline->n_contours; n++, first = last + 1 ) - { - last = outline->contours[n]; - - /* skip single-point contours; these are degenerated cases */ - if ( last > first + 1 ) - { - FT_Int i; - - - for ( i = first; i < last; i++ ) - { - FT_Pos x = points[i].x; - FT_Pos y = points[i].y; - - - if ( x < xmin.pos ) - { - xmin.pos = x; - xmin.index = i; - xmin.first = first; - xmin.last = last; - } - if ( x > xmax.pos ) - { - xmax.pos = x; - xmax.index = i; - xmax.first = first; - xmax.last = last; - } - if ( y < ymin.pos ) - { - ymin.pos = y; - ymin.index = i; - ymin.first = first; - ymin.last = last; - } - if ( y > ymax.pos ) - { - ymax.pos = y; - ymax.index = i; - ymax.first = first; - ymax.last = last; - } - } - } - - if ( xmin.index >= 0 ) - result = ft_orientation_extremum_compute( &xmin, outline ); - - else if ( xmax.index >= 0 ) - result = ft_orientation_extremum_compute( &xmax, outline ); - - else if ( ymin.index >= 0 ) - result = ft_orientation_extremum_compute( &ymin, outline ); - - else if ( ymax.index >= 0 ) - result = ft_orientation_extremum_compute( &ymax, outline ); - } - } - - return result; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftpfr.c b/nx-X11/extras/freetype2/src/base/ftpfr.c deleted file mode 100644 index fb959e37f..000000000 --- a/nx-X11/extras/freetype2/src/base/ftpfr.c +++ /dev/null @@ -1,126 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftpfr.c */ -/* */ -/* FreeType API for accessing PFR-specific data (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_PFR_H - - - /* check the format */ - static FT_Service_PfrMetrics - ft_pfr_check( FT_Face face ) - { - FT_Service_PfrMetrics service; - - - FT_FACE_LOOKUP_SERVICE( face, service, PFR_METRICS ); - - return service; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Get_PFR_Metrics( FT_Face face, - FT_UInt *aoutline_resolution, - FT_UInt *ametrics_resolution, - FT_Fixed *ametrics_x_scale, - FT_Fixed *ametrics_y_scale ) - { - FT_Error error = FT_Err_Ok; - FT_Service_PfrMetrics service; - - - service = ft_pfr_check( face ); - if ( service ) - { - error = service->get_metrics( face, - aoutline_resolution, - ametrics_resolution, - ametrics_x_scale, - ametrics_y_scale ); - } - else if ( face ) - { - FT_Fixed x_scale, y_scale; - - - /* this is not a PFR font */ - *aoutline_resolution = face->units_per_EM; - *ametrics_resolution = face->units_per_EM; - - x_scale = y_scale = 0x10000L; - if ( face->size ) - { - x_scale = face->size->metrics.x_scale; - y_scale = face->size->metrics.y_scale; - } - *ametrics_x_scale = x_scale; - *ametrics_y_scale = y_scale; - } - else - error = FT_Err_Invalid_Argument; - - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Get_PFR_Kerning( FT_Face face, - FT_UInt left, - FT_UInt right, - FT_Vector *avector ) - { - FT_Error error; - FT_Service_PfrMetrics service; - - - service = ft_pfr_check( face ); - if ( service ) - error = service->get_kerning( face, left, right, avector ); - else if ( face ) - error = FT_Get_Kerning( face, left, right, - FT_KERNING_UNSCALED, avector ); - else - error = FT_Err_Invalid_Argument; - - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Get_PFR_Advance( FT_Face face, - FT_UInt gindex, - FT_Pos *aadvance ) - { - FT_Error error; - FT_Service_PfrMetrics service; - - - service = ft_pfr_check( face ); - if ( service ) - { - error = service->get_advance( face, gindex, aadvance ); - } - else - /* XXX: TODO: PROVIDE ADVANCE-LOADING METHOD TO ALL FONT DRIVERS */ - error = FT_Err_Invalid_Argument; - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftrfork.c b/nx-X11/extras/freetype2/src/base/ftrfork.c deleted file mode 100644 index cf790ccc0..000000000 --- a/nx-X11/extras/freetype2/src/base/ftrfork.c +++ /dev/null @@ -1,717 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftrfork.c */ -/* */ -/* Embedded resource forks accessor (body). */ -/* */ -/* Copyright 2004 by */ -/* Masatake YAMATO and Redhat K.K. */ -/* */ -/* FT_Raccess_Get_HeaderInfo() and raccess_guess_darwin_hfsplus() are */ -/* derived from ftobjs.c. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -/***************************************************************************/ -/* Development of the code in this file is support of */ -/* Information-technology Promotion Agency, Japan. */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_RFORK_H - - -#undef FT_COMPONENT -#define FT_COMPONENT trace_raccess - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** Resource fork directory access ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - FT_BASE_DEF( FT_Error ) - FT_Raccess_Get_HeaderInfo( FT_Library library, - FT_Stream stream, - FT_Long rfork_offset, - FT_Long *map_offset, - FT_Long *rdata_pos ) - { - FT_Error error; - unsigned char head[16], head2[16]; - FT_Long map_pos, rdata_len; - int allzeros, allmatch, i; - FT_Long type_list; - - FT_UNUSED( library ); - - - error = FT_Stream_Seek( stream, rfork_offset ); - if ( error ) - return error; - - error = FT_Stream_Read( stream, (FT_Byte *)head, 16 ); - if ( error ) - return error; - - *rdata_pos = rfork_offset + ( ( head[0] << 24 ) | - ( head[1] << 16 ) | - ( head[2] << 8 ) | - head[3] ); - map_pos = rfork_offset + ( ( head[4] << 24 ) | - ( head[5] << 16 ) | - ( head[6] << 8 ) | - head[7] ); - rdata_len = ( head[ 8] << 24 ) | - ( head[ 9] << 16 ) | - ( head[10] << 8 ) | - head[11]; - - /* map_len = head[12] .. head[15] */ - - if ( *rdata_pos + rdata_len != map_pos || map_pos == rfork_offset ) - return FT_Err_Unknown_File_Format; - - error = FT_Stream_Seek( stream, map_pos ); - if ( error ) - return error; - - head2[15] = (FT_Byte)( head[15] + 1 ); /* make it be different */ - - error = FT_Stream_Read( stream, (FT_Byte*)head2, 16 ); - if ( error ) - return error; - - allzeros = 1; - allmatch = 1; - for ( i = 0; i < 16; ++i ) - { - if ( head2[i] != 0 ) - allzeros = 0; - if ( head2[i] != head[i] ) - allmatch = 0; - } - if ( !allzeros && !allmatch ) - return FT_Err_Unknown_File_Format; - - /* If we have reached this point then it is probably a mac resource */ - /* file. Now, does it contain any interesting resources? */ - /* Skip handle to next resource map, the file resource number, and */ - /* attributes. */ - (void)FT_STREAM_SKIP( 4 /* skip handle to next resource map */ - + 2 /* skip file resource number */ - + 2 ); /* skip attributes */ - - if ( FT_READ_USHORT( type_list ) ) - return error; - if ( type_list == -1 ) - return FT_Err_Unknown_File_Format; - - error = FT_Stream_Seek( stream, map_pos + type_list ); - if ( error ) - return error; - - *map_offset = map_pos + type_list; - return FT_Err_Ok; - } - - - FT_BASE_DEF( FT_Error ) - FT_Raccess_Get_DataOffsets( FT_Library library, - FT_Stream stream, - FT_Long map_offset, - FT_Long rdata_pos, - FT_Long tag, - FT_Long **offsets, - FT_Long *count ) - { - FT_Error error; - int i, j, cnt, subcnt; - FT_Long tag_internal, rpos; - FT_Memory memory = library->memory; - FT_Long temp; - FT_Long *offsets_internal; - - - error = FT_Stream_Seek( stream, map_offset ); - if ( error ) - return error; - - if ( FT_READ_USHORT( cnt ) ) - return error; - cnt++; - - for ( i = 0; i < cnt; ++i ) - { - if ( FT_READ_LONG( tag_internal ) || - FT_READ_USHORT( subcnt ) || - FT_READ_USHORT( rpos ) ) - return error; - - FT_TRACE2(( "Resource tags: %c%c%c%c\n", - (char)( 0xff & ( tag_internal >> 24 ) ), - (char)( 0xff & ( tag_internal >> 16 ) ), - (char)( 0xff & ( tag_internal >> 8 ) ), - (char)( 0xff & ( tag_internal >> 0 ) ) )); - - if ( tag_internal == tag ) - { - *count = subcnt + 1; - rpos += map_offset; - - error = FT_Stream_Seek( stream, rpos ); - if ( error ) - return error; - - if ( FT_ALLOC( offsets_internal, *count * sizeof( FT_Long ) ) ) - return error; - - for ( j = 0; j < *count; ++j ) - { - (void)FT_STREAM_SKIP( 2 ); /* resource id */ - (void)FT_STREAM_SKIP( 2 ); /* rsource name */ - - if ( FT_READ_LONG( temp ) ) - { - FT_FREE( offsets_internal ); - return error; - } - - offsets_internal[j] = rdata_pos + ( temp & 0xFFFFFFL ); - - (void)FT_STREAM_SKIP( 4 ); /* mbz */ - } - - *offsets = offsets_internal; - - return FT_Err_Ok; - } - } - - return FT_Err_Cannot_Open_Resource; - } - - -#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** Guessing functions ****/ - /**** ****/ - /**** When you add a new guessing function, ****/ - /**** update FT_RACCESS_N_RULES in ftrfork.h. ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - typedef FT_Error - (*raccess_guess_func)( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - - static FT_Error - raccess_guess_apple_double( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - static FT_Error - raccess_guess_apple_single( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - static FT_Error - raccess_guess_darwin_ufs_export( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - static FT_Error - raccess_guess_darwin_hfsplus( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - static FT_Error - raccess_guess_vfat( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - static FT_Error - raccess_guess_linux_cap( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - static FT_Error - raccess_guess_linux_double( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - static FT_Error - raccess_guess_linux_netatalk( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ); - - - /*************************************************************************/ - /**** ****/ - /**** Helper functions ****/ - /**** ****/ - /*************************************************************************/ - - static FT_Error - raccess_guess_apple_generic( FT_Library library, - FT_Stream stream, - char * base_file_name, - FT_Int32 magic, - FT_Long *result_offset ); - - static FT_Error - raccess_guess_linux_double_from_file_name( FT_Library library, - char * file_name, - FT_Long *result_offset ); - - static char * - raccess_make_file_name( FT_Memory memory, - const char *original_name, - const char *insertion ); - - - FT_BASE_DEF( void ) - FT_Raccess_Guess( FT_Library library, - FT_Stream stream, - char* base_name, - char **new_names, - FT_Long *offsets, - FT_Error *errors ) - { - FT_Long i; - - - raccess_guess_func funcs[FT_RACCESS_N_RULES] = - { - raccess_guess_apple_double, - raccess_guess_apple_single, - raccess_guess_darwin_ufs_export, - raccess_guess_darwin_hfsplus, - raccess_guess_vfat, - raccess_guess_linux_cap, - raccess_guess_linux_double, - raccess_guess_linux_netatalk, - }; - - for ( i = 0; i < FT_RACCESS_N_RULES; i++ ) - { - new_names[i] = NULL; - errors[i] = FT_Stream_Seek( stream, 0 ); - if ( errors[i] ) - continue ; - - errors[i] = (funcs[i])( library, stream, base_name, - &(new_names[i]), &(offsets[i]) ); - } - - return; - } - - - static FT_Error - raccess_guess_apple_double( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ) - { - FT_Int32 magic = ( 0x00 << 24 | 0x05 << 16 | 0x16 << 8 | 0x07 ); - - - *result_file_name = NULL; - return raccess_guess_apple_generic( library, stream, base_file_name, - magic, result_offset ); - } - - - static FT_Error - raccess_guess_apple_single( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ) - { - FT_Int32 magic = (0x00 << 24 | 0x05 << 16 | 0x16 << 8 | 0x00); - - - *result_file_name = NULL; - return raccess_guess_apple_generic( library, stream, base_file_name, - magic, result_offset ); - } - - - static FT_Error - raccess_guess_darwin_ufs_export( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ) - { - char* newpath; - FT_Error error; - FT_Memory memory; - - FT_UNUSED( stream ); - - - memory = library->memory; - newpath = raccess_make_file_name( memory, base_file_name, "._" ); - if ( !newpath ) - return FT_Err_Out_Of_Memory; - - error = raccess_guess_linux_double_from_file_name( library, newpath, - result_offset ); - if ( !error ) - *result_file_name = newpath; - else - FT_FREE( newpath ); - - return error; - } - - - static FT_Error - raccess_guess_darwin_hfsplus( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ) - { - /* - Only meaningful on systems with hfs+ drivers (or Macs). - */ - FT_Error error; - char* newpath; - FT_Memory memory; - - FT_UNUSED( stream ); - - - memory = library->memory; - - if ( FT_ALLOC( newpath, - ft_strlen( base_file_name ) + ft_strlen( "/rsrc" ) + 1 ) ) - return error; - - ft_strcpy( newpath, base_file_name ); - ft_strcat( newpath, "/rsrc" ); - *result_file_name = newpath; - *result_offset = 0; - return FT_Err_Ok; - } - - - static FT_Error - raccess_guess_vfat( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ) - { - char* newpath; - FT_Memory memory; - - FT_UNUSED( stream ); - - - memory = library->memory; - - newpath = raccess_make_file_name( memory, base_file_name, - "resource.frk/" ); - if ( !newpath ) - return FT_Err_Out_Of_Memory; - - *result_file_name = newpath; - *result_offset = 0; - - return FT_Err_Ok; - } - - - static FT_Error - raccess_guess_linux_cap( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ) - { - char* newpath; - FT_Memory memory; - - FT_UNUSED( stream ); - - - memory = library->memory; - - newpath = raccess_make_file_name( memory, base_file_name, ".resource/" ); - if ( !newpath ) - return FT_Err_Out_Of_Memory; - - *result_file_name = newpath; - *result_offset = 0; - - return FT_Err_Ok; - } - - - static FT_Error - raccess_guess_linux_double( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ) - { - char* newpath; - FT_Error error; - FT_Memory memory; - - FT_UNUSED( stream ); - - - memory = library->memory; - - newpath = raccess_make_file_name( memory, base_file_name, "%" ); - if ( !newpath ) - return FT_Err_Out_Of_Memory; - - error = raccess_guess_linux_double_from_file_name( library, newpath, - result_offset ); - if ( !error ) - *result_file_name = newpath; - else - FT_FREE( newpath ); - - return error; - } - - - static FT_Error - raccess_guess_linux_netatalk( FT_Library library, - FT_Stream stream, - char * base_file_name, - char **result_file_name, - FT_Long *result_offset ) - { - char* newpath; - FT_Error error; - FT_Memory memory; - - FT_UNUSED( stream ); - - - memory = library->memory; - - newpath = raccess_make_file_name( memory, base_file_name, - ".AppleDouble/" ); - if ( !newpath ) - return FT_Err_Out_Of_Memory; - - error = raccess_guess_linux_double_from_file_name( library, newpath, - result_offset ); - if ( !error ) - *result_file_name = newpath; - else - FT_FREE( newpath ); - - return error; - } - - - static FT_Error - raccess_guess_apple_generic( FT_Library library, - FT_Stream stream, - char * base_file_name, - FT_Int32 magic, - FT_Long *result_offset ) - { - FT_Int32 magic_from_stream; - FT_Error error; - FT_Int32 version_number; - FT_UShort n_of_entries; - - int i; - FT_UInt32 entry_id, entry_offset, entry_length; - - const FT_UInt32 resource_fork_entry_id = 0x2; - - FT_UNUSED( library ); - FT_UNUSED( base_file_name ); - - - if ( FT_READ_LONG ( magic_from_stream ) ) - return error; - if ( magic_from_stream != magic ) - return FT_Err_Unknown_File_Format; - - if ( FT_READ_LONG( version_number ) ) - return error; - - /* filler */ - error = FT_Stream_Skip( stream, 16 ); - if ( error ) - return error; - - if ( FT_READ_USHORT( n_of_entries ) ) - return error; - if ( n_of_entries == 0 ) - return FT_Err_Unknown_File_Format; - - for ( i = 0; i < n_of_entries; i++ ) - { - if ( FT_READ_LONG( entry_id ) ) - return error; - if ( entry_id == resource_fork_entry_id ) - { - if ( FT_READ_LONG( entry_offset ) || - FT_READ_LONG( entry_length ) ) - continue; - *result_offset = entry_offset; - - return FT_Err_Ok; - } - else - FT_Stream_Skip( stream, 4 + 4 ); /* offset + length */ - } - - return FT_Err_Unknown_File_Format; - } - - - static FT_Error - raccess_guess_linux_double_from_file_name( FT_Library library, - char * file_name, - FT_Long *result_offset ) - { - FT_Memory memory; - FT_Open_Args args2; - FT_Stream stream2; - char * nouse = NULL; - FT_Error error; - - - memory = library->memory; - - args2.flags = FT_OPEN_PATHNAME; - args2.pathname = file_name; - error = FT_Stream_New( library, &args2, &stream2 ); - if ( error ) - return error; - - error = raccess_guess_apple_double( library, stream2, file_name, - &nouse, result_offset ); - - FT_Stream_Close( stream2 ); - - return error; - } - - - static char* - raccess_make_file_name( FT_Memory memory, - const char *original_name, - const char *insertion ) - { - char* new_name; - char* tmp; - const char* slash; - unsigned new_length; - FT_ULong error; - - new_length = ft_strlen( original_name ) + ft_strlen( insertion ); - if ( FT_ALLOC( new_name, new_length + 1 ) ) - return NULL; - - tmp = ft_strrchr( original_name, '/' ); - if ( tmp ) - { - ft_strncpy( new_name, original_name, tmp - original_name + 1 ); - new_name[tmp - original_name + 1] = '\0'; - slash = tmp + 1; - } - else - { - slash = original_name; - new_name[0] = '\0'; - } - - ft_strcat( new_name, insertion ); - ft_strcat( new_name, slash ); - - return new_name; - } - - -#else /* !FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */ - - - /*************************************************************************/ - /* Dummy function; just sets errors */ - /*************************************************************************/ - - FT_BASE_DEF( void ) - FT_Raccess_Guess( FT_Library library, - FT_Stream stream, - char* base_name, - char **new_names, - FT_Long *offsets, - FT_Error *errors ) - { - int i; - - - for ( i = 0; i < FT_RACCESS_N_RULES; i++ ) - { - new_names[i] = NULL; - offsets[i] = 0; - errors[i] = FT_Err_Unimplemented_Feature; - } - } - - -#endif /* !FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftstream.c b/nx-X11/extras/freetype2/src/base/ftstream.c deleted file mode 100644 index 932fe1b40..000000000 --- a/nx-X11/extras/freetype2/src/base/ftstream.c +++ /dev/null @@ -1,803 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftstream.c */ -/* */ -/* I/O stream support (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_stream - - - FT_BASE_DEF( void ) - FT_Stream_OpenMemory( FT_Stream stream, - const FT_Byte* base, - FT_ULong size ) - { - stream->base = (FT_Byte*) base; - stream->size = size; - stream->pos = 0; - stream->cursor = 0; - stream->read = 0; - stream->close = 0; - } - - - FT_BASE_DEF( void ) - FT_Stream_Close( FT_Stream stream ) - { - if ( stream && stream->close ) - { - stream->close( stream ); - stream->close = NULL; - } - } - - - FT_BASE_DEF( FT_Error ) - FT_Stream_Seek( FT_Stream stream, - FT_ULong pos ) - { - FT_Error error = FT_Err_Ok; - - - stream->pos = pos; - - if ( stream->read ) - { - if ( stream->read( stream, pos, 0, 0 ) ) - { - FT_ERROR(( "FT_Stream_Seek: invalid i/o; pos = 0x%lx, size = 0x%lx\n", - pos, stream->size )); - - error = FT_Err_Invalid_Stream_Operation; - } - } - /* note that seeking to the first position after the file is valid */ - else if ( pos > stream->size ) - { - FT_ERROR(( "FT_Stream_Seek: invalid i/o; pos = 0x%lx, size = 0x%lx\n", - pos, stream->size )); - - error = FT_Err_Invalid_Stream_Operation; - } - - return error; - } - - - FT_BASE_DEF( FT_Error ) - FT_Stream_Skip( FT_Stream stream, - FT_Long distance ) - { - return FT_Stream_Seek( stream, (FT_ULong)( stream->pos + distance ) ); - } - - - FT_BASE_DEF( FT_Long ) - FT_Stream_Pos( FT_Stream stream ) - { - return stream->pos; - } - - - FT_BASE_DEF( FT_Error ) - FT_Stream_Read( FT_Stream stream, - FT_Byte* buffer, - FT_ULong count ) - { - return FT_Stream_ReadAt( stream, stream->pos, buffer, count ); - } - - - FT_BASE_DEF( FT_Error ) - FT_Stream_ReadAt( FT_Stream stream, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ) - { - FT_Error error = FT_Err_Ok; - FT_ULong read_bytes; - - - if ( pos >= stream->size ) - { - FT_ERROR(( "FT_Stream_ReadAt: invalid i/o; pos = 0x%lx, size = 0x%lx\n", - pos, stream->size )); - - return FT_Err_Invalid_Stream_Operation; - } - - if ( stream->read ) - read_bytes = stream->read( stream, pos, buffer, count ); - else - { - read_bytes = stream->size - pos; - if ( read_bytes > count ) - read_bytes = count; - - FT_MEM_COPY( buffer, stream->base + pos, read_bytes ); - } - - stream->pos = pos + read_bytes; - - if ( read_bytes < count ) - { - FT_ERROR(( "FT_Stream_ReadAt:" )); - FT_ERROR(( " invalid read; expected %lu bytes, got %lu\n", - count, read_bytes )); - - error = FT_Err_Invalid_Stream_Operation; - } - - return error; - } - - - FT_BASE_DEF( FT_Error ) - FT_Stream_ExtractFrame( FT_Stream stream, - FT_ULong count, - FT_Byte** pbytes ) - { - FT_Error error; - - - error = FT_Stream_EnterFrame( stream, count ); - if ( !error ) - { - *pbytes = (FT_Byte*)stream->cursor; - - /* equivalent to FT_Stream_ExitFrame(), with no memory block release */ - stream->cursor = 0; - stream->limit = 0; - } - - return error; - } - - - FT_BASE_DEF( void ) - FT_Stream_ReleaseFrame( FT_Stream stream, - FT_Byte** pbytes ) - { - if ( stream->read ) - { - FT_Memory memory = stream->memory; - - - FT_FREE( *pbytes ); - } - *pbytes = 0; - } - - - FT_BASE_DEF( FT_Error ) - FT_Stream_EnterFrame( FT_Stream stream, - FT_ULong count ) - { - FT_Error error = FT_Err_Ok; - FT_ULong read_bytes; - - - /* check for nested frame access */ - FT_ASSERT( stream && stream->cursor == 0 ); - - if ( stream->read ) - { - /* allocate the frame in memory */ - FT_Memory memory = stream->memory; - - - if ( FT_QALLOC( stream->base, count ) ) - goto Exit; - - /* read it */ - read_bytes = stream->read( stream, stream->pos, - stream->base, count ); - if ( read_bytes < count ) - { - FT_ERROR(( "FT_Stream_EnterFrame:" )); - FT_ERROR(( " invalid read; expected %lu bytes, got %lu\n", - count, read_bytes )); - - FT_FREE( stream->base ); - error = FT_Err_Invalid_Stream_Operation; - } - stream->cursor = stream->base; - stream->limit = stream->cursor + count; - stream->pos += read_bytes; - } - else - { - /* check current and new position */ - if ( stream->pos >= stream->size || - stream->pos + count > stream->size ) - { - FT_ERROR(( "FT_Stream_EnterFrame:" )); - FT_ERROR(( " invalid i/o; pos = 0x%lx, count = %lu, size = 0x%lx\n", - stream->pos, count, stream->size )); - - error = FT_Err_Invalid_Stream_Operation; - goto Exit; - } - - /* set cursor */ - stream->cursor = stream->base + stream->pos; - stream->limit = stream->cursor + count; - stream->pos += count; - } - - Exit: - return error; - } - - - FT_BASE_DEF( void ) - FT_Stream_ExitFrame( FT_Stream stream ) - { - /* IMPORTANT: The assertion stream->cursor != 0 was removed, given */ - /* that it is possible to access a frame of length 0 in */ - /* some weird fonts (usually, when accessing an array of */ - /* 0 records, like in some strange kern tables). */ - /* */ - /* In this case, the loader code handles the 0-length table */ - /* gracefully; however, stream.cursor is really set to 0 by the */ - /* FT_Stream_EnterFrame() call, and this is not an error. */ - /* */ - FT_ASSERT( stream ); - - if ( stream->read ) - { - FT_Memory memory = stream->memory; - - - FT_FREE( stream->base ); - } - stream->cursor = 0; - stream->limit = 0; - } - - - FT_BASE_DEF( FT_Char ) - FT_Stream_GetChar( FT_Stream stream ) - { - FT_Char result; - - - FT_ASSERT( stream && stream->cursor ); - - result = 0; - if ( stream->cursor < stream->limit ) - result = *stream->cursor++; - - return result; - } - - - FT_BASE_DEF( FT_Short ) - FT_Stream_GetShort( FT_Stream stream ) - { - FT_Byte* p; - FT_Short result; - - - FT_ASSERT( stream && stream->cursor ); - - result = 0; - p = stream->cursor; - if ( p + 1 < stream->limit ) - result = FT_NEXT_SHORT( p ); - stream->cursor = p; - - return result; - } - - - FT_BASE_DEF( FT_Short ) - FT_Stream_GetShortLE( FT_Stream stream ) - { - FT_Byte* p; - FT_Short result; - - - FT_ASSERT( stream && stream->cursor ); - - result = 0; - p = stream->cursor; - if ( p + 1 < stream->limit ) - result = FT_NEXT_SHORT_LE( p ); - stream->cursor = p; - - return result; - } - - - FT_BASE_DEF( FT_Long ) - FT_Stream_GetOffset( FT_Stream stream ) - { - FT_Byte* p; - FT_Long result; - - - FT_ASSERT( stream && stream->cursor ); - - result = 0; - p = stream->cursor; - if ( p + 2 < stream->limit ) - result = FT_NEXT_OFF3( p ); - stream->cursor = p; - return result; - } - - - FT_BASE_DEF( FT_Long ) - FT_Stream_GetLong( FT_Stream stream ) - { - FT_Byte* p; - FT_Long result; - - - FT_ASSERT( stream && stream->cursor ); - - result = 0; - p = stream->cursor; - if ( p + 3 < stream->limit ) - result = FT_NEXT_LONG( p ); - stream->cursor = p; - return result; - } - - - FT_BASE_DEF( FT_Long ) - FT_Stream_GetLongLE( FT_Stream stream ) - { - FT_Byte* p; - FT_Long result; - - - FT_ASSERT( stream && stream->cursor ); - - result = 0; - p = stream->cursor; - if ( p + 3 < stream->limit ) - result = FT_NEXT_LONG_LE( p ); - stream->cursor = p; - return result; - } - - - FT_BASE_DEF( FT_Char ) - FT_Stream_ReadChar( FT_Stream stream, - FT_Error* error ) - { - FT_Byte result = 0; - - - FT_ASSERT( stream ); - - *error = FT_Err_Ok; - - if ( stream->read ) - { - if ( stream->read( stream, stream->pos, &result, 1L ) != 1L ) - goto Fail; - } - else - { - if ( stream->pos < stream->size ) - result = stream->base[stream->pos]; - else - goto Fail; - } - stream->pos++; - - return result; - - Fail: - *error = FT_Err_Invalid_Stream_Operation; - FT_ERROR(( "FT_Stream_ReadChar: invalid i/o; pos = 0x%lx, size = 0x%lx\n", - stream->pos, stream->size )); - - return 0; - } - - - FT_BASE_DEF( FT_Short ) - FT_Stream_ReadShort( FT_Stream stream, - FT_Error* error ) - { - FT_Byte reads[2]; - FT_Byte* p = 0; - FT_Short result = 0; - - - FT_ASSERT( stream ); - - *error = FT_Err_Ok; - - if ( stream->pos + 1 < stream->size ) - { - if ( stream->read ) - { - if ( stream->read( stream, stream->pos, reads, 2L ) != 2L ) - goto Fail; - - p = reads; - } - else - { - p = stream->base + stream->pos; - } - - if ( p ) - result = FT_NEXT_SHORT( p ); - } - else - goto Fail; - - stream->pos += 2; - - return result; - - Fail: - *error = FT_Err_Invalid_Stream_Operation; - FT_ERROR(( "FT_Stream_ReadShort:" )); - FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n", - stream->pos, stream->size )); - - return 0; - } - - - FT_BASE_DEF( FT_Short ) - FT_Stream_ReadShortLE( FT_Stream stream, - FT_Error* error ) - { - FT_Byte reads[2]; - FT_Byte* p = 0; - FT_Short result = 0; - - - FT_ASSERT( stream ); - - *error = FT_Err_Ok; - - if ( stream->pos + 1 < stream->size ) - { - if ( stream->read ) - { - if ( stream->read( stream, stream->pos, reads, 2L ) != 2L ) - goto Fail; - - p = reads; - } - else - { - p = stream->base + stream->pos; - } - - if ( p ) - result = FT_NEXT_SHORT_LE( p ); - } - else - goto Fail; - - stream->pos += 2; - - return result; - - Fail: - *error = FT_Err_Invalid_Stream_Operation; - FT_ERROR(( "FT_Stream_ReadShortLE:" )); - FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n", - stream->pos, stream->size )); - - return 0; - } - - - FT_BASE_DEF( FT_Long ) - FT_Stream_ReadOffset( FT_Stream stream, - FT_Error* error ) - { - FT_Byte reads[3]; - FT_Byte* p = 0; - FT_Long result = 0; - - - FT_ASSERT( stream ); - - *error = FT_Err_Ok; - - if ( stream->pos + 2 < stream->size ) - { - if ( stream->read ) - { - if (stream->read( stream, stream->pos, reads, 3L ) != 3L ) - goto Fail; - - p = reads; - } - else - { - p = stream->base + stream->pos; - } - - if ( p ) - result = FT_NEXT_OFF3( p ); - } - else - goto Fail; - - stream->pos += 3; - - return result; - - Fail: - *error = FT_Err_Invalid_Stream_Operation; - FT_ERROR(( "FT_Stream_ReadOffset:" )); - FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n", - stream->pos, stream->size )); - - return 0; - } - - - FT_BASE_DEF( FT_Long ) - FT_Stream_ReadLong( FT_Stream stream, - FT_Error* error ) - { - FT_Byte reads[4]; - FT_Byte* p = 0; - FT_Long result = 0; - - - FT_ASSERT( stream ); - - *error = FT_Err_Ok; - - if ( stream->pos + 3 < stream->size ) - { - if ( stream->read ) - { - if ( stream->read( stream, stream->pos, reads, 4L ) != 4L ) - goto Fail; - - p = reads; - } - else - { - p = stream->base + stream->pos; - } - - if ( p ) - result = FT_NEXT_LONG( p ); - } - else - goto Fail; - - stream->pos += 4; - - return result; - - Fail: - FT_ERROR(( "FT_Stream_ReadLong: invalid i/o; pos = 0x%lx, size = 0x%lx\n", - stream->pos, stream->size )); - *error = FT_Err_Invalid_Stream_Operation; - - return 0; - } - - - FT_BASE_DEF( FT_Long ) - FT_Stream_ReadLongLE( FT_Stream stream, - FT_Error* error ) - { - FT_Byte reads[4]; - FT_Byte* p = 0; - FT_Long result = 0; - - - FT_ASSERT( stream ); - - *error = FT_Err_Ok; - - if ( stream->pos + 3 < stream->size ) - { - if ( stream->read ) - { - if ( stream->read( stream, stream->pos, reads, 4L ) != 4L ) - goto Fail; - - p = reads; - } - else - { - p = stream->base + stream->pos; - } - - if ( p ) - result = FT_NEXT_LONG_LE( p ); - } - else - goto Fail; - - stream->pos += 4; - - return result; - - Fail: - FT_ERROR(( "FT_Stream_ReadLongLE:" )); - FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n", - stream->pos, stream->size )); - *error = FT_Err_Invalid_Stream_Operation; - - return 0; - } - - - FT_BASE_DEF( FT_Error ) - FT_Stream_ReadFields( FT_Stream stream, - const FT_Frame_Field* fields, - void* structure ) - { - FT_Error error; - FT_Bool frame_accessed = 0; - FT_Byte* cursor = stream->cursor; - - - if ( !fields || !stream ) - return FT_Err_Invalid_Argument; - - error = FT_Err_Ok; - do - { - FT_ULong value; - FT_Int sign_shift; - FT_Byte* p; - - - switch ( fields->value ) - { - case ft_frame_start: /* access a new frame */ - error = FT_Stream_EnterFrame( stream, fields->offset ); - if ( error ) - goto Exit; - - frame_accessed = 1; - cursor = stream->cursor; - fields++; - continue; /* loop! */ - - case ft_frame_bytes: /* read a byte sequence */ - case ft_frame_skip: /* skip some bytes */ - { - FT_UInt len = fields->size; - - - if ( cursor + len > stream->limit ) - { - error = FT_Err_Invalid_Stream_Operation; - goto Exit; - } - - if ( fields->value == ft_frame_bytes ) - { - p = (FT_Byte*)structure + fields->offset; - FT_MEM_COPY( p, cursor, len ); - } - cursor += len; - fields++; - continue; - } - - case ft_frame_byte: - case ft_frame_schar: /* read a single byte */ - value = FT_NEXT_BYTE(cursor); - sign_shift = 24; - break; - - case ft_frame_short_be: - case ft_frame_ushort_be: /* read a 2-byte big-endian short */ - value = FT_NEXT_USHORT(cursor); - sign_shift = 16; - break; - - case ft_frame_short_le: - case ft_frame_ushort_le: /* read a 2-byte little-endian short */ - value = FT_NEXT_USHORT_LE(cursor); - sign_shift = 16; - break; - - case ft_frame_long_be: - case ft_frame_ulong_be: /* read a 4-byte big-endian long */ - value = FT_NEXT_ULONG(cursor); - sign_shift = 0; - break; - - case ft_frame_long_le: - case ft_frame_ulong_le: /* read a 4-byte little-endian long */ - value = FT_NEXT_ULONG_LE(cursor); - sign_shift = 0; - break; - - case ft_frame_off3_be: - case ft_frame_uoff3_be: /* read a 3-byte big-endian long */ - value = FT_NEXT_UOFF3(cursor); - sign_shift = 8; - break; - - case ft_frame_off3_le: - case ft_frame_uoff3_le: /* read a 3-byte little-endian long */ - value = FT_NEXT_UOFF3_LE(cursor); - sign_shift = 8; - break; - - default: - /* otherwise, exit the loop */ - stream->cursor = cursor; - goto Exit; - } - - /* now, compute the signed value is necessary */ - if ( fields->value & FT_FRAME_OP_SIGNED ) - value = (FT_ULong)( (FT_Int32)( value << sign_shift ) >> sign_shift ); - - /* finally, store the value in the object */ - - p = (FT_Byte*)structure + fields->offset; - switch ( fields->size ) - { - case (8 / FT_CHAR_BIT): - *(FT_Byte*)p = (FT_Byte)value; - break; - - case (16 / FT_CHAR_BIT): - *(FT_UShort*)p = (FT_UShort)value; - break; - - case (32 / FT_CHAR_BIT): - *(FT_UInt32*)p = (FT_UInt32)value; - break; - - default: /* for 64-bit systems */ - *(FT_ULong*)p = (FT_ULong)value; - } - - /* go to next field */ - fields++; - } - while ( 1 ); - - Exit: - /* close the frame if it was opened by this read */ - if ( frame_accessed ) - FT_Stream_ExitFrame( stream ); - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftstroke.c b/nx-X11/extras/freetype2/src/base/ftstroke.c deleted file mode 100644 index 10aad2db8..000000000 --- a/nx-X11/extras/freetype2/src/base/ftstroke.c +++ /dev/null @@ -1,1906 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftstroke.c */ -/* */ -/* FreeType path stroker (body). */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_STROKER_H -#include FT_TRIGONOMETRY_H -#include FT_OUTLINE_H -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H - - FT_EXPORT_DEF( FT_StrokerBorder ) - FT_Outline_GetInsideBorder( FT_Outline* outline ) - { - FT_Orientation o = FT_Outline_Get_Orientation( outline ); - - - return o == FT_ORIENTATION_TRUETYPE ? FT_STROKER_BORDER_RIGHT - : FT_STROKER_BORDER_LEFT ; - } - - - FT_EXPORT_DEF( FT_StrokerBorder ) - FT_Outline_GetOutsideBorder( FT_Outline* outline ) - { - FT_Orientation o = FT_Outline_Get_Orientation( outline ); - - - return o == FT_ORIENTATION_TRUETYPE ? FT_STROKER_BORDER_LEFT - : FT_STROKER_BORDER_RIGHT ; - } - - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** BEZIER COMPUTATIONS *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - -#define FT_SMALL_CONIC_THRESHOLD ( FT_ANGLE_PI / 6 ) -#define FT_SMALL_CUBIC_THRESHOLD ( FT_ANGLE_PI / 6 ) -#define FT_EPSILON 2 - -#define FT_IS_SMALL( x ) ( (x) > -FT_EPSILON && (x) < FT_EPSILON ) - - - static FT_Pos - ft_pos_abs( FT_Pos x ) - { - return x >= 0 ? x : -x ; - } - - - static void - ft_conic_split( FT_Vector* base ) - { - FT_Pos a, b; - - - base[4].x = base[2].x; - b = base[1].x; - a = base[3].x = ( base[2].x + b ) / 2; - b = base[1].x = ( base[0].x + b ) / 2; - base[2].x = ( a + b ) / 2; - - base[4].y = base[2].y; - b = base[1].y; - a = base[3].y = ( base[2].y + b ) / 2; - b = base[1].y = ( base[0].y + b ) / 2; - base[2].y = ( a + b ) / 2; - } - - - static FT_Bool - ft_conic_is_small_enough( FT_Vector* base, - FT_Angle *angle_in, - FT_Angle *angle_out ) - { - FT_Vector d1, d2; - FT_Angle theta; - FT_Int close1, close2; - - - d1.x = base[1].x - base[2].x; - d1.y = base[1].y - base[2].y; - d2.x = base[0].x - base[1].x; - d2.y = base[0].y - base[1].y; - - close1 = FT_IS_SMALL( d1.x ) && FT_IS_SMALL( d1.y ); - close2 = FT_IS_SMALL( d2.x ) && FT_IS_SMALL( d2.y ); - - if ( close1 ) - { - if ( close2 ) - *angle_in = *angle_out = 0; - else - *angle_in = *angle_out = FT_Atan2( d2.x, d2.y ); - } - else if ( close2 ) - { - *angle_in = *angle_out = FT_Atan2( d1.x, d1.y ); - } - else - { - *angle_in = FT_Atan2( d1.x, d1.y ); - *angle_out = FT_Atan2( d2.x, d2.y ); - } - - theta = ft_pos_abs( FT_Angle_Diff( *angle_in, *angle_out ) ); - - return FT_BOOL( theta < FT_SMALL_CONIC_THRESHOLD ); - } - - - static void - ft_cubic_split( FT_Vector* base ) - { - FT_Pos a, b, c, d; - - - base[6].x = base[3].x; - c = base[1].x; - d = base[2].x; - base[1].x = a = ( base[0].x + c ) / 2; - base[5].x = b = ( base[3].x + d ) / 2; - c = ( c + d ) / 2; - base[2].x = a = ( a + c ) / 2; - base[4].x = b = ( b + c ) / 2; - base[3].x = ( a + b ) / 2; - - base[6].y = base[3].y; - c = base[1].y; - d = base[2].y; - base[1].y = a = ( base[0].y + c ) / 2; - base[5].y = b = ( base[3].y + d ) / 2; - c = ( c + d ) / 2; - base[2].y = a = ( a + c ) / 2; - base[4].y = b = ( b + c ) / 2; - base[3].y = ( a + b ) / 2; - } - - - static FT_Bool - ft_cubic_is_small_enough( FT_Vector* base, - FT_Angle *angle_in, - FT_Angle *angle_mid, - FT_Angle *angle_out ) - { - FT_Vector d1, d2, d3; - FT_Angle theta1, theta2; - FT_Int close1, close2, close3; - - - d1.x = base[2].x - base[3].x; - d1.y = base[2].y - base[3].y; - d2.x = base[1].x - base[2].x; - d2.y = base[1].y - base[2].y; - d3.x = base[0].x - base[1].x; - d3.y = base[0].y - base[1].y; - - close1 = FT_IS_SMALL( d1.x ) && FT_IS_SMALL( d1.y ); - close2 = FT_IS_SMALL( d2.x ) && FT_IS_SMALL( d2.y ); - close3 = FT_IS_SMALL( d3.x ) && FT_IS_SMALL( d3.y ); - - if ( close1 || close3 ) - { - if ( close2 ) - { - /* basically a point */ - *angle_in = *angle_out = *angle_mid = 0; - } - else if ( close1 ) - { - *angle_in = *angle_mid = FT_Atan2( d2.x, d2.y ); - *angle_out = FT_Atan2( d3.x, d3.y ); - } - else /* close2 */ - { - *angle_in = FT_Atan2( d1.x, d1.y ); - *angle_mid = *angle_out = FT_Atan2( d2.x, d2.y ); - } - } - else if ( close2 ) - { - *angle_in = *angle_mid = FT_Atan2( d1.x, d1.y ); - *angle_out = FT_Atan2( d3.x, d3.y ); - } - else - { - *angle_in = FT_Atan2( d1.x, d1.y ); - *angle_mid = FT_Atan2( d2.x, d2.y ); - *angle_out = FT_Atan2( d3.x, d3.y ); - } - - theta1 = ft_pos_abs( FT_Angle_Diff( *angle_in, *angle_mid ) ); - theta2 = ft_pos_abs( FT_Angle_Diff( *angle_mid, *angle_out ) ); - - return FT_BOOL( theta1 < FT_SMALL_CUBIC_THRESHOLD && - theta2 < FT_SMALL_CUBIC_THRESHOLD ); - } - - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** STROKE BORDERS *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - - typedef enum - { - FT_STROKE_TAG_ON = 1, /* on-curve point */ - FT_STROKE_TAG_CUBIC = 2, /* cubic off-point */ - FT_STROKE_TAG_BEGIN = 4, /* sub-path start */ - FT_STROKE_TAG_END = 8 /* sub-path end */ - - } FT_StrokeTags; - - - typedef struct FT_StrokeBorderRec_ - { - FT_UInt num_points; - FT_UInt max_points; - FT_Vector* points; - FT_Byte* tags; - FT_Bool movable; - FT_Int start; /* index of current sub-path start point */ - FT_Memory memory; - FT_Bool valid; - - } FT_StrokeBorderRec, *FT_StrokeBorder; - - - static FT_Error - ft_stroke_border_grow( FT_StrokeBorder border, - FT_UInt new_points ) - { - FT_UInt old_max = border->max_points; - FT_UInt new_max = border->num_points + new_points; - FT_Error error = 0; - - - if ( new_max > old_max ) - { - FT_UInt cur_max = old_max; - FT_Memory memory = border->memory; - - - while ( cur_max < new_max ) - cur_max += ( cur_max >> 1 ) + 16; - - if ( FT_RENEW_ARRAY( border->points, old_max, cur_max ) || - FT_RENEW_ARRAY( border->tags, old_max, cur_max ) ) - goto Exit; - - border->max_points = cur_max; - } - Exit: - return error; - } - - - static void - ft_stroke_border_close( FT_StrokeBorder border ) - { - FT_ASSERT( border->start >= 0 ); - - /* don't record empty paths! */ - if ( border->num_points > (FT_UInt)border->start ) - { - border->tags[border->start ] |= FT_STROKE_TAG_BEGIN; - border->tags[border->num_points - 1] |= FT_STROKE_TAG_END; - } - - border->start = -1; - border->movable = 0; - } - - - static FT_Error - ft_stroke_border_lineto( FT_StrokeBorder border, - FT_Vector* to, - FT_Bool movable ) - { - FT_Error error = 0; - - - FT_ASSERT( border->start >= 0 ); - - if ( border->movable ) - { - /* move last point */ - border->points[border->num_points - 1] = *to; - } - else - { - /* add one point */ - error = ft_stroke_border_grow( border, 1 ); - if ( !error ) - { - FT_Vector* vec = border->points + border->num_points; - FT_Byte* tag = border->tags + border->num_points; - - - vec[0] = *to; - tag[0] = FT_STROKE_TAG_ON; - - border->num_points += 1; - } - } - border->movable = movable; - return error; - } - - - static FT_Error - ft_stroke_border_conicto( FT_StrokeBorder border, - FT_Vector* control, - FT_Vector* to ) - { - FT_Error error; - - - FT_ASSERT( border->start >= 0 ); - - error = ft_stroke_border_grow( border, 2 ); - if ( !error ) - { - FT_Vector* vec = border->points + border->num_points; - FT_Byte* tag = border->tags + border->num_points; - - vec[0] = *control; - vec[1] = *to; - - tag[0] = 0; - tag[1] = FT_STROKE_TAG_ON; - - border->num_points += 2; - } - border->movable = 0; - return error; - } - - - static FT_Error - ft_stroke_border_cubicto( FT_StrokeBorder border, - FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to ) - { - FT_Error error; - - - FT_ASSERT( border->start >= 0 ); - - error = ft_stroke_border_grow( border, 3 ); - if ( !error ) - { - FT_Vector* vec = border->points + border->num_points; - FT_Byte* tag = border->tags + border->num_points; - - - vec[0] = *control1; - vec[1] = *control2; - vec[2] = *to; - - tag[0] = FT_STROKE_TAG_CUBIC; - tag[1] = FT_STROKE_TAG_CUBIC; - tag[2] = FT_STROKE_TAG_ON; - - border->num_points += 3; - } - border->movable = 0; - return error; - } - - -#define FT_ARC_CUBIC_ANGLE ( FT_ANGLE_PI / 2 ) - - - static FT_Error - ft_stroke_border_arcto( FT_StrokeBorder border, - FT_Vector* center, - FT_Fixed radius, - FT_Angle angle_start, - FT_Angle angle_diff ) - { - FT_Angle total, angle, step, rotate, next, theta; - FT_Vector a, b, a2, b2; - FT_Fixed length; - FT_Error error = 0; - - - /* compute start point */ - FT_Vector_From_Polar( &a, radius, angle_start ); - a.x += center->x; - a.y += center->y; - - total = angle_diff; - angle = angle_start; - rotate = ( angle_diff >= 0 ) ? FT_ANGLE_PI2 : -FT_ANGLE_PI2; - - while ( total != 0 ) - { - step = total; - if ( step > FT_ARC_CUBIC_ANGLE ) - step = FT_ARC_CUBIC_ANGLE; - - else if ( step < -FT_ARC_CUBIC_ANGLE ) - step = -FT_ARC_CUBIC_ANGLE; - - next = angle + step; - theta = step; - if ( theta < 0 ) - theta = -theta; - - theta >>= 1; - - /* compute end point */ - FT_Vector_From_Polar( &b, radius, next ); - b.x += center->x; - b.y += center->y; - - /* compute first and second control points */ - length = FT_MulDiv( radius, FT_Sin( theta ) * 4, - ( 0x10000L + FT_Cos( theta ) ) * 3 ); - - FT_Vector_From_Polar( &a2, length, angle + rotate ); - a2.x += a.x; - a2.y += a.y; - - FT_Vector_From_Polar( &b2, length, next - rotate ); - b2.x += b.x; - b2.y += b.y; - - /* add cubic arc */ - error = ft_stroke_border_cubicto( border, &a2, &b2, &b ); - if ( error ) - break; - - /* process the rest of the arc ?? */ - a = b; - total -= step; - angle = next; - } - - return error; - } - - - static FT_Error - ft_stroke_border_moveto( FT_StrokeBorder border, - FT_Vector* to ) - { - /* close current open path if any ? */ - if ( border->start >= 0 ) - ft_stroke_border_close( border ); - - border->start = border->num_points; - border->movable = 0; - - return ft_stroke_border_lineto( border, to, 0 ); - } - - - static void - ft_stroke_border_init( FT_StrokeBorder border, - FT_Memory memory ) - { - border->memory = memory; - border->points = NULL; - border->tags = NULL; - - border->num_points = 0; - border->max_points = 0; - border->start = -1; - border->valid = 0; - } - - - static void - ft_stroke_border_reset( FT_StrokeBorder border ) - { - border->num_points = 0; - border->start = -1; - border->valid = 0; - } - - - static void - ft_stroke_border_done( FT_StrokeBorder border ) - { - FT_Memory memory = border->memory; - - - FT_FREE( border->points ); - FT_FREE( border->tags ); - - border->num_points = 0; - border->max_points = 0; - border->start = -1; - border->valid = 0; - } - - - static FT_Error - ft_stroke_border_get_counts( FT_StrokeBorder border, - FT_UInt *anum_points, - FT_UInt *anum_contours ) - { - FT_Error error = 0; - FT_UInt num_points = 0; - FT_UInt num_contours = 0; - - FT_UInt count = border->num_points; - FT_Vector* point = border->points; - FT_Byte* tags = border->tags; - FT_Int in_contour = 0; - - - for ( ; count > 0; count--, num_points++, point++, tags++ ) - { - if ( tags[0] & FT_STROKE_TAG_BEGIN ) - { - if ( in_contour != 0 ) - goto Fail; - - in_contour = 1; - } - else if ( in_contour == 0 ) - goto Fail; - - if ( tags[0] & FT_STROKE_TAG_END ) - { - if ( in_contour == 0 ) - goto Fail; - - in_contour = 0; - num_contours++; - } - } - - if ( in_contour != 0 ) - goto Fail; - - border->valid = 1; - - Exit: - *anum_points = num_points; - *anum_contours = num_contours; - return error; - - Fail: - num_points = 0; - num_contours = 0; - goto Exit; - } - - - static void - ft_stroke_border_export( FT_StrokeBorder border, - FT_Outline* outline ) - { - /* copy point locations */ - FT_ARRAY_COPY( outline->points + outline->n_points, - border->points, - border->num_points ); - - /* copy tags */ - { - FT_UInt count = border->num_points; - FT_Byte* read = border->tags; - FT_Byte* write = (FT_Byte*)outline->tags + outline->n_points; - - - for ( ; count > 0; count--, read++, write++ ) - { - if ( *read & FT_STROKE_TAG_ON ) - *write = FT_CURVE_TAG_ON; - else if ( *read & FT_STROKE_TAG_CUBIC ) - *write = FT_CURVE_TAG_CUBIC; - else - *write = FT_CURVE_TAG_CONIC; - } - } - - /* copy contours */ - { - FT_UInt count = border->num_points; - FT_Byte* tags = border->tags; - FT_Short* write = outline->contours + outline->n_contours; - FT_Short idx = (FT_Short)outline->n_points; - - - for ( ; count > 0; count--, tags++, idx++ ) - { - if ( *tags & FT_STROKE_TAG_END ) - { - *write++ = idx; - outline->n_contours++; - } - } - } - - outline->n_points = (short)( outline->n_points + border->num_points ); - - FT_ASSERT( FT_Outline_Check( outline ) == 0 ); - } - - - /***************************************************************************/ - /***************************************************************************/ - /***** *****/ - /***** STROKER *****/ - /***** *****/ - /***************************************************************************/ - /***************************************************************************/ - -#define FT_SIDE_TO_ROTATE( s ) ( FT_ANGLE_PI2 - (s) * FT_ANGLE_PI ) - - typedef struct FT_StrokerRec_ - { - FT_Angle angle_in; - FT_Angle angle_out; - FT_Vector center; - FT_Bool first_point; - FT_Bool subpath_open; - FT_Angle subpath_angle; - FT_Vector subpath_start; - - FT_Stroker_LineCap line_cap; - FT_Stroker_LineJoin line_join; - FT_Fixed miter_limit; - FT_Fixed radius; - - FT_Bool valid; - FT_StrokeBorderRec borders[2]; - FT_Memory memory; - - } FT_StrokerRec; - - - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_New( FT_Memory memory, - FT_Stroker *astroker ) - { - FT_Error error; - FT_Stroker stroker; - - - if ( !FT_NEW( stroker ) ) - { - stroker->memory = memory; - - ft_stroke_border_init( &stroker->borders[0], memory ); - ft_stroke_border_init( &stroker->borders[1], memory ); - } - *astroker = stroker; - return error; - } - - - FT_EXPORT_DEF( void ) - FT_Stroker_Set( FT_Stroker stroker, - FT_Fixed radius, - FT_Stroker_LineCap line_cap, - FT_Stroker_LineJoin line_join, - FT_Fixed miter_limit ) - { - stroker->radius = radius; - stroker->line_cap = line_cap; - stroker->line_join = line_join; - stroker->miter_limit = miter_limit; - - FT_Stroker_Rewind( stroker ); - } - - - FT_EXPORT_DEF( void ) - FT_Stroker_Rewind( FT_Stroker stroker ) - { - if ( stroker ) - { - ft_stroke_border_reset( &stroker->borders[0] ); - ft_stroke_border_reset( &stroker->borders[1] ); - } - } - - - FT_EXPORT_DEF( void ) - FT_Stroker_Done( FT_Stroker stroker ) - { - if ( stroker ) - { - FT_Memory memory = stroker->memory; - - - ft_stroke_border_done( &stroker->borders[0] ); - ft_stroke_border_done( &stroker->borders[1] ); - - stroker->memory = NULL; - FT_FREE( stroker ); - } - } - - - /* creates a circular arc at a corner or cap */ - static FT_Error - ft_stroker_arcto( FT_Stroker stroker, - FT_Int side ) - { - FT_Angle total, rotate; - FT_Fixed radius = stroker->radius; - FT_Error error = 0; - FT_StrokeBorder border = stroker->borders + side; - - - rotate = FT_SIDE_TO_ROTATE( side ); - - total = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ); - if ( total == FT_ANGLE_PI ) - total = -rotate * 2; - - error = ft_stroke_border_arcto( border, - &stroker->center, - radius, - stroker->angle_in + rotate, - total ); - border->movable = 0; - return error; - } - - - /* adds a cap at the end of an opened path */ - static FT_Error - ft_stroker_cap( FT_Stroker stroker, - FT_Angle angle, - FT_Int side ) - { - FT_Error error = 0; - - - if ( stroker->line_cap == FT_STROKER_LINECAP_ROUND ) - { - /* add a round cap */ - stroker->angle_in = angle; - stroker->angle_out = angle + FT_ANGLE_PI; - error = ft_stroker_arcto( stroker, side ); - } - else if ( stroker->line_cap == FT_STROKER_LINECAP_SQUARE ) - { - /* add a square cap */ - FT_Vector delta, delta2; - FT_Angle rotate = FT_SIDE_TO_ROTATE( side ); - FT_Fixed radius = stroker->radius; - FT_StrokeBorder border = stroker->borders + side; - - - FT_Vector_From_Polar( &delta2, radius, angle + rotate ); - FT_Vector_From_Polar( &delta, radius, angle ); - - delta.x += stroker->center.x + delta2.x; - delta.y += stroker->center.y + delta2.y; - - error = ft_stroke_border_lineto( border, &delta, 0 ); - if ( error ) - goto Exit; - - FT_Vector_From_Polar( &delta2, radius, angle - rotate ); - FT_Vector_From_Polar( &delta, radius, angle ); - - delta.x += delta2.x + stroker->center.x; - delta.y += delta2.y + stroker->center.y; - - error = ft_stroke_border_lineto( border, &delta, 0 ); - } - - Exit: - return error; - } - - - /* process an inside corner, i.e. compute intersection */ - static FT_Error - ft_stroker_inside( FT_Stroker stroker, - FT_Int side) - { - FT_StrokeBorder border = stroker->borders + side; - FT_Angle phi, theta, rotate; - FT_Fixed length, thcos, sigma; - FT_Vector delta; - FT_Error error = 0; - - - rotate = FT_SIDE_TO_ROTATE( side ); - - /* compute median angle */ - theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ); - if ( theta == FT_ANGLE_PI ) - theta = rotate; - else - theta = theta / 2; - - phi = stroker->angle_in + theta; - - thcos = FT_Cos( theta ); - sigma = FT_MulFix( stroker->miter_limit, thcos ); - - if ( sigma < 0x10000L ) - { - FT_Vector_From_Polar( &delta, stroker->radius, - stroker->angle_out + rotate ); - delta.x += stroker->center.x; - delta.y += stroker->center.y; - border->movable = 0; - } - else - { - length = FT_DivFix( stroker->radius, thcos ); - - FT_Vector_From_Polar( &delta, length, phi + rotate ); - delta.x += stroker->center.x; - delta.y += stroker->center.y; - } - - error = ft_stroke_border_lineto( border, &delta, 0 ); - - return error; - } - - - /* process an outside corner, i.e. compute bevel/miter/round */ - static FT_Error - ft_stroker_outside( FT_Stroker stroker, - FT_Int side ) - { - FT_StrokeBorder border = stroker->borders + side; - FT_Error error; - FT_Angle rotate; - - - if ( stroker->line_join == FT_STROKER_LINEJOIN_ROUND ) - { - error = ft_stroker_arcto( stroker, side ); - } - else - { - /* this is a mitered or beveled corner */ - FT_Fixed sigma, radius = stroker->radius; - FT_Angle theta, phi; - FT_Fixed thcos; - FT_Bool miter; - - - rotate = FT_SIDE_TO_ROTATE( side ); - miter = FT_BOOL( stroker->line_join == FT_STROKER_LINEJOIN_MITER ); - - theta = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ); - if ( theta == FT_ANGLE_PI ) - { - theta = rotate; - phi = stroker->angle_in; - } - else - { - theta = theta / 2; - phi = stroker->angle_in + theta + rotate; - } - - thcos = FT_Cos( theta ); - sigma = FT_MulFix( stroker->miter_limit, thcos ); - - if ( sigma >= 0x10000L ) - miter = 0; - - if ( miter ) /* this is a miter (broken angle) */ - { - FT_Vector middle, delta; - FT_Fixed length; - - - /* compute middle point */ - FT_Vector_From_Polar( &middle, - FT_MulFix( radius, stroker->miter_limit ), - phi ); - middle.x += stroker->center.x; - middle.y += stroker->center.y; - - /* compute first angle point */ - length = FT_MulFix( radius, - FT_DivFix( 0x10000L - sigma, - ft_pos_abs( FT_Sin( theta ) ) ) ); - - FT_Vector_From_Polar( &delta, length, phi + rotate ); - delta.x += middle.x; - delta.y += middle.y; - - error = ft_stroke_border_lineto( border, &delta, 0 ); - if ( error ) - goto Exit; - - /* compute second angle point */ - FT_Vector_From_Polar( &delta, length, phi - rotate ); - delta.x += middle.x; - delta.y += middle.y; - - error = ft_stroke_border_lineto( border, &delta, 0 ); - if ( error ) - goto Exit; - - /* finally, add a movable end point */ - FT_Vector_From_Polar( &delta, radius, stroker->angle_out + rotate ); - delta.x += stroker->center.x; - delta.y += stroker->center.y; - - error = ft_stroke_border_lineto( border, &delta, 1 ); - } - - else /* this is a bevel (intersection) */ - { - FT_Fixed length; - FT_Vector delta; - - - length = FT_DivFix( stroker->radius, thcos ); - - FT_Vector_From_Polar( &delta, length, phi ); - delta.x += stroker->center.x; - delta.y += stroker->center.y; - - error = ft_stroke_border_lineto( border, &delta, 0 ); - if (error) goto Exit; - - /* now add end point */ - FT_Vector_From_Polar( &delta, stroker->radius, - stroker->angle_out + rotate ); - delta.x += stroker->center.x; - delta.y += stroker->center.y; - - error = ft_stroke_border_lineto( border, &delta, 1 ); - } - } - - Exit: - return error; - } - - - static FT_Error - ft_stroker_process_corner( FT_Stroker stroker ) - { - FT_Error error = 0; - FT_Angle turn; - FT_Int inside_side; - - - turn = FT_Angle_Diff( stroker->angle_in, stroker->angle_out ); - - /* no specific corner processing is required if the turn is 0 */ - if ( turn == 0 ) - goto Exit; - - /* when we turn to the right, the inside side is 0 */ - inside_side = 0; - - /* otherwise, the inside side is 1 */ - if ( turn < 0 ) - inside_side = 1; - - /* process the inside side */ - error = ft_stroker_inside( stroker, inside_side ); - if ( error ) - goto Exit; - - /* process the outside side */ - error = ft_stroker_outside( stroker, 1 - inside_side ); - - Exit: - return error; - } - - - /* add two points to the left and right borders corresponding to the */ - /* start of the subpath.. */ - static FT_Error - ft_stroker_subpath_start( FT_Stroker stroker, - FT_Angle start_angle ) - { - FT_Vector delta; - FT_Vector point; - FT_Error error; - FT_StrokeBorder border; - - - FT_Vector_From_Polar( &delta, stroker->radius, - start_angle + FT_ANGLE_PI2 ); - - point.x = stroker->center.x + delta.x; - point.y = stroker->center.y + delta.y; - - border = stroker->borders; - error = ft_stroke_border_moveto( border, &point ); - if ( error ) - goto Exit; - - point.x = stroker->center.x - delta.x; - point.y = stroker->center.y - delta.y; - - border++; - error = ft_stroke_border_moveto( border, &point ); - - /* save angle for last cap */ - stroker->subpath_angle = start_angle; - stroker->first_point = 0; - - Exit: - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_LineTo( FT_Stroker stroker, - FT_Vector* to ) - { - FT_Error error = 0; - FT_StrokeBorder border; - FT_Vector delta; - FT_Angle angle; - FT_Int side; - - delta.x = to->x - stroker->center.x; - delta.y = to->y - stroker->center.y; - - angle = FT_Atan2( delta.x, delta.y ); - FT_Vector_From_Polar( &delta, stroker->radius, angle + FT_ANGLE_PI2 ); - - /* process corner if necessary */ - if ( stroker->first_point ) - { - /* This is the first segment of a subpath. We need to */ - /* add a point to each border at their respective starting */ - /* point locations. */ - error = ft_stroker_subpath_start( stroker, angle ); - if ( error ) - goto Exit; - } - else - { - /* process the current corner */ - stroker->angle_out = angle; - error = ft_stroker_process_corner( stroker ); - if ( error ) - goto Exit; - } - - /* now add a line segment to both the "inside" and "outside" paths */ - - for ( border = stroker->borders, side = 1; side >= 0; side--, border++ ) - { - FT_Vector point; - - - point.x = to->x + delta.x; - point.y = to->y + delta.y; - - error = ft_stroke_border_lineto( border, &point, 1 ); - if ( error ) - goto Exit; - - delta.x = -delta.x; - delta.y = -delta.y; - } - - stroker->angle_in = angle; - stroker->center = *to; - - Exit: - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_ConicTo( FT_Stroker stroker, - FT_Vector* control, - FT_Vector* to ) - { - FT_Error error = 0; - FT_Vector bez_stack[34]; - FT_Vector* arc; - FT_Vector* limit = bez_stack + 30; - FT_Angle start_angle; - FT_Bool first_arc = 1; - - - arc = bez_stack; - arc[0] = *to; - arc[1] = *control; - arc[2] = stroker->center; - - while ( arc >= bez_stack ) - { - FT_Angle angle_in, angle_out; - - - angle_in = angle_out = 0; /* remove compiler warnings */ - - if ( arc < limit && - !ft_conic_is_small_enough( arc, &angle_in, &angle_out ) ) - { - ft_conic_split( arc ); - arc += 2; - continue; - } - - if ( first_arc ) - { - first_arc = 0; - - start_angle = angle_in; - - /* process corner if necessary */ - if ( stroker->first_point ) - error = ft_stroker_subpath_start( stroker, start_angle ); - else - { - stroker->angle_out = start_angle; - error = ft_stroker_process_corner( stroker ); - } - } - - /* the arc's angle is small enough; we can add it directly to each */ - /* border */ - { - FT_Vector ctrl, end; - FT_Angle theta, phi, rotate; - FT_Fixed length; - FT_Int side; - - - theta = FT_Angle_Diff( angle_in, angle_out ) / 2; - phi = angle_in + theta; - length = FT_DivFix( stroker->radius, FT_Cos( theta ) ); - - for ( side = 0; side <= 1; side++ ) - { - rotate = FT_SIDE_TO_ROTATE( side ); - - /* compute control point */ - FT_Vector_From_Polar( &ctrl, length, phi + rotate ); - ctrl.x += arc[1].x; - ctrl.y += arc[1].y; - - /* compute end point */ - FT_Vector_From_Polar( &end, stroker->radius, angle_out + rotate ); - end.x += arc[0].x; - end.y += arc[0].y; - - error = ft_stroke_border_conicto( stroker->borders + side, - &ctrl, &end ); - if ( error ) - goto Exit; - } - } - - arc -= 2; - - if ( arc < bez_stack ) - stroker->angle_in = angle_out; - } - - stroker->center = *to; - - Exit: - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_CubicTo( FT_Stroker stroker, - FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to ) - { - FT_Error error = 0; - FT_Vector bez_stack[37]; - FT_Vector* arc; - FT_Vector* limit = bez_stack + 32; - FT_Angle start_angle; - FT_Bool first_arc = 1; - - - arc = bez_stack; - arc[0] = *to; - arc[1] = *control2; - arc[2] = *control1; - arc[3] = stroker->center; - - while ( arc >= bez_stack ) - { - FT_Angle angle_in, angle_mid, angle_out; - - - /* remove compiler warnings */ - angle_in = angle_out = angle_mid = 0; - - if ( arc < limit && - !ft_cubic_is_small_enough( arc, &angle_in, - &angle_mid, &angle_out ) ) - { - ft_cubic_split( arc ); - arc += 3; - continue; - } - - if ( first_arc ) - { - first_arc = 0; - - /* process corner if necessary */ - start_angle = angle_in; - - if ( stroker->first_point ) - error = ft_stroker_subpath_start( stroker, start_angle ); - else - { - stroker->angle_out = start_angle; - error = ft_stroker_process_corner( stroker ); - } - if ( error ) - goto Exit; - } - - /* the arc's angle is small enough; we can add it directly to each */ - /* border */ - { - FT_Vector ctrl1, ctrl2, end; - FT_Angle theta1, phi1, theta2, phi2, rotate; - FT_Fixed length1, length2; - FT_Int side; - - - theta1 = ft_pos_abs( angle_mid - angle_in ) / 2; - theta2 = ft_pos_abs( angle_out - angle_mid ) / 2; - phi1 = (angle_mid + angle_in ) / 2; - phi2 = (angle_mid + angle_out ) / 2; - length1 = FT_DivFix( stroker->radius, FT_Cos( theta1 ) ); - length2 = FT_DivFix( stroker->radius, FT_Cos(theta2) ); - - for ( side = 0; side <= 1; side++ ) - { - rotate = FT_SIDE_TO_ROTATE( side ); - - /* compute control points */ - FT_Vector_From_Polar( &ctrl1, length1, phi1 + rotate ); - ctrl1.x += arc[2].x; - ctrl1.y += arc[2].y; - - FT_Vector_From_Polar( &ctrl2, length2, phi2 + rotate ); - ctrl2.x += arc[1].x; - ctrl2.y += arc[1].y; - - /* compute end point */ - FT_Vector_From_Polar( &end, stroker->radius, angle_out + rotate ); - end.x += arc[0].x; - end.y += arc[0].y; - - error = ft_stroke_border_cubicto( stroker->borders + side, - &ctrl1, &ctrl2, &end ); - if ( error ) - goto Exit; - } - } - - arc -= 3; - if ( arc < bez_stack ) - stroker->angle_in = angle_out; - } - - stroker->center = *to; - - Exit: - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_BeginSubPath( FT_Stroker stroker, - FT_Vector* to, - FT_Bool open ) - { - /* We cannot process the first point, because there is not enough */ - /* information regarding its corner/cap. The latter will be processed */ - /* in the "end_subpath" routine. */ - /* */ - stroker->first_point = 1; - stroker->center = *to; - stroker->subpath_open = open; - - /* record the subpath start point index for each border */ - stroker->subpath_start = *to; - return 0; - } - - - static FT_Error - ft_stroker_add_reverse_left( FT_Stroker stroker, - FT_Bool open ) - { - FT_StrokeBorder right = stroker->borders + 0; - FT_StrokeBorder left = stroker->borders + 1; - FT_Int new_points; - FT_Error error = 0; - - - FT_ASSERT( left->start >= 0 ); - - new_points = left->num_points - left->start; - if ( new_points > 0 ) - { - error = ft_stroke_border_grow( right, (FT_UInt)new_points ); - if ( error ) - goto Exit; - - { - FT_Vector* dst_point = right->points + right->num_points; - FT_Byte* dst_tag = right->tags + right->num_points; - FT_Vector* src_point = left->points + left->num_points - 1; - FT_Byte* src_tag = left->tags + left->num_points - 1; - - while ( src_point >= left->points + left->start ) - { - *dst_point = *src_point; - *dst_tag = *src_tag; - - if ( open ) - dst_tag[0] &= ~( FT_STROKE_TAG_BEGIN | FT_STROKE_TAG_END ); - else - { - /* switch begin/end tags if necessary.. */ - if ( dst_tag[0] & ( FT_STROKE_TAG_BEGIN | FT_STROKE_TAG_END ) ) - dst_tag[0] ^= ( FT_STROKE_TAG_BEGIN | FT_STROKE_TAG_END ); - } - - src_point--; - src_tag--; - dst_point++; - dst_tag++; - } - } - - left->num_points = left->start; - right->num_points += new_points; - - right->movable = 0; - left->movable = 0; - } - - Exit: - return error; - } - - - /* there's a lot of magic in this function! */ - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_EndSubPath( FT_Stroker stroker ) - { - FT_Error error = 0; - - if ( stroker->subpath_open ) - { - FT_StrokeBorder right = stroker->borders; - - /* All right, this is an opened path, we need to add a cap between */ - /* right & left, add the reverse of left, then add a final cap */ - /* between left & right. */ - error = ft_stroker_cap( stroker, stroker->angle_in, 0 ); - if ( error ) - goto Exit; - - /* add reversed points from "left" to "right" */ - error = ft_stroker_add_reverse_left( stroker, 1 ); - if ( error ) - goto Exit; - - /* now add the final cap */ - stroker->center = stroker->subpath_start; - error = ft_stroker_cap( stroker, - stroker->subpath_angle + FT_ANGLE_PI, 0 ); - if ( error ) - goto Exit; - - /* Now end the right subpath accordingly. The left one is */ - /* rewind and doesn't need further processing. */ - ft_stroke_border_close( right ); - } - else - { - FT_Angle turn; - FT_Int inside_side; - - /* close the path if needed */ - if ( stroker->center.x != stroker->subpath_start.x || - stroker->center.y != stroker->subpath_start.y ) - { - error = FT_Stroker_LineTo( stroker, &stroker->subpath_start ); - if ( error ) - goto Exit; - } - - /* process the corner */ - stroker->angle_out = stroker->subpath_angle; - turn = FT_Angle_Diff( stroker->angle_in, - stroker->angle_out ); - - /* no specific corner processing is required if the turn is 0 */ - if ( turn != 0 ) - { - /* when we turn to the right, the inside side is 0 */ - inside_side = 0; - - /* otherwise, the inside side is 1 */ - if ( turn < 0 ) - inside_side = 1; - - /* IMPORTANT: WE DO NOT PROCESS THE INSIDE BORDER HERE! */ - /* process the inside side */ - /* error = ft_stroker_inside( stroker, inside_side ); */ - /* if ( error ) */ - /* goto Exit; */ - - /* process the outside side */ - error = ft_stroker_outside( stroker, 1 - inside_side ); - if ( error ) - goto Exit; - } - - /* then end our two subpaths */ - ft_stroke_border_close( stroker->borders + 0 ); - ft_stroke_border_close( stroker->borders + 1 ); - } - - Exit: - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_GetBorderCounts( FT_Stroker stroker, - FT_StrokerBorder border, - FT_UInt *anum_points, - FT_UInt *anum_contours ) - { - FT_UInt num_points = 0, num_contours = 0; - FT_Error error; - - - if ( !stroker || border > 1 ) - { - error = FT_Err_Invalid_Argument; - goto Exit; - } - - error = ft_stroke_border_get_counts( stroker->borders + border, - &num_points, &num_contours ); - Exit: - if ( anum_points ) - *anum_points = num_points; - - if ( anum_contours ) - *anum_contours = num_contours; - - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_GetCounts( FT_Stroker stroker, - FT_UInt *anum_points, - FT_UInt *anum_contours ) - { - FT_UInt count1, count2, num_points = 0; - FT_UInt count3, count4, num_contours = 0; - FT_Error error; - - - error = ft_stroke_border_get_counts( stroker->borders + 0, - &count1, &count2 ); - if ( error ) - goto Exit; - - error = ft_stroke_border_get_counts( stroker->borders + 1, - &count3, &count4 ); - if ( error ) - goto Exit; - - num_points = count1 + count3; - num_contours = count2 + count4; - - Exit: - *anum_points = num_points; - *anum_contours = num_contours; - return error; - } - - - FT_EXPORT_DEF( void ) - FT_Stroker_ExportBorder( FT_Stroker stroker, - FT_StrokerBorder border, - FT_Outline* outline ) - { - if ( border == FT_STROKER_BORDER_LEFT || - border == FT_STROKER_BORDER_RIGHT ) - { - FT_StrokeBorder sborder = & stroker->borders[border]; - - - if ( sborder->valid ) - ft_stroke_border_export( sborder, outline ); - } - } - - - FT_EXPORT_DEF( void ) - FT_Stroker_Export( FT_Stroker stroker, - FT_Outline* outline ) - { - FT_Stroker_ExportBorder( stroker, FT_STROKER_BORDER_LEFT, outline ); - FT_Stroker_ExportBorder( stroker, FT_STROKER_BORDER_RIGHT, outline ); - } - - - /* - * The following is very similar to FT_Outline_Decompose, except - * that we do support opened paths, and do not scale the outline. - */ - FT_EXPORT_DEF( FT_Error ) - FT_Stroker_ParseOutline( FT_Stroker stroker, - FT_Outline* outline, - FT_Bool opened ) - { - FT_Vector v_last; - FT_Vector v_control; - FT_Vector v_start; - - FT_Vector* point; - FT_Vector* limit; - char* tags; - - FT_Error error; - - FT_Int n; /* index of contour in outline */ - FT_UInt first; /* index of first point in contour */ - FT_Int tag; /* current point's state */ - - - if ( !outline || !stroker ) - return FT_Err_Invalid_Argument; - - FT_Stroker_Rewind( stroker ); - - first = 0; - - for ( n = 0; n < outline->n_contours; n++ ) - { - FT_Int last; /* index of last point in contour */ - - - last = outline->contours[n]; - limit = outline->points + last; - - v_start = outline->points[first]; - v_last = outline->points[last]; - - v_control = v_start; - - point = outline->points + first; - tags = outline->tags + first; - tag = FT_CURVE_TAG( tags[0] ); - - /* A contour cannot start with a cubic control point! */ - if ( tag == FT_CURVE_TAG_CUBIC ) - goto Invalid_Outline; - - /* check first point to determine origin */ - if ( tag == FT_CURVE_TAG_CONIC ) - { - /* First point is conic control. Yes, this happens. */ - if ( FT_CURVE_TAG( outline->tags[last] ) == FT_CURVE_TAG_ON ) - { - /* start at last point if it is on the curve */ - v_start = v_last; - limit--; - } - else - { - /* if both first and last points are conic, */ - /* start at their middle and record its position */ - /* for closure */ - v_start.x = ( v_start.x + v_last.x ) / 2; - v_start.y = ( v_start.y + v_last.y ) / 2; - - v_last = v_start; - } - point--; - tags--; - } - - error = FT_Stroker_BeginSubPath( stroker, &v_start, opened ); - if ( error ) - goto Exit; - - while ( point < limit ) - { - point++; - tags++; - - tag = FT_CURVE_TAG( tags[0] ); - switch ( tag ) - { - case FT_CURVE_TAG_ON: /* emit a single line_to */ - { - FT_Vector vec; - - - vec.x = point->x; - vec.y = point->y; - - error = FT_Stroker_LineTo( stroker, &vec ); - if ( error ) - goto Exit; - continue; - } - - case FT_CURVE_TAG_CONIC: /* consume conic arcs */ - v_control.x = point->x; - v_control.y = point->y; - - Do_Conic: - if ( point < limit ) - { - FT_Vector vec; - FT_Vector v_middle; - - - point++; - tags++; - tag = FT_CURVE_TAG( tags[0] ); - - vec = point[0]; - - if ( tag == FT_CURVE_TAG_ON ) - { - error = FT_Stroker_ConicTo( stroker, &v_control, &vec ); - if ( error ) - goto Exit; - continue; - } - - if ( tag != FT_CURVE_TAG_CONIC ) - goto Invalid_Outline; - - v_middle.x = ( v_control.x + vec.x ) / 2; - v_middle.y = ( v_control.y + vec.y ) / 2; - - error = FT_Stroker_ConicTo( stroker, &v_control, &v_middle ); - if ( error ) - goto Exit; - - v_control = vec; - goto Do_Conic; - } - - error = FT_Stroker_ConicTo( stroker, &v_control, &v_start ); - goto Close; - - default: /* FT_CURVE_TAG_CUBIC */ - { - FT_Vector vec1, vec2; - - - if ( point + 1 > limit || - FT_CURVE_TAG( tags[1] ) != FT_CURVE_TAG_CUBIC ) - goto Invalid_Outline; - - point += 2; - tags += 2; - - vec1 = point[-2]; - vec2 = point[-1]; - - if ( point <= limit ) - { - FT_Vector vec; - - - vec = point[0]; - - error = FT_Stroker_CubicTo( stroker, &vec1, &vec2, &vec ); - if ( error ) - goto Exit; - continue; - } - - error = FT_Stroker_CubicTo( stroker, &vec1, &vec2, &v_start ); - goto Close; - } - } - } - - Close: - if ( error ) - goto Exit; - - error = FT_Stroker_EndSubPath( stroker ); - if ( error ) - goto Exit; - - first = last + 1; - } - - return 0; - - Exit: - return error; - - Invalid_Outline: - return FT_Err_Invalid_Outline; - } - - - extern const FT_Glyph_Class ft_outline_glyph_class; - - - FT_EXPORT_DEF( FT_Error ) - FT_Glyph_Stroke( FT_Glyph *pglyph, - FT_Stroker stroker, - FT_Bool destroy ) - { - FT_Error error = FT_Err_Invalid_Argument; - FT_Glyph glyph = NULL; - - - if ( pglyph == NULL ) - goto Exit; - - glyph = *pglyph; - if ( glyph == NULL || glyph->clazz != &ft_outline_glyph_class ) - goto Exit; - - { - FT_Glyph copy; - - - error = FT_Glyph_Copy( glyph, © ); - if ( error ) - goto Exit; - - glyph = copy; - } - - { - FT_OutlineGlyph oglyph = (FT_OutlineGlyph) glyph; - FT_Outline* outline = &oglyph->outline; - FT_UInt num_points, num_contours; - - - error = FT_Stroker_ParseOutline( stroker, outline, 0 ); - if ( error ) - goto Fail; - - (void)FT_Stroker_GetCounts( stroker, &num_points, &num_contours ); - - FT_Outline_Done( glyph->library, outline ); - - error = FT_Outline_New( glyph->library, - num_points, num_contours, outline ); - if ( error ) - goto Fail; - - outline->n_points = 0; - outline->n_contours = 0; - - FT_Stroker_Export( stroker, outline ); - } - - if ( destroy ) - FT_Done_Glyph( *pglyph ); - - *pglyph = glyph; - goto Exit; - - Fail: - FT_Done_Glyph( glyph ); - glyph = NULL; - - if ( !destroy ) - *pglyph = NULL; - - Exit: - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Glyph_StrokeBorder( FT_Glyph *pglyph, - FT_Stroker stroker, - FT_Bool inside, - FT_Bool destroy ) - { - FT_Error error = FT_Err_Invalid_Argument; - FT_Glyph glyph = NULL; - - - if ( pglyph == NULL ) - goto Exit; - - glyph = *pglyph; - if ( glyph == NULL || glyph->clazz != &ft_outline_glyph_class ) - goto Exit; - - { - FT_Glyph copy; - - - error = FT_Glyph_Copy( glyph, © ); - if ( error ) - goto Exit; - - glyph = copy; - } - - { - FT_OutlineGlyph oglyph = (FT_OutlineGlyph) glyph; - FT_StrokerBorder border; - FT_Outline* outline = &oglyph->outline; - FT_UInt num_points, num_contours; - - - border = FT_Outline_GetOutsideBorder( outline ); - if ( inside ) - { - if ( border == FT_STROKER_BORDER_LEFT ) - border = FT_STROKER_BORDER_RIGHT; - else - border = FT_STROKER_BORDER_LEFT; - } - - error = FT_Stroker_ParseOutline( stroker, outline, 0 ); - if ( error ) - goto Fail; - - (void)FT_Stroker_GetBorderCounts( stroker, border, - &num_points, &num_contours ); - - FT_Outline_Done( glyph->library, outline ); - - error = FT_Outline_New( glyph->library, - num_points, - num_contours, - outline ); - if ( error ) - goto Fail; - - outline->n_points = 0; - outline->n_contours = 0; - - FT_Stroker_ExportBorder( stroker, border, outline ); - } - - if ( destroy ) - FT_Done_Glyph( *pglyph ); - - *pglyph = glyph; - goto Exit; - - Fail: - FT_Done_Glyph( glyph ); - glyph = NULL; - - if ( !destroy ) - *pglyph = NULL; - - Exit: - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftsynth.c b/nx-X11/extras/freetype2/src/base/ftsynth.c deleted file mode 100644 index cee36822f..000000000 --- a/nx-X11/extras/freetype2/src/base/ftsynth.c +++ /dev/null @@ -1,287 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsynth.c */ -/* */ -/* FreeType synthesizing code for emboldening and slanting (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_CALC_H -#include FT_OUTLINE_H -#include FT_TRIGONOMETRY_H -#include FT_SYNTHESIS_H - - -#define FT_BOLD_THRESHOLD 0x0100 - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** EXPERIMENTAL OBLIQUING SUPPORT ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_EXPORT_DEF( void ) - FT_GlyphSlot_Oblique( FT_GlyphSlot slot ) - { - FT_Matrix transform; - FT_Outline* outline = &slot->outline; - - - /* only oblique outline glyphs */ - if ( slot->format != FT_GLYPH_FORMAT_OUTLINE ) - return; - - /* we don't touch the advance width */ - - /* For italic, simply apply a shear transform, with an angle */ - /* of about 12 degrees. */ - - transform.xx = 0x10000L; - transform.yx = 0x00000L; - - transform.xy = 0x06000L; - transform.yy = 0x10000L; - - FT_Outline_Transform( outline, &transform ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** EXPERIMENTAL EMBOLDENING/OUTLINING SUPPORT ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - - - - static int - ft_test_extrema( FT_Outline* outline, - int n ) - { - FT_Vector *prev, *cur, *next; - FT_Pos product; - FT_Int c, first, last; - - - /* we need to compute the `previous' and `next' point */ - /* for these extrema. */ - cur = outline->points + n; - prev = cur - 1; - next = cur + 1; - - first = 0; - for ( c = 0; c < outline->n_contours; c++ ) - { - last = outline->contours[c]; - - if ( n == first ) - prev = outline->points + last; - - if ( n == last ) - next = outline->points + first; - - first = last + 1; - } - - product = FT_MulDiv( cur->x - prev->x, /* in.x */ - next->y - cur->y, /* out.y */ - 0x40 ) - - - FT_MulDiv( cur->y - prev->y, /* in.y */ - next->x - cur->x, /* out.x */ - 0x40 ); - - if ( product ) - product = product > 0 ? 1 : -1; - - return product; - } - - - /* Compute the orientation of path filling. It differs between TrueType */ - /* and Type1 formats. We could use the `FT_OUTLINE_REVERSE_FILL' flag, */ - /* but it is better to re-compute it directly (it seems that this flag */ - /* isn't correctly set for some weird composite glyphs currently). */ - /* */ - /* We do this by computing bounding box points, and computing their */ - /* curvature. */ - /* */ - /* The function returns either 1 or -1. */ - /* */ - static int - ft_get_orientation( FT_Outline* outline ) - { - FT_BBox box; - FT_BBox indices; - int n, last; - - - indices.xMin = -1; - indices.yMin = -1; - indices.xMax = -1; - indices.yMax = -1; - - box.xMin = box.yMin = 32767; - box.xMax = box.yMax = -32768; - - /* is it empty ? */ - if ( outline->n_contours < 1 ) - return 1; - - last = outline->contours[outline->n_contours - 1]; - - for ( n = 0; n <= last; n++ ) - { - FT_Pos x, y; - - - x = outline->points[n].x; - if ( x < box.xMin ) - { - box.xMin = x; - indices.xMin = n; - } - if ( x > box.xMax ) - { - box.xMax = x; - indices.xMax = n; - } - - y = outline->points[n].y; - if ( y < box.yMin ) - { - box.yMin = y; - indices.yMin = n; - } - if ( y > box.yMax ) - { - box.yMax = y; - indices.yMax = n; - } - } - - /* test orientation of the xmin */ - n = ft_test_extrema( outline, indices.xMin ); - if ( n ) - goto Exit; - - n = ft_test_extrema( outline, indices.yMin ); - if ( n ) - goto Exit; - - n = ft_test_extrema( outline, indices.xMax ); - if ( n ) - goto Exit; - - n = ft_test_extrema( outline, indices.yMax ); - if ( !n ) - n = 1; - - Exit: - return n; - } - - - FT_EXPORT_DEF( void ) - FT_GlyphSlot_Embolden( FT_GlyphSlot slot ) - { - FT_Vector* points; - FT_Vector v_prev, v_first, v_next, v_cur; - FT_Pos distance; - FT_Outline* outline = &slot->outline; - FT_Face face = FT_SLOT_FACE( slot ); - FT_Angle rotate, angle_in, angle_out; - FT_Int c, n, first, orientation; - - - /* only embolden outline glyph images */ - if ( slot->format != FT_GLYPH_FORMAT_OUTLINE ) - return; - - /* compute control distance */ - distance = FT_MulFix( face->units_per_EM / 60, - face->size->metrics.y_scale ); - - orientation = ft_get_orientation( outline ); - rotate = FT_ANGLE_PI2*orientation; - - points = outline->points; - - first = 0; - for ( c = 0; c < outline->n_contours; c++ ) - { - int last = outline->contours[c]; - - - v_first = points[first]; - v_prev = points[last]; - v_cur = v_first; - - for ( n = first; n <= last; n++ ) - { - FT_Pos d; - FT_Vector in, out; - FT_Fixed scale; - FT_Angle angle_diff; - - - if ( n < last ) v_next = points[n + 1]; - else v_next = v_first; - - /* compute the in and out vectors */ - in.x = v_cur.x - v_prev.x; - in.y = v_cur.y - v_prev.y; - - out.x = v_next.x - v_cur.x; - out.y = v_next.y - v_cur.y; - - angle_in = FT_Atan2( in.x, in.y ); - angle_out = FT_Atan2( out.x, out.y ); - angle_diff = FT_Angle_Diff( angle_in, angle_out ); - scale = FT_Cos( angle_diff/2 ); - - if ( scale < 0x400L && scale > -0x400L ) - { - if ( scale >= 0 ) - scale = 0x400L; - else - scale = -0x400L; - } - - d = FT_DivFix( distance, scale ); - - FT_Vector_From_Polar( &in, d, angle_in + angle_diff/2 - rotate ); - - outline->points[n].x = v_cur.x + distance + in.x; - outline->points[n].y = v_cur.y + distance + in.y; - - v_prev = v_cur; - v_cur = v_next; - } - - first = last + 1; - } - - slot->metrics.horiAdvance = - ( slot->metrics.horiAdvance + distance*4 ) & ~63; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftsystem.c b/nx-X11/extras/freetype2/src/base/ftsystem.c deleted file mode 100644 index 2365de257..000000000 --- a/nx-X11/extras/freetype2/src/base/ftsystem.c +++ /dev/null @@ -1,303 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsystem.c */ -/* */ -/* ANSI-specific FreeType low-level system interface (body). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* This file contains the default interface used by FreeType to access */ - /* low-level, i.e. memory management, i/o access as well as thread */ - /* synchronisation. It can be replaced by user-specific routines if */ - /* necessary. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_DEBUG_H -#include FT_SYSTEM_H -#include FT_ERRORS_H -#include FT_TYPES_H - -#include <stdio.h> -#include <stdlib.h> - - - /*************************************************************************/ - /* */ - /* MEMORY MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* It is not necessary to do any error checking for the */ - /* allocation-related functions. This will be done by the higher level */ - /* routines like FT_Alloc() or FT_Realloc(). */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_alloc */ - /* */ - /* <Description> */ - /* The memory allocation function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* size :: The requested size in bytes. */ - /* */ - /* <Return> */ - /* The address of newly allocated block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_alloc( FT_Memory memory, - long size ) - { - FT_UNUSED( memory ); - - return malloc( size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_realloc */ - /* */ - /* <Description> */ - /* The memory reallocation function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* cur_size :: The current size of the allocated memory block. */ - /* */ - /* new_size :: The newly requested size in bytes. */ - /* */ - /* block :: The current address of the block in memory. */ - /* */ - /* <Return> */ - /* The address of the reallocated memory block. */ - /* */ - FT_CALLBACK_DEF( void* ) - ft_realloc( FT_Memory memory, - long cur_size, - long new_size, - void* block ) - { - FT_UNUSED( memory ); - FT_UNUSED( cur_size ); - - return realloc( block, new_size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_free */ - /* */ - /* <Description> */ - /* The memory release function. */ - /* */ - /* <Input> */ - /* memory :: A pointer to the memory object. */ - /* */ - /* block :: The address of block in memory to be freed. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_free( FT_Memory memory, - void* block ) - { - FT_UNUSED( memory ); - - free( block ); - } - - - /*************************************************************************/ - /* */ - /* RESOURCE MANAGEMENT INTERFACE */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_io - - /* We use the macro STREAM_FILE for convenience to extract the */ - /* system-specific stream handle from a given FreeType stream object */ -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_ansi_stream_close */ - /* */ - /* <Description> */ - /* The function to close a stream. */ - /* */ - /* <Input> */ - /* stream :: A pointer to the stream object. */ - /* */ - FT_CALLBACK_DEF( void ) - ft_ansi_stream_close( FT_Stream stream ) - { - fclose( STREAM_FILE( stream ) ); - - stream->descriptor.pointer = NULL; - stream->size = 0; - stream->base = 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_ansi_stream_io */ - /* */ - /* <Description> */ - /* The function to open a stream. */ - /* */ - /* <Input> */ - /* stream :: A pointer to the stream object. */ - /* */ - /* offset :: The position in the data stream to start reading. */ - /* */ - /* buffer :: The address of buffer to store the read data. */ - /* */ - /* count :: The number of bytes to read from the stream. */ - /* */ - /* <Return> */ - /* The number of bytes actually read. */ - /* */ - FT_CALLBACK_DEF( unsigned long ) - ft_ansi_stream_io( FT_Stream stream, - unsigned long offset, - unsigned char* buffer, - unsigned long count ) - { - FILE* file; - - - file = STREAM_FILE( stream ); - - fseek( file, offset, SEEK_SET ); - - return (unsigned long)fread( buffer, 1, count, file ); - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Stream_Open( FT_Stream stream, - const char* filepathname ) - { - FILE* file; - - - if ( !stream ) - return FT_Err_Invalid_Stream_Handle; - - file = fopen( filepathname, "rb" ); - if ( !file ) - { - FT_ERROR(( "FT_Stream_Open:" )); - FT_ERROR(( " could not open `%s'\n", filepathname )); - - return FT_Err_Cannot_Open_Resource; - } - - fseek( file, 0, SEEK_END ); - stream->size = ftell( file ); - fseek( file, 0, SEEK_SET ); - - stream->descriptor.pointer = file; - stream->pathname.pointer = (char*)filepathname; - stream->pos = 0; - - stream->read = ft_ansi_stream_io; - stream->close = ft_ansi_stream_close; - - FT_TRACE1(( "FT_Stream_Open:" )); - FT_TRACE1(( " opened `%s' (%d bytes) successfully\n", - filepathname, stream->size )); - - return FT_Err_Ok; - } - - -#ifdef FT_DEBUG_MEMORY - - extern FT_Int - ft_mem_debug_init( FT_Memory memory ); - - extern void - ft_mem_debug_done( FT_Memory memory ); - -#endif - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( FT_Memory ) - FT_New_Memory( void ) - { - FT_Memory memory; - - - memory = (FT_Memory)malloc( sizeof ( *memory ) ); - if ( memory ) - { - memory->user = 0; - memory->alloc = ft_alloc; - memory->realloc = ft_realloc; - memory->free = ft_free; -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_init( memory ); -#endif - } - - return memory; - } - - - /* documentation is in ftobjs.h */ - - FT_EXPORT_DEF( void ) - FT_Done_Memory( FT_Memory memory ) - { -#ifdef FT_DEBUG_MEMORY - ft_mem_debug_done( memory ); -#endif - memory->free( memory, memory ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/fttrigon.c b/nx-X11/extras/freetype2/src/base/fttrigon.c deleted file mode 100644 index 5347dd852..000000000 --- a/nx-X11/extras/freetype2/src/base/fttrigon.c +++ /dev/null @@ -1,499 +0,0 @@ -/***************************************************************************/ -/* */ -/* fttrigon.c */ -/* */ -/* FreeType trigonometric functions (body). */ -/* */ -/* Copyright 2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_TRIGONOMETRY_H - - - /* the following is 0.2715717684432231 * 2^30 */ -#define FT_TRIG_COSCALE 0x11616E8EUL - - /* this table was generated for FT_PI = 180L << 16, i.e. degrees */ -#define FT_TRIG_MAX_ITERS 23 - - static const FT_Fixed - ft_trig_arctan_table[24] = - { - 4157273L, 2949120L, 1740967L, 919879L, 466945L, 234379L, 117304L, - 58666L, 29335L, 14668L, 7334L, 3667L, 1833L, 917L, 458L, 229L, 115L, - 57L, 29L, 14L, 7L, 4L, 2L, 1L - }; - - /* the Cordic shrink factor, multiplied by 2^32 */ -#define FT_TRIG_SCALE 1166391785UL /* 0x4585BA38UL */ - - -#ifdef FT_CONFIG_HAS_INT64 - - /* multiply a given value by the CORDIC shrink factor */ - static FT_Fixed - ft_trig_downscale( FT_Fixed val ) - { - FT_Fixed s; - FT_Int64 v; - - - s = val; - val = ( val >= 0 ) ? val : -val; - - v = ( val * (FT_Int64)FT_TRIG_SCALE ) + 0x100000000UL; - val = (FT_Fixed)( v >> 32 ); - - return ( s >= 0 ) ? val : -val; - } - -#else /* !FT_CONFIG_HAS_INT64 */ - - /* multiply a given value by the CORDIC shrink factor */ - static FT_Fixed - ft_trig_downscale( FT_Fixed val ) - { - FT_Fixed s; - FT_UInt32 v1, v2, k1, k2, hi, lo1, lo2, lo3; - - - s = val; - val = ( val >= 0 ) ? val : -val; - - v1 = (FT_UInt32)val >> 16; - v2 = (FT_UInt32)val & 0xFFFFL; - - k1 = FT_TRIG_SCALE >> 16; /* constant */ - k2 = FT_TRIG_SCALE & 0xFFFFL; /* constant */ - - hi = k1 * v1; - lo1 = k1 * v2 + k2 * v1; /* can't overflow */ - - lo2 = ( k2 * v2 ) >> 16; - lo3 = ( lo1 >= lo2 ) ? lo1 : lo2; - lo1 += lo2; - - hi += lo1 >> 16; - if ( lo1 < lo3 ) - hi += 0x10000UL; - - val = (FT_Fixed)hi; - - return ( s >= 0 ) ? val : -val; - } - -#endif /* !FT_CONFIG_HAS_INT64 */ - - - static FT_Int - ft_trig_prenorm( FT_Vector* vec ) - { - FT_Fixed x, y, z; - FT_Int shift; - - - x = vec->x; - y = vec->y; - - z = ( ( x >= 0 ) ? x : - x ) | ( (y >= 0) ? y : -y ); - shift = 0; - - if ( z < ( 1L << 27 ) ) - { - do - { - shift++; - z <<= 1; - } while ( z < ( 1L << 27 ) ); - - vec->x = x << shift; - vec->y = y << shift; - } - else if ( z > ( 1L << 28 ) ) - { - do - { - shift++; - z >>= 1; - } while ( z > ( 1L << 28 ) ); - - vec->x = x >> shift; - vec->y = y >> shift; - shift = -shift; - } - return shift; - } - - - static void - ft_trig_pseudo_rotate( FT_Vector* vec, - FT_Angle theta ) - { - FT_Int i; - FT_Fixed x, y, xtemp; - const FT_Fixed *arctanptr; - - - x = vec->x; - y = vec->y; - - /* Get angle between -90 and 90 degrees */ - while ( theta <= -FT_ANGLE_PI2 ) - { - x = -x; - y = -y; - theta += FT_ANGLE_PI; - } - - while ( theta > FT_ANGLE_PI2 ) - { - x = -x; - y = -y; - theta -= FT_ANGLE_PI; - } - - /* Initial pseudorotation, with left shift */ - arctanptr = ft_trig_arctan_table; - - if ( theta < 0 ) - { - xtemp = x + ( y << 1 ); - y = y - ( x << 1 ); - x = xtemp; - theta += *arctanptr++; - } - else - { - xtemp = x - ( y << 1 ); - y = y + ( x << 1 ); - x = xtemp; - theta -= *arctanptr++; - } - - /* Subsequent pseudorotations, with right shifts */ - i = 0; - do - { - if ( theta < 0 ) - { - xtemp = x + ( y >> i ); - y = y - ( x >> i ); - x = xtemp; - theta += *arctanptr++; - } - else - { - xtemp = x - ( y >> i ); - y = y + ( x >> i ); - x = xtemp; - theta -= *arctanptr++; - } - } while ( ++i < FT_TRIG_MAX_ITERS ); - - vec->x = x; - vec->y = y; - } - - - static void - ft_trig_pseudo_polarize( FT_Vector* vec ) - { - FT_Fixed theta; - FT_Fixed yi, i; - FT_Fixed x, y; - const FT_Fixed *arctanptr; - - - x = vec->x; - y = vec->y; - - /* Get the vector into the right half plane */ - theta = 0; - if ( x < 0 ) - { - x = -x; - y = -y; - theta = 2 * FT_ANGLE_PI2; - } - - if ( y > 0 ) - theta = - theta; - - arctanptr = ft_trig_arctan_table; - - if ( y < 0 ) - { - /* Rotate positive */ - yi = y + ( x << 1 ); - x = x - ( y << 1 ); - y = yi; - theta -= *arctanptr++; /* Subtract angle */ - } - else - { - /* Rotate negative */ - yi = y - ( x << 1 ); - x = x + ( y << 1 ); - y = yi; - theta += *arctanptr++; /* Add angle */ - } - - i = 0; - do - { - if ( y < 0 ) - { - /* Rotate positive */ - yi = y + ( x >> i ); - x = x - ( y >> i ); - y = yi; - theta -= *arctanptr++; - } - else - { - /* Rotate negative */ - yi = y - ( x >> i ); - x = x + ( y >> i ); - y = yi; - theta += *arctanptr++; - } - } while ( ++i < FT_TRIG_MAX_ITERS ); - - /* round theta */ - if ( theta >= 0 ) - theta = FT_PAD_ROUND( theta, 32 ); - else - theta = - FT_PAD_ROUND( -theta, 32 ); - - vec->x = x; - vec->y = theta; - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( FT_Fixed ) - FT_Cos( FT_Angle angle ) - { - FT_Vector v; - - - v.x = FT_TRIG_COSCALE >> 2; - v.y = 0; - ft_trig_pseudo_rotate( &v, angle ); - - return v.x / ( 1 << 12 ); - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( FT_Fixed ) - FT_Sin( FT_Angle angle ) - { - return FT_Cos( FT_ANGLE_PI2 - angle ); - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( FT_Fixed ) - FT_Tan( FT_Angle angle ) - { - FT_Vector v; - - - v.x = FT_TRIG_COSCALE >> 2; - v.y = 0; - ft_trig_pseudo_rotate( &v, angle ); - - return FT_DivFix( v.y, v.x ); - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( FT_Angle ) - FT_Atan2( FT_Fixed dx, - FT_Fixed dy ) - { - FT_Vector v; - - - if ( dx == 0 && dy == 0 ) - return 0; - - v.x = dx; - v.y = dy; - ft_trig_prenorm( &v ); - ft_trig_pseudo_polarize( &v ); - - return v.y; - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( void ) - FT_Vector_Unit( FT_Vector* vec, - FT_Angle angle ) - { - vec->x = FT_TRIG_COSCALE >> 2; - vec->y = 0; - ft_trig_pseudo_rotate( vec, angle ); - vec->x >>= 12; - vec->y >>= 12; - } - - - /* these macros return 0 for positive numbers, - and -1 for negative ones */ -#define FT_SIGN_LONG( x ) ( (x) >> ( FT_SIZEOF_LONG * 8 - 1 ) ) -#define FT_SIGN_INT( x ) ( (x) >> ( FT_SIZEOF_INT * 8 - 1 ) ) -#define FT_SIGN_INT32( x ) ( (x) >> 31 ) -#define FT_SIGN_INT16( x ) ( (x) >> 15 ) - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( void ) - FT_Vector_Rotate( FT_Vector* vec, - FT_Angle angle ) - { - FT_Int shift; - FT_Vector v; - - - v.x = vec->x; - v.y = vec->y; - - if ( angle && ( v.x != 0 || v.y != 0 ) ) - { - shift = ft_trig_prenorm( &v ); - ft_trig_pseudo_rotate( &v, angle ); - v.x = ft_trig_downscale( v.x ); - v.y = ft_trig_downscale( v.y ); - - if ( shift > 0 ) - { - FT_Int32 half = 1L << ( shift - 1 ); - - - vec->x = ( v.x + half + FT_SIGN_LONG( v.x ) ) >> shift; - vec->y = ( v.y + half + FT_SIGN_LONG( v.y ) ) >> shift; - } - else - { - shift = -shift; - vec->x = v.x << shift; - vec->y = v.y << shift; - } - } - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( FT_Fixed ) - FT_Vector_Length( FT_Vector* vec ) - { - FT_Int shift; - FT_Vector v; - - - v = *vec; - - /* handle trivial cases */ - if ( v.x == 0 ) - { - return ( v.y >= 0 ) ? v.y : -v.y; - } - else if ( v.y == 0 ) - { - return ( v.x >= 0 ) ? v.x : -v.x; - } - - /* general case */ - shift = ft_trig_prenorm( &v ); - ft_trig_pseudo_polarize( &v ); - - v.x = ft_trig_downscale( v.x ); - - if ( shift > 0 ) - return ( v.x + ( 1 << ( shift - 1 ) ) ) >> shift; - - return v.x << -shift; - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( void ) - FT_Vector_Polarize( FT_Vector* vec, - FT_Fixed *length, - FT_Angle *angle ) - { - FT_Int shift; - FT_Vector v; - - - v = *vec; - - if ( v.x == 0 && v.y == 0 ) - return; - - shift = ft_trig_prenorm( &v ); - ft_trig_pseudo_polarize( &v ); - - v.x = ft_trig_downscale( v.x ); - - *length = ( shift >= 0 ) ? ( v.x >> shift ) : ( v.x << -shift ); - *angle = v.y; - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( void ) - FT_Vector_From_Polar( FT_Vector* vec, - FT_Fixed length, - FT_Angle angle ) - { - vec->x = length; - vec->y = 0; - - FT_Vector_Rotate( vec, angle ); - } - - - /* documentation is in fttrigon.h */ - - FT_EXPORT_DEF( FT_Angle ) - FT_Angle_Diff( FT_Angle angle1, - FT_Angle angle2 ) - { - FT_Angle delta = angle2 - angle1; - - delta %= FT_ANGLE_2PI; - if ( delta < 0 ) - delta += FT_ANGLE_2PI; - - if ( delta > FT_ANGLE_PI ) - delta -= FT_ANGLE_2PI; - - return delta; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/fttype1.c b/nx-X11/extras/freetype2/src/base/fttype1.c deleted file mode 100644 index 553b84f56..000000000 --- a/nx-X11/extras/freetype2/src/base/fttype1.c +++ /dev/null @@ -1,70 +0,0 @@ -/***************************************************************************/ -/* */ -/* fttype1.c */ -/* */ -/* FreeType utility file for PS names support (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_SERVICE_H -#include FT_SERVICE_POSTSCRIPT_INFO_H - - - /* documentation is in t1tables.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_Get_PS_Font_Info( FT_Face face, - PS_FontInfoRec* afont_info ) - { - FT_Error error = FT_Err_Invalid_Argument; - - - if ( face ) - { - FT_Service_PsInfo service = NULL; - - - FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); - - if ( service && service->ps_get_font_info ) - error = service->ps_get_font_info( face, afont_info ); - } - - return error; - } - - - /* documentation is in t1tables.h */ - - FT_EXPORT_DEF( FT_Int ) - FT_Has_PS_Glyph_Names( FT_Face face ) - { - FT_Int result = 0; - FT_Service_PsInfo service = NULL; - - - if ( face ) - { - FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO ); - - if ( service && service->ps_has_glyph_names ) - result = service->ps_has_glyph_names( face ); - } - - return result; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftutil.c b/nx-X11/extras/freetype2/src/base/ftutil.c deleted file mode 100644 index 9d3ec43d7..000000000 --- a/nx-X11/extras/freetype2/src/base/ftutil.c +++ /dev/null @@ -1,397 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftutil.c */ -/* */ -/* FreeType utility file for memory and list management (body). */ -/* */ -/* Copyright 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_MEMORY_H -#include FT_LIST_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_memory - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** *****/ - /***** M E M O R Y M A N A G E M E N T *****/ - /***** *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - /* documentation is in ftmemory.h */ - - FT_BASE_DEF( FT_Error ) - FT_Alloc( FT_Memory memory, - FT_Long size, - void* *P ) - { - FT_ASSERT( P != 0 ); - - if ( size > 0 ) - { - *P = memory->alloc( memory, size ); - if ( !*P ) - { - FT_ERROR(( "FT_Alloc:" )); - FT_ERROR(( " Out of memory? (%ld requested)\n", - size )); - - return FT_Err_Out_Of_Memory; - } - FT_MEM_ZERO( *P, size ); - } - else - *P = NULL; - - FT_TRACE7(( "FT_Alloc:" )); - FT_TRACE7(( " size = %ld, block = 0x%08p, ref = 0x%08p\n", - size, *P, P )); - - return FT_Err_Ok; - } - - - FT_BASE_DEF( FT_Error ) - FT_QAlloc( FT_Memory memory, - FT_Long size, - void* *P ) - { - FT_ASSERT( P != 0 ); - - if ( size > 0 ) - { - *P = memory->alloc( memory, size ); - if ( !*P ) - { - FT_ERROR(( "FT_QAlloc:" )); - FT_ERROR(( " Out of memory? (%ld requested)\n", - size )); - - return FT_Err_Out_Of_Memory; - } - } - else - *P = NULL; - - FT_TRACE7(( "FT_QAlloc:" )); - FT_TRACE7(( " size = %ld, block = 0x%08p, ref = 0x%08p\n", - size, *P, P )); - - return FT_Err_Ok; - } - - - /* documentation is in ftmemory.h */ - - FT_BASE_DEF( FT_Error ) - FT_Realloc( FT_Memory memory, - FT_Long current, - FT_Long size, - void** P ) - { - void* Q; - - - FT_ASSERT( P != 0 ); - - /* if the original pointer is NULL, call FT_Alloc() */ - if ( !*P ) - return FT_Alloc( memory, size, P ); - - /* if the new block if zero-sized, clear the current one */ - if ( size <= 0 ) - { - FT_Free( memory, P ); - return FT_Err_Ok; - } - - Q = memory->realloc( memory, current, size, *P ); - if ( !Q ) - goto Fail; - - if ( size > current ) - FT_MEM_ZERO( (char*)Q + current, size - current ); - - *P = Q; - return FT_Err_Ok; - - Fail: - FT_ERROR(( "FT_Realloc:" )); - FT_ERROR(( " Failed (current %ld, requested %ld)\n", - current, size )); - return FT_Err_Out_Of_Memory; - } - - - FT_BASE_DEF( FT_Error ) - FT_QRealloc( FT_Memory memory, - FT_Long current, - FT_Long size, - void** P ) - { - void* Q; - - - FT_ASSERT( P != 0 ); - - /* if the original pointer is NULL, call FT_QAlloc() */ - if ( !*P ) - return FT_QAlloc( memory, size, P ); - - /* if the new block if zero-sized, clear the current one */ - if ( size <= 0 ) - { - FT_Free( memory, P ); - return FT_Err_Ok; - } - - Q = memory->realloc( memory, current, size, *P ); - if ( !Q ) - goto Fail; - - *P = Q; - return FT_Err_Ok; - - Fail: - FT_ERROR(( "FT_QRealloc:" )); - FT_ERROR(( " Failed (current %ld, requested %ld)\n", - current, size )); - return FT_Err_Out_Of_Memory; - } - - - /* documentation is in ftmemory.h */ - - FT_BASE_DEF( void ) - FT_Free( FT_Memory memory, - void** P ) - { - FT_TRACE7(( "FT_Free:" )); - FT_TRACE7(( " Freeing block 0x%08p, ref 0x%08p\n", - P, P ? *P : (void*)0 )); - - if ( P && *P ) - { - memory->free( memory, *P ); - *P = 0; - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** *****/ - /***** D O U B L Y L I N K E D L I S T S *****/ - /***** *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - -#undef FT_COMPONENT -#define FT_COMPONENT trace_list - - /* documentation is in ftlist.h */ - - FT_EXPORT_DEF( FT_ListNode ) - FT_List_Find( FT_List list, - void* data ) - { - FT_ListNode cur; - - - cur = list->head; - while ( cur ) - { - if ( cur->data == data ) - return cur; - - cur = cur->next; - } - - return (FT_ListNode)0; - } - - - /* documentation is in ftlist.h */ - - FT_EXPORT_DEF( void ) - FT_List_Add( FT_List list, - FT_ListNode node ) - { - FT_ListNode before = list->tail; - - - node->next = 0; - node->prev = before; - - if ( before ) - before->next = node; - else - list->head = node; - - list->tail = node; - } - - - /* documentation is in ftlist.h */ - - FT_EXPORT_DEF( void ) - FT_List_Insert( FT_List list, - FT_ListNode node ) - { - FT_ListNode after = list->head; - - - node->next = after; - node->prev = 0; - - if ( !after ) - list->tail = node; - else - after->prev = node; - - list->head = node; - } - - - /* documentation is in ftlist.h */ - - FT_EXPORT_DEF( void ) - FT_List_Remove( FT_List list, - FT_ListNode node ) - { - FT_ListNode before, after; - - - before = node->prev; - after = node->next; - - if ( before ) - before->next = after; - else - list->head = after; - - if ( after ) - after->prev = before; - else - list->tail = before; - } - - - /* documentation is in ftlist.h */ - - FT_EXPORT_DEF( void ) - FT_List_Up( FT_List list, - FT_ListNode node ) - { - FT_ListNode before, after; - - - before = node->prev; - after = node->next; - - /* check whether we are already on top of the list */ - if ( !before ) - return; - - before->next = after; - - if ( after ) - after->prev = before; - else - list->tail = before; - - node->prev = 0; - node->next = list->head; - list->head->prev = node; - list->head = node; - } - - - /* documentation is in ftlist.h */ - - FT_EXPORT_DEF( FT_Error ) - FT_List_Iterate( FT_List list, - FT_List_Iterator iterator, - void* user ) - { - FT_ListNode cur = list->head; - FT_Error error = FT_Err_Ok; - - - while ( cur ) - { - FT_ListNode next = cur->next; - - - error = iterator( cur, user ); - if ( error ) - break; - - cur = next; - } - - return error; - } - - - /* documentation is in ftlist.h */ - - FT_EXPORT_DEF( void ) - FT_List_Finalize( FT_List list, - FT_List_Destructor destroy, - FT_Memory memory, - void* user ) - { - FT_ListNode cur; - - - cur = list->head; - while ( cur ) - { - FT_ListNode next = cur->next; - void* data = cur->data; - - - if ( destroy ) - destroy( memory, data, user ); - - FT_FREE( cur ); - cur = next; - } - - list->head = 0; - list->tail = 0; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftwinfnt.c b/nx-X11/extras/freetype2/src/base/ftwinfnt.c deleted file mode 100644 index 46f618c51..000000000 --- a/nx-X11/extras/freetype2/src/base/ftwinfnt.c +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftwinfnt.c */ -/* */ -/* FreeType API for accessing Windows FNT specific info (body). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_WINFONTS_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_WINFNT_H - - - FT_EXPORT_DEF( FT_Error ) - FT_Get_WinFNT_Header( FT_Face face, - FT_WinFNT_HeaderRec *header ) - { - FT_Service_WinFnt service; - FT_Error error; - - - error = FT_Err_Invalid_Argument; - - if ( face != NULL ) - { - FT_FACE_LOOKUP_SERVICE( face, service, WINFNT ); - - if ( service != NULL ) - { - error = service->get_header( face, header ); - } - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/ftxf86.c b/nx-X11/extras/freetype2/src/base/ftxf86.c deleted file mode 100644 index 04e80236e..000000000 --- a/nx-X11/extras/freetype2/src/base/ftxf86.c +++ /dev/null @@ -1,37 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftxf86.c */ -/* */ -/* FreeType utility file for X11 support (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_XFREE86_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_XFREE86_NAME_H - - FT_EXPORT_DEF( const char* ) - FT_Get_X11_Font_Format( FT_Face face ) - { - const char* result = NULL; - - - if ( face ) - FT_FACE_FIND_SERVICE( face, result, XF86_NAME ); - - return result; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/base/rules.mk b/nx-X11/extras/freetype2/src/base/rules.mk deleted file mode 100644 index 8017e8589..000000000 --- a/nx-X11/extras/freetype2/src/base/rules.mk +++ /dev/null @@ -1,96 +0,0 @@ -# -# FreeType 2 base layer configuration rules -# - - -# Copyright 1996-2000, 2002, 2003, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# It sets the following variables which are used by the master Makefile -# after the call: -# -# BASE_OBJ_S: The single-object base layer. -# BASE_OBJ_M: A list of all objects for a multiple-objects build. -# BASE_EXT_OBJ: A list of base layer extensions, i.e., components found -# in `freetype/src/base' which are not compiled within the -# base layer proper. -# -# BASE_H is defined in freetype.mk to simplify the dependency rules. - - -BASE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SRC_DIR)/base) - - -# Base layer sources -# -# ftsystem, ftinit, and ftdebug are handled by freetype.mk -# -BASE_SRC := $(BASE_DIR)/ftapi.c \ - $(BASE_DIR)/ftcalc.c \ - $(BASE_DIR)/ftdbgmem.c \ - $(BASE_DIR)/ftgloadr.c \ - $(BASE_DIR)/ftnames.c \ - $(BASE_DIR)/ftobjs.c \ - $(BASE_DIR)/ftoutln.c \ - $(BASE_DIR)/ftrfork.c \ - $(BASE_DIR)/ftstream.c \ - $(BASE_DIR)/fttrigon.c \ - $(BASE_DIR)/ftutil.c - -# Base layer `extensions' sources -# -# An extension is added to the library file (.a or .lib) as a separate -# object. It will then be linked to the final executable only if one of its -# symbols is used by the application. -# -BASE_EXT_SRC := $(BASE_DIR)/ftbbox.c \ - $(BASE_DIR)/ftbdf.c \ - $(BASE_DIR)/ftglyph.c \ - $(BASE_DIR)/ftmm.c \ - $(BASE_DIR)/ftpfr.c \ - $(BASE_DIR)/ftstroke.c \ - $(BASE_DIR)/fttype1.c \ - $(BASE_DIR)/ftwinfnt.c \ - $(BASE_DIR)/ftxf86.c - -# Default extensions objects -# -BASE_EXT_OBJ := $(BASE_EXT_SRC:$(BASE_DIR)/%.c=$(OBJ_DIR)/%.$O) - - -# Base layer object(s) -# -# BASE_OBJ_M is used during `multi' builds (each base source file compiles -# to a single object file). -# -# BASE_OBJ_S is used during `single' builds (the whole base layer is -# compiled as a single object file using ftbase.c). -# -BASE_OBJ_M := $(BASE_SRC:$(BASE_DIR)/%.c=$(OBJ_DIR)/%.$O) -BASE_OBJ_S := $(OBJ_DIR)/ftbase.$O - -# Base layer root source file for single build -# -BASE_SRC_S := $(BASE_DIR)/ftbase.c - - -# Base layer - single object build -# -$(BASE_OBJ_S): $(BASE_SRC_S) $(BASE_SRC) $(FREETYPE_H) - $(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BASE_SRC_S)) - - -# Multiple objects build + extensions -# -$(OBJ_DIR)/%.$O: $(BASE_DIR)/%.c $(FREETYPE_H) - $(BASE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/bdf/Jamfile b/nx-X11/extras/freetype2/src/bdf/Jamfile deleted file mode 100644 index 8b1714d98..000000000 --- a/nx-X11/extras/freetype2/src/bdf/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/bdf Jamfile (c) 2002 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) bdf ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = bdfdrivr bdflib ; - } - else - { - _sources = bdf ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/bdf Jamfile diff --git a/nx-X11/extras/freetype2/src/bdf/README b/nx-X11/extras/freetype2/src/bdf/README deleted file mode 100644 index d45e4fb15..000000000 --- a/nx-X11/extras/freetype2/src/bdf/README +++ /dev/null @@ -1,148 +0,0 @@ - FreeType font driver for BDF fonts - - Francesco Zappa Nardelli - <francesco.zappa.nardelli@ens.fr> - - -Introduction -************ - -BDF (Bitmap Distribution Format) is a bitmap font format defined by Adobe, -which is intended to be easily understood by both humans and computers. -This code implements a BDF driver for the FreeType library, following the -Adobe Specification V 2.2. The specification of the BDF font format is -available from Adobe's web site: - - http://partners.adobe.com/asn/developer/PDFS/TN/5005.BDF_Spec.pdf - -Many good bitmap fonts in bdf format come with XFree86 (www.XFree86.org). -They do not define vertical metrics, because the X Consortium BDF -specification has removed them. - - -Encodings -********* - -The variety of encodings that accompanies bdf fonts appears to encompass the -small set defined in freetype.h. On the other hand, two properties that -specify encoding and registry are usually defined in bdf fonts. - -I decided to make these two properties directly accessible, leaving to the -client application the work of interpreting them. For instance: - - - #include FT_INTERNAL_BDF_TYPES_H - - FT_Face face; - BDF_Public_Face bdfface; - - - FT_New_Face( library, ..., &face ); - - bdfface = (BDF_Public_Face)face; - - if ( ( bdfface->charset_registry == "ISO10646" ) && - ( bdfface->charset_encoding == "1" ) ) - [..] - - -Thus the driver always exports `ft_encoding_none' as face->charmap.encoding. -FT_Get_Char_Index's behavior is unmodified, that is, it converts the ULong -value given as argument into the corresponding glyph number. - -If the two properties are not available, Adobe Standard Encoding should be -assumed. - - -Anti-Aliased Bitmaps -******************** - -The driver supports an extension to the BDF format as used in Mark Leisher's -xmbdfed bitmap font editor. Microsoft's SBIT tool expects bitmap fonts in -that format for adding anti-aliased them to TrueType fonts. It introduces a -fourth field to the `SIZE' keyword which gives the bpp value (bits per -pixel) of the glyph data in the font. Possible values are 1 (the default), -2 (four gray levels), 4 (16 gray levels), and 8 (256 gray levels). The -driver returns either a bitmap with 1 bit per pixel or a pixmap with 8bits -per pixel (using 4, 16, and 256 gray levels, respectively). - - -Known problems -************** - -- A font is entirely loaded into memory. Obviously, this is not the Right - Thing(TM). If you have big fonts I suggest you convert them into PCF - format (using the bdftopcf utility): the PCF font drive of FreeType can - perform incremental glyph loading. - -When I have some time, I will implement on-demand glyph parsing. - -- Except for encodings properties, client applications have no visibility of - the PCF_Face object. This means that applications cannot directly access - font tables and must trust FreeType. - -- Currently, glyph names are ignored. - - I plan to give full visibility of the BDF_Face object in an upcoming - revision of the driver, thus implementing also glyph names. - -- As I have never seen a BDF font that defines vertical metrics, vertical - metrics are (parsed and) discarded. If you own a BDF font that defines - vertical metrics, please let me know (I will implement them in 5-10 - minutes). - - -License -******* - -Copyright (C) 2001-2002 by Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -*** Portions of the driver (that is, bdflib.c and bdf.h): - -Copyright 2000 Computing Research Labs, New Mexico State University -Copyright 2001-2002 Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a -copy of this software and associated documentation files (the "Software"), -to deal in the Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, sublicense, -and/or sell copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT -OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR -THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -Credits -******* - -This driver is based on excellent Mark Leisher's bdf library. If you -find something good in this driver you should probably thank him, not -me. diff --git a/nx-X11/extras/freetype2/src/bdf/bdf.c b/nx-X11/extras/freetype2/src/bdf/bdf.c deleted file mode 100644 index 9c828853e..000000000 --- a/nx-X11/extras/freetype2/src/bdf/bdf.c +++ /dev/null @@ -1,34 +0,0 @@ -/* bdf.c - - FreeType font driver for bdf files - - Copyright (C) 2001, 2002 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "bdflib.c" -#include "bdfdrivr.c" - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/bdf/bdf.h b/nx-X11/extras/freetype2/src/bdf/bdf.h deleted file mode 100644 index b42baa6e0..000000000 --- a/nx-X11/extras/freetype2/src/bdf/bdf.h +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Copyright 2000 Computing Research Labs, New Mexico State University - * Copyright 2001, 2002, 2003, 2004 Francesco Zappa Nardelli - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT - * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef __BDF_H__ -#define __BDF_H__ - - -/* - * Based on bdf.h,v 1.16 2000/03/16 20:08:51 mleisher - */ - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H - - -FT_BEGIN_HEADER - - -/* Imported from bdfP.h */ - -#define _bdf_glyph_modified( map, e ) \ - ( (map)[(e) >> 5] & ( 1 << ( (e) & 31 ) ) ) -#define _bdf_set_glyph_modified( map, e ) \ - ( (map)[(e) >> 5] |= ( 1 << ( (e) & 31 ) ) ) -#define _bdf_clear_glyph_modified( map, e ) \ - ( (map)[(e) >> 5] &= ~( 1 << ( (e) & 31 ) ) ) - -/* end of bdfP.h */ - - - /*************************************************************************/ - /* */ - /* BDF font options macros and types. */ - /* */ - /*************************************************************************/ - - -#define BDF_CORRECT_METRICS 0x01 /* Correct invalid metrics when loading. */ -#define BDF_KEEP_COMMENTS 0x02 /* Preserve the font comments. */ -#define BDF_KEEP_UNENCODED 0x04 /* Keep the unencoded glyphs. */ -#define BDF_PROPORTIONAL 0x08 /* Font has proportional spacing. */ -#define BDF_MONOWIDTH 0x10 /* Font has mono width. */ -#define BDF_CHARCELL 0x20 /* Font has charcell spacing. */ - -#define BDF_ALL_SPACING ( BDF_PROPORTIONAL | \ - BDF_MONOWIDTH | \ - BDF_CHARCELL ) - -#define BDF_DEFAULT_LOAD_OPTIONS ( BDF_CORRECT_METRICS | \ - BDF_KEEP_COMMENTS | \ - BDF_KEEP_UNENCODED | \ - BDF_PROPORTIONAL ) - - - typedef struct bdf_options_t_ - { - int correct_metrics; - int keep_unencoded; - int keep_comments; - int font_spacing; - - } bdf_options_t; - - - /* Callback function type for unknown configuration options. */ - typedef int - (*bdf_options_callback_t)( bdf_options_t* opts, - char** params, - unsigned long nparams, - void* client_data ); - - - /*************************************************************************/ - /* */ - /* BDF font property macros and types. */ - /* */ - /*************************************************************************/ - - -#define BDF_ATOM 1 -#define BDF_INTEGER 2 -#define BDF_CARDINAL 3 - - - /* This structure represents a particular property of a font. */ - /* There are a set of defaults and each font has their own. */ - typedef struct bdf_property_t_ - { - char* name; /* Name of the property. */ - int format; /* Format of the property. */ - int builtin; /* A builtin property. */ - union - { - char* atom; - long int32; - unsigned long card32; - - } value; /* Value of the property. */ - - } bdf_property_t; - - - /*************************************************************************/ - /* */ - /* BDF font metric and glyph types. */ - /* */ - /*************************************************************************/ - - - typedef struct bdf_bbx_t_ - { - unsigned short width; - unsigned short height; - - short x_offset; - short y_offset; - - short ascent; - short descent; - - } bdf_bbx_t; - - - typedef struct bdf_glyph_t_ - { - char* name; /* Glyph name. */ - long encoding; /* Glyph encoding. */ - unsigned short swidth; /* Scalable width. */ - unsigned short dwidth; /* Device width. */ - bdf_bbx_t bbx; /* Glyph bounding box. */ - unsigned char* bitmap; /* Glyph bitmap. */ - unsigned long bpr; /* Number of bytes used per row. */ - unsigned short bytes; /* Number of bytes used for the bitmap. */ - - } bdf_glyph_t; - - - typedef struct _hashnode_ - { - const char* key; - void* data; - - } _hashnode, *hashnode; - - - typedef struct hashtable_ - { - int limit; - int size; - int used; - hashnode* table; - - } hashtable; - - - typedef struct bdf_glyphlist_t_ - { - unsigned short pad; /* Pad to 4-byte boundary. */ - unsigned short bpp; /* Bits per pixel. */ - long start; /* Beginning encoding value of glyphs. */ - long end; /* Ending encoding value of glyphs. */ - bdf_glyph_t* glyphs; /* Glyphs themselves. */ - unsigned long glyphs_size; /* Glyph structures allocated. */ - unsigned long glyphs_used; /* Glyph structures used. */ - bdf_bbx_t bbx; /* Overall bounding box of glyphs. */ - - } bdf_glyphlist_t; - - - typedef struct bdf_font_t_ - { - char* name; /* Name of the font. */ - bdf_bbx_t bbx; /* Font bounding box. */ - - long point_size; /* Point size of the font. */ - unsigned long resolution_x; /* Font horizontal resolution. */ - unsigned long resolution_y; /* Font vertical resolution. */ - - int spacing; /* Font spacing value. */ - - unsigned short monowidth; /* Logical width for monowidth font. */ - - long default_char; /* Encoding of the default glyph. */ - - long font_ascent; /* Font ascent. */ - long font_descent; /* Font descent. */ - - unsigned long glyphs_size; /* Glyph structures allocated. */ - unsigned long glyphs_used; /* Glyph structures used. */ - bdf_glyph_t* glyphs; /* Glyphs themselves. */ - - unsigned long unencoded_size; /* Unencoded glyph struct. allocated. */ - unsigned long unencoded_used; /* Unencoded glyph struct. used. */ - bdf_glyph_t* unencoded; /* Unencoded glyphs themselves. */ - - unsigned long props_size; /* Font properties allocated. */ - unsigned long props_used; /* Font properties used. */ - bdf_property_t* props; /* Font properties themselves. */ - - char* comments; /* Font comments. */ - unsigned long comments_len; /* Length of comment string. */ - - bdf_glyphlist_t overflow; /* Storage used for glyph insertion. */ - - void* internal; /* Internal data for the font. */ - - unsigned long nmod[2048]; /* Bitmap indicating modified glyphs. */ - unsigned long umod[2048]; /* Bitmap indicating modified */ - /* unencoded glyphs. */ - unsigned short modified; /* Boolean indicating font modified. */ - unsigned short bpp; /* Bits per pixel. */ - - FT_Memory memory; - - bdf_property_t* user_props; - unsigned long nuser_props; - hashtable proptbl; - - } bdf_font_t; - - - /*************************************************************************/ - /* */ - /* Types for load/save callbacks. */ - /* */ - /*************************************************************************/ - - - /* Error codes. */ -#define BDF_MISSING_START -1 -#define BDF_MISSING_FONTNAME -2 -#define BDF_MISSING_SIZE -3 -#define BDF_MISSING_CHARS -4 -#define BDF_MISSING_STARTCHAR -5 -#define BDF_MISSING_ENCODING -6 -#define BDF_MISSING_BBX -7 - -#define BDF_OUT_OF_MEMORY -20 - -#define BDF_INVALID_LINE -100 - - - /*************************************************************************/ - /* */ - /* BDF font API. */ - /* */ - /*************************************************************************/ - - FT_LOCAL( FT_Error ) - bdf_load_font( FT_Stream stream, - FT_Memory memory, - bdf_options_t* opts, - bdf_font_t* *font ); - - FT_LOCAL( void ) - bdf_free_font( bdf_font_t* font ); - - FT_LOCAL( bdf_property_t * ) - bdf_get_property( char* name, - bdf_font_t* font ); - - FT_LOCAL( bdf_property_t * ) - bdf_get_font_property( bdf_font_t* font, - const char* name ); - - -FT_END_HEADER - - -#endif /* __BDF_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/bdf/bdfdrivr.c b/nx-X11/extras/freetype2/src/bdf/bdfdrivr.c deleted file mode 100644 index 8f33d537e..000000000 --- a/nx-X11/extras/freetype2/src/bdf/bdfdrivr.c +++ /dev/null @@ -1,915 +0,0 @@ -/* bdfdrivr.c - - FreeType font driver for bdf files - - Copyright (C) 2001, 2002, 2003, 2004 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - -#include <ft2build.h> - -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H -#include FT_BDF_H - -#include FT_SERVICE_BDF_H -#include FT_SERVICE_XFREE86_NAME_H - -#include "bdf.h" -#include "bdfdrivr.h" - -#include "bdferror.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_bdfdriver - - - typedef struct BDF_CMapRec_ - { - FT_CMapRec cmap; - FT_UInt num_encodings; - BDF_encoding_el* encodings; - - } BDF_CMapRec, *BDF_CMap; - - - FT_CALLBACK_DEF( FT_Error ) - bdf_cmap_init( FT_CMap bdfcmap, - FT_Pointer init_data ) - { - BDF_CMap cmap = (BDF_CMap)bdfcmap; - BDF_Face face = (BDF_Face)FT_CMAP_FACE( cmap ); - FT_UNUSED( init_data ); - - - cmap->num_encodings = face->bdffont->glyphs_used; - cmap->encodings = face->en_table; - - return BDF_Err_Ok; - } - - - FT_CALLBACK_DEF( void ) - bdf_cmap_done( FT_CMap bdfcmap ) - { - BDF_CMap cmap = (BDF_CMap)bdfcmap; - - - cmap->encodings = NULL; - cmap->num_encodings = 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - bdf_cmap_char_index( FT_CMap bdfcmap, - FT_UInt32 charcode ) - { - BDF_CMap cmap = (BDF_CMap)bdfcmap; - BDF_encoding_el* encodings = cmap->encodings; - FT_UInt min, max, mid; - FT_UInt result = 0; - - - min = 0; - max = cmap->num_encodings; - - while ( min < max ) - { - FT_UInt32 code; - - - mid = ( min + max ) >> 1; - code = encodings[mid].enc; - - if ( charcode == code ) - { - /* increase glyph index by 1 -- */ - /* we reserve slot 0 for the undefined glyph */ - result = encodings[mid].glyph + 1; - break; - } - - if ( charcode < code ) - max = mid; - else - min = mid + 1; - } - - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - bdf_cmap_char_next( FT_CMap bdfcmap, - FT_UInt32 *acharcode ) - { - BDF_CMap cmap = (BDF_CMap)bdfcmap; - BDF_encoding_el* encodings = cmap->encodings; - FT_UInt min, max, mid; - FT_UInt32 charcode = *acharcode + 1; - FT_UInt result = 0; - - - min = 0; - max = cmap->num_encodings; - - while ( min < max ) - { - FT_UInt32 code; - - - mid = ( min + max ) >> 1; - code = encodings[mid].enc; - - if ( charcode == code ) - { - /* increase glyph index by 1 -- */ - /* we reserve slot 0 for the undefined glyph */ - result = encodings[mid].glyph + 1; - goto Exit; - } - - if ( charcode < code ) - max = mid; - else - min = mid + 1; - } - - charcode = 0; - if ( min < cmap->num_encodings ) - { - charcode = encodings[min].enc; - result = encodings[min].glyph + 1; - } - - Exit: - *acharcode = charcode; - return result; - } - - - FT_CALLBACK_TABLE_DEF - const FT_CMap_ClassRec bdf_cmap_class = - { - sizeof ( BDF_CMapRec ), - bdf_cmap_init, - bdf_cmap_done, - bdf_cmap_char_index, - bdf_cmap_char_next - }; - - - static FT_Error - bdf_interpret_style( BDF_Face bdf ) - { - FT_Error error = BDF_Err_Ok; - FT_Face face = FT_FACE( bdf ); - FT_Memory memory = face->memory; - bdf_font_t* font = bdf->bdffont; - bdf_property_t* prop; - - char *istr = NULL, *bstr = NULL; - char *sstr = NULL, *astr = NULL; - - int parts = 0, len = 0; - - - face->style_flags = 0; - - prop = bdf_get_font_property( font, (char *)"SLANT" ); - if ( prop && prop->format == BDF_ATOM && - prop->value.atom && - ( *(prop->value.atom) == 'O' || *(prop->value.atom) == 'o' || - *(prop->value.atom) == 'I' || *(prop->value.atom) == 'i' ) ) - { - face->style_flags |= FT_STYLE_FLAG_ITALIC; - istr = ( *(prop->value.atom) == 'O' || *(prop->value.atom) == 'o' ) - ? (char *)"Oblique" - : (char *)"Italic"; - len += ft_strlen( istr ); - parts++; - } - - prop = bdf_get_font_property( font, (char *)"WEIGHT_NAME" ); - if ( prop && prop->format == BDF_ATOM && - prop->value.atom && - ( *(prop->value.atom) == 'B' || *(prop->value.atom) == 'b' ) ) - { - face->style_flags |= FT_STYLE_FLAG_BOLD; - bstr = (char *)"Bold"; - len += ft_strlen( bstr ); - parts++; - } - - prop = bdf_get_font_property( font, (char *)"SETWIDTH_NAME" ); - if ( prop && prop->format == BDF_ATOM && - prop->value.atom && *(prop->value.atom) && - !( *(prop->value.atom) == 'N' || *(prop->value.atom) == 'n' ) ) - { - sstr = (char *)(prop->value.atom); - len += ft_strlen( sstr ); - parts++; - } - - prop = bdf_get_font_property( font, (char *)"ADD_STYLE_NAME" ); - if ( prop && prop->format == BDF_ATOM && - prop->value.atom && *(prop->value.atom) && - !( *(prop->value.atom) == 'N' || *(prop->value.atom) == 'n' ) ) - { - astr = (char *)(prop->value.atom); - len += ft_strlen( astr ); - parts++; - } - - if ( !parts || !len ) - face->style_name = (char *)"Regular"; - else - { - char *style, *s; - unsigned int i; - - - if ( FT_ALLOC( style, len + parts ) ) - return error; - - s = style; - - if ( astr ) - { - ft_strcpy( s, astr ); - for ( i = 0; i < ft_strlen( astr ); i++, s++ ) - if ( *s == ' ' ) - *s = '-'; /* replace spaces with dashes */ - *(s++) = ' '; - } - if ( bstr ) - { - ft_strcpy( s, bstr ); - s += ft_strlen( bstr ); - *(s++) = ' '; - } - if ( istr ) - { - ft_strcpy( s, istr ); - s += ft_strlen( istr ); - *(s++) = ' '; - } - if ( sstr ) - { - ft_strcpy( s, sstr ); - for ( i = 0; i < ft_strlen( sstr ); i++, s++ ) - if ( *s == ' ' ) - *s = '-'; /* replace spaces with dashes */ - *(s++) = ' '; - } - *(--s) = '\0'; /* overwrite last ' ', terminate the string */ - - face->style_name = style; /* allocated string */ - } - - return error; - } - - - FT_CALLBACK_DEF( void ) - BDF_Face_Done( FT_Face bdfface ) /* BDF_Face */ - { - BDF_Face face = (BDF_Face)bdfface; - FT_Memory memory = FT_FACE_MEMORY( face ); - - - bdf_free_font( face->bdffont ); - - FT_FREE( face->en_table ); - - FT_FREE( face->charset_encoding ); - FT_FREE( face->charset_registry ); - FT_FREE( bdfface->family_name ); - - FT_FREE( bdfface->available_sizes ); - - FT_FREE( face->bdffont ); - - FT_TRACE4(( "BDF_Face_Done: done face\n" )); - } - - - FT_CALLBACK_DEF( FT_Error ) - BDF_Face_Init( FT_Stream stream, - FT_Face bdfface, /* BDF_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error = BDF_Err_Ok; - BDF_Face face = (BDF_Face)bdfface; - FT_Memory memory = FT_FACE_MEMORY( face ); - - bdf_font_t* font; - bdf_options_t options; - - FT_UNUSED( num_params ); - FT_UNUSED( params ); - FT_UNUSED( face_index ); - - - if ( FT_STREAM_SEEK( 0 ) ) - goto Exit; - - options.correct_metrics = 1; /* FZ XXX: options semantics */ - options.keep_unencoded = 1; - options.keep_comments = 0; - options.font_spacing = BDF_PROPORTIONAL; - - error = bdf_load_font( stream, memory, &options, &font ); - if ( error == BDF_Err_Missing_Startfont_Field ) - { - FT_TRACE2(( "[not a valid BDF file]\n" )); - goto Fail; - } - else if ( error ) - goto Exit; - - /* we have a bdf font: let's construct the face object */ - face->bdffont = font; - { - bdf_property_t* prop = NULL; - - - FT_TRACE4(( "number of glyphs: %d (%d)\n", - font->glyphs_size, - font->glyphs_used )); - FT_TRACE4(( "number of unencoded glyphs: %d (%d)\n", - font->unencoded_size, - font->unencoded_used )); - - bdfface->num_faces = 1; - bdfface->face_index = 0; - bdfface->face_flags = FT_FACE_FLAG_FIXED_SIZES | - FT_FACE_FLAG_HORIZONTAL | - FT_FACE_FLAG_FAST_GLYPHS; - - prop = bdf_get_font_property( font, "SPACING" ); - if ( prop && prop->format == BDF_ATOM && - prop->value.atom && - ( *(prop->value.atom) == 'M' || *(prop->value.atom) == 'm' || - *(prop->value.atom) == 'C' || *(prop->value.atom) == 'c' ) ) - bdfface->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; - - /* FZ XXX: TO DO: FT_FACE_FLAGS_VERTICAL */ - /* FZ XXX: I need a font to implement this */ - - prop = bdf_get_font_property( font, "FAMILY_NAME" ); - if ( prop && prop->value.atom ) - { - int l = ft_strlen( prop->value.atom ) + 1; - - - if ( FT_NEW_ARRAY( bdfface->family_name, l ) ) - goto Exit; - ft_strcpy( bdfface->family_name, prop->value.atom ); - } - else - bdfface->family_name = 0; - - if ( ( error = bdf_interpret_style( face ) ) != 0 ) - goto Exit; - - /* the number of glyphs (with one slot for the undefined glyph */ - /* at position 0 and all unencoded glyphs) */ - bdfface->num_glyphs = font->glyphs_size + 1; - - bdfface->num_fixed_sizes = 1; - if ( FT_NEW_ARRAY( bdfface->available_sizes, 1 ) ) - goto Exit; - - { - FT_Bitmap_Size* bsize = bdfface->available_sizes; - FT_Short resolution_x = 0, resolution_y = 0; - - - FT_MEM_ZERO( bsize, sizeof ( FT_Bitmap_Size ) ); - - bsize->height = font->font_ascent + font->font_descent; - - prop = bdf_get_font_property( font, "AVERAGE_WIDTH" ); - if ( prop ) - bsize->width = (FT_Short)( ( prop->value.int32 + 5 ) / 10 ); - else - bsize->width = bsize->height * 2/3; - - prop = bdf_get_font_property( font, "POINT_SIZE" ); - if ( prop ) - /* convert from 722.7 decipoints to 72 points per inch */ - bsize->size = - (FT_Pos)( ( prop->value.int32 * 64 * 7200 + 36135L ) / 72270L ); - - prop = bdf_get_font_property( font, "PIXEL_SIZE" ); - if ( prop ) - bsize->y_ppem = (FT_Short)prop->value.int32 << 6; - - prop = bdf_get_font_property( font, "RESOLUTION_X" ); - if ( prop ) - resolution_x = (FT_Short)prop->value.int32; - - prop = bdf_get_font_property( font, "RESOLUTION_Y" ); - if ( prop ) - resolution_y = (FT_Short)prop->value.int32; - - if ( bsize->y_ppem == 0 ) - { - bsize->y_ppem = bsize->size; - if ( resolution_y ) - bsize->y_ppem = bsize->y_ppem * resolution_y / 72; - } - if ( resolution_x && resolution_y ) - bsize->x_ppem = bsize->y_ppem * resolution_x / resolution_y; - else - bsize->x_ppem = bsize->y_ppem; - } - - /* encoding table */ - { - bdf_glyph_t* cur = font->glyphs; - unsigned long n; - - - if ( FT_NEW_ARRAY( face->en_table, font->glyphs_size ) ) - goto Exit; - - face->default_glyph = 0; - for ( n = 0; n < font->glyphs_size; n++ ) - { - (face->en_table[n]).enc = cur[n].encoding; - FT_TRACE4(( "idx %d, val 0x%lX\n", n, cur[n].encoding )); - (face->en_table[n]).glyph = (FT_Short)n; - - if ( cur[n].encoding == font->default_char ) - face->default_glyph = n; - } - } - - /* charmaps */ - { - bdf_property_t *charset_registry = 0, *charset_encoding = 0; - FT_Bool unicode_charmap = 0; - - - charset_registry = - bdf_get_font_property( font, "CHARSET_REGISTRY" ); - charset_encoding = - bdf_get_font_property( font, "CHARSET_ENCODING" ); - if ( charset_registry && charset_encoding ) - { - if ( charset_registry->format == BDF_ATOM && - charset_encoding->format == BDF_ATOM && - charset_registry->value.atom && - charset_encoding->value.atom ) - { - const char* s; - - - if ( FT_NEW_ARRAY( face->charset_encoding, - ft_strlen( charset_encoding->value.atom ) + 1 ) ) - goto Exit; - if ( FT_NEW_ARRAY( face->charset_registry, - ft_strlen( charset_registry->value.atom ) + 1 ) ) - goto Exit; - - ft_strcpy( face->charset_registry, charset_registry->value.atom ); - ft_strcpy( face->charset_encoding, charset_encoding->value.atom ); - - /* Uh, oh, compare first letters manually to avoid dependency - on locales. */ - s = face->charset_registry; - if ( ( s[0] == 'i' || s[0] == 'I' ) && - ( s[1] == 's' || s[1] == 'S' ) && - ( s[2] == 'o' || s[2] == 'O' ) ) - { - s += 3; - if ( !ft_strcmp( s, "10646" ) || - ( !ft_strcmp( s, "8859" ) && - !ft_strcmp( face->charset_encoding, "1" ) ) ) - unicode_charmap = 1; - } - - { - FT_CharMapRec charmap; - - - charmap.face = FT_FACE( face ); - charmap.encoding = FT_ENCODING_NONE; - charmap.platform_id = 0; - charmap.encoding_id = 0; - - if ( unicode_charmap ) - { - charmap.encoding = FT_ENCODING_UNICODE; - charmap.platform_id = 3; - charmap.encoding_id = 1; - } - - error = FT_CMap_New( &bdf_cmap_class, NULL, &charmap, NULL ); - -#if 0 - /* Select default charmap */ - if ( bdfface->num_charmaps ) - bdfface->charmap = bdfface->charmaps[0]; -#endif - } - - goto Exit; - } - } - - /* otherwise assume Adobe standard encoding */ - - { - FT_CharMapRec charmap; - - - charmap.face = FT_FACE( face ); - charmap.encoding = FT_ENCODING_ADOBE_STANDARD; - charmap.platform_id = 7; - charmap.encoding_id = 0; - - error = FT_CMap_New( &bdf_cmap_class, NULL, &charmap, NULL ); - - /* Select default charmap */ - if ( bdfface->num_charmaps ) - bdfface->charmap = bdfface->charmaps[0]; - } - } - } - - Exit: - return error; - - Fail: - BDF_Face_Done( bdfface ); - return BDF_Err_Unknown_File_Format; - } - - - FT_CALLBACK_DEF( FT_Error ) - BDF_Set_Pixel_Size( FT_Size size, - FT_UInt char_width, - FT_UInt char_height ) - { - BDF_Face face = (BDF_Face)FT_SIZE_FACE( size ); - FT_Face root = FT_FACE( face ); - - FT_UNUSED( char_width ); - FT_UNUSED( char_height ); - - - FT_TRACE4(( "rec %d - pres %d\n", - size->metrics.y_ppem, root->available_sizes->y_ppem )); - - if ( size->metrics.y_ppem == root->available_sizes->y_ppem >> 6 ) - { - size->metrics.ascender = face->bdffont->font_ascent << 6; - size->metrics.descender = -face->bdffont->font_descent << 6; - size->metrics.height = ( face->bdffont->font_ascent + - face->bdffont->font_descent ) << 6; - size->metrics.max_advance = face->bdffont->bbx.width << 6; - - return BDF_Err_Ok; - } - else - return BDF_Err_Invalid_Pixel_Size; - } - - - FT_CALLBACK_DEF( FT_Error ) - BDF_Set_Point_Size( FT_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) - { - FT_UNUSED( char_width ); - FT_UNUSED( char_height ); - FT_UNUSED( horz_resolution ); - FT_UNUSED( vert_resolution ); - - return BDF_Set_Pixel_Size( size, 0, 0 ); - } - - - FT_CALLBACK_DEF( FT_Error ) - BDF_Glyph_Load( FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - BDF_Face face = (BDF_Face)FT_SIZE_FACE( size ); - FT_Error error = BDF_Err_Ok; - FT_Bitmap* bitmap = &slot->bitmap; - bdf_glyph_t glyph; - int bpp = face->bdffont->bpp; - int i, j, count; - unsigned char *p, *pp; - - FT_UNUSED( load_flags ); - - - if ( !face ) - { - error = BDF_Err_Invalid_Argument; - goto Exit; - } - - /* index 0 is the undefined glyph */ - if ( glyph_index == 0 ) - glyph_index = face->default_glyph; - else - glyph_index--; - - /* slot, bitmap => freetype, glyph => bdflib */ - glyph = face->bdffont->glyphs[glyph_index]; - - bitmap->rows = glyph.bbx.height; - bitmap->width = glyph.bbx.width; - - if ( bpp == 1 ) - { - bitmap->pixel_mode = FT_PIXEL_MODE_MONO; - bitmap->pitch = glyph.bpr; - - /* note: we don't allocate a new array to hold the bitmap, we */ - /* can simply point to it */ - ft_glyphslot_set_bitmap( slot, glyph.bitmap ); - } - else - { - /* blow up pixmap to have 8 bits per pixel */ - bitmap->pixel_mode = FT_PIXEL_MODE_GRAY; - bitmap->pitch = bitmap->width; - - error = ft_glyphslot_alloc_bitmap( slot, bitmap->rows * bitmap->pitch ); - if ( error ) - goto Exit; - - switch ( bpp ) - { - case 2: - bitmap->num_grays = 4; - - count = 0; - p = glyph.bitmap; - - for ( i = 0; i < bitmap->rows; i++ ) - { - pp = p; - - /* get the full bytes */ - for ( j = 0; j < ( bitmap->width >> 2 ); j++ ) - { - bitmap->buffer[count++] = (FT_Byte)( ( *pp & 0xC0 ) >> 6 ); - bitmap->buffer[count++] = (FT_Byte)( ( *pp & 0x30 ) >> 4 ); - bitmap->buffer[count++] = (FT_Byte)( ( *pp & 0x0C ) >> 2 ); - bitmap->buffer[count++] = (FT_Byte)( *pp & 0x03 ); - - pp++; - } - - /* get remaining pixels (if any) */ - switch ( bitmap->width & 3 ) - { - case 3: - bitmap->buffer[count++] = (FT_Byte)( ( *pp & 0xC0 ) >> 6 ); - /* fall through */ - case 2: - bitmap->buffer[count++] = (FT_Byte)( ( *pp & 0x30 ) >> 4 ); - /* fall through */ - case 1: - bitmap->buffer[count++] = (FT_Byte)( ( *pp & 0x0C ) >> 2 ); - /* fall through */ - case 0: - break; - } - - p += glyph.bpr; - } - break; - - case 4: - bitmap->num_grays = 16; - - count = 0; - p = glyph.bitmap; - - for ( i = 0; i < bitmap->rows; i++ ) - { - pp = p; - - /* get the full bytes */ - for ( j = 0; j < ( bitmap->width >> 1 ); j++ ) - { - bitmap->buffer[count++] = (FT_Byte)( ( *pp & 0xF0 ) >> 4 ); - bitmap->buffer[count++] = (FT_Byte)( *pp & 0x0F ); - - pp++; - } - - /* get remaining pixel (if any) */ - switch ( bitmap->width & 1 ) - { - case 1: - bitmap->buffer[count++] = (FT_Byte)( ( *pp & 0xF0 ) >> 4 ); - /* fall through */ - case 0: - break; - } - - p += glyph.bpr; - } - break; - - case 8: - bitmap->num_grays = 256; - - FT_MEM_COPY( bitmap->buffer, glyph.bitmap, - bitmap->rows * bitmap->pitch ); - break; - } - } - - slot->bitmap_left = glyph.bbx.x_offset; - slot->bitmap_top = glyph.bbx.ascent; - - /* FZ XXX: TODO: vertical metrics */ - slot->metrics.horiAdvance = glyph.dwidth << 6; - slot->metrics.horiBearingX = glyph.bbx.x_offset << 6; - slot->metrics.horiBearingY = glyph.bbx.ascent << 6; - slot->metrics.width = bitmap->width << 6; - slot->metrics.height = bitmap->rows << 6; - - slot->linearHoriAdvance = (FT_Fixed)glyph.dwidth << 16; - slot->format = FT_GLYPH_FORMAT_BITMAP; - - Exit: - return error; - } - - - /* - * - * BDF SERVICE - * - */ - - static FT_Error - bdf_get_bdf_property( BDF_Face face, - const char* prop_name, - BDF_PropertyRec *aproperty ) - { - bdf_property_t* prop; - - - FT_ASSERT( face && face->bdffont ); - - prop = bdf_get_font_property( face->bdffont, prop_name ); - if ( prop ) - { - switch ( prop->format ) - { - case BDF_ATOM: - aproperty->type = BDF_PROPERTY_TYPE_ATOM; - aproperty->u.atom = prop->value.atom; - break; - - case BDF_INTEGER: - aproperty->type = BDF_PROPERTY_TYPE_INTEGER; - aproperty->u.integer = prop->value.int32; - break; - - case BDF_CARDINAL: - aproperty->type = BDF_PROPERTY_TYPE_CARDINAL; - aproperty->u.cardinal = prop->value.card32; - break; - - default: - goto Fail; - } - return 0; - } - - Fail: - return BDF_Err_Invalid_Argument; - } - - - static FT_Error - bdf_get_charset_id( BDF_Face face, - const char* *acharset_encoding, - const char* *acharset_registry ) - { - *acharset_encoding = face->charset_encoding; - *acharset_registry = face->charset_registry; - - return 0; - } - - - static const FT_Service_BDFRec bdf_service_bdf = - { - (FT_BDF_GetCharsetIdFunc)bdf_get_charset_id, - (FT_BDF_GetPropertyFunc) bdf_get_bdf_property - }; - - - /* - * - * SERVICES LIST - * - */ - - static const FT_ServiceDescRec bdf_services[] = - { - { FT_SERVICE_ID_BDF, &bdf_service_bdf }, - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_BDF }, - { NULL, NULL } - }; - - - FT_CALLBACK_DEF( FT_Module_Interface ) - bdf_driver_requester( FT_Module module, - const char* name ) - { - FT_UNUSED( module ); - - return ft_service_list_lookup( bdf_services, name ); - } - - - - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec bdf_driver_class = - { - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_NO_OUTLINES, - sizeof ( FT_DriverRec ), - - "bdf", - 0x10000L, - 0x20000L, - - 0, - - (FT_Module_Constructor)0, - (FT_Module_Destructor) 0, - (FT_Module_Requester) bdf_driver_requester - }, - - sizeof ( BDF_FaceRec ), - sizeof ( FT_SizeRec ), - sizeof ( FT_GlyphSlotRec ), - - BDF_Face_Init, - BDF_Face_Done, - 0, /* FT_Size_InitFunc */ - 0, /* FT_Size_DoneFunc */ - 0, /* FT_Slot_InitFunc */ - 0, /* FT_Slot_DoneFunc */ - - BDF_Set_Point_Size, - BDF_Set_Pixel_Size, - - BDF_Glyph_Load, - - 0, /* FT_Face_GetKerningFunc */ - 0, /* FT_Face_AttachFunc */ - 0, /* FT_Face_GetAdvancesFunc */ - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/bdf/bdfdrivr.h b/nx-X11/extras/freetype2/src/bdf/bdfdrivr.h deleted file mode 100644 index 86f40ee4a..000000000 --- a/nx-X11/extras/freetype2/src/bdf/bdfdrivr.h +++ /dev/null @@ -1,76 +0,0 @@ -/* bdfdrivr.h - - FreeType font driver for bdf fonts - - Copyright (C) 2001, 2002, 2003, 2004 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#ifndef __BDFDRIVR_H__ -#define __BDFDRIVR_H__ - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H - -#include "bdf.h" - - -FT_BEGIN_HEADER - - - typedef struct BDF_encoding_el_ - { - FT_ULong enc; - FT_UShort glyph; - - } BDF_encoding_el; - - - typedef struct BDF_FaceRec_ - { - FT_FaceRec root; - - char* charset_encoding; - char* charset_registry; - - bdf_font_t* bdffont; - - BDF_encoding_el* en_table; - - FT_CharMap charmap_handle; - FT_CharMapRec charmap; /* a single charmap per face */ - - FT_UInt default_glyph; - - } BDF_FaceRec, *BDF_Face; - - - FT_EXPORT_VAR( const FT_Driver_ClassRec ) bdf_driver_class; - - -FT_END_HEADER - - -#endif /* __BDFDRIVR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/bdf/bdferror.h b/nx-X11/extras/freetype2/src/bdf/bdferror.h deleted file mode 100644 index b27fa333b..000000000 --- a/nx-X11/extras/freetype2/src/bdf/bdferror.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2001, 2002 Francesco Zappa Nardelli - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT - * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - /*************************************************************************/ - /* */ - /* This file is used to define the BDF error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __BDFERROR_H__ -#define __BDFERROR_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX BDF_Err_ -#define FT_ERR_BASE FT_Mod_Err_BDF - -#include FT_ERRORS_H - -#endif /* __BDFERROR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/bdf/bdflib.c b/nx-X11/extras/freetype2/src/bdf/bdflib.c deleted file mode 100644 index 825385e1d..000000000 --- a/nx-X11/extras/freetype2/src/bdf/bdflib.c +++ /dev/null @@ -1,2435 +0,0 @@ -/* - * Copyright 2000 Computing Research Labs, New Mexico State University - * Copyright 2001, 2002, 2003, 2004 Francesco Zappa Nardelli - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE COMPUTING RESEARCH LAB OR NEW MEXICO STATE UNIVERSITY BE LIABLE FOR ANY - * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT - * OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR - * THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - /*************************************************************************/ - /* */ - /* This file is based on bdf.c,v 1.22 2000/03/16 20:08:50 */ - /* */ - /* taken from Mark Leisher's xmbdfed package */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> - -#include FT_FREETYPE_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H - -#include "bdf.h" -#include "bdferror.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_bdflib - - - /*************************************************************************/ - /* */ - /* Default BDF font options. */ - /* */ - /*************************************************************************/ - - - static const bdf_options_t _bdf_opts = - { - 1, /* Correct metrics. */ - 1, /* Preserve unencoded glyphs. */ - 0, /* Preserve comments. */ - BDF_PROPORTIONAL /* Default spacing. */ - }; - - - /*************************************************************************/ - /* */ - /* Builtin BDF font properties. */ - /* */ - /*************************************************************************/ - - /* List of most properties that might appear in a font. Doesn't include */ - /* the RAW_* and AXIS_* properties in X11R6 polymorphic fonts. */ - - static const bdf_property_t _bdf_properties[] = - { - { (char *)"ADD_STYLE_NAME", BDF_ATOM, 1, { 0 } }, - { (char *)"AVERAGE_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"AVG_CAPITAL_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"AVG_LOWERCASE_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"CAP_HEIGHT", BDF_INTEGER, 1, { 0 } }, - { (char *)"CHARSET_COLLECTIONS", BDF_ATOM, 1, { 0 } }, - { (char *)"CHARSET_ENCODING", BDF_ATOM, 1, { 0 } }, - { (char *)"CHARSET_REGISTRY", BDF_ATOM, 1, { 0 } }, - { (char *)"COMMENT", BDF_ATOM, 1, { 0 } }, - { (char *)"COPYRIGHT", BDF_ATOM, 1, { 0 } }, - { (char *)"DEFAULT_CHAR", BDF_CARDINAL, 1, { 0 } }, - { (char *)"DESTINATION", BDF_CARDINAL, 1, { 0 } }, - { (char *)"DEVICE_FONT_NAME", BDF_ATOM, 1, { 0 } }, - { (char *)"END_SPACE", BDF_INTEGER, 1, { 0 } }, - { (char *)"FACE_NAME", BDF_ATOM, 1, { 0 } }, - { (char *)"FAMILY_NAME", BDF_ATOM, 1, { 0 } }, - { (char *)"FIGURE_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"FONT", BDF_ATOM, 1, { 0 } }, - { (char *)"FONTNAME_REGISTRY", BDF_ATOM, 1, { 0 } }, - { (char *)"FONT_ASCENT", BDF_INTEGER, 1, { 0 } }, - { (char *)"FONT_DESCENT", BDF_INTEGER, 1, { 0 } }, - { (char *)"FOUNDRY", BDF_ATOM, 1, { 0 } }, - { (char *)"FULL_NAME", BDF_ATOM, 1, { 0 } }, - { (char *)"ITALIC_ANGLE", BDF_INTEGER, 1, { 0 } }, - { (char *)"MAX_SPACE", BDF_INTEGER, 1, { 0 } }, - { (char *)"MIN_SPACE", BDF_INTEGER, 1, { 0 } }, - { (char *)"NORM_SPACE", BDF_INTEGER, 1, { 0 } }, - { (char *)"NOTICE", BDF_ATOM, 1, { 0 } }, - { (char *)"PIXEL_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"POINT_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"QUAD_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_ASCENT", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_AVERAGE_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_AVG_CAPITAL_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_AVG_LOWERCASE_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_CAP_HEIGHT", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_DESCENT", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_END_SPACE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_FIGURE_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_MAX_SPACE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_MIN_SPACE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_NORM_SPACE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_PIXEL_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_POINT_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_PIXELSIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_POINTSIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_QUAD_WIDTH", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_SMALL_CAP_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_STRIKEOUT_ASCENT", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_STRIKEOUT_DESCENT", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_SUBSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_SUBSCRIPT_X", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_SUBSCRIPT_Y", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_SUPERSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_SUPERSCRIPT_X", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_SUPERSCRIPT_Y", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_UNDERLINE_POSITION", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_UNDERLINE_THICKNESS", BDF_INTEGER, 1, { 0 } }, - { (char *)"RAW_X_HEIGHT", BDF_INTEGER, 1, { 0 } }, - { (char *)"RELATIVE_SETWIDTH", BDF_CARDINAL, 1, { 0 } }, - { (char *)"RELATIVE_WEIGHT", BDF_CARDINAL, 1, { 0 } }, - { (char *)"RESOLUTION", BDF_INTEGER, 1, { 0 } }, - { (char *)"RESOLUTION_X", BDF_CARDINAL, 1, { 0 } }, - { (char *)"RESOLUTION_Y", BDF_CARDINAL, 1, { 0 } }, - { (char *)"SETWIDTH_NAME", BDF_ATOM, 1, { 0 } }, - { (char *)"SLANT", BDF_ATOM, 1, { 0 } }, - { (char *)"SMALL_CAP_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"SPACING", BDF_ATOM, 1, { 0 } }, - { (char *)"STRIKEOUT_ASCENT", BDF_INTEGER, 1, { 0 } }, - { (char *)"STRIKEOUT_DESCENT", BDF_INTEGER, 1, { 0 } }, - { (char *)"SUBSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"SUBSCRIPT_X", BDF_INTEGER, 1, { 0 } }, - { (char *)"SUBSCRIPT_Y", BDF_INTEGER, 1, { 0 } }, - { (char *)"SUPERSCRIPT_SIZE", BDF_INTEGER, 1, { 0 } }, - { (char *)"SUPERSCRIPT_X", BDF_INTEGER, 1, { 0 } }, - { (char *)"SUPERSCRIPT_Y", BDF_INTEGER, 1, { 0 } }, - { (char *)"UNDERLINE_POSITION", BDF_INTEGER, 1, { 0 } }, - { (char *)"UNDERLINE_THICKNESS", BDF_INTEGER, 1, { 0 } }, - { (char *)"WEIGHT", BDF_CARDINAL, 1, { 0 } }, - { (char *)"WEIGHT_NAME", BDF_ATOM, 1, { 0 } }, - { (char *)"X_HEIGHT", BDF_INTEGER, 1, { 0 } }, - { (char *)"_MULE_BASELINE_OFFSET", BDF_INTEGER, 1, { 0 } }, - { (char *)"_MULE_RELATIVE_COMPOSE", BDF_INTEGER, 1, { 0 } }, - }; - - static const unsigned long - _num_bdf_properties = sizeof ( _bdf_properties ) / - sizeof ( _bdf_properties[0] ); - - - /*************************************************************************/ - /* */ - /* Hash table utilities for the properties. */ - /* */ - /*************************************************************************/ - - /* XXX: Replace this with FreeType's hash functions */ - - -#define INITIAL_HT_SIZE 241 - - typedef void - (*hash_free_func)( hashnode node ); - - static hashnode* - hash_bucket( const char* key, - hashtable* ht ) - { - const char* kp = key; - unsigned long res = 0; - hashnode* bp = ht->table, *ndp; - - - /* Mocklisp hash function. */ - while ( *kp ) - res = ( res << 5 ) - res + *kp++; - - ndp = bp + ( res % ht->size ); - while ( *ndp ) - { - kp = (*ndp)->key; - if ( kp[0] == key[0] && ft_strcmp( kp, key ) == 0 ) - break; - ndp--; - if ( ndp < bp ) - ndp = bp + ( ht->size - 1 ); - } - - return ndp; - } - - - static FT_Error - hash_rehash( hashtable* ht, - FT_Memory memory ) - { - hashnode* obp = ht->table, *bp, *nbp; - int i, sz = ht->size; - FT_Error error = BDF_Err_Ok; - - - ht->size <<= 1; - ht->limit = ht->size / 3; - - if ( FT_NEW_ARRAY( ht->table, ht->size ) ) - goto Exit; - FT_MEM_ZERO( ht->table, sizeof ( hashnode ) * ht->size ); - - for ( i = 0, bp = obp; i < sz; i++, bp++ ) - { - if ( *bp ) - { - nbp = hash_bucket( (*bp)->key, ht ); - *nbp = *bp; - } - } - FT_FREE( obp ); - - Exit: - return error; - } - - - static FT_Error - hash_init( hashtable* ht, - FT_Memory memory ) - { - int sz = INITIAL_HT_SIZE; - FT_Error error = BDF_Err_Ok; - - - ht->size = sz; - ht->limit = sz / 3; - ht->used = 0; - - if ( FT_NEW_ARRAY( ht->table, sz ) ) - goto Exit; - FT_MEM_ZERO( ht->table, sizeof ( hashnode ) * sz ); - - Exit: - return error; - } - - - static void - hash_free( hashtable* ht, - FT_Memory memory ) - { - if ( ht != 0 ) - { - int i, sz = ht->size; - hashnode* bp = ht->table; - - - for ( i = 0; i < sz; i++, bp++ ) - FT_FREE( *bp ); - - FT_FREE( ht->table ); - } - } - - - static FT_Error - hash_insert( char* key, - void* data, - hashtable* ht, - FT_Memory memory ) - { - hashnode nn, *bp = hash_bucket( key, ht ); - FT_Error error = BDF_Err_Ok; - - - nn = *bp; - if ( !nn ) - { - if ( FT_NEW( nn ) ) - goto Exit; - *bp = nn; - - nn->key = key; - nn->data = data; - - if ( ht->used >= ht->limit ) - { - error = hash_rehash( ht, memory ); - if ( error ) - goto Exit; - } - ht->used++; - } - else - nn->data = data; - - Exit: - return error; - } - - - static hashnode - hash_lookup( const char* key, - hashtable* ht ) - { - hashnode *np = hash_bucket( key, ht ); - - - return *np; - } - - - /*************************************************************************/ - /* */ - /* Utility types and functions. */ - /* */ - /*************************************************************************/ - - - /* Function type for parsing lines of a BDF font. */ - - typedef FT_Error - (*_bdf_line_func_t)( char* line, - unsigned long linelen, - unsigned long lineno, - void* call_data, - void* client_data ); - - - /* List structure for splitting lines into fields. */ - - typedef struct _bdf_list_t_ - { - char** field; - unsigned long size; - unsigned long used; - - } _bdf_list_t; - - - /* Structure used while loading BDF fonts. */ - - typedef struct _bdf_parse_t_ - { - unsigned long flags; - unsigned long cnt; - unsigned long row; - - short minlb; - short maxlb; - short maxrb; - short maxas; - short maxds; - - short rbearing; - - char* glyph_name; - long glyph_enc; - - bdf_font_t* font; - bdf_options_t* opts; - - unsigned long have[2048]; - _bdf_list_t list; - - FT_Memory memory; - - } _bdf_parse_t; - - -#define setsbit( m, cc ) ( m[(cc) >> 3] |= (FT_Byte)( 1 << ( (cc) & 7 ) ) ) -#define sbitset( m, cc ) ( m[(cc) >> 3] & ( 1 << ( (cc) & 7 ) ) ) - - - /* An empty string for empty fields. */ - - static const char empty[1] = { 0 }; /* XXX eliminate this */ - - - /* Assume the line is NULL-terminated and that the `list' parameter */ - /* was initialized the first time it was used. */ - - static FT_Error - _bdf_split( char* separators, - char* line, - unsigned long linelen, - _bdf_list_t* list, - FT_Memory memory ) - { - int mult, final_empty; - char *sp, *ep, *end; - char seps[32]; - FT_Error error = BDF_Err_Ok; - - - /* Initialize the list. */ - list->used = 0; - - /* If the line is empty, then simply return. */ - if ( linelen == 0 || line[0] == 0 ) - goto Exit; - - /* In the original code, if the `separators' parameter is NULL or */ - /* empty, the list is split into individual bytes. We don't need */ - /* this, so an error is signaled. */ - if ( separators == 0 || *separators == 0 ) - { - error = BDF_Err_Invalid_Argument; - goto Exit; - } - - /* Prepare the separator bitmap. */ - FT_MEM_ZERO( seps, 32 ); - - /* If the very last character of the separator string is a plus, then */ - /* set the `mult' flag to indicate that multiple separators should be */ - /* collapsed into one. */ - for ( mult = 0, sp = separators; sp && *sp; sp++ ) - { - if ( *sp == '+' && *( sp + 1 ) == 0 ) - mult = 1; - else - setsbit( seps, *sp ); - } - - /* Break the line up into fields. */ - for ( final_empty = 0, sp = ep = line, end = sp + linelen; - sp < end && *sp; ) - { - /* Collect everything that is not a separator. */ - for ( ; *ep && !sbitset( seps, *ep ); ep++ ) - ; - - /* Resize the list if necessary. */ - if ( list->used == list->size ) - { - if ( list->size == 0 ) - { - if ( FT_NEW_ARRAY( list->field, 5 ) ) - goto Exit; - } - else - { - if ( FT_RENEW_ARRAY ( list->field , - list->size, - list->size + 5 ) ) - goto Exit; - } - - list->size += 5; - } - - /* Assign the field appropriately. */ - list->field[list->used++] = ( ep > sp ) ? sp : (char*)empty; - - sp = ep; - - if ( mult ) - { - /* If multiple separators should be collapsed, do it now by */ - /* setting all the separator characters to 0. */ - for ( ; *ep && sbitset( seps, *ep ); ep++ ) - *ep = 0; - } - else if ( *ep != 0 ) - /* Don't collapse multiple separators by making them 0, so just */ - /* make the one encountered 0. */ - *ep++ = 0; - - final_empty = ( ep > sp && *ep == 0 ); - sp = ep; - } - - /* Finally, NULL-terminate the list. */ - if ( list->used + final_empty + 1 >= list->size ) - { - if ( list->used == list->size ) - { - if ( list->size == 0 ) - { - if ( FT_NEW_ARRAY( list->field, 5 ) ) - goto Exit; - } - else - { - if ( FT_RENEW_ARRAY( list->field, - list->size, - list->size + 5 ) ) - goto Exit; - } - - list->size += 5; - } - } - - if ( final_empty ) - list->field[list->used++] = (char*)empty; - - if ( list->used == list->size ) - { - if ( list->size == 0 ) - { - if ( FT_NEW_ARRAY( list->field, 5 ) ) - goto Exit; - } - else - { - if ( FT_RENEW_ARRAY( list->field, - list->size, - list->size + 5 ) ) - goto Exit; - } - - list->size += 5; - } - - list->field[list->used] = 0; - - Exit: - return error; - } - - - static void - _bdf_shift( unsigned long n, - _bdf_list_t* list ) - { - unsigned long i, u; - - - if ( list == 0 || list->used == 0 || n == 0 ) - return; - - if ( n >= list->used ) - { - list->used = 0; - return; - } - - for ( u = n, i = 0; u < list->used; i++, u++ ) - list->field[i] = list->field[u]; - list->used -= n; - } - - - static char * - _bdf_join( int c, - unsigned long* len, - _bdf_list_t* list ) - { - unsigned long i, j; - char *fp, *dp; - - - if ( list == 0 || list->used == 0 ) - return 0; - - *len = 0; - - dp = list->field[0]; - for ( i = j = 0; i < list->used; i++ ) - { - fp = list->field[i]; - while ( *fp ) - dp[j++] = *fp++; - - if ( i + 1 < list->used ) - dp[j++] = (char)c; - } - dp[j] = 0; - - *len = j; - return dp; - } - - - /* High speed file reader that passes each line to a callback. */ - static FT_Error - bdf_internal_readstream( FT_Stream stream, - char* buffer, - int count, - int *read_bytes ) - { - int rbytes; - unsigned long pos = stream->pos; - FT_Error error = BDF_Err_Ok; - - - if ( pos > stream->size ) - { - FT_ERROR(( "bdf_internal_readstream:" )); - FT_ERROR(( " invalid i/o; pos = 0x%lx, size = 0x%lx\n", - pos, stream->size )); - error = BDF_Err_Invalid_Stream_Operation; - goto Exit; - } - - if ( stream->read ) - rbytes = stream->read( stream, pos, - (unsigned char *)buffer, count ); - else - { - rbytes = stream->size - pos; - if ( rbytes > count ) - rbytes = count; - - FT_MEM_COPY( buffer, stream->base + pos, rbytes ); - } - - stream->pos = pos + rbytes; - - *read_bytes = rbytes; - - Exit: - return error; - } - - - static FT_Error - _bdf_readstream( FT_Stream stream, - _bdf_line_func_t callback, - void* client_data, - unsigned long *lno ) - { - _bdf_line_func_t cb; - unsigned long lineno; - int n, done, refill, bytes, hold; - char *ls, *le, *pp, *pe, *hp; - char *buf = 0; - FT_Memory memory = stream->memory; - FT_Error error = BDF_Err_Ok; - - - if ( callback == 0 ) - { - error = BDF_Err_Invalid_Argument; - goto Exit; - } - - if ( FT_NEW_ARRAY( buf, 65536L ) ) - goto Exit; - - cb = callback; - lineno = 1; - buf[0] = 0; - - done = 0; - pp = ls = le = buf; - - bytes = 65536L; - - while ( !done ) - { - error = bdf_internal_readstream( stream, pp, bytes, &n ); - if ( error ) - goto Exit; - - if ( n == 0 ) - break; - - /* Determine the new end of the buffer pages. */ - pe = pp + n; - - for ( refill = 0; done == 0 && refill == 0; ) - { - while ( le < pe && *le != '\n' && *le != '\r' ) - le++; - - if ( le == pe ) - { - /* Hit the end of the last page in the buffer. Need to find */ - /* out how many pages to shift and how many pages need to be */ - /* read in. Adjust the line start and end pointers down to */ - /* point to the right places in the pages. */ - - pp = buf + ( ( ( ls - buf ) >> 13 ) << 13 ); - n = pp - buf; - ls -= n; - le -= n; - n = pe - pp; - - FT_MEM_MOVE( buf, pp, n ); - - pp = buf + n; - bytes = 65536L - n; - refill = 1; - } - else - { - /* Temporarily NULL-terminate the line. */ - hp = le; - hold = *le; - *le = 0; - - /* XXX: Use encoding independent value for 0x1a */ - if ( *ls != '#' && *ls != 0x1a && - le > ls && - ( error = (*cb)( ls, le - ls, lineno, (void *)&cb, - client_data ) ) != BDF_Err_Ok ) - done = 1; - else - { - ls = ++le; - /* Handle the case of DOS crlf sequences. */ - if ( le < pe && hold == '\n' && *le =='\r' ) - ls = ++le; - } - - /* Increment the line number. */ - lineno++; - - /* Restore the character at the end of the line. */ - *hp = (char)hold; - } - } - } - - *lno = lineno; - - Exit: - FT_FREE( buf ); - return error; - } - - - /* XXX: make this work with EBCDIC also */ - - static const unsigned char a2i[128] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - static const unsigned char odigits[32] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static const unsigned char ddigits[32] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - static const unsigned char hdigits[32] = - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, - 0x7e, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }; - - -#define isdigok( m, d ) (m[(d) >> 3] & ( 1 << ( (d) & 7 ) ) ) - - - /* Routine to convert an ASCII string into an unsigned long integer. */ - static unsigned long - _bdf_atoul( char* s, - char** end, - int base ) - { - unsigned long v; - const unsigned char* dmap; - - - if ( s == 0 || *s == 0 ) - return 0; - - /* Make sure the radix is something recognizable. Default to 10. */ - switch ( base ) - { - case 8: - dmap = odigits; - break; - case 16: - dmap = hdigits; - break; - default: - base = 10; - dmap = ddigits; - break; - } - - /* Check for the special hex prefix. */ - if ( *s == '0' && - ( *( s + 1 ) == 'x' || *( s + 1 ) == 'X' ) ) - { - base = 16; - dmap = hdigits; - s += 2; - } - - for ( v = 0; isdigok( dmap, *s ); s++ ) - v = v * base + a2i[(int)*s]; - - if ( end != 0 ) - *end = s; - - return v; - } - - - /* Routine to convert an ASCII string into an signed long integer. */ - static long - _bdf_atol( char* s, - char** end, - int base ) - { - long v, neg; - const unsigned char* dmap; - - - if ( s == 0 || *s == 0 ) - return 0; - - /* Make sure the radix is something recognizable. Default to 10. */ - switch ( base ) - { - case 8: - dmap = odigits; - break; - case 16: - dmap = hdigits; - break; - default: - base = 10; - dmap = ddigits; - break; - } - - /* Check for a minus sign. */ - neg = 0; - if ( *s == '-' ) - { - s++; - neg = 1; - } - - /* Check for the special hex prefix. */ - if ( *s == '0' && - ( *( s + 1 ) == 'x' || *( s + 1 ) == 'X' ) ) - { - base = 16; - dmap = hdigits; - s += 2; - } - - for ( v = 0; isdigok( dmap, *s ); s++ ) - v = v * base + a2i[(int)*s]; - - if ( end != 0 ) - *end = s; - - return ( !neg ) ? v : -v; - } - - - /* Routine to convert an ASCII string into an signed short integer. */ - static short - _bdf_atos( char* s, - char** end, - int base ) - { - short v, neg; - const unsigned char* dmap; - - - if ( s == 0 || *s == 0 ) - return 0; - - /* Make sure the radix is something recognizable. Default to 10. */ - switch ( base ) - { - case 8: - dmap = odigits; - break; - case 16: - dmap = hdigits; - break; - default: - base = 10; - dmap = ddigits; - break; - } - - /* Check for a minus. */ - neg = 0; - if ( *s == '-' ) - { - s++; - neg = 1; - } - - /* Check for the special hex prefix. */ - if ( *s == '0' && - ( *( s + 1 ) == 'x' || *( s + 1 ) == 'X' ) ) - { - base = 16; - dmap = hdigits; - s += 2; - } - - for ( v = 0; isdigok( dmap, *s ); s++ ) - v = (short)( v * base + a2i[(int)*s] ); - - if ( end != 0 ) - *end = s; - - return (short)( ( !neg ) ? v : -v ); - } - - - /* Routine to compare two glyphs by encoding so they can be sorted. */ - static int - by_encoding( const void* a, - const void* b ) - { - bdf_glyph_t *c1, *c2; - - - c1 = (bdf_glyph_t *)a; - c2 = (bdf_glyph_t *)b; - - if ( c1->encoding < c2->encoding ) - return -1; - else if ( c1->encoding > c2->encoding ) - return 1; - - return 0; - } - - - static FT_Error - bdf_create_property( char* name, - int format, - bdf_font_t* font ) - { - unsigned long n; - bdf_property_t* p; - FT_Memory memory = font->memory; - FT_Error error = BDF_Err_Ok; - - - /* First check to see if the property has */ - /* already been added or not. If it has, then */ - /* simply ignore it. */ - if ( hash_lookup( name, &(font->proptbl) ) ) - goto Exit; - - if ( font->nuser_props == 0 ) - { - if ( FT_NEW_ARRAY( font->user_props, 1 ) ) - goto Exit; - } - else - { - if ( FT_RENEW_ARRAY( font->user_props, - font->nuser_props, - font->nuser_props + 1 ) ) - goto Exit; - } - - p = font->user_props + font->nuser_props; - FT_MEM_ZERO( p, sizeof ( bdf_property_t ) ); - - n = (unsigned long)( ft_strlen( name ) + 1 ); - if ( FT_NEW_ARRAY( p->name, n ) ) - goto Exit; - - FT_MEM_COPY( (char *)p->name, name, n ); - - p->format = format; - p->builtin = 0; - - n = _num_bdf_properties + font->nuser_props; - - error = hash_insert( p->name, (void *)n, &(font->proptbl), memory ); - if ( error ) - goto Exit; - - font->nuser_props++; - - Exit: - return error; - } - - - FT_LOCAL_DEF( bdf_property_t * ) - bdf_get_property( char* name, - bdf_font_t* font ) - { - hashnode hn; - unsigned long propid; - - - if ( name == 0 || *name == 0 ) - return 0; - - if ( ( hn = hash_lookup( name, &(font->proptbl) ) ) == 0 ) - return 0; - - propid = (unsigned long)hn->data; - if ( propid >= _num_bdf_properties ) - return font->user_props + ( propid - _num_bdf_properties ); - - return (bdf_property_t*)_bdf_properties + propid; - } - - - /*************************************************************************/ - /* */ - /* BDF font file parsing flags and functions. */ - /* */ - /*************************************************************************/ - - - /* Parse flags. */ - -#define _BDF_START 0x0001 -#define _BDF_FONT_NAME 0x0002 -#define _BDF_SIZE 0x0004 -#define _BDF_FONT_BBX 0x0008 -#define _BDF_PROPS 0x0010 -#define _BDF_GLYPHS 0x0020 -#define _BDF_GLYPH 0x0040 -#define _BDF_ENCODING 0x0080 -#define _BDF_SWIDTH 0x0100 -#define _BDF_DWIDTH 0x0200 -#define _BDF_BBX 0x0400 -#define _BDF_BITMAP 0x0800 - -#define _BDF_SWIDTH_ADJ 0x1000 - -#define _BDF_GLYPH_BITS ( _BDF_GLYPH | \ - _BDF_ENCODING | \ - _BDF_SWIDTH | \ - _BDF_DWIDTH | \ - _BDF_BBX | \ - _BDF_BITMAP ) - -#define _BDF_GLYPH_WIDTH_CHECK 0x40000000L -#define _BDF_GLYPH_HEIGHT_CHECK 0x80000000L - - - /* Auto correction messages. */ -#define ACMSG1 "FONT_ASCENT property missing. " \ - "Added \"FONT_ASCENT %hd\".\n" -#define ACMSG2 "FONT_DESCENT property missing. " \ - "Added \"FONT_DESCENT %hd\".\n" -#define ACMSG3 "Font width != actual width. Old: %hd New: %hd.\n" -#define ACMSG4 "Font left bearing != actual left bearing. " \ - "Old: %hd New: %hd.\n" -#define ACMSG5 "Font ascent != actual ascent. Old: %hd New: %hd.\n" -#define ACMSG6 "Font descent != actual descent. Old: %hd New: %hd.\n" -#define ACMSG7 "Font height != actual height. Old: %hd New: %hd.\n" -#define ACMSG8 "Glyph scalable width (SWIDTH) adjustments made.\n" -#define ACMSG9 "SWIDTH field missing at line %ld. Set automatically.\n" -#define ACMSG10 "DWIDTH field missing at line %ld. Set to glyph width.\n" -#define ACMSG11 "SIZE bits per pixel field adjusted to %hd.\n" -#define ACMSG12 "Duplicate encoding %ld (%s) changed to unencoded.\n" -#define ACMSG13 "Glyph %ld extra rows removed.\n" -#define ACMSG14 "Glyph %ld extra columns removed.\n" -#define ACMSG15 "Incorrect glyph count: %ld indicated but %ld found.\n" - - /* Error messages. */ -#define ERRMSG1 "[line %ld] Missing \"%s\" line.\n" -#define ERRMSG2 "[line %ld] Font header corrupted or missing fields.\n" -#define ERRMSG3 "[line %ld] Font glyphs corrupted or missing fields.\n" - - - static FT_Error - _bdf_add_comment( bdf_font_t* font, - char* comment, - unsigned long len ) - { - char* cp; - FT_Memory memory = font->memory; - FT_Error error = BDF_Err_Ok; - - - if ( font->comments_len == 0 ) - { - if ( FT_NEW_ARRAY( font->comments, len + 1 ) ) - goto Exit; - } - else - { - if ( FT_RENEW_ARRAY( font->comments, - font->comments_len, - font->comments_len + len + 1 ) ) - goto Exit; - } - - cp = font->comments + font->comments_len; - FT_MEM_COPY( cp, comment, len ); - cp += len; - *cp++ = '\n'; - font->comments_len += len + 1; - - Exit: - return error; - } - - - /* Set the spacing from the font name if it exists, or set it to the */ - /* default specified in the options. */ - static FT_Error - _bdf_set_default_spacing( bdf_font_t* font, - bdf_options_t* opts ) - { - unsigned long len; - char name[128]; - _bdf_list_t list; - FT_Memory memory; - FT_Error error = BDF_Err_Ok; - - - if ( font == 0 || font->name == 0 || font->name[0] == 0 ) - { - error = BDF_Err_Invalid_Argument; - goto Exit; - } - - memory = font->memory; - - font->spacing = opts->font_spacing; - - len = (unsigned long)( ft_strlen( font->name ) + 1 ); - FT_MEM_COPY( name, font->name, len ); - - list.size = list.used = 0; - - error = _bdf_split( (char *)"-", name, len, &list, memory ); - if ( error ) - goto Exit; - - if ( list.used == 15 ) - { - switch ( list.field[11][0] ) - { - case 'C': - case 'c': - font->spacing = BDF_CHARCELL; - break; - case 'M': - case 'm': - font->spacing = BDF_MONOWIDTH; - break; - case 'P': - case 'p': - font->spacing = BDF_PROPORTIONAL; - break; - } - } - - FT_FREE( list.field ); - - Exit: - return error; - } - - - /* Determine whether the property is an atom or not. If it is, then */ - /* clean it up so the double quotes are removed if they exist. */ - static int - _bdf_is_atom( char* line, - unsigned long linelen, - char** name, - char** value, - bdf_font_t* font ) - { - int hold; - char *sp, *ep; - bdf_property_t* p; - - - *name = sp = ep = line; - - while ( *ep && *ep != ' ' && *ep != '\t' ) - ep++; - - hold = -1; - if ( *ep ) - { - hold = *ep; - *ep = 0; - } - - p = bdf_get_property( sp, font ); - - /* Restore the character that was saved before any return can happen. */ - if ( hold != -1 ) - *ep = (char)hold; - - /* If the property exists and is not an atom, just return here. */ - if ( p && p->format != BDF_ATOM ) - return 0; - - /* The property is an atom. Trim all leading and trailing whitespace */ - /* and double quotes for the atom value. */ - sp = ep; - ep = line + linelen; - - /* Trim the leading whitespace if it exists. */ - *sp++ = 0; - while ( *sp && - ( *sp == ' ' || *sp == '\t' ) ) - sp++; - - /* Trim the leading double quote if it exists. */ - if ( *sp == '"' ) - sp++; - *value = sp; - - /* Trim the trailing whitespace if it exists. */ - while ( ep > sp && - ( *( ep - 1 ) == ' ' || *( ep - 1 ) == '\t' ) ) - *--ep = 0; - - /* Trim the trailing double quote if it exists. */ - if ( ep > sp && *( ep - 1 ) == '"' ) - *--ep = 0; - - return 1; - } - - - static FT_Error - _bdf_add_property( bdf_font_t* font, - char* name, - char* value ) - { - unsigned long propid; - hashnode hn; - int len; - bdf_property_t *prop, *fp; - FT_Memory memory = font->memory; - FT_Error error = BDF_Err_Ok; - - - /* First, check to see if the property already exists in the font. */ - if ( ( hn = hash_lookup( name, (hashtable *)font->internal ) ) != 0 ) - { - /* The property already exists in the font, so simply replace */ - /* the value of the property with the current value. */ - fp = font->props + (unsigned long)hn->data; - - switch ( fp->format ) - { - case BDF_ATOM: - /* Delete the current atom if it exists. */ - FT_FREE( fp->value.atom ); - - if ( value == 0 ) - len = 1; - else - len = ft_strlen( value ) + 1; - - if ( len > 1 ) - { - if ( FT_NEW_ARRAY( fp->value.atom, len ) ) - goto Exit; - FT_MEM_COPY( fp->value.atom, value, len ); - } - else - fp->value.atom = 0; - break; - - case BDF_INTEGER: - fp->value.int32 = _bdf_atol( value, 0, 10 ); - break; - - case BDF_CARDINAL: - fp->value.card32 = _bdf_atoul( value, 0, 10 ); - break; - - default: - ; - } - - goto Exit; - } - - /* See whether this property type exists yet or not. */ - /* If not, create it. */ - hn = hash_lookup( name, &(font->proptbl) ); - if ( hn == 0 ) - { - error = bdf_create_property( name, BDF_ATOM, font ); - if ( error ) - goto Exit; - hn = hash_lookup( name, &(font->proptbl) ); - } - - /* Allocate another property if this is overflow. */ - if ( font->props_used == font->props_size ) - { - if ( font->props_size == 0 ) - { - if ( FT_NEW_ARRAY( font->props, 1 ) ) - goto Exit; - } - else - { - if ( FT_RENEW_ARRAY( font->props, - font->props_size, - font->props_size + 1 ) ) - goto Exit; - } - - fp = font->props + font->props_size; - FT_MEM_ZERO( fp, sizeof ( bdf_property_t ) ); - font->props_size++; - } - - propid = (unsigned long)hn->data; - if ( propid >= _num_bdf_properties ) - prop = font->user_props + ( propid - _num_bdf_properties ); - else - prop = (bdf_property_t*)_bdf_properties + propid; - - fp = font->props + font->props_used; - - fp->name = prop->name; - fp->format = prop->format; - fp->builtin = prop->builtin; - - switch ( prop->format ) - { - case BDF_ATOM: - if ( value == 0 ) - len = 1; - else - len = ft_strlen( value ) + 1; - - if ( len > 1 ) - { - if ( FT_NEW_ARRAY( fp->value.atom, len ) ) - goto Exit; - FT_MEM_COPY( fp->value.atom, value, len ); - } - else - fp->value.atom = 0; - break; - - case BDF_INTEGER: - fp->value.int32 = _bdf_atol( value, 0, 10 ); - break; - - case BDF_CARDINAL: - fp->value.card32 = _bdf_atoul( value, 0, 10 ); - break; - } - - /* If the property happens to be a comment, then it doesn't need */ - /* to be added to the internal hash table. */ - if ( ft_memcmp( name, "COMMENT", 7 ) != 0 ) { - /* Add the property to the font property table. */ - error = hash_insert( fp->name, - (void *)font->props_used, - (hashtable *)font->internal, - memory ); - if ( error ) - goto Exit; - } - - font->props_used++; - - /* Some special cases need to be handled here. The DEFAULT_CHAR */ - /* property needs to be located if it exists in the property list, the */ - /* FONT_ASCENT and FONT_DESCENT need to be assigned if they are */ - /* present, and the SPACING property should override the default */ - /* spacing. */ - if ( ft_memcmp( name, "DEFAULT_CHAR", 12 ) == 0 ) - font->default_char = fp->value.int32; - else if ( ft_memcmp( name, "FONT_ASCENT", 11 ) == 0 ) - font->font_ascent = fp->value.int32; - else if ( ft_memcmp( name, "FONT_DESCENT", 12 ) == 0 ) - font->font_descent = fp->value.int32; - else if ( ft_memcmp( name, "SPACING", 7 ) == 0 ) - { - if ( fp->value.atom[0] == 'p' || fp->value.atom[0] == 'P' ) - font->spacing = BDF_PROPORTIONAL; - else if ( fp->value.atom[0] == 'm' || fp->value.atom[0] == 'M' ) - font->spacing = BDF_MONOWIDTH; - else if ( fp->value.atom[0] == 'c' || fp->value.atom[0] == 'C' ) - font->spacing = BDF_CHARCELL; - } - - Exit: - return error; - } - - - static const unsigned char nibble_mask[8] = - { - 0xFF, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE - }; - - - /* Actually parse the glyph info and bitmaps. */ - static FT_Error - _bdf_parse_glyphs( char* line, - unsigned long linelen, - unsigned long lineno, - void* call_data, - void* client_data ) - { - int c, mask_index; - char* s; - unsigned char* bp; - unsigned long i, slen, nibbles; - - _bdf_parse_t* p; - bdf_glyph_t* glyph; - bdf_font_t* font; - - FT_Memory memory; - FT_Error error = BDF_Err_Ok; - - FT_UNUSED( call_data ); - FT_UNUSED( lineno ); /* only used in debug mode */ - - - p = (_bdf_parse_t *)client_data; - - font = p->font; - memory = font->memory; - - /* Check for a comment. */ - if ( ft_memcmp( line, "COMMENT", 7 ) == 0 ) - { - linelen -= 7; - - s = line + 7; - if ( *s != 0 ) - { - s++; - linelen--; - } - error = _bdf_add_comment( p->font, s, linelen ); - goto Exit; - } - - /* The very first thing expected is the number of glyphs. */ - if ( !( p->flags & _BDF_GLYPHS ) ) - { - if ( ft_memcmp( line, "CHARS", 5 ) != 0 ) - { - FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "CHARS" )); - error = BDF_Err_Missing_Chars_Field; - goto Exit; - } - - error = _bdf_split( (char *)" +", line, linelen, &p->list, memory ); - if ( error ) - goto Exit; - p->cnt = font->glyphs_size = _bdf_atoul( p->list.field[1], 0, 10 ); - - /* Make sure the number of glyphs is non-zero. */ - if ( p->cnt == 0 ) - font->glyphs_size = 64; - - if ( FT_NEW_ARRAY( font->glyphs, font->glyphs_size ) ) - goto Exit; - - p->flags |= _BDF_GLYPHS; - - goto Exit; - } - - /* Check for the ENDFONT field. */ - if ( ft_memcmp( line, "ENDFONT", 7 ) == 0 ) - { - /* Sort the glyphs by encoding. */ - ft_qsort( (char *)font->glyphs, - font->glyphs_used, - sizeof ( bdf_glyph_t ), - by_encoding ); - - p->flags &= ~_BDF_START; - - goto Exit; - } - - /* Check for the ENDCHAR field. */ - if ( ft_memcmp( line, "ENDCHAR", 7 ) == 0 ) - { - p->glyph_enc = 0; - p->flags &= ~_BDF_GLYPH_BITS; - - goto Exit; - } - - /* Check to see whether a glyph is being scanned but should be */ - /* ignored because it is an unencoded glyph. */ - if ( ( p->flags & _BDF_GLYPH ) && - p->glyph_enc == -1 && - p->opts->keep_unencoded == 0 ) - goto Exit; - - /* Check for the STARTCHAR field. */ - if ( ft_memcmp( line, "STARTCHAR", 9 ) == 0 ) - { - /* Set the character name in the parse info first until the */ - /* encoding can be checked for an unencoded character. */ - FT_FREE( p->glyph_name ); - - error = _bdf_split( (char *)" +", line, linelen, &p->list,memory ); - if ( error ) - goto Exit; - _bdf_shift( 1, &p->list ); - - s = _bdf_join( ' ', &slen, &p->list ); - - if ( FT_NEW_ARRAY( p->glyph_name, slen + 1 ) ) - goto Exit; - FT_MEM_COPY( p->glyph_name, s, slen + 1 ); - - p->flags |= _BDF_GLYPH; - - goto Exit; - } - - /* Check for the ENCODING field. */ - if ( ft_memcmp( line, "ENCODING", 8 ) == 0 ) - { - if ( !( p->flags & _BDF_GLYPH ) ) - { - /* Missing STARTCHAR field. */ - FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "STARTCHAR" )); - error = BDF_Err_Missing_Startchar_Field; - goto Exit; - } - - error = _bdf_split( (char *)" +", line, linelen, &p->list, memory ); - if ( error ) - goto Exit; - p->glyph_enc = _bdf_atol( p->list.field[1], 0, 10 ); - - /* Check to see whether this encoding has already been encountered. */ - /* If it has then change it to unencoded so it gets added if */ - /* indicated. */ - if ( p->glyph_enc >= 0 ) - { - if ( _bdf_glyph_modified( p->have, p->glyph_enc ) ) - { - /* Emit a message saying a glyph has been moved to the */ - /* unencoded area. */ - FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG12, - p->glyph_enc, p->glyph_name )); - p->glyph_enc = -1; - font->modified = 1; - } - else - _bdf_set_glyph_modified( p->have, p->glyph_enc ); - } - - if ( p->glyph_enc >= 0 ) - { - /* Make sure there are enough glyphs allocated in case the */ - /* number of characters happen to be wrong. */ - if ( font->glyphs_used == font->glyphs_size ) - { - if ( FT_RENEW_ARRAY( font->glyphs, - font->glyphs_size, - font->glyphs_size + 64 ) ) - goto Exit; - FT_MEM_ZERO( font->glyphs + font->glyphs_size, - sizeof ( bdf_glyph_t ) * 64 ); /* FZ inutile */ - font->glyphs_size += 64; - } - - glyph = font->glyphs + font->glyphs_used++; - glyph->name = p->glyph_name; - glyph->encoding = p->glyph_enc; - - /* Reset the initial glyph info. */ - p->glyph_name = 0; - } - else - { - /* Unencoded glyph. Check to see whether it should */ - /* be added or not. */ - if ( p->opts->keep_unencoded != 0 ) - { - /* Allocate the next unencoded glyph. */ - if ( font->unencoded_used == font->unencoded_size ) - { - if ( font->unencoded_size == 0 ) - { - if ( FT_NEW_ARRAY( font->unencoded, 4 ) ) - goto Exit; - } - else - { - if ( FT_RENEW_ARRAY( font->unencoded , - font->unencoded_size, - font->unencoded_size + 4 ) ) - goto Exit; - } - font->unencoded_size += 4; - } - - glyph = font->unencoded + font->unencoded_used; - glyph->name = p->glyph_name; - glyph->encoding = font->unencoded_used++; - } - else - /* Free up the glyph name if the unencoded shouldn't be */ - /* kept. */ - FT_FREE( p->glyph_name ); - - p->glyph_name = 0; - } - - /* Clear the flags that might be added when width and height are */ - /* checked for consistency. */ - p->flags &= ~( _BDF_GLYPH_WIDTH_CHECK | _BDF_GLYPH_HEIGHT_CHECK ); - - p->flags |= _BDF_ENCODING; - - goto Exit; - } - - /* Point at the glyph being constructed. */ - if ( p->glyph_enc == -1 ) - glyph = font->unencoded + ( font->unencoded_used - 1 ); - else - glyph = font->glyphs + ( font->glyphs_used - 1 ); - - /* Check to see whether a bitmap is being constructed. */ - if ( p->flags & _BDF_BITMAP ) - { - /* If there are more rows than are specified in the glyph metrics, */ - /* ignore the remaining lines. */ - if ( p->row >= (unsigned long)glyph->bbx.height ) - { - if ( !( p->flags & _BDF_GLYPH_HEIGHT_CHECK ) ) - { - FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG13, glyph->encoding )); - p->flags |= _BDF_GLYPH_HEIGHT_CHECK; - font->modified = 1; - } - - goto Exit; - } - - /* Only collect the number of nibbles indicated by the glyph */ - /* metrics. If there are more columns, they are simply ignored. */ - nibbles = glyph->bpr << 1; - bp = glyph->bitmap + p->row * glyph->bpr; - - for ( i = 0, *bp = 0; i < nibbles; i++ ) - { - c = line[i]; - *bp = (FT_Byte)( ( *bp << 4 ) + a2i[c] ); - if ( i + 1 < nibbles && ( i & 1 ) ) - *++bp = 0; - } - - /* Remove possible garbage at the right. */ - mask_index = ( glyph->bbx.width * p->font->bpp ) & 7; - *bp &= nibble_mask[mask_index]; - - /* If any line has extra columns, indicate they have been removed. */ - if ( ( line[nibbles] == '0' || a2i[(int)line[nibbles]] != 0 ) && - !( p->flags & _BDF_GLYPH_WIDTH_CHECK ) ) - { - FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG14, glyph->encoding )); - p->flags |= _BDF_GLYPH_WIDTH_CHECK; - font->modified = 1; - } - - p->row++; - goto Exit; - } - - /* Expect the SWIDTH (scalable width) field next. */ - if ( ft_memcmp( line, "SWIDTH", 6 ) == 0 ) - { - if ( !( p->flags & _BDF_ENCODING ) ) - { - /* Missing ENCODING field. */ - FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "ENCODING" )); - error = BDF_Err_Missing_Encoding_Field; - goto Exit; - } - - error = _bdf_split( (char *)" +", line, linelen, &p->list, memory ); - if ( error ) - goto Exit; - glyph->swidth = (unsigned short)_bdf_atoul( p->list.field[1], 0, 10 ); - p->flags |= _BDF_SWIDTH; - - goto Exit; - } - - /* Expect the DWIDTH (scalable width) field next. */ - if ( ft_memcmp( line, "DWIDTH", 6 ) == 0 ) - { - error = _bdf_split( (char *)" +", line, linelen, &p->list,memory ); - if ( error ) - goto Exit; - glyph->dwidth = (unsigned short)_bdf_atoul( p->list.field[1], 0, 10 ); - - if ( !( p->flags & _BDF_SWIDTH ) ) - { - /* Missing SWIDTH field. Emit an auto correction message and set */ - /* the scalable width from the device width. */ - FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG9, lineno )); - - glyph->swidth = (unsigned short)FT_MulDiv( - glyph->dwidth, 72000L, - (FT_Long)( font->point_size * - font->resolution_x ) ); - } - - p->flags |= _BDF_DWIDTH; - goto Exit; - } - - /* Expect the BBX field next. */ - if ( ft_memcmp( line, "BBX", 3 ) == 0 ) - { - error = _bdf_split( (char *)" +", line, linelen, &p->list, memory ); - if ( error ) - goto Exit; - - glyph->bbx.width = _bdf_atos( p->list.field[1], 0, 10 ); - glyph->bbx.height = _bdf_atos( p->list.field[2], 0, 10 ); - glyph->bbx.x_offset = _bdf_atos( p->list.field[3], 0, 10 ); - glyph->bbx.y_offset = _bdf_atos( p->list.field[4], 0, 10 ); - - /* Generate the ascent and descent of the character. */ - glyph->bbx.ascent = (short)( glyph->bbx.height + glyph->bbx.y_offset ); - glyph->bbx.descent = (short)( -glyph->bbx.y_offset ); - - /* Determine the overall font bounding box as the characters are */ - /* loaded so corrections can be done later if indicated. */ - p->maxas = (short)FT_MAX( glyph->bbx.ascent, p->maxas ); - p->maxds = (short)FT_MAX( glyph->bbx.descent, p->maxds ); - - p->rbearing = (short)( glyph->bbx.width + glyph->bbx.x_offset ); - - p->maxrb = (short)FT_MAX( p->rbearing, p->maxrb ); - p->minlb = (short)FT_MIN( glyph->bbx.x_offset, p->minlb ); - p->maxlb = (short)FT_MAX( glyph->bbx.x_offset, p->maxlb ); - - if ( !( p->flags & _BDF_DWIDTH ) ) - { - /* Missing DWIDTH field. Emit an auto correction message and set */ - /* the device width to the glyph width. */ - FT_TRACE2(( "_bdf_parse_glyphs: " ACMSG10, lineno )); - glyph->dwidth = glyph->bbx.width; - } - - /* If the BDF_CORRECT_METRICS flag is set, then adjust the SWIDTH */ - /* value if necessary. */ - if ( p->opts->correct_metrics != 0 ) - { - /* Determine the point size of the glyph. */ - unsigned short sw = (unsigned short)FT_MulDiv( - glyph->dwidth, 72000L, - (FT_Long)( font->point_size * - font->resolution_x ) ); - - - if ( sw != glyph->swidth ) - { - glyph->swidth = sw; - - if ( p->glyph_enc == -1 ) - _bdf_set_glyph_modified( font->umod, - font->unencoded_used - 1 ); - else - _bdf_set_glyph_modified( font->nmod, glyph->encoding ); - - p->flags |= _BDF_SWIDTH_ADJ; - font->modified = 1; - } - } - - p->flags |= _BDF_BBX; - goto Exit; - } - - /* And finally, gather up the bitmap. */ - if ( ft_memcmp( line, "BITMAP", 6 ) == 0 ) - { - if ( !( p->flags & _BDF_BBX ) ) - { - /* Missing BBX field. */ - FT_ERROR(( "_bdf_parse_glyphs: " ERRMSG1, lineno, "BBX" )); - error = BDF_Err_Missing_Bbx_Field; - goto Exit; - } - - /* Allocate enough space for the bitmap. */ - glyph->bpr = ( glyph->bbx.width * p->font->bpp + 7 ) >> 3; - glyph->bytes = (unsigned short)( glyph->bpr * glyph->bbx.height ); - - if ( FT_NEW_ARRAY( glyph->bitmap, glyph->bytes ) ) - goto Exit; - - p->row = 0; - p->flags |= _BDF_BITMAP; - - goto Exit; - } - - error = BDF_Err_Invalid_File_Format; - - Exit: - return error; - } - - - /* Load the font properties. */ - static FT_Error - _bdf_parse_properties( char* line, - unsigned long linelen, - unsigned long lineno, - void* call_data, - void* client_data ) - { - unsigned long vlen; - _bdf_line_func_t* next; - _bdf_parse_t* p; - char* name; - char* value; - char nbuf[128]; - FT_Memory memory; - FT_Error error = BDF_Err_Ok; - - FT_UNUSED( lineno ); - - - next = (_bdf_line_func_t *)call_data; - p = (_bdf_parse_t *) client_data; - - memory = p->font->memory; - - /* Check for the end of the properties. */ - if ( ft_memcmp( line, "ENDPROPERTIES", 13 ) == 0 ) - { - /* If the FONT_ASCENT or FONT_DESCENT properties have not been */ - /* encountered yet, then make sure they are added as properties and */ - /* make sure they are set from the font bounding box info. */ - /* */ - /* This is *always* done regardless of the options, because X11 */ - /* requires these two fields to compile fonts. */ - if ( bdf_get_font_property( p->font, "FONT_ASCENT" ) == 0 ) - { - p->font->font_ascent = p->font->bbx.ascent; - ft_sprintf( nbuf, "%hd", p->font->bbx.ascent ); - error = _bdf_add_property( p->font, (char *)"FONT_ASCENT", nbuf ); - if ( error ) - goto Exit; - - FT_TRACE2(( "_bdf_parse_properties: " ACMSG1, p->font->bbx.ascent )); - p->font->modified = 1; - } - - if ( bdf_get_font_property( p->font, "FONT_DESCENT" ) == 0 ) - { - p->font->font_descent = p->font->bbx.descent; - ft_sprintf( nbuf, "%hd", p->font->bbx.descent ); - error = _bdf_add_property( p->font, (char *)"FONT_DESCENT", nbuf ); - if ( error ) - goto Exit; - - FT_TRACE2(( "_bdf_parse_properties: " ACMSG2, p->font->bbx.descent )); - p->font->modified = 1; - } - - p->flags &= ~_BDF_PROPS; - *next = _bdf_parse_glyphs; - - goto Exit; - } - - /* Ignore the _XFREE86_GLYPH_RANGES properties. */ - if ( ft_memcmp( line, "_XFREE86_GLYPH_RANGES", 21 ) == 0 ) - goto Exit; - - /* Handle COMMENT fields and properties in a special way to preserve */ - /* the spacing. */ - if ( ft_memcmp( line, "COMMENT", 7 ) == 0 ) - { - name = value = line; - value += 7; - if ( *value ) - *value++ = 0; - error = _bdf_add_property( p->font, name, value ); - if ( error ) - goto Exit; - } - else if ( _bdf_is_atom( line, linelen, &name, &value, p->font ) ) - { - error = _bdf_add_property( p->font, name, value ); - if ( error ) - goto Exit; - } - else - { - error = _bdf_split( (char *)" +", line, linelen, &p->list, memory ); - if ( error ) - goto Exit; - name = p->list.field[0]; - - _bdf_shift( 1, &p->list ); - value = _bdf_join( ' ', &vlen, &p->list ); - - error = _bdf_add_property( p->font, name, value ); - if ( error ) - goto Exit; - } - - Exit: - return error; - } - - - /* Load the font header. */ - static FT_Error - _bdf_parse_start( char* line, - unsigned long linelen, - unsigned long lineno, - void* call_data, - void* client_data ) - { - unsigned long slen; - _bdf_line_func_t* next; - _bdf_parse_t* p; - bdf_font_t* font; - char *s; - - FT_Memory memory = NULL; - FT_Error error = BDF_Err_Ok; - - FT_UNUSED( lineno ); /* only used in debug mode */ - - - next = (_bdf_line_func_t *)call_data; - p = (_bdf_parse_t *) client_data; - - if ( p->font ) - memory = p->font->memory; - - /* Check for a comment. This is done to handle those fonts that have */ - /* comments before the STARTFONT line for some reason. */ - if ( ft_memcmp( line, "COMMENT", 7 ) == 0 ) - { - if ( p->opts->keep_comments != 0 && p->font != 0 ) - { - linelen -= 7; - - s = line + 7; - if ( *s != 0 ) - { - s++; - linelen--; - } - - error = _bdf_add_comment( p->font, s, linelen ); - if ( error ) - goto Exit; - /* here font is not defined! */ - } - - goto Exit; - } - - if ( !( p->flags & _BDF_START ) ) - { - memory = p->memory; - - if ( ft_memcmp( line, "STARTFONT", 9 ) != 0 ) - { - /* No STARTFONT field is a good indication of a problem. */ - error = BDF_Err_Missing_Startfont_Field; - goto Exit; - } - - p->flags = _BDF_START; - font = p->font = 0; - - if ( FT_NEW( font ) ) - goto Exit; - p->font = font; - - font->memory = p->memory; - p->memory = 0; - - { /* setup */ - unsigned long i; - bdf_property_t* prop; - - - error = hash_init( &(font->proptbl), memory ); - if ( error ) - goto Exit; - for ( i = 0, prop = (bdf_property_t*)_bdf_properties; - i < _num_bdf_properties; i++, prop++ ) - { - error = hash_insert( prop->name, (void *)i, - &(font->proptbl), memory ); - if ( error ) - goto Exit; - } - } - - if ( FT_ALLOC( p->font->internal, sizeof ( hashtable ) ) ) - goto Exit; - error = hash_init( (hashtable *)p->font->internal,memory ); - if ( error ) - goto Exit; - p->font->spacing = p->opts->font_spacing; - p->font->default_char = -1; - - goto Exit; - } - - /* Check for the start of the properties. */ - if ( ft_memcmp( line, "STARTPROPERTIES", 15 ) == 0 ) - { - error = _bdf_split( (char *)" +", line, linelen, &p->list, memory ); - if ( error ) - goto Exit; - p->cnt = p->font->props_size = _bdf_atoul( p->list.field[1], 0, 10 ); - - if ( FT_NEW_ARRAY( p->font->props, p->cnt ) ) - goto Exit; - - p->flags |= _BDF_PROPS; - *next = _bdf_parse_properties; - - goto Exit; - } - - /* Check for the FONTBOUNDINGBOX field. */ - if ( ft_memcmp( line, "FONTBOUNDINGBOX", 15 ) == 0 ) - { - if ( !(p->flags & _BDF_SIZE ) ) - { - /* Missing the SIZE field. */ - FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "SIZE" )); - error = BDF_Err_Missing_Size_Field; - goto Exit; - } - - error = _bdf_split( (char *)" +", line, linelen, &p->list , memory ); - if ( error ) - goto Exit; - - p->font->bbx.width = _bdf_atos( p->list.field[1], 0, 10 ); - p->font->bbx.height = _bdf_atos( p->list.field[2], 0, 10 ); - - p->font->bbx.x_offset = _bdf_atos( p->list.field[3], 0, 10 ); - p->font->bbx.y_offset = _bdf_atos( p->list.field[4], 0, 10 ); - - p->font->bbx.ascent = (short)( p->font->bbx.height + - p->font->bbx.y_offset ); - - p->font->bbx.descent = (short)( -p->font->bbx.y_offset ); - - p->flags |= _BDF_FONT_BBX; - - goto Exit; - } - - /* The next thing to check for is the FONT field. */ - if ( ft_memcmp( line, "FONT", 4 ) == 0 ) - { - error = _bdf_split( (char *)" +", line, linelen, &p->list , memory ); - if ( error ) - goto Exit; - _bdf_shift( 1, &p->list ); - - s = _bdf_join( ' ', &slen, &p->list ); - if ( FT_NEW_ARRAY( p->font->name, slen + 1 ) ) - goto Exit; - FT_MEM_COPY( p->font->name, s, slen + 1 ); - - /* If the font name is an XLFD name, set the spacing to the one in */ - /* the font name. If there is no spacing fall back on the default. */ - error = _bdf_set_default_spacing( p->font, p->opts ); - if ( error ) - goto Exit; - - p->flags |= _BDF_FONT_NAME; - - goto Exit; - } - - /* Check for the SIZE field. */ - if ( ft_memcmp( line, "SIZE", 4 ) == 0 ) - { - if ( !( p->flags & _BDF_FONT_NAME ) ) - { - /* Missing the FONT field. */ - FT_ERROR(( "_bdf_parse_start: " ERRMSG1, lineno, "FONT" )); - error = BDF_Err_Missing_Font_Field; - goto Exit; - } - - error = _bdf_split( (char *)" +", line, linelen, &p->list, memory ); - if ( error ) - goto Exit; - - p->font->point_size = _bdf_atoul( p->list.field[1], 0, 10 ); - p->font->resolution_x = _bdf_atoul( p->list.field[2], 0, 10 ); - p->font->resolution_y = _bdf_atoul( p->list.field[3], 0, 10 ); - - /* Check for the bits per pixel field. */ - if ( p->list.used == 5 ) - { - unsigned short bitcount, i, shift; - - - p->font->bpp = (unsigned short)_bdf_atos( p->list.field[4], 0, 10 ); - - /* Only values 1, 2, 4, 8 are allowed. */ - shift = p->font->bpp; - bitcount = 0; - for ( i = 0; shift > 0; i++ ) - { - if ( shift & 1 ) - bitcount = i; - shift >>= 1; - } - - shift = (short)( ( bitcount > 3 ) ? 8 : ( 1 << bitcount ) ); - - if ( p->font->bpp > shift || p->font->bpp != shift ) - { - /* select next higher value */ - p->font->bpp = (unsigned short)( shift << 1 ); - FT_TRACE2(( "_bdf_parse_start: " ACMSG11, p->font->bpp )); - } - } - else - p->font->bpp = 1; - - p->flags |= _BDF_SIZE; - - goto Exit; - } - - error = BDF_Err_Invalid_File_Format; - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* API. */ - /* */ - /*************************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - bdf_load_font( FT_Stream stream, - FT_Memory extmemory, - bdf_options_t* opts, - bdf_font_t* *font ) - { - unsigned long lineno; - _bdf_parse_t *p; - - FT_Memory memory = extmemory; - FT_Error error = BDF_Err_Ok; - - - if ( FT_ALLOC( p, sizeof ( _bdf_parse_t ) ) ) - goto Exit; - - memory = NULL; - p->opts = (bdf_options_t*)( ( opts != 0 ) ? opts : &_bdf_opts ); - p->minlb = 32767; - p->memory = extmemory; /* only during font creation */ - - error = _bdf_readstream( stream, _bdf_parse_start, - (void *)p, &lineno ); - if ( error ) - goto Exit; - - if ( p->font != 0 ) - { - /* If the font is not proportional, set the font's monowidth */ - /* field to the width of the font bounding box. */ - memory = p->font->memory; - - if ( p->font->spacing != BDF_PROPORTIONAL ) - p->font->monowidth = p->font->bbx.width; - - /* If the number of glyphs loaded is not that of the original count, */ - /* indicate the difference. */ - if ( p->cnt != p->font->glyphs_used + p->font->unencoded_used ) - { - FT_TRACE2(( "bdf_load_font: " ACMSG15, p->cnt, - p->font->glyphs_used + p->font->unencoded_used )); - p->font->modified = 1; - } - - /* Once the font has been loaded, adjust the overall font metrics if */ - /* necessary. */ - if ( p->opts->correct_metrics != 0 && - ( p->font->glyphs_used > 0 || p->font->unencoded_used > 0 ) ) - { - if ( p->maxrb - p->minlb != p->font->bbx.width ) - { - FT_TRACE2(( "bdf_load_font: " ACMSG3, - p->font->bbx.width, p->maxrb - p->minlb )); - p->font->bbx.width = (unsigned short)( p->maxrb - p->minlb ); - p->font->modified = 1; - } - - if ( p->font->bbx.x_offset != p->minlb ) - { - FT_TRACE2(( "bdf_load_font: " ACMSG4, - p->font->bbx.x_offset, p->minlb )); - p->font->bbx.x_offset = p->minlb; - p->font->modified = 1; - } - - if ( p->font->bbx.ascent != p->maxas ) - { - FT_TRACE2(( "bdf_load_font: " ACMSG5, - p->font->bbx.ascent, p->maxas )); - p->font->bbx.ascent = p->maxas; - p->font->modified = 1; - } - - if ( p->font->bbx.descent != p->maxds ) - { - FT_TRACE2(( "bdf_load_font: " ACMSG6, - p->font->bbx.descent, p->maxds )); - p->font->bbx.descent = p->maxds; - p->font->bbx.y_offset = (short)( -p->maxds ); - p->font->modified = 1; - } - - if ( p->maxas + p->maxds != p->font->bbx.height ) - { - FT_TRACE2(( "bdf_load_font: " ACMSG7, - p->font->bbx.height, p->maxas + p->maxds )); - p->font->bbx.height = (unsigned short)( p->maxas + p->maxds ); - } - - if ( p->flags & _BDF_SWIDTH_ADJ ) - FT_TRACE2(( "bdf_load_font: " ACMSG8 )); - } - } - - if ( p->flags & _BDF_START ) - { - { - /* The ENDFONT field was never reached or did not exist. */ - if ( !( p->flags & _BDF_GLYPHS ) ) - /* Error happened while parsing header. */ - FT_ERROR(( "bdf_load_font: " ERRMSG2, lineno )); - else - /* Error happened when parsing glyphs. */ - FT_ERROR(( "bdf_load_font: " ERRMSG3, lineno )); - } - } - - /* Free up the list used during the parsing. */ - if ( memory != NULL ) - FT_FREE( p->list.field ); - - if ( p->font != 0 ) - { - /* Make sure the comments are NULL terminated if they exist. */ - memory = p->font->memory; - - if ( p->font->comments_len > 0 ) { - if ( FT_RENEW_ARRAY( p->font->comments, - p->font->comments_len, - p->font->comments_len + 1 ) ) - goto Exit; - - p->font->comments[p->font->comments_len] = 0; - } - } - else if ( error == BDF_Err_Ok ) - error = BDF_Err_Invalid_File_Format; - - *font = p->font; - - Exit: - if ( p ) - { - memory = extmemory; - FT_FREE( p ); - } - - return error; - } - - - FT_LOCAL_DEF( void ) - bdf_free_font( bdf_font_t* font ) - { - bdf_property_t* prop; - unsigned long i; - bdf_glyph_t* glyphs; - FT_Memory memory; - - - if ( font == 0 ) - return; - - memory = font->memory; - - FT_FREE( font->name ); - - /* Free up the internal hash table of property names. */ - if ( font->internal ) - { - hash_free( (hashtable *)font->internal, memory ); - FT_FREE( font->internal ); - } - - /* Free up the comment info. */ - FT_FREE( font->comments ); - - /* Free up the properties. */ - for ( i = 0; i < font->props_size; i++ ) - { - if ( font->props[i].format == BDF_ATOM ) - FT_FREE( font->props[i].value.atom ); - } - - FT_FREE( font->props ); - - /* Free up the character info. */ - for ( i = 0, glyphs = font->glyphs; - i < font->glyphs_used; i++, glyphs++ ) - { - FT_FREE( glyphs->name ); - FT_FREE( glyphs->bitmap ); - } - - for ( i = 0, glyphs = font->unencoded; i < font->unencoded_used; - i++, glyphs++ ) - { - FT_FREE( glyphs->name ); - FT_FREE( glyphs->bitmap ); - } - - FT_FREE( font->glyphs ); - FT_FREE( font->unencoded ); - - /* Free up the overflow storage if it was used. */ - for ( i = 0, glyphs = font->overflow.glyphs; - i < font->overflow.glyphs_used; i++, glyphs++ ) - { - FT_FREE( glyphs->name ); - FT_FREE( glyphs->bitmap ); - } - - FT_FREE( font->overflow.glyphs ); - - /* bdf_cleanup */ - hash_free( &(font->proptbl), memory ); - - /* Free up the user defined properties. */ - for (prop = font->user_props, i = 0; - i < font->nuser_props; i++, prop++ ) - { - FT_FREE( prop->name ); - if ( prop->format == BDF_ATOM ) - FT_FREE( prop->value.atom ); - } - - FT_FREE( font->user_props ); - - /* FREE( font ); */ /* XXX Fixme */ - } - - - FT_LOCAL_DEF( bdf_property_t * ) - bdf_get_font_property( bdf_font_t* font, - const char* name ) - { - hashnode hn; - - - if ( font == 0 || font->props_size == 0 || name == 0 || *name == 0 ) - return 0; - - hn = hash_lookup( name, (hashtable *)font->internal ); - - return hn ? ( font->props + (unsigned long)hn->data ) : 0; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/bdf/descrip.mms b/nx-X11/extras/freetype2/src/bdf/descrip.mms deleted file mode 100644 index 4c32dc449..000000000 --- a/nx-X11/extras/freetype2/src/bdf/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 BDF driver compilation rules for VMS -# - - -# Copyright 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.bdf]) - -OBJS=bdf.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/bdf/module.mk b/nx-X11/extras/freetype2/src/bdf/module.mk deleted file mode 100644 index 24115e75d..000000000 --- a/nx-X11/extras/freetype2/src/bdf/module.mk +++ /dev/null @@ -1,31 +0,0 @@ -# -# FreeType 2 BDF module definition -# - -# Copyright 2001, 2002 by -# Francesco Zappa Nardelli -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -make_module_list: add_bdf_driver - -add_bdf_driver: - $(OPEN_DRIVER)bdf_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)bdf $(ECHO_DRIVER_DESC)bdf bitmap fonts$(ECHO_DRIVER_DONE) - diff --git a/nx-X11/extras/freetype2/src/bdf/rules.mk b/nx-X11/extras/freetype2/src/bdf/rules.mk deleted file mode 100644 index 25d98e55b..000000000 --- a/nx-X11/extras/freetype2/src/bdf/rules.mk +++ /dev/null @@ -1,80 +0,0 @@ -# -# FreeType 2 bdf driver configuration rules -# - - -# Copyright (C) 2001, 2002, 2003 by -# Francesco Zappa Nardelli -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - - - - -# bdf driver directory -# -BDF_DIR := $(SRC_DIR)/bdf - - -BDF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(BDF_DIR)) - - -# bdf driver sources (i.e., C files) -# -BDF_DRV_SRC := $(BDF_DIR)/bdflib.c \ - $(BDF_DIR)/bdfdrivr.c - - -# bdf driver headers -# -BDF_DRV_H := $(BDF_DIR)/bdf.h \ - $(BDF_DIR)/bdfdrivr.h - -# bdf driver object(s) -# -# BDF_DRV_OBJ_M is used during `multi' builds -# BDF_DRV_OBJ_S is used during `single' builds -# -BDF_DRV_OBJ_M := $(BDF_DRV_SRC:$(BDF_DIR)/%.c=$(OBJ_DIR)/%.$O) -BDF_DRV_OBJ_S := $(OBJ_DIR)/bdf.$O - -# bdf driver source file for single build -# -BDF_DRV_SRC_S := $(BDF_DIR)/bdf.c - - -# bdf driver - single object -# -$(BDF_DRV_OBJ_S): $(BDF_DRV_SRC_S) $(BDF_DRV_SRC) $(FREETYPE_H) $(BDF_DRV_H) - $(BDF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(BDF_DRV_SRC_S)) - - -# bdf driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(BDF_DIR)/%.c $(FREETYPE_H) $(BDF_DRV_H) - $(BDF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(BDF_DRV_OBJ_S) -DRV_OBJS_M += $(BDF_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/cache/Jamfile b/nx-X11/extras/freetype2/src/cache/Jamfile deleted file mode 100644 index b269c9557..000000000 --- a/nx-X11/extras/freetype2/src/cache/Jamfile +++ /dev/null @@ -1,35 +0,0 @@ -# FreeType 2 src/cache Jamfile (c) 2001, 2003, 2004 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) cache ; - -# The file <freetype/ftcache.h> contains some macro definitions that are -# later used in #include statements related to the cache sub-system. It -# needs to be parsed through a HDRMACRO rule for macro definitions. -# -HDRMACRO [ FT2_SubDir include ftcache.h ] ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ftcmru - ftcmanag - ftccache - ftcglyph - ftcsbits - ftcimage - ftcbasic - ftccmap - ; - } - else - { - _sources = ftcache ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/cache Jamfile diff --git a/nx-X11/extras/freetype2/src/cache/descrip.mms b/nx-X11/extras/freetype2/src/cache/descrip.mms deleted file mode 100644 index 4d967dc18..000000000 --- a/nx-X11/extras/freetype2/src/cache/descrip.mms +++ /dev/null @@ -1,25 +0,0 @@ -# -# FreeType 2 Cache compilation rules for VMS -# - - -# Copyright 2001, 2002, 2003, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.cache]) - -OBJS=ftcache.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -ftcache.obj : ftcache.c - -# EOF diff --git a/nx-X11/extras/freetype2/src/cache/ftcache.c b/nx-X11/extras/freetype2/src/cache/ftcache.c deleted file mode 100644 index d41e91e5e..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftcache.c +++ /dev/null @@ -1,31 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcache.c */ -/* */ -/* The FreeType Caching sub-system (body only). */ -/* */ -/* Copyright 2000-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "ftcmru.c" -#include "ftcmanag.c" -#include "ftccache.c" -#include "ftccmap.c" -#include "ftcglyph.c" -#include "ftcimage.c" -#include "ftcsbits.c" -#include "ftcbasic.c" - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftcbasic.c b/nx-X11/extras/freetype2/src/cache/ftcbasic.c deleted file mode 100644 index 9a91f357b..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftcbasic.c +++ /dev/null @@ -1,445 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcbasic.c */ -/* */ -/* The FreeType basic cache interface (body). */ -/* */ -/* Copyright 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_GLYPH_H -#include FT_CACHE_INTERNAL_IMAGE_H -#include FT_CACHE_INTERNAL_SBITS_H -#include FT_INTERNAL_MEMORY_H - -#include "ftccback.h" -#include "ftcerror.h" - - - /* - * Basic Families - * - */ - typedef struct FTC_BasicAttrRec_ - { - FTC_ScalerRec scaler; - FT_UInt load_flags; - - } FTC_BasicAttrRec, *FTC_BasicAttrs; - -#define FTC_BASIC_ATTR_COMPARE( a, b ) \ - ( FTC_SCALER_COMPARE( &(a)->scaler, &(b)->scaler ) && \ - (a)->load_flags == (b)->load_flags ) - -#define FTC_BASIC_ATTR_HASH( a ) \ - ( FTC_SCALER_HASH( &(a)->scaler ) + 31*(a)->load_flags ) - - - typedef struct FTC_BasicQueryRec_ - { - FTC_GQueryRec gquery; - FTC_BasicAttrRec attrs; - - } FTC_BasicQueryRec, *FTC_BasicQuery; - - - typedef struct FTC_BasicFamilyRec_ - { - FTC_FamilyRec family; - FTC_BasicAttrRec attrs; - - } FTC_BasicFamilyRec, *FTC_BasicFamily; - - - FT_CALLBACK_DEF( FT_Bool ) - ftc_basic_family_compare( FTC_MruNode ftcfamily, - FT_Pointer ftcquery ) - { - FTC_BasicFamily family = (FTC_BasicFamily)ftcfamily; - FTC_BasicQuery query = (FTC_BasicQuery)ftcquery; - - - return FTC_BASIC_ATTR_COMPARE( &family->attrs, &query->attrs ); - } - - - FT_CALLBACK_DEF( FT_Error ) - ftc_basic_family_init( FTC_MruNode ftcfamily, - FT_Pointer ftcquery, - FT_Pointer ftccache ) - { - FTC_BasicFamily family = (FTC_BasicFamily)ftcfamily; - FTC_BasicQuery query = (FTC_BasicQuery)ftcquery; - FTC_Cache cache = (FTC_Cache)ftccache; - - - FTC_Family_Init( FTC_FAMILY( family ), cache ); - family->attrs = query->attrs; - return 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - ftc_basic_family_get_count( FTC_Family ftcfamily, - FTC_Manager manager ) - { - FTC_BasicFamily family = (FTC_BasicFamily)ftcfamily; - FT_Error error; - FT_Face face; - FT_UInt result = 0; - - - error = FTC_Manager_LookupFace( manager, family->attrs.scaler.face_id, - &face ); - if ( !error ) - result = face->num_glyphs; - - return result; - } - - - FT_CALLBACK_DEF( FT_Error ) - ftc_basic_family_load_bitmap( FTC_Family ftcfamily, - FT_UInt gindex, - FTC_Manager manager, - FT_Face *aface ) - { - FTC_BasicFamily family = (FTC_BasicFamily)ftcfamily; - FT_Error error; - FT_Size size; - - - error = FTC_Manager_LookupSize( manager, &family->attrs.scaler, &size ); - if ( !error ) - { - FT_Face face = size->face; - - - error = FT_Load_Glyph( face, gindex, - family->attrs.load_flags | FT_LOAD_RENDER ); - if ( !error ) - *aface = face; - } - - return error; - } - - - FT_CALLBACK_DEF( FT_Error ) - ftc_basic_family_load_glyph( FTC_Family ftcfamily, - FT_UInt gindex, - FTC_Cache cache, - FT_Glyph *aglyph ) - { - FTC_BasicFamily family = (FTC_BasicFamily)ftcfamily; - FT_Error error; - FTC_Scaler scaler = &family->attrs.scaler; - FT_Face face; - FT_Size size; - - - /* we will now load the glyph image */ - error = FTC_Manager_LookupSize( cache->manager, - scaler, - &size ); - if ( !error ) - { - face = size->face; - - error = FT_Load_Glyph( face, gindex, family->attrs.load_flags ); - if ( !error ) - { - if ( face->glyph->format == FT_GLYPH_FORMAT_BITMAP || - face->glyph->format == FT_GLYPH_FORMAT_OUTLINE ) - { - /* ok, copy it */ - FT_Glyph glyph; - - - error = FT_Get_Glyph( face->glyph, &glyph ); - if ( !error ) - { - *aglyph = glyph; - goto Exit; - } - } - else - error = FTC_Err_Invalid_Argument; - } - } - - Exit: - return error; - } - - - FT_CALLBACK_DEF( FT_Bool ) - ftc_basic_gnode_compare_faceid( FTC_Node ftcgnode, - FT_Pointer ftcface_id, - FTC_Cache cache ) - { - FTC_GNode gnode = (FTC_GNode)ftcgnode; - FTC_FaceID face_id = (FTC_FaceID)ftcface_id; - FTC_BasicFamily family = (FTC_BasicFamily)gnode->family; - FT_Bool result; - - - result = FT_BOOL( family->attrs.scaler.face_id == face_id ); - if ( result ) - { - /* we must call this function to avoid this node from appearing - * in later lookups with the same face_id! - */ - FTC_GNode_UnselectFamily( gnode, cache ); - } - return result; - } - - - /* - * - * basic image cache - * - */ - - FT_CALLBACK_TABLE_DEF - const FTC_IFamilyClassRec ftc_basic_image_family_class = - { - { - sizeof ( FTC_BasicFamilyRec ), - ftc_basic_family_compare, - ftc_basic_family_init, - 0, /* FTC_MruNode_ResetFunc */ - 0 /* FTC_MruNode_DoneFunc */ - }, - ftc_basic_family_load_glyph - }; - - - FT_CALLBACK_TABLE_DEF - const FTC_GCacheClassRec ftc_basic_image_cache_class = - { - { - ftc_inode_new, - ftc_inode_weight, - ftc_gnode_compare, - ftc_basic_gnode_compare_faceid, - ftc_inode_free, - - sizeof ( FTC_GCacheRec ), - ftc_gcache_init, - ftc_gcache_done - }, - (FTC_MruListClass)&ftc_basic_image_family_class - }; - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_ImageCache_New( FTC_Manager manager, - FTC_ImageCache *acache ) - { - return FTC_GCache_New( manager, &ftc_basic_image_cache_class, - (FTC_GCache*)acache ); - } - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_ImageCache_Lookup( FTC_ImageCache cache, - FTC_ImageType type, - FT_UInt gindex, - FT_Glyph *aglyph, - FTC_Node *anode ) - { - FTC_BasicQueryRec query; - FTC_INode node; - FT_Error error; - FT_UInt32 hash; - - - /* some argument checks are delayed to FTC_Cache_Lookup */ - if ( !aglyph ) - { - error = FTC_Err_Invalid_Argument; - goto Exit; - } - - *aglyph = NULL; - if ( anode ) - *anode = NULL; - - query.attrs.scaler.face_id = type->face_id; - query.attrs.scaler.width = type->width; - query.attrs.scaler.height = type->height; - query.attrs.scaler.pixel = 1; - query.attrs.load_flags = type->flags; - - query.attrs.scaler.x_res = 0; /* make compilers happy */ - query.attrs.scaler.y_res = 0; - - hash = FTC_BASIC_ATTR_HASH( &query.attrs ) + gindex; - -#if 1 /* inlining is about 50% faster! */ - FTC_GCACHE_LOOKUP_CMP( cache, - ftc_basic_family_compare, - FTC_GNode_Compare, - hash, gindex, - &query, - node, - error ); -#else - error = FTC_GCache_Lookup( FTC_GCACHE( cache ), - hash, gindex, - FTC_GQUERY( &query ), - (FTC_Node*) &node ); -#endif - if ( !error ) - { - *aglyph = FTC_INODE( node )->glyph; - - if ( anode ) - { - *anode = FTC_NODE( node ); - FTC_NODE( node )->ref_count++; - } - } - - Exit: - return error; - } - - - /* - * - * basic small bitmap cache - * - */ - - - FT_CALLBACK_TABLE_DEF - const FTC_SFamilyClassRec ftc_basic_sbit_family_class = - { - { - sizeof( FTC_BasicFamilyRec ), - ftc_basic_family_compare, - ftc_basic_family_init, - 0, /* FTC_MruNode_ResetFunc */ - 0 /* FTC_MruNode_DoneFunc */ - }, - ftc_basic_family_get_count, - ftc_basic_family_load_bitmap - }; - - - FT_CALLBACK_TABLE_DEF - const FTC_GCacheClassRec ftc_basic_sbit_cache_class = - { - { - ftc_snode_new, - ftc_snode_weight, - ftc_snode_compare, - ftc_basic_gnode_compare_faceid, - ftc_snode_free, - - sizeof ( FTC_GCacheRec ), - ftc_gcache_init, - ftc_gcache_done - }, - (FTC_MruListClass)&ftc_basic_sbit_family_class - }; - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_SBitCache_New( FTC_Manager manager, - FTC_SBitCache *acache ) - { - return FTC_GCache_New( manager, &ftc_basic_sbit_cache_class, - (FTC_GCache*)acache ); - } - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_SBitCache_Lookup( FTC_SBitCache cache, - FTC_ImageType type, - FT_UInt gindex, - FTC_SBit *ansbit, - FTC_Node *anode ) - { - FT_Error error; - FTC_BasicQueryRec query; - FTC_SNode node; - FT_UInt32 hash; - - - if ( anode ) - *anode = NULL; - - /* other argument checks delayed to FTC_Cache_Lookup */ - if ( !ansbit ) - return FTC_Err_Invalid_Argument; - - *ansbit = NULL; - - query.attrs.scaler.face_id = type->face_id; - query.attrs.scaler.width = type->width; - query.attrs.scaler.height = type->height; - query.attrs.scaler.pixel = 1; - query.attrs.load_flags = type->flags; - - query.attrs.scaler.x_res = 0; /* make compilers happy */ - query.attrs.scaler.y_res = 0; - - /* beware, the hash must be the same for all glyph ranges! */ - hash = FTC_BASIC_ATTR_HASH( &query.attrs ) + - gindex / FTC_SBIT_ITEMS_PER_NODE; - -#if 1 /* inlining is about 50% faster! */ - FTC_GCACHE_LOOKUP_CMP( cache, - ftc_basic_family_compare, - FTC_SNode_Compare, - hash, gindex, - &query, - node, - error ); -#else - error = FTC_GCache_Lookup( FTC_GCACHE( cache ), - hash, - gindex, - FTC_GQUERY( &query ), - (FTC_Node*)&node ); -#endif - if ( error ) - goto Exit; - - *ansbit = node->sbits + ( gindex - FTC_GNODE( node )->gindex ); - - if ( anode ) - { - *anode = FTC_NODE( node ); - FTC_NODE( node )->ref_count++; - } - - Exit: - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftccache.c b/nx-X11/extras/freetype2/src/cache/ftccache.c deleted file mode 100644 index 3a8a40c00..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftccache.c +++ /dev/null @@ -1,604 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftccache.c */ -/* */ -/* The FreeType internal cache interface (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CACHE_INTERNAL_MANAGER_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H - -#include "ftccback.h" -#include "ftcerror.h" - - -#define FTC_HASH_MAX_LOAD 2 -#define FTC_HASH_MIN_LOAD 1 -#define FTC_HASH_SUB_LOAD ( FTC_HASH_MAX_LOAD - FTC_HASH_MIN_LOAD ) - -/* this one _must_ be a power of 2! */ -#define FTC_HASH_INITIAL_SIZE 8 - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE NODE DEFINITIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* add a new node to the head of the manager's circular MRU list */ - static void - ftc_node_mru_link( FTC_Node node, - FTC_Manager manager ) - { - FTC_MruNode_Prepend( (FTC_MruNode*)&manager->nodes_list, - (FTC_MruNode)node ); - manager->num_nodes++; - } - - - /* remove a node from the manager's MRU list */ - static void - ftc_node_mru_unlink( FTC_Node node, - FTC_Manager manager ) - { - FTC_MruNode_Remove( (FTC_MruNode*)&manager->nodes_list, - (FTC_MruNode)node ); - manager->num_nodes--; - } - - - /* move a node to the head of the manager's MRU list */ - static void - ftc_node_mru_up( FTC_Node node, - FTC_Manager manager ) - { - FTC_MruNode_Up( (FTC_MruNode*)&manager->nodes_list, - (FTC_MruNode)node ); - } - - - /* Note that this function cannot fail. If we cannot re-size the - * buckets array appropriately, we simply degrade the hash table's - * performance! - */ - static void - ftc_cache_resize( FTC_Cache cache ) - { - for (;;) - { - FTC_Node node, *pnode; - FT_UInt p = cache->p; - FT_UInt mask = cache->mask; - FT_UInt count = mask + p + 1; /* number of buckets */ - - - /* do we need to shrink the buckets array? */ - if ( cache->slack < 0 ) - { - FTC_Node new_list = NULL; - - - /* try to expand the buckets array _before_ splitting - * the bucket lists - */ - if ( p >= mask ) - { - FT_Memory memory = cache->memory; - - - /* if we can't expand the array, leave immediately */ - if ( FT_MEM_RENEW_ARRAY( cache->buckets, (mask+1)*2, (mask+1)*4 ) ) - break; - } - - /* split a single bucket */ - pnode = cache->buckets + p; - - for (;;) - { - node = *pnode; - if ( node == NULL ) - break; - - if ( node->hash & ( mask + 1 ) ) - { - *pnode = node->link; - node->link = new_list; - new_list = node; - } - else - pnode = &node->link; - } - - cache->buckets[p + mask + 1] = new_list; - - cache->slack += FTC_HASH_MAX_LOAD; - - if ( p >= mask ) - { - cache->mask = 2 * mask + 1; - cache->p = 0; - } - else - cache->p = p + 1; - } - - /* do we need to expand the buckets array? */ - else if ( cache->slack > (FT_Long)count * FTC_HASH_SUB_LOAD ) - { - FT_UInt old_index = p + mask; - FTC_Node* pold; - - - if ( old_index + 1 <= FTC_HASH_INITIAL_SIZE ) - break; - - if ( p == 0 ) - { - FT_Memory memory = cache->memory; - - - /* if we can't shrink the array, leave immediately */ - if ( FT_MEM_RENEW_ARRAY( cache->buckets, - ( mask + 1 ) * 2, mask + 1 ) ) - break; - - cache->mask >>= 1; - p = cache->mask; - } - else - p--; - - pnode = cache->buckets + p; - while ( *pnode ) - pnode = &(*pnode)->link; - - pold = cache->buckets + old_index; - *pnode = *pold; - *pold = NULL; - - cache->slack -= FTC_HASH_MAX_LOAD; - cache->p = p; - } - else /* the hash table is balanced */ - break; - } - } - - - /* remove a node from its cache's hash table */ - static void - ftc_node_hash_unlink( FTC_Node node0, - FTC_Cache cache ) - { - FTC_Node *pnode; - FT_UInt idx; - - - idx = (FT_UInt)( node0->hash & cache->mask ); - if ( idx < cache->p ) - idx = (FT_UInt)( node0->hash & ( 2 * cache->mask + 1 ) ); - - pnode = cache->buckets + idx; - - for (;;) - { - FTC_Node node = *pnode; - - - if ( node == NULL ) - { - FT_ERROR(( "ftc_node_hash_unlink: unknown node!\n" )); - return; - } - - if ( node == node0 ) - break; - - pnode = &(*pnode)->link; - } - - *pnode = node0->link; - node0->link = NULL; - - cache->slack++; - ftc_cache_resize( cache ); - } - - - /* add a node to the `top' of its cache's hash table */ - static void - ftc_node_hash_link( FTC_Node node, - FTC_Cache cache ) - { - FTC_Node *pnode; - FT_UInt idx; - - - idx = (FT_UInt)( node->hash & cache->mask ); - if ( idx < cache->p ) - idx = (FT_UInt)( node->hash & (2 * cache->mask + 1 ) ); - - pnode = cache->buckets + idx; - - node->link = *pnode; - *pnode = node; - - cache->slack--; - ftc_cache_resize( cache ); - } - - - /* remove a node from the cache manager */ - FT_EXPORT_DEF( void ) - ftc_node_destroy( FTC_Node node, - FTC_Manager manager ) - { - FTC_Cache cache; - - -#ifdef FT_DEBUG_ERROR - /* find node's cache */ - if ( node->cache_index >= manager->num_caches ) - { - FT_ERROR(( "ftc_node_destroy: invalid node handle\n" )); - return; - } -#endif - - cache = manager->caches[node->cache_index]; - -#ifdef FT_DEBUG_ERROR - if ( cache == NULL ) - { - FT_ERROR(( "ftc_node_destroy: invalid node handle\n" )); - return; - } -#endif - - manager->cur_weight -= cache->clazz.node_weight( node, cache ); - - /* remove node from mru list */ - ftc_node_mru_unlink( node, manager ); - - /* remove node from cache's hash table */ - ftc_node_hash_unlink( node, cache ); - - /* now finalize it */ - cache->clazz.node_free( node, cache ); - -#if 0 - /* check, just in case of general corruption :-) */ - if ( manager->num_nodes == 0 ) - FT_ERROR(( "ftc_node_destroy: invalid cache node count! = %d\n", - manager->num_nodes )); -#endif - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** ABSTRACT CACHE CLASS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_EXPORT_DEF( FT_Error ) - FTC_Cache_Init( FTC_Cache cache ) - { - return ftc_cache_init( cache ); - } - - - FT_LOCAL_DEF( FT_Error ) - ftc_cache_init( FTC_Cache cache ) - { - FT_Memory memory = cache->memory; - - - cache->p = 0; - cache->mask = FTC_HASH_INITIAL_SIZE - 1; - cache->slack = FTC_HASH_INITIAL_SIZE * FTC_HASH_MAX_LOAD; - - return ( FT_MEM_NEW_ARRAY( cache->buckets, FTC_HASH_INITIAL_SIZE * 2 ) ); - } - - - FT_EXPORT_DEF( void ) - FTC_Cache_Clear( FTC_Cache cache ) - { - if ( cache ) - { - FTC_Manager manager = cache->manager; - FT_UFast i; - FT_UInt count; - - - count = cache->p + cache->mask + 1; - - for ( i = 0; i < count; i++ ) - { - FTC_Node *pnode = cache->buckets + i, next, node = *pnode; - - - while ( node ) - { - next = node->link; - node->link = NULL; - - /* remove node from mru list */ - ftc_node_mru_unlink( node, manager ); - - /* now finalize it */ - manager->cur_weight -= cache->clazz.node_weight( node, cache ); - - cache->clazz.node_free( node, cache ); - node = next; - } - cache->buckets[i] = NULL; - } - ftc_cache_resize( cache ); - } - } - - - FT_LOCAL_DEF( void ) - ftc_cache_done( FTC_Cache cache ) - { - if ( cache->memory ) - { - FT_Memory memory = cache->memory; - - - FTC_Cache_Clear( cache ); - - FT_FREE( cache->buckets ); - cache->mask = 0; - cache->p = 0; - cache->slack = 0; - - cache->memory = NULL; - } - } - - - FT_EXPORT_DEF( void ) - FTC_Cache_Done( FTC_Cache cache ) - { - ftc_cache_done( cache ); - } - - - static void - ftc_cache_add( FTC_Cache cache, - FT_UInt32 hash, - FTC_Node node ) - { - node->hash = hash; - node->cache_index = (FT_UInt16) cache->index; - node->ref_count = 0; - - ftc_node_hash_link( node, cache ); - ftc_node_mru_link( node, cache->manager ); - - { - FTC_Manager manager = cache->manager; - - - manager->cur_weight += cache->clazz.node_weight( node, cache ); - - if ( manager->cur_weight >= manager->max_weight ) - { - node->ref_count++; - FTC_Manager_Compress( manager ); - node->ref_count--; - } - } - } - - - FT_EXPORT_DEF( FT_Error ) - FTC_Cache_NewNode( FTC_Cache cache, - FT_UInt32 hash, - FT_Pointer query, - FTC_Node *anode ) - { - FT_Error error; - FTC_Node node; - - /* - * Try to allocate a new cache node. Note that in case of - * out-of-memory error (OOM), we'll flush the cache a bit, - * then try again. - * - * On each try, the `tries' variable gives the number - * of old nodes we want to flush from the manager's global list - * before the next allocation attempt. It barely doubles on - * each iteration. - * - */ - error = cache->clazz.node_new( &node, query, cache ); - if ( error ) - goto FlushCache; - - AddNode: - /* don't assume that the cache has the same number of buckets, since - * our allocation request might have triggered global cache flushing - */ - ftc_cache_add( cache, hash, node ); - - Exit: - *anode = node; - return error; - - FlushCache: - node = NULL; - if ( error != FT_Err_Out_Of_Memory ) - goto Exit; - - { - FTC_Manager manager = cache->manager; - FT_UInt count, tries = 1; - - - for (;;) - { - error = cache->clazz.node_new( &node, query, cache ); - if ( !error ) - break; - - node = NULL; - if ( error != FT_Err_Out_Of_Memory ) - goto Exit; - - count = FTC_Manager_FlushN( manager, tries ); - if ( count == 0 ) - goto Exit; - - if ( count == tries ) - { - count = tries * 2; - if ( count < tries || count > manager->num_nodes ) - count = manager->num_nodes; - } - tries = count; - } - } - goto AddNode; - } - - - FT_EXPORT_DEF( FT_Error ) - FTC_Cache_Lookup( FTC_Cache cache, - FT_UInt32 hash, - FT_Pointer query, - FTC_Node *anode ) - { - FT_UFast idx; - FTC_Node* bucket; - FTC_Node* pnode; - FTC_Node node; - FT_Error error = 0; - - FTC_Node_CompareFunc compare = cache->clazz.node_compare; - - - if ( cache == NULL || anode == NULL ) - return FT_Err_Invalid_Argument; - - idx = hash & cache->mask; - if ( idx < cache->p ) - idx = hash & ( cache->mask * 2 + 1 ); - - bucket = cache->buckets + idx; - pnode = bucket; - for (;;) - { - node = *pnode; - if ( node == NULL ) - goto NewNode; - - if ( node->hash == hash && compare( node, query, cache ) ) - break; - - pnode = &node->link; - } - - if ( node != *bucket ) - { - *pnode = node->link; - node->link = *bucket; - *bucket = node; - } - - /* move to head of MRU list */ - { - FTC_Manager manager = cache->manager; - - - if ( node != manager->nodes_list ) - ftc_node_mru_up( node, manager ); - } - *anode = node; - return error; - - NewNode: - return FTC_Cache_NewNode( cache, hash, query, anode ); - } - - - FT_EXPORT_DEF( void ) - FTC_Cache_RemoveFaceID( FTC_Cache cache, - FTC_FaceID face_id ) - { - FT_UFast i, count; - FTC_Manager manager = cache->manager; - FTC_Node frees = NULL; - - - count = cache->p + cache->mask; - for ( i = 0; i < count; i++ ) - { - FTC_Node* bucket = cache->buckets + i; - FTC_Node* pnode = bucket; - - - for ( ;; ) - { - FTC_Node node = *pnode; - - - if ( node == NULL ) - break; - - if ( cache->clazz.node_remove_faceid( node, face_id, cache ) ) - { - *pnode = node->link; - node->link = frees; - frees = node; - } - else - pnode = &node->link; - } - } - - /* remove all nodes in the free list */ - while ( frees ) - { - FTC_Node node; - - - node = frees; - frees = node->link; - - manager->cur_weight -= cache->clazz.node_weight( node, cache ); - ftc_node_mru_unlink( node, manager ); - - cache->clazz.node_free( node, cache ); - - cache->slack++; - } - - ftc_cache_resize( cache ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftccback.h b/nx-X11/extras/freetype2/src/cache/ftccback.h deleted file mode 100644 index 6b47e095e..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftccback.h +++ /dev/null @@ -1,85 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftccback.h */ -/* */ -/* Callback functions of the caching sub-system (specification only). */ -/* */ -/* Copyright 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -#ifndef __FTCCBACK_H__ -#define __FTCCBACK_H__ - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_MRU_H -#include FT_CACHE_INTERNAL_IMAGE_H -#include FT_CACHE_INTERNAL_MANAGER_H -#include FT_CACHE_INTERNAL_GLYPH_H -#include FT_CACHE_INTERNAL_SBITS_H - - - FT_LOCAL( void ) - ftc_inode_free( FTC_Node inode, - FTC_Cache cache ); - - FT_LOCAL( FT_Error ) - ftc_inode_new( FTC_Node *pinode, - FT_Pointer gquery, - FTC_Cache cache ); - - FT_LOCAL( FT_ULong ) - ftc_inode_weight( FTC_Node inode, - FTC_Cache cache ); - - - FT_LOCAL( void ) - ftc_snode_free( FTC_Node snode, - FTC_Cache cache ); - - FT_LOCAL( FT_Error ) - ftc_snode_new( FTC_Node *psnode, - FT_Pointer gquery, - FTC_Cache cache ); - - FT_LOCAL( FT_ULong ) - ftc_snode_weight( FTC_Node snode, - FTC_Cache cache ); - - FT_LOCAL( FT_Bool ) - ftc_snode_compare( FTC_Node snode, - FT_Pointer gquery, - FTC_Cache cache ); - - - FT_LOCAL( FT_Bool ) - ftc_gnode_compare( FTC_Node gnode, - FT_Pointer gquery, - FTC_Cache cache ); - - - FT_LOCAL( FT_Error ) - ftc_gcache_init( FTC_Cache cache ); - - FT_LOCAL( void ) - ftc_gcache_done( FTC_Cache cache ); - - - FT_LOCAL( FT_Error ) - ftc_cache_init( FTC_Cache cache ); - - FT_LOCAL( void ) - ftc_cache_done( FTC_Cache cache ); - - -#endif /* __FTCCBACK_H__ */ - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftccmap.c b/nx-X11/extras/freetype2/src/cache/ftccmap.c deleted file mode 100644 index b2812c951..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftccmap.c +++ /dev/null @@ -1,303 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftccmap.c */ -/* */ -/* FreeType CharMap cache (body) */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_MANAGER_H -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_DEBUG_H -#include FT_TRUETYPE_IDS_H - -#include "ftccback.h" -#include "ftcerror.h" - -#undef FT_COMPONENT -#define FT_COMPONENT trace_cache - - - /*************************************************************************/ - /* */ - /* Each FTC_CMapNode contains a simple array to map a range of character */ - /* codes to equivalent glyph indices. */ - /* */ - /* For now, the implementation is very basic: Each node maps a range of */ - /* 128 consecutive character codes to their corresponding glyph indices. */ - /* */ - /* We could do more complex things, but I don't think it is really very */ - /* useful. */ - /* */ - /*************************************************************************/ - - - /* number of glyph indices / character code per node */ -#define FTC_CMAP_INDICES_MAX 128 - - /* compute a query/node hash */ -#define FTC_CMAP_HASH( faceid, index, charcode ) \ - ( FTC_FACE_ID_HASH( faceid ) + 211 * ( index ) + \ - ( (char_code) / FTC_CMAP_INDICES_MAX ) ) - - /* the charmap query */ - typedef struct FTC_CMapQueryRec_ - { - FTC_FaceID face_id; - FT_UInt cmap_index; - FT_UInt32 char_code; - - } FTC_CMapQueryRec, *FTC_CMapQuery; - -#define FTC_CMAP_QUERY( x ) ((FTC_CMapQuery)(x)) -#define FTC_CMAP_QUERY_HASH( x ) \ - FTC_CMAP_HASH( (x)->face_id, (x)->cmap_index, (x)->char_code ) - - /* the cmap cache node */ - typedef struct FTC_CMapNodeRec_ - { - FTC_NodeRec node; - FTC_FaceID face_id; - FT_UInt cmap_index; - FT_UInt32 first; /* first character in node */ - FT_UInt16 indices[FTC_CMAP_INDICES_MAX]; /* array of glyph indices */ - - } FTC_CMapNodeRec, *FTC_CMapNode; - -#define FTC_CMAP_NODE( x ) ( (FTC_CMapNode)( x ) ) -#define FTC_CMAP_NODE_HASH( x ) \ - FTC_CMAP_HASH( (x)->face_id, (x)->cmap_index, (x)->first ) - - /* if (indices[n] == FTC_CMAP_UNKNOWN), we assume that the corresponding */ - /* glyph indices haven't been queried through FT_Get_Glyph_Index() yet */ -#define FTC_CMAP_UNKNOWN ( (FT_UInt16)-1 ) - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CHARMAP NODES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* no need for specific finalizer; we use `ftc_node_done' directly */ - - FT_CALLBACK_DEF( void ) - ftc_cmap_node_free( FTC_Node ftcnode, - FTC_Cache cache ) - { - FTC_CMapNode node = (FTC_CMapNode)ftcnode; - FT_Memory memory = cache->memory; - - - FT_FREE( node ); - } - - - /* initialize a new cmap node */ - FT_CALLBACK_DEF( FT_Error ) - ftc_cmap_node_new( FTC_Node *ftcanode, - FT_Pointer ftcquery, - FTC_Cache cache ) - { - FTC_CMapNode *anode = (FTC_CMapNode*)ftcanode; - FTC_CMapQuery query = (FTC_CMapQuery)ftcquery; - FT_Error error; - FT_Memory memory = cache->memory; - FTC_CMapNode node; - FT_UInt nn; - - - if ( !FT_NEW( node ) ) - { - node->face_id = query->face_id; - node->cmap_index = query->cmap_index; - node->first = (query->char_code / FTC_CMAP_INDICES_MAX) * - FTC_CMAP_INDICES_MAX; - - for ( nn = 0; nn < FTC_CMAP_INDICES_MAX; nn++ ) - node->indices[nn] = FTC_CMAP_UNKNOWN; - } - - *anode = node; - return error; - } - - - /* compute the weight of a given cmap node */ - FT_CALLBACK_DEF( FT_ULong ) - ftc_cmap_node_weight( FTC_Node cnode, - FTC_Cache cache ) - { - FT_UNUSED( cnode ); - FT_UNUSED( cache ); - - return sizeof ( *cnode ); - } - - - /* compare a cmap node to a given query */ - FT_CALLBACK_DEF( FT_Bool ) - ftc_cmap_node_compare( FTC_Node ftcnode, - FT_Pointer ftcquery, - FTC_Cache cache ) - { - FTC_CMapNode node = (FTC_CMapNode)ftcnode; - FTC_CMapQuery query = (FTC_CMapQuery)ftcquery; - FT_UNUSED( cache ); - - - if ( node->face_id == query->face_id && - node->cmap_index == query->cmap_index ) - { - FT_UInt32 offset = (FT_UInt32)( query->char_code - node->first ); - - - return FT_BOOL( offset < FTC_CMAP_INDICES_MAX ); - } - - return 0; - } - - - FT_CALLBACK_DEF( FT_Bool ) - ftc_cmap_node_remove_faceid( FTC_Node ftcnode, - FT_Pointer ftcface_id, - FTC_Cache cache ) - { - FTC_CMapNode node = (FTC_CMapNode)ftcnode; - FTC_FaceID face_id = (FTC_FaceID)ftcface_id; - FT_UNUSED( cache ); - - return FT_BOOL( node->face_id == face_id ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GLYPH IMAGE CACHE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_CALLBACK_TABLE_DEF - const FTC_CacheClassRec ftc_cmap_cache_class = - { - ftc_cmap_node_new, - ftc_cmap_node_weight, - ftc_cmap_node_compare, - ftc_cmap_node_remove_faceid, - ftc_cmap_node_free, - - sizeof ( FTC_CacheRec ), - ftc_cache_init, - ftc_cache_done, - }; - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_CMapCache_New( FTC_Manager manager, - FTC_CMapCache *acache ) - { - return FTC_Manager_RegisterCache( manager, - &ftc_cmap_cache_class, - FTC_CACHE_P( acache ) ); - } - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_UInt ) - FTC_CMapCache_Lookup( FTC_CMapCache cmap_cache, - FTC_FaceID face_id, - FT_Int cmap_index, - FT_UInt32 char_code ) - { - FTC_Cache cache = FTC_CACHE( cmap_cache ); - FTC_CMapQueryRec query; - FTC_CMapNode node; - FT_Error error; - FT_UInt gindex = 0; - FT_UInt32 hash; - - - if ( !cache ) - { - FT_ERROR(( "FTC_CMapCache_Lookup: bad arguments, returning 0!\n" )); - return 0; - } - - query.face_id = face_id; - query.cmap_index = (FT_UInt)cmap_index; - query.char_code = char_code; - - hash = FTC_CMAP_HASH( face_id, cmap_index, char_code ); - -#if 1 - FTC_CACHE_LOOKUP_CMP( cache, ftc_cmap_node_compare, hash, &query, - node, error ); -#else - error = FTC_Cache_Lookup( cache, hash, &query, (FTC_Node*) &node ); -#endif - if ( error ) - goto Exit; - - FT_ASSERT( (FT_UInt)( char_code - node->first ) < FTC_CMAP_INDICES_MAX ); - - gindex = node->indices[char_code - node->first]; - if ( gindex == FTC_CMAP_UNKNOWN ) - { - FT_Face face; - - - gindex = 0; - - error = FTC_Manager_LookupFace( cache->manager, node->face_id, &face ); - if ( error ) - goto Exit; - - if ( (FT_UInt)cmap_index < (FT_UInt)face->num_charmaps ) - { - FT_CharMap old, cmap = NULL; - - - old = face->charmap; - cmap = face->charmaps[cmap_index]; - - if ( old != cmap ) - FT_Set_Charmap( face, cmap ); - - gindex = FT_Get_Char_Index( face, char_code ); - - if ( old != cmap ) - FT_Set_Charmap( face, old ); - } - - node->indices[char_code - node->first] = gindex; - } - - Exit: - return gindex; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftcerror.h b/nx-X11/extras/freetype2/src/cache/ftcerror.h deleted file mode 100644 index 5998d42da..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftcerror.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcerror.h */ -/* */ -/* Caching sub-system error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the caching sub-system error enumeration */ - /* constants. */ - /* */ - /*************************************************************************/ - -#ifndef __FTCERROR_H__ -#define __FTCERROR_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX FTC_Err_ -#define FT_ERR_BASE FT_Mod_Err_Cache - -#include FT_ERRORS_H - -#endif /* __FTCERROR_H__ */ - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftcglyph.c b/nx-X11/extras/freetype2/src/cache/ftcglyph.c deleted file mode 100644 index 1f3158e79..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftcglyph.c +++ /dev/null @@ -1,189 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcglyph.c */ -/* */ -/* FreeType Glyph Image (FT_Glyph) cache (body). */ -/* */ -/* Copyright 2000-2001, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_GLYPH_H -#include FT_ERRORS_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H - -#include "ftccback.h" -#include "ftcerror.h" - - - /* create a new chunk node, setting its cache index and ref count */ - FT_EXPORT_DEF( void ) - FTC_GNode_Init( FTC_GNode gnode, - FT_UInt gindex, - FTC_Family family ) - { - gnode->family = family; - gnode->gindex = gindex; - family->num_nodes++; - } - - - FT_EXPORT_DEF( void ) - FTC_GNode_UnselectFamily( FTC_GNode gnode, - FTC_Cache cache ) - { - FTC_Family family = gnode->family; - - - gnode->family = NULL; - if ( family && --family->num_nodes <= 0 ) - FTC_MruList_Remove( &FTC_GCACHE( cache )->families, - (FTC_MruNode)family ); - } - - - FT_EXPORT_DEF( void ) - FTC_GNode_Done( FTC_GNode gnode, - FTC_Cache cache ) - { - /* finalize the node */ - gnode->gindex = 0; - - FTC_GNode_UnselectFamily( gnode, cache ); - } - - - FT_LOCAL_DEF( FT_Bool ) - ftc_gnode_compare( FTC_Node ftcgnode, - FT_Pointer ftcgquery, - FTC_Cache cache ) - { - FTC_GNode gnode = (FTC_GNode)ftcgnode; - FTC_GQuery gquery = (FTC_GQuery)ftcgquery; - FT_UNUSED( cache ); - - - return FT_BOOL( gnode->family == gquery->family && - gnode->gindex == gquery->gindex ); - } - - - FT_EXPORT_DEF( FT_Bool ) - FTC_GNode_Compare( FTC_GNode gnode, - FTC_GQuery gquery ) - { - return ftc_gnode_compare( FTC_NODE( gnode ), gquery, NULL ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CHUNK SETS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_EXPORT_DEF( void ) - FTC_Family_Init( FTC_Family family, - FTC_Cache cache ) - { - FTC_GCacheClass clazz = FTC_CACHE__GCACHE_CLASS( cache ); - - - family->clazz = clazz->family_class; - family->num_nodes = 0; - family->cache = cache; - } - - - FT_LOCAL_DEF( FT_Error ) - ftc_gcache_init( FTC_Cache ftccache ) - { - FTC_GCache cache = (FTC_GCache)ftccache; - FT_Error error; - - - error = FTC_Cache_Init( FTC_CACHE( cache ) ); - if ( !error ) - { - FTC_GCacheClass clazz = (FTC_GCacheClass)FTC_CACHE( cache )->org_class; - - FTC_MruList_Init( &cache->families, - clazz->family_class, - 0, /* no maximum here! */ - cache, - FTC_CACHE( cache )->memory ); - } - - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FTC_GCache_Init( FTC_GCache cache ) - { - return ftc_gcache_init( FTC_CACHE( cache ) ); - } - - - FT_LOCAL_DEF( void ) - ftc_gcache_done( FTC_Cache ftccache ) - { - FTC_GCache cache = (FTC_GCache)ftccache; - - - FTC_Cache_Done( (FTC_Cache)cache ); - FTC_MruList_Done( &cache->families ); - } - - - FT_EXPORT_DEF( void ) - FTC_GCache_Done( FTC_GCache cache ) - { - ftc_gcache_done( FTC_CACHE( cache ) ); - } - - - FT_EXPORT_DEF( FT_Error ) - FTC_GCache_New( FTC_Manager manager, - FTC_GCacheClass clazz, - FTC_GCache *acache ) - { - return FTC_Manager_RegisterCache( manager, (FTC_CacheClass)clazz, - (FTC_Cache*)acache ); - } - - - FT_EXPORT_DEF( FT_Error ) - FTC_GCache_Lookup( FTC_GCache cache, - FT_UInt32 hash, - FT_UInt gindex, - FTC_GQuery query, - FTC_Node *anode ) - { - FT_Error error; - - - query->gindex = gindex; - - FTC_MRULIST_LOOKUP( &cache->families, query, query->family, error ); - if ( !error ) - error = FTC_Cache_Lookup( FTC_CACHE( cache ), hash, query, anode ); - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftcimage.c b/nx-X11/extras/freetype2/src/cache/ftcimage.c deleted file mode 100644 index 508ed6c15..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftcimage.c +++ /dev/null @@ -1,154 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcimage.c */ -/* */ -/* FreeType Image cache (body). */ -/* */ -/* Copyright 2000-2001, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_IMAGE_H -#include FT_INTERNAL_MEMORY_H - -#include "ftccback.h" -#include "ftcerror.h" - - - /* finalize a given glyph image node */ - FT_LOCAL_DEF( void ) - ftc_inode_free( FTC_Node ftcinode, - FTC_Cache cache ) - { - FTC_INode inode = (FTC_INode)ftcinode; - FT_Memory memory = cache->memory; - - - if ( inode->glyph ) - { - FT_Done_Glyph( inode->glyph ); - inode->glyph = NULL; - } - - FTC_GNode_Done( FTC_GNODE( inode ), cache ); - FT_FREE( inode ); - } - - - FT_EXPORT_DEF( void ) - FTC_INode_Free( FTC_INode inode, - FTC_Cache cache ) - { - ftc_inode_free( FTC_NODE( inode ), cache ); - } - - - /* initialize a new glyph image node */ - FT_EXPORT_DEF( FT_Error ) - FTC_INode_New( FTC_INode *pinode, - FTC_GQuery gquery, - FTC_Cache cache ) - { - FT_Memory memory = cache->memory; - FT_Error error; - FTC_INode inode; - - - if ( !FT_NEW( inode ) ) - { - FTC_GNode gnode = FTC_GNODE( inode ); - FTC_Family family = gquery->family; - FT_UInt gindex = gquery->gindex; - FTC_IFamilyClass clazz = FTC_CACHE__IFAMILY_CLASS( cache ); - - - /* initialize its inner fields */ - FTC_GNode_Init( gnode, gindex, family ); - - /* we will now load the glyph image */ - error = clazz->family_load_glyph( family, gindex, cache, - &inode->glyph ); - } - - *pinode = inode; - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - ftc_inode_new( FTC_Node *ftcpinode, - FT_Pointer ftcgquery, - FTC_Cache cache ) - { - FTC_INode *pinode = (FTC_INode*)ftcpinode; - FTC_GQuery gquery = (FTC_GQuery)ftcgquery; - - - return FTC_INode_New( pinode, gquery, cache ); - } - - - FT_LOCAL_DEF( FT_ULong ) - ftc_inode_weight( FTC_Node ftcinode, - FTC_Cache ftccache ) - { - FTC_INode inode = (FTC_INode)ftcinode; - FT_ULong size = 0; - FT_Glyph glyph = inode->glyph; - - FT_UNUSED( ftccache ); - - - switch ( glyph->format ) - { - case FT_GLYPH_FORMAT_BITMAP: - { - FT_BitmapGlyph bitg; - - - bitg = (FT_BitmapGlyph)glyph; - size = bitg->bitmap.rows * labs( bitg->bitmap.pitch ) + - sizeof ( *bitg ); - } - break; - - case FT_GLYPH_FORMAT_OUTLINE: - { - FT_OutlineGlyph outg; - - - outg = (FT_OutlineGlyph)glyph; - size = outg->outline.n_points * - ( sizeof ( FT_Vector ) + sizeof ( FT_Byte ) ) + - outg->outline.n_contours * sizeof ( FT_Short ) + - sizeof ( *outg ); - } - break; - - default: - ; - } - - size += sizeof ( *inode ); - return size; - } - - - FT_EXPORT_DEF( FT_ULong ) - FTC_INode_Weight( FTC_INode inode ) - { - return ftc_inode_weight( FTC_NODE( inode ), NULL ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftcmanag.c b/nx-X11/extras/freetype2/src/cache/ftcmanag.c deleted file mode 100644 index 97d324c61..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftcmanag.c +++ /dev/null @@ -1,680 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcmanag.c */ -/* */ -/* FreeType Cache Manager (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_MANAGER_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_SIZES_H - -#include "ftcerror.h" - - -#undef FT_COMPONENT -#define FT_COMPONENT trace_cache - -#define FTC_LRU_GET_MANAGER( lru ) ( (FTC_Manager)(lru)->user_data ) - - - static FT_Error - ftc_scaler_lookup_size( FTC_Manager manager, - FTC_Scaler scaler, - FT_Size *asize ) - { - FT_Face face; - FT_Size size = NULL; - FT_Error error; - - - error = FTC_Manager_LookupFace( manager, scaler->face_id, &face ); - if ( error ) - goto Exit; - - error = FT_New_Size( face, &size ); - if ( error ) - goto Exit; - - FT_Activate_Size( size ); - - if ( scaler->pixel ) - error = FT_Set_Pixel_Sizes( face, scaler->width, scaler->height ); - else - error = FT_Set_Char_Size( face, scaler->width, scaler->height, - scaler->x_res, scaler->y_res ); - if ( error ) - { - FT_Done_Size( size ); - size = NULL; - } - - Exit: - *asize = size; - return error; - } - - - typedef struct FTC_SizeNodeRec_ - { - FTC_MruNodeRec node; - FT_Size size; - FTC_ScalerRec scaler; - - } FTC_SizeNodeRec, *FTC_SizeNode; - - - FT_CALLBACK_DEF( void ) - ftc_size_node_done( FTC_MruNode ftcnode, - FT_Pointer data ) - { - FTC_SizeNode node = (FTC_SizeNode)ftcnode; - FT_Size size = node->size; - FT_UNUSED( data ); - - - if ( size ) - FT_Done_Size( size ); - } - - - FT_CALLBACK_DEF( FT_Bool ) - ftc_size_node_compare( FTC_MruNode ftcnode, - FT_Pointer ftcscaler ) - { - FTC_SizeNode node = (FTC_SizeNode)ftcnode; - FTC_Scaler scaler = (FTC_Scaler)ftcscaler; - FTC_Scaler scaler0 = &node->scaler; - - - if ( FTC_SCALER_COMPARE( scaler0, scaler ) ) - { - FT_Activate_Size( node->size ); - return 1; - } - return 0; - } - - - FT_CALLBACK_DEF( FT_Error ) - ftc_size_node_init( FTC_MruNode ftcnode, - FT_Pointer ftcscaler, - FT_Pointer ftcmanager ) - { - FTC_SizeNode node = (FTC_SizeNode)ftcnode; - FTC_Scaler scaler = (FTC_Scaler)ftcscaler; - FTC_Manager manager = (FTC_Manager)ftcmanager; - - - node->scaler = scaler[0]; - - return ftc_scaler_lookup_size( manager, scaler, &node->size ); - } - - - FT_CALLBACK_DEF( FT_Error ) - ftc_size_node_reset( FTC_MruNode ftcnode, - FT_Pointer ftcscaler, - FT_Pointer ftcmanager ) - { - FTC_SizeNode node = (FTC_SizeNode)ftcnode; - FTC_Scaler scaler = (FTC_Scaler)ftcscaler; - FTC_Manager manager = (FTC_Manager)ftcmanager; - - - FT_Done_Size( node->size ); - - node->scaler = scaler[0]; - - return ftc_scaler_lookup_size( manager, scaler, &node->size ); - } - - - FT_CALLBACK_TABLE_DEF - const FTC_MruListClassRec ftc_size_list_class = - { - sizeof ( FTC_SizeNodeRec ), - ftc_size_node_compare, - ftc_size_node_init, - ftc_size_node_reset, - ftc_size_node_done - }; - - - /* helper function used by ftc_face_node_done */ - static FT_Bool - ftc_size_node_compare_faceid( FTC_MruNode ftcnode, - FT_Pointer ftcface_id ) - { - FTC_SizeNode node = (FTC_SizeNode)ftcnode; - FTC_FaceID face_id = (FTC_FaceID)ftcface_id; - - - return node->scaler.face_id == face_id; - } - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_Manager_LookupSize( FTC_Manager manager, - FTC_Scaler scaler, - FT_Size *asize ) - { - FT_Error error; - FTC_SizeNode node; - - - if ( asize == NULL ) - return FTC_Err_Bad_Argument; - - *asize = NULL; - - if ( !manager ) - return FTC_Err_Invalid_Cache_Handle; - -#ifdef FTC_INLINE - - FTC_MRULIST_LOOKUP_CMP( &manager->sizes, scaler, ftc_size_node_compare, - node, error ); - -#else - error = FTC_MruList_Lookup( &manager->sizes, scaler, (FTC_MruNode*)&node ); -#endif - - if ( !error ) - *asize = node->size; - - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FACE MRU IMPLEMENTATION *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - typedef struct FTC_FaceNodeRec_ - { - FTC_MruNodeRec node; - FTC_FaceID face_id; - FT_Face face; - - } FTC_FaceNodeRec, *FTC_FaceNode; - - - FT_CALLBACK_DEF( FT_Error ) - ftc_face_node_init( FTC_MruNode ftcnode, - FT_Pointer ftcface_id, - FT_Pointer ftcmanager ) - { - FTC_FaceNode node = (FTC_FaceNode)ftcnode; - FTC_FaceID face_id = (FTC_FaceID)ftcface_id; - FTC_Manager manager = (FTC_Manager)ftcmanager; - FT_Error error; - - - node->face_id = face_id; - - error = manager->request_face( face_id, - manager->library, - manager->request_data, - &node->face ); - if ( !error ) - { - /* destroy initial size object; it will be re-created later */ - if ( node->face->size ) - FT_Done_Size( node->face->size ); - } - - return error; - } - - - FT_CALLBACK_DEF( void ) - ftc_face_node_done( FTC_MruNode ftcnode, - FT_Pointer ftcmanager ) - { - FTC_FaceNode node = (FTC_FaceNode)ftcnode; - FTC_Manager manager = (FTC_Manager)ftcmanager; - - - /* we must begin by removing all scalers for the target face */ - /* from the manager's list */ - FTC_MruList_RemoveSelection( &manager->sizes, - ftc_size_node_compare_faceid, - node->face_id ); - - /* all right, we can discard the face now */ - FT_Done_Face( node->face ); - node->face = NULL; - node->face_id = NULL; - } - - - FT_CALLBACK_DEF( FT_Bool ) - ftc_face_node_compare( FTC_MruNode ftcnode, - FT_Pointer ftcface_id ) - { - FTC_FaceNode node = (FTC_FaceNode)ftcnode; - FTC_FaceID face_id = (FTC_FaceID)ftcface_id; - - - return FT_BOOL( node->face_id == face_id ); - } - - - FT_CALLBACK_TABLE_DEF - const FTC_MruListClassRec ftc_face_list_class = - { - sizeof ( FTC_FaceNodeRec), - - ftc_face_node_compare, - ftc_face_node_init, - 0, /* FTC_MruNode_ResetFunc */ - ftc_face_node_done - }; - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_Manager_LookupFace( FTC_Manager manager, - FTC_FaceID face_id, - FT_Face *aface ) - { - FT_Error error; - FTC_FaceNode node; - - - if ( aface == NULL ) - return FTC_Err_Bad_Argument; - - *aface = NULL; - - if ( !manager ) - return FTC_Err_Invalid_Cache_Handle; - - /* we break encapsulation for the sake of speed */ -#ifdef FTC_INLINE - - FTC_MRULIST_LOOKUP_CMP( &manager->faces, face_id, ftc_face_node_compare, - node, error ); - -#else - error = FTC_MruList_Lookup( &manager->faces, face_id, (FTC_MruNode*)&node ); -#endif - - if ( !error ) - *aface = node->face; - - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CACHE MANAGER ROUTINES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_Manager_New( FT_Library library, - FT_UInt max_faces, - FT_UInt max_sizes, - FT_ULong max_bytes, - FTC_Face_Requester requester, - FT_Pointer req_data, - FTC_Manager *amanager ) - { - FT_Error error; - FT_Memory memory; - FTC_Manager manager = 0; - - - if ( !library ) - return FTC_Err_Invalid_Library_Handle; - - memory = library->memory; - - if ( FT_NEW( manager ) ) - goto Exit; - - if ( max_faces == 0 ) - max_faces = FTC_MAX_FACES_DEFAULT; - - if ( max_sizes == 0 ) - max_sizes = FTC_MAX_SIZES_DEFAULT; - - if ( max_bytes == 0 ) - max_bytes = FTC_MAX_BYTES_DEFAULT; - - manager->library = library; - manager->memory = memory; - manager->max_weight = max_bytes; - - manager->request_face = requester; - manager->request_data = req_data; - - FTC_MruList_Init( &manager->faces, - &ftc_face_list_class, - max_faces, - manager, - memory ); - - FTC_MruList_Init( &manager->sizes, - &ftc_size_list_class, - max_sizes, - manager, - memory ); - - *amanager = manager; - - Exit: - return error; - } - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( void ) - FTC_Manager_Done( FTC_Manager manager ) - { - FT_Memory memory; - FT_UInt idx; - - - if ( !manager || !manager->library ) - return; - - memory = manager->memory; - - /* now discard all caches */ - for (idx = manager->num_caches; idx-- > 0; ) - { - FTC_Cache cache = manager->caches[idx]; - - - if ( cache ) - { - cache->clazz.cache_done( cache ); - FT_FREE( cache ); - manager->caches[idx] = NULL; - } - } - manager->num_caches = 0; - - /* discard faces and sizes */ - FTC_MruList_Done( &manager->sizes ); - FTC_MruList_Done( &manager->faces ); - - manager->library = NULL; - manager->memory = NULL; - - FT_FREE( manager ); - } - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( void ) - FTC_Manager_Reset( FTC_Manager manager ) - { - if ( manager ) - { - FTC_MruList_Reset( &manager->sizes ); - FTC_MruList_Reset( &manager->faces ); - } - /* XXX: FIXME: flush the caches? */ - } - - -#ifdef FT_DEBUG_ERROR - - FT_EXPORT_DEF( void ) - FTC_Manager_Check( FTC_Manager manager ) - { - FTC_Node node, first; - - - first = manager->nodes_list; - - /* check node weights */ - if ( first ) - { - FT_ULong weight = 0; - - - node = first; - - do - { - FTC_Cache cache = manager->caches[node->cache_index]; - - - if ( (FT_UInt)node->cache_index >= manager->num_caches ) - FT_ERROR(( "FTC_Manager_Check: invalid node (cache index = %ld\n", - node->cache_index )); - else - weight += cache->clazz.node_weight( node, cache ); - - node = FTC_NODE__NEXT( node ); - - } while ( node != first ); - - if ( weight != manager->cur_weight ) - FT_ERROR(( "FTC_Manager_Check: invalid weight %ld instead of %ld\n", - manager->cur_weight, weight )); - } - - /* check circular list */ - if ( first ) - { - FT_UFast count = 0; - - - node = first; - do - { - count++; - node = FTC_NODE__NEXT( node ); - - } while ( node != first ); - - if ( count != manager->num_nodes ) - FT_ERROR(( - "FTC_Manager_Check: invalid cache node count %d instead of %d\n", - manager->num_nodes, count )); - } - } - -#endif /* FT_DEBUG_ERROR */ - - - /* `Compress' the manager's data, i.e., get rid of old cache nodes */ - /* that are not referenced anymore in order to limit the total */ - /* memory used by the cache. */ - - /* documentation is in ftcmanag.h */ - - FT_EXPORT_DEF( void ) - FTC_Manager_Compress( FTC_Manager manager ) - { - FTC_Node node, first; - - - if ( !manager ) - return; - - first = manager->nodes_list; - -#ifdef FT_DEBUG_ERROR - FTC_Manager_Check( manager ); - - FT_ERROR(( "compressing, weight = %ld, max = %ld, nodes = %d\n", - manager->cur_weight, manager->max_weight, - manager->num_nodes )); -#endif - - if ( manager->cur_weight < manager->max_weight || first == NULL ) - return; - - /* go to last node -- it's a circular list */ - node = FTC_NODE__PREV( first ); - do - { - FTC_Node prev; - - - prev = ( node == first ) ? NULL : FTC_NODE__PREV( node ); - - if ( node->ref_count <= 0 ) - ftc_node_destroy( node, manager ); - - node = prev; - - } while ( node && manager->cur_weight > manager->max_weight ); - } - - - /* documentation is in ftcmanag.h */ - - FT_EXPORT_DEF( FT_Error ) - FTC_Manager_RegisterCache( FTC_Manager manager, - FTC_CacheClass clazz, - FTC_Cache *acache ) - { - FT_Error error = FTC_Err_Invalid_Argument; - FTC_Cache cache = NULL; - - - if ( manager && clazz && acache ) - { - FT_Memory memory = manager->memory; - - - if ( manager->num_caches >= FTC_MAX_CACHES ) - { - error = FTC_Err_Too_Many_Caches; - FT_ERROR(( "%s: too many registered caches\n", - "FTC_Manager_Register_Cache" )); - goto Exit; - } - - if ( !FT_ALLOC( cache, clazz->cache_size ) ) - { - cache->manager = manager; - cache->memory = memory; - cache->clazz = clazz[0]; - cache->org_class = clazz; - - /* THIS IS VERY IMPORTANT! IT WILL WRETCH THE MANAGER */ - /* IF IT IS NOT SET CORRECTLY */ - cache->index = manager->num_caches; - - error = clazz->cache_init( cache ); - if ( error ) - { - clazz->cache_done( cache ); - FT_FREE( cache ); - goto Exit; - } - - manager->caches[manager->num_caches++] = cache; - } - } - - Exit: - *acache = cache; - return error; - } - - - FT_EXPORT_DEF( FT_UInt ) - FTC_Manager_FlushN( FTC_Manager manager, - FT_UInt count ) - { - FTC_Node first = manager->nodes_list; - FTC_Node node; - FT_UInt result; - - - /* try to remove `count' nodes from the list */ - if ( first == NULL ) /* empty list! */ - return 0; - - /* go to last node - it's a circular list */ - node = FTC_NODE__PREV(first); - for ( result = 0; result < count; ) - { - FTC_Node prev = FTC_NODE__PREV( node ); - - - /* don't touch locked nodes */ - if ( node->ref_count <= 0 ) - { - ftc_node_destroy( node, manager ); - result++; - } - - if ( prev == manager->nodes_list ) - break; - - node = prev; - } - return result; - } - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( void ) - FTC_Manager_RemoveFaceID( FTC_Manager manager, - FTC_FaceID face_id ) - { - FT_UInt nn; - - /* this will remove all FTC_SizeNode that correspond to - * the face_id as well - */ - FTC_MruList_RemoveSelection( &manager->faces, NULL, face_id ); - - for ( nn = 0; nn < manager->num_caches; nn++ ) - FTC_Cache_RemoveFaceID( manager->caches[nn], face_id ); - } - - - /* documentation is in ftcache.h */ - - FT_EXPORT_DEF( void ) - FTC_Node_Unref( FTC_Node node, - FTC_Manager manager ) - { - if ( node && (FT_UInt)node->cache_index < manager->num_caches ) - node->ref_count--; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftcmru.c b/nx-X11/extras/freetype2/src/cache/ftcmru.c deleted file mode 100644 index d4f733a11..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftcmru.c +++ /dev/null @@ -1,355 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcmru.c */ -/* */ -/* FreeType MRU support (body). */ -/* */ -/* Copyright 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_MRU_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H - -#include "ftcerror.h" - - - FT_EXPORT_DEF( void ) - FTC_MruNode_Prepend( FTC_MruNode *plist, - FTC_MruNode node ) - { - FTC_MruNode first = *plist; - - - if ( first ) - { - FTC_MruNode last = first->prev; - - -#ifdef FT_DEBUG_ERROR - { - FTC_MruNode cnode = first; - - - do - { - if ( cnode == node ) - { - fprintf( stderr, "FTC_MruNode_Prepend: invalid action!\n" ); - exit( 2 ); - } - cnode = cnode->next; - - } while ( cnode != first ); - } -#endif - - first->prev = node; - last->next = node; - node->next = first; - node->prev = last; - } - else - { - node->next = node; - node->prev = node; - } - *plist = node; - } - - - FT_EXPORT_DEF( void ) - FTC_MruNode_Up( FTC_MruNode *plist, - FTC_MruNode node ) - { - FTC_MruNode first = *plist; - - - FT_ASSERT( first != NULL ); - - if ( first != node ) - { - FTC_MruNode prev, next, last; - - -#ifdef FT_DEBUG_ERROR - { - FTC_MruNode cnode = first; - do - { - if ( cnode == node ) - goto Ok; - cnode = cnode->next; - - } while ( cnode != first ); - - fprintf( stderr, "FTC_MruNode_Up: invalid action!\n" ); - exit( 2 ); - Ok: - } -#endif - prev = node->prev; - next = node->next; - - prev->next = next; - next->prev = prev; - - last = first->prev; - - last->next = node; - first->prev = node; - - node->next = first; - node->prev = last; - - *plist = node; - } - } - - - FT_EXPORT_DEF( void ) - FTC_MruNode_Remove( FTC_MruNode *plist, - FTC_MruNode node ) - { - FTC_MruNode first = *plist; - FTC_MruNode prev, next; - - - FT_ASSERT( first != NULL ); - -#ifdef FT_DEBUG_ERROR - { - FTC_MruNode cnode = first; - - - do - { - if ( cnode == node ) - goto Ok; - cnode = cnode->next; - - } while ( cnode != first ); - - fprintf( stderr, "FTC_MruNode_Remove: invalid action!\n" ); - exit( 2 ); - Ok: - } -#endif - - prev = node->prev; - next = node->next; - - prev->next = next; - next->prev = prev; - - if ( node == next ) - { - FT_ASSERT( first == node ); - FT_ASSERT( prev == node ); - - *plist = NULL; - } - else if ( node == first ) - *plist = next; - } - - - FT_EXPORT_DEF( void ) - FTC_MruList_Init( FTC_MruList list, - FTC_MruListClass clazz, - FT_UInt max_nodes, - FT_Pointer data, - FT_Memory memory ) - { - list->num_nodes = 0; - list->max_nodes = max_nodes; - list->nodes = NULL; - list->clazz = *clazz; - list->data = data; - list->memory = memory; - } - - - FT_EXPORT( void ) - FTC_MruList_Reset( FTC_MruList list ) - { - while ( list->nodes ) - FTC_MruList_Remove( list, list->nodes ); - - FT_ASSERT( list->num_nodes == 0 ); - } - - - FT_EXPORT( void ) - FTC_MruList_Done( FTC_MruList list ) - { - FTC_MruList_Reset( list ); - } - - - FT_EXPORT_DEF( FTC_MruNode ) - FTC_MruList_Find( FTC_MruList list, - FT_Pointer key ) - { - FTC_MruNode_CompareFunc compare = list->clazz.node_compare; - FTC_MruNode first, node; - - - first = list->nodes; - node = NULL; - - if ( first ) - { - node = first; - do - { - if ( compare( node, key ) ) - { - if ( node != first ) - FTC_MruNode_Up( &list->nodes, node ); - - return node; - } - - node = node->next; - - } while ( node != first); - } - - return NULL; - } - - - FT_EXPORT_DEF( FT_Error ) - FTC_MruList_New( FTC_MruList list, - FT_Pointer key, - FTC_MruNode *anode ) - { - FT_Error error; - FTC_MruNode node; - FT_Memory memory = list->memory; - - - if ( list->num_nodes >= list->max_nodes && list->max_nodes > 0 ) - { - node = list->nodes->prev; - - FT_ASSERT( node ); - - if ( list->clazz.node_reset ) - { - FTC_MruNode_Up( &list->nodes, node ); - - error = list->clazz.node_reset( node, key, list->data ); - if ( !error ) - goto Exit; - } - - FTC_MruNode_Remove( &list->nodes, node ); - list->num_nodes--; - - if ( list->clazz.node_done ) - list->clazz.node_done( node, list->data ); - } - else if ( FT_ALLOC( node, list->clazz.node_size ) ) - goto Exit; - - error = list->clazz.node_init( node, key, list->data ); - if ( error ) - goto Fail; - - FTC_MruNode_Prepend( &list->nodes, node ); - list->num_nodes++; - - Exit: - *anode = node; - return error; - - Fail: - if ( list->clazz.node_done ) - list->clazz.node_done( node, list->data ); - - FT_FREE( node ); - goto Exit; - } - - - FT_EXPORT( FT_Error ) - FTC_MruList_Lookup( FTC_MruList list, - FT_Pointer key, - FTC_MruNode *anode ) - { - FTC_MruNode node; - - - node = FTC_MruList_Find( list, key ); - if ( node == NULL ) - return FTC_MruList_New( list, key, anode ); - - *anode = node; - return 0; - } - - - FT_EXPORT_DEF( void ) - FTC_MruList_Remove( FTC_MruList list, - FTC_MruNode node ) - { - FTC_MruNode_Remove( &list->nodes, node ); - list->num_nodes--; - - { - FT_Memory memory = list->memory; - - - if ( list->clazz.node_done ) - list->clazz.node_done( node, list->data ); - - FT_FREE( node ); - } - } - - - FT_EXPORT_DEF( void ) - FTC_MruList_RemoveSelection( FTC_MruList list, - FTC_MruNode_CompareFunc selection, - FT_Pointer key ) - { - FTC_MruNode first, node, next; - - - first = list->nodes; - while ( first && ( selection == NULL || selection( first, key ) ) ) - { - FTC_MruList_Remove( list, first ); - first = list->nodes; - } - - if ( first ) - { - node = first->next; - while ( node != first ) - { - next = node->next; - - if ( selection( node, key ) ) - FTC_MruList_Remove( list, node ); - - node = next; - } - } - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/ftcsbits.c b/nx-X11/extras/freetype2/src/cache/ftcsbits.c deleted file mode 100644 index 2f8c5f8c6..000000000 --- a/nx-X11/extras/freetype2/src/cache/ftcsbits.c +++ /dev/null @@ -1,344 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftcsbits.c */ -/* */ -/* FreeType sbits manager (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_CACHE_H -#include FT_CACHE_INTERNAL_SBITS_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_ERRORS_H - -#include "ftccback.h" -#include "ftcerror.h" - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** SBIT CACHE NODES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - static FT_Error - ftc_sbit_copy_bitmap( FTC_SBit sbit, - FT_Bitmap* bitmap, - FT_Memory memory ) - { - FT_Error error; - FT_Int pitch = bitmap->pitch; - FT_ULong size; - - - if ( pitch < 0 ) - pitch = -pitch; - - size = (FT_ULong)( pitch * bitmap->rows ); - - if ( !FT_ALLOC( sbit->buffer, size ) ) - FT_MEM_COPY( sbit->buffer, bitmap->buffer, size ); - - return error; - } - - - FT_LOCAL_DEF( void ) - ftc_snode_free( FTC_Node ftcsnode, - FTC_Cache cache ) - { - FTC_SNode snode = (FTC_SNode)ftcsnode; - FTC_SBit sbit = snode->sbits; - FT_UInt count = snode->count; - FT_Memory memory = cache->memory; - - - for ( ; count > 0; sbit++, count-- ) - FT_FREE( sbit->buffer ); - - FTC_GNode_Done( FTC_GNODE( snode ), cache ); - - FT_FREE( snode ); - } - - - FT_EXPORT_DEF( void ) - FTC_SNode_Free( FTC_SNode snode, - FTC_Cache cache ) - { - ftc_snode_free( FTC_NODE( snode ), cache ); - } - - - static FT_Error - ftc_snode_load( FTC_SNode snode, - FTC_Manager manager, - FT_UInt gindex, - FT_ULong *asize ) - { - FT_Error error; - FTC_GNode gnode = FTC_GNODE( snode ); - FTC_Family family = gnode->family; - FT_Memory memory = manager->memory; - FT_Face face; - FTC_SBit sbit; - FTC_SFamilyClass clazz; - - - if ( (FT_UInt)(gindex - gnode->gindex) >= snode->count ) - { - FT_ERROR(( "ftc_snode_load: invalid glyph index" )); - return FTC_Err_Invalid_Argument; - } - - sbit = snode->sbits + ( gindex - gnode->gindex ); - clazz = (FTC_SFamilyClass)family->clazz; - - sbit->buffer = 0; - - error = clazz->family_load_glyph( family, gindex, manager, &face ); - if ( error ) - goto BadGlyph; - - { - FT_Int temp; - FT_GlyphSlot slot = face->glyph; - FT_Bitmap* bitmap = &slot->bitmap; - FT_Int xadvance, yadvance; - - - if ( slot->format != FT_GLYPH_FORMAT_BITMAP ) - { - FT_ERROR(( "%s: glyph loaded didn't return a bitmap!\n", - "ftc_snode_load" )); - goto BadGlyph; - } - - /* Check that our values fit into 8-bit containers! */ - /* If this is not the case, our bitmap is too large */ - /* and we will leave it as `missing' with sbit.buffer = 0 */ - -#define CHECK_CHAR( d ) ( temp = (FT_Char)d, temp == d ) -#define CHECK_BYTE( d ) ( temp = (FT_Byte)d, temp == d ) - - /* horizontal advance in pixels */ - xadvance = ( slot->metrics.horiAdvance + 32 ) >> 6; - yadvance = ( slot->metrics.vertAdvance + 32 ) >> 6; - - if ( !CHECK_BYTE( bitmap->rows ) || - !CHECK_BYTE( bitmap->width ) || - !CHECK_CHAR( bitmap->pitch ) || - !CHECK_CHAR( slot->bitmap_left ) || - !CHECK_CHAR( slot->bitmap_top ) || - !CHECK_CHAR( xadvance ) || - !CHECK_CHAR( yadvance ) ) - goto BadGlyph; - - sbit->width = (FT_Byte)bitmap->width; - sbit->height = (FT_Byte)bitmap->rows; - sbit->pitch = (FT_Char)bitmap->pitch; - sbit->left = (FT_Char)slot->bitmap_left; - sbit->top = (FT_Char)slot->bitmap_top; - sbit->xadvance = (FT_Char)xadvance; - sbit->yadvance = (FT_Char)yadvance; - sbit->format = (FT_Byte)bitmap->pixel_mode; - sbit->max_grays = (FT_Byte)(bitmap->num_grays - 1); - - /* copy the bitmap into a new buffer -- ignore error */ - error = ftc_sbit_copy_bitmap( sbit, bitmap, memory ); - - /* now, compute size */ - if ( asize ) - *asize = FT_ABS( sbit->pitch ) * sbit->height; - - } /* glyph loading successful */ - - /* ignore the errors that might have occurred -- */ - /* we mark unloaded glyphs with `sbit.buffer == 0' */ - /* and `width == 255', `height == 0' */ - /* */ - if ( error && error != FTC_Err_Out_Of_Memory ) - { - BadGlyph: - sbit->width = 255; - sbit->height = 0; - sbit->buffer = NULL; - error = 0; - if ( asize ) - *asize = 0; - } - - return error; - } - - - FT_EXPORT_DEF( FT_Error ) - FTC_SNode_New( FTC_SNode *psnode, - FTC_GQuery gquery, - FTC_Cache cache ) - { - FT_Memory memory = cache->memory; - FT_Error error; - FTC_SNode snode = NULL; - FT_UInt gindex = gquery->gindex; - FTC_Family family = gquery->family; - - FTC_SFamilyClass clazz = FTC_CACHE__SFAMILY_CLASS( cache ); - FT_UInt total; - - - total = clazz->family_get_count( family, cache->manager ); - if ( total == 0 || gindex >= total ) - { - error = FT_Err_Invalid_Argument; - goto Exit; - } - - if ( !FT_NEW( snode ) ) - { - FT_UInt count, start; - - - start = gindex - ( gindex % FTC_SBIT_ITEMS_PER_NODE ); - count = total - start; - if ( count > FTC_SBIT_ITEMS_PER_NODE ) - count = FTC_SBIT_ITEMS_PER_NODE; - - FTC_GNode_Init( FTC_GNODE( snode ), start, family ); - - snode->count = count; - - error = ftc_snode_load( snode, - cache->manager, - gindex, - NULL ); - if ( error ) - { - FTC_SNode_Free( snode, cache ); - snode = NULL; - } - } - - Exit: - *psnode = snode; - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - ftc_snode_new( FTC_Node *ftcpsnode, - FT_Pointer ftcgquery, - FTC_Cache cache ) - { - FTC_SNode *psnode = (FTC_SNode*)ftcpsnode; - FTC_GQuery gquery = (FTC_GQuery)ftcgquery; - - - return FTC_SNode_New( psnode, gquery, cache ); - } - - - FT_LOCAL_DEF( FT_ULong ) - ftc_snode_weight( FTC_Node ftcsnode, - FTC_Cache cache ) - { - FTC_SNode snode = (FTC_SNode)ftcsnode; - FT_UInt count = snode->count; - FTC_SBit sbit = snode->sbits; - FT_Int pitch; - FT_ULong size; - - FT_UNUSED( cache ); - - - FT_ASSERT( snode->count <= FTC_SBIT_ITEMS_PER_NODE ); - - /* the node itself */ - size = sizeof ( *snode ); - - for ( ; count > 0; count--, sbit++ ) - { - if ( sbit->buffer ) - { - pitch = sbit->pitch; - if ( pitch < 0 ) - pitch = -pitch; - - /* add the size of a given glyph image */ - size += pitch * sbit->height; - } - } - - return size; - } - - - FT_EXPORT_DEF( FT_ULong ) - FTC_SNode_Weight( FTC_SNode snode ) - { - return ftc_snode_weight( FTC_NODE( snode ), NULL ); - } - - - FT_LOCAL_DEF( FT_Bool ) - ftc_snode_compare( FTC_Node ftcsnode, - FT_Pointer ftcgquery, - FTC_Cache cache ) - { - FTC_SNode snode = (FTC_SNode)ftcsnode; - FTC_GQuery gquery = (FTC_GQuery)ftcgquery; - FTC_GNode gnode = FTC_GNODE( snode ); - FT_UInt gindex = gquery->gindex; - FT_Bool result; - - - result = FT_BOOL( gnode->family == gquery->family && - (FT_UInt)( gindex - gnode->gindex ) < snode->count ); - if ( result ) - { - /* check if we need to load the glyph bitmap now */ - FTC_SBit sbit = snode->sbits + ( gindex - gnode->gindex ); - - - if ( sbit->buffer == NULL && sbit->width != 255 ) - { - FT_ULong size; - - - if ( !ftc_snode_load( snode, cache->manager, - gindex, &size ) ) - { - cache->manager->cur_weight += size; - } - } - } - - return result; - } - - - FT_EXPORT_DEF( FT_Bool ) - FTC_SNode_Compare( FTC_SNode snode, - FTC_GQuery gquery, - FTC_Cache cache ) - { - return ftc_snode_compare( FTC_NODE( snode ), gquery, cache ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cache/rules.mk b/nx-X11/extras/freetype2/src/cache/rules.mk deleted file mode 100644 index 381104ad6..000000000 --- a/nx-X11/extras/freetype2/src/cache/rules.mk +++ /dev/null @@ -1,80 +0,0 @@ -# -# FreeType 2 Cache configuration rules -# - - -# Copyright 2000, 2001, 2003, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Cache driver directory -# -CACHE_DIR := $(SRC_DIR)/cache -CACHE_H_DIR := $(PUBLIC_DIR)/cache - -# compilation flags for the driver -# -CACHE_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CACHE_DIR)) - - -# Cache driver sources (i.e., C files) -# -CACHE_DRV_SRC := $(CACHE_DIR)/ftcmru.c \ - $(CACHE_DIR)/ftcmanag.c \ - $(CACHE_DIR)/ftcbasic.c \ - $(CACHE_DIR)/ftccache.c \ - $(CACHE_DIR)/ftcglyph.c \ - $(CACHE_DIR)/ftcsbits.c \ - $(CACHE_DIR)/ftcimage.c \ - $(CACHE_DIR)/ftccmap.c - -# Cache driver headers -# -CACHE_DRV_H := $(CACHE_H_DIR)/ftcmru.h \ - $(CACHE_H_DIR)/ftcmanag.h \ - $(CACHE_H_DIR)/ftcglyph.h \ - $(CACHE_H_DIR)/ftcimage.h \ - $(CACHE_H_DIR)/ftccmap.h \ - $(CACHE_DIR)/ftcerror.h \ - $(CACHE_DIR)/ftccback.h - - -# Cache driver object(s) -# -# CACHE_DRV_OBJ_M is used during `multi' builds. -# CACHE_DRV_OBJ_S is used during `single' builds. -# -CACHE_DRV_OBJ_M := $(CACHE_DRV_SRC:$(CACHE_DIR)/%.c=$(OBJ_DIR)/%.$O) -CACHE_DRV_OBJ_S := $(OBJ_DIR)/ftcache.$O - -# Cache driver source file for single build -# -CACHE_DRV_SRC_S := $(CACHE_DIR)/ftcache.c - - -# Cache driver - single object -# -$(CACHE_DRV_OBJ_S): $(CACHE_DRV_SRC_S) $(CACHE_DRV_SRC) \ - $(FREETYPE_H) $(CACHE_DRV_H) - $(CACHE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CACHE_DRV_SRC_S)) - - -# Cache driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(CACHE_DIR)/%.c $(FREETYPE_H) $(CACHE_DRV_H) - $(CACHE_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(CACHE_DRV_OBJ_S) -DRV_OBJS_M += $(CACHE_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/cff/Jamfile b/nx-X11/extras/freetype2/src/cff/Jamfile deleted file mode 100644 index dcf24c818..000000000 --- a/nx-X11/extras/freetype2/src/cff/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/cff Jamfile (c) 2001, 2002 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) cff ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = cffdrivr cffgload cffload cffobjs cffparse cffcmap ; - } - else - { - _sources = cff ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/cff Jamfile diff --git a/nx-X11/extras/freetype2/src/cff/cff.c b/nx-X11/extras/freetype2/src/cff/cff.c deleted file mode 100644 index e6d8954c9..000000000 --- a/nx-X11/extras/freetype2/src/cff/cff.c +++ /dev/null @@ -1,29 +0,0 @@ -/***************************************************************************/ -/* */ -/* cff.c */ -/* */ -/* FreeType OpenType driver component (body only). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "cffdrivr.c" -#include "cffparse.c" -#include "cffload.c" -#include "cffobjs.c" -#include "cffgload.c" -#include "cffcmap.c" - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffcmap.c b/nx-X11/extras/freetype2/src/cff/cffcmap.c deleted file mode 100644 index 82e04d236..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffcmap.c +++ /dev/null @@ -1,326 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffcmap.c */ -/* */ -/* CFF character mapping table (cmap) support (body). */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "cffcmap.h" -#include "cffload.h" - -#include "cfferrs.h" - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CFF STANDARD (AND EXPERT) ENCODING CMAPS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_CALLBACK_DEF( FT_Error ) - cff_cmap_encoding_init( CFF_CMapStd cmap ) - { - TT_Face face = (TT_Face)FT_CMAP_FACE( cmap ); - CFF_Font cff = (CFF_Font)face->extra.data; - CFF_Encoding encoding = &cff->encoding; - - - cmap->gids = encoding->codes; - - return 0; - } - - - FT_CALLBACK_DEF( void ) - cff_cmap_encoding_done( CFF_CMapStd cmap ) - { - cmap->gids = NULL; - } - - - FT_CALLBACK_DEF( FT_UInt ) - cff_cmap_encoding_char_index( CFF_CMapStd cmap, - FT_UInt32 char_code ) - { - FT_UInt result = 0; - - - if ( char_code < 256 ) - result = cmap->gids[char_code]; - - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - cff_cmap_encoding_char_next( CFF_CMapStd cmap, - FT_UInt32 *pchar_code ) - { - FT_UInt result = 0; - FT_UInt32 char_code = *pchar_code; - - - *pchar_code = 0; - - if ( char_code < 255 ) - { - FT_UInt code = (FT_UInt)(char_code + 1); - - - for (;;) - { - if ( code >= 256 ) - break; - - result = cmap->gids[code]; - if ( result != 0 ) - { - *pchar_code = code; - break; - } - - code++; - } - } - return result; - } - - - FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec - cff_cmap_encoding_class_rec = - { - sizeof ( CFF_CMapStdRec ), - - (FT_CMap_InitFunc) cff_cmap_encoding_init, - (FT_CMap_DoneFunc) cff_cmap_encoding_done, - (FT_CMap_CharIndexFunc)cff_cmap_encoding_char_index, - (FT_CMap_CharNextFunc) cff_cmap_encoding_char_next - }; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CFF SYNTHETIC UNICODE ENCODING CMAP *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_CALLBACK_DEF( FT_Int ) - cff_cmap_uni_pair_compare( const void* pair1, - const void* pair2 ) - { - FT_UInt32 u1 = ((CFF_CMapUniPair)pair1)->unicode; - FT_UInt32 u2 = ((CFF_CMapUniPair)pair2)->unicode; - - - if ( u1 < u2 ) - return -1; - - if ( u1 > u2 ) - return +1; - - return 0; - } - - - FT_CALLBACK_DEF( FT_Error ) - cff_cmap_unicode_init( CFF_CMapUnicode cmap ) - { - FT_Error error; - FT_UInt count; - TT_Face face = (TT_Face)FT_CMAP_FACE( cmap ); - FT_Memory memory = FT_FACE_MEMORY( face ); - CFF_Font cff = (CFF_Font)face->extra.data; - CFF_Charset charset = &cff->charset; - FT_Service_PsCMaps psnames = (FT_Service_PsCMaps)cff->psnames; - - - cmap->num_pairs = 0; - cmap->pairs = NULL; - - count = cff->num_glyphs; - - if ( !FT_NEW_ARRAY( cmap->pairs, count ) ) - { - FT_UInt n, new_count; - CFF_CMapUniPair pair; - FT_UInt32 uni_code; - - - pair = cmap->pairs; - for ( n = 0; n < count; n++ ) - { - FT_UInt sid = charset->sids[n]; - const char* gname; - - - gname = cff_index_get_sid_string( &cff->string_index, sid, psnames ); - - /* build unsorted pair table by matching glyph names */ - if ( gname ) - { - uni_code = psnames->unicode_value( gname ); - - if ( uni_code != 0 ) - { - pair->unicode = uni_code; - pair->gindex = n; - pair++; - } - - FT_FREE( gname ); - } - } - - new_count = (FT_UInt)( pair - cmap->pairs ); - if ( new_count == 0 ) - { - /* there are no unicode characters in here! */ - FT_FREE( cmap->pairs ); - error = CFF_Err_Invalid_Argument; - } - else - { - /* re-allocate if the new array is much smaller than the original */ - /* one */ - if ( new_count != count && new_count < count / 2 ) - { - (void)FT_RENEW_ARRAY( cmap->pairs, count, new_count ); - error = CFF_Err_Ok; - } - - /* sort the pairs table to allow efficient binary searches */ - ft_qsort( cmap->pairs, - new_count, - sizeof ( CFF_CMapUniPairRec ), - cff_cmap_uni_pair_compare ); - - cmap->num_pairs = new_count; - } - } - - return error; - } - - - FT_CALLBACK_DEF( void ) - cff_cmap_unicode_done( CFF_CMapUnicode cmap ) - { - FT_Face face = FT_CMAP_FACE( cmap ); - FT_Memory memory = FT_FACE_MEMORY( face ); - - - FT_FREE( cmap->pairs ); - cmap->num_pairs = 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - cff_cmap_unicode_char_index( CFF_CMapUnicode cmap, - FT_UInt32 char_code ) - { - FT_UInt min = 0; - FT_UInt max = cmap->num_pairs; - FT_UInt mid; - CFF_CMapUniPair pair; - - - while ( min < max ) - { - mid = min + ( max - min ) / 2; - pair = cmap->pairs + mid; - - if ( pair->unicode == char_code ) - return pair->gindex; - - if ( pair->unicode < char_code ) - min = mid + 1; - else - max = mid; - } - return 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - cff_cmap_unicode_char_next( CFF_CMapUnicode cmap, - FT_UInt32 *pchar_code ) - { - FT_UInt result = 0; - FT_UInt32 char_code = *pchar_code + 1; - - - Restart: - { - FT_UInt min = 0; - FT_UInt max = cmap->num_pairs; - FT_UInt mid; - CFF_CMapUniPair pair; - - - while ( min < max ) - { - mid = min + ( ( max - min ) >> 1 ); - pair = cmap->pairs + mid; - - if ( pair->unicode == char_code ) - { - result = pair->gindex; - if ( result != 0 ) - goto Exit; - - char_code++; - goto Restart; - } - - if ( pair->unicode < char_code ) - min = mid+1; - else - max = mid; - } - - /* we didn't find it, but we have a pair just above it */ - char_code = 0; - - if ( min < cmap->num_pairs ) - { - pair = cmap->pairs + min; - result = pair->gindex; - if ( result != 0 ) - char_code = pair->unicode; - } - } - - Exit: - *pchar_code = char_code; - return result; - } - - - FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec - cff_cmap_unicode_class_rec = - { - sizeof ( CFF_CMapUnicodeRec ), - - (FT_CMap_InitFunc) cff_cmap_unicode_init, - (FT_CMap_DoneFunc) cff_cmap_unicode_done, - (FT_CMap_CharIndexFunc)cff_cmap_unicode_char_index, - (FT_CMap_CharNextFunc) cff_cmap_unicode_char_next - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffcmap.h b/nx-X11/extras/freetype2/src/cff/cffcmap.h deleted file mode 100644 index ceb32cd3c..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffcmap.h +++ /dev/null @@ -1,87 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffcmap.h */ -/* */ -/* CFF character mapping table (cmap) support (specification). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFFCMAP_H__ -#define __CFFCMAP_H__ - -#include "cffobjs.h" - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE1 STANDARD (AND EXPERT) ENCODING CMAPS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* standard (and expert) encoding cmaps */ - typedef struct CFF_CMapStdRec_* CFF_CMapStd; - - typedef struct CFF_CMapStdRec_ - { - FT_CMapRec cmap; - FT_UShort* gids; /* up to 256 elements */ - - } CFF_CMapStdRec; - - - FT_CALLBACK_TABLE const FT_CMap_ClassRec - cff_cmap_encoding_class_rec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CFF SYNTHETIC UNICODE ENCODING CMAP *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* unicode (synthetic) cmaps */ - typedef struct CFF_CMapUnicodeRec_* CFF_CMapUnicode; - - typedef struct CFF_CMapUniPairRec_ - { - FT_UInt32 unicode; - FT_UInt gindex; - - } CFF_CMapUniPairRec, *CFF_CMapUniPair; - - - typedef struct CFF_CMapUnicodeRec_ - { - FT_CMapRec cmap; - FT_UInt num_pairs; - CFF_CMapUniPair pairs; - - } CFF_CMapUnicodeRec; - - - FT_CALLBACK_TABLE const FT_CMap_ClassRec - cff_cmap_unicode_class_rec; - - -FT_END_HEADER - -#endif /* __CFFCMAP_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffdrivr.c b/nx-X11/extras/freetype2/src/cff/cffdrivr.c deleted file mode 100644 index e1f274e84..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffdrivr.c +++ /dev/null @@ -1,480 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffdrivr.c */ -/* */ -/* OpenType font driver implementation (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_TRUETYPE_IDS_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_SERVICE_POSTSCRIPT_INFO_H -#include FT_SERVICE_TT_CMAP_H - -#include "cffdrivr.h" -#include "cffgload.h" -#include "cffload.h" -#include "cffcmap.h" - -#include "cfferrs.h" - -#include FT_SERVICE_XFREE86_NAME_H -#include FT_SERVICE_GLYPH_DICT_H - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cffdriver - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** F A C E S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#undef PAIR_TAG -#define PAIR_TAG( left, right ) ( ( (FT_ULong)left << 16 ) | \ - (FT_ULong)right ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Get_Kerning */ - /* */ - /* <Description> */ - /* A driver method used to return the kerning vector between two */ - /* glyphs of the same face. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* left_glyph :: The index of the left glyph in the kern pair. */ - /* */ - /* right_glyph :: The index of the right glyph in the kern pair. */ - /* */ - /* <Output> */ - /* kerning :: The kerning vector. This is in font units for */ - /* scalable formats, and in pixels for fixed-sizes */ - /* formats. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only horizontal layouts (left-to-right & right-to-left) are */ - /* supported by this function. Other layouts, or more sophisticated */ - /* kernings, are out of scope of this method (the basic driver */ - /* interface is meant to be simple). */ - /* */ - /* They can be implemented by format-specific interfaces. */ - /* */ - FT_CALLBACK_DEF( FT_Error ) - Get_Kerning( FT_Face ttface, /* TT_Face */ - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ) - { - TT_Face face = (TT_Face)ttface; - TT_Kern0_Pair pair; - - - if ( !face ) - return CFF_Err_Invalid_Face_Handle; - - kerning->x = 0; - kerning->y = 0; - - if ( face->kern_pairs ) - { - /* there are some kerning pairs in this font file! */ - FT_ULong search_tag = PAIR_TAG( left_glyph, right_glyph ); - FT_Long left, right; - - - left = 0; - right = face->num_kern_pairs - 1; - - while ( left <= right ) - { - FT_Long middle = left + ( ( right - left ) >> 1 ); - FT_ULong cur_pair; - - - pair = face->kern_pairs + middle; - cur_pair = PAIR_TAG( pair->left, pair->right ); - - if ( cur_pair == search_tag ) - goto Found; - - if ( cur_pair < search_tag ) - left = middle + 1; - else - right = middle - 1; - } - } - - Exit: - return CFF_Err_Ok; - - Found: - kerning->x = pair->value; - goto Exit; - } - - -#undef PAIR_TAG - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Load_Glyph */ - /* */ - /* <Description> */ - /* A driver method used to load a glyph within a given glyph slot. */ - /* */ - /* <Input> */ - /* slot :: A handle to the target slot object where the glyph */ - /* will be loaded. */ - /* */ - /* size :: A handle to the source face size at which the glyph */ - /* must be scaled, loaded, etc. */ - /* */ - /* glyph_index :: The index of the glyph in the font file. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* FT_LOAD_??? constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_CALLBACK_DEF( FT_Error ) - Load_Glyph( FT_GlyphSlot cffslot, /* CFF_GlyphSlot */ - FT_Size cffsize, /* CFF_Size */ - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - FT_Error error; - CFF_GlyphSlot slot = (CFF_GlyphSlot)cffslot; - CFF_Size size = (CFF_Size)cffsize; - - - if ( !slot ) - return CFF_Err_Invalid_Slot_Handle; - - /* check whether we want a scaled outline or bitmap */ - if ( !size ) - load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - - if ( load_flags & FT_LOAD_NO_SCALE ) - size = NULL; - - /* reset the size object if necessary */ - if ( size ) - { - /* these two objects must have the same parent */ - if ( cffsize->face != cffslot->face ) - return CFF_Err_Invalid_Face_Handle; - } - - /* now load the glyph outline if necessary */ - error = cff_slot_load( slot, size, glyph_index, load_flags ); - - /* force drop-out mode to 2 - irrelevant now */ - /* slot->outline.dropout_mode = 2; */ - - return error; - } - - - /* - * GLYPH DICT SERVICE - * - */ - - static FT_Error - cff_get_glyph_name( CFF_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) - { - CFF_Font font = (CFF_Font)face->extra.data; - FT_Memory memory = FT_FACE_MEMORY( face ); - FT_String* gname; - FT_UShort sid; - FT_Service_PsCMaps psnames; - FT_Error error; - - - FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); - if ( !psnames ) - { - FT_ERROR(( "cff_get_glyph_name:" )); - FT_ERROR(( " cannot get glyph name from CFF & CEF fonts\n" )); - FT_ERROR(( " " )); - FT_ERROR(( " without the `PSNames' module\n" )); - error = CFF_Err_Unknown_File_Format; - goto Exit; - } - - /* first, locate the sid in the charset table */ - sid = font->charset.sids[glyph_index]; - - /* now, lookup the name itself */ - gname = cff_index_get_sid_string( &font->string_index, sid, psnames ); - - if ( gname && buffer_max > 0 ) - { - FT_UInt len = (FT_UInt)ft_strlen( gname ); - - - if ( len >= buffer_max ) - len = buffer_max - 1; - - FT_MEM_COPY( buffer, gname, len ); - ((FT_Byte*)buffer)[len] = 0; - } - - FT_FREE( gname ); - error = CFF_Err_Ok; - - Exit: - return error; - } - - - static FT_UInt - cff_get_name_index( CFF_Face face, - FT_String* glyph_name ) - { - CFF_Font cff; - CFF_Charset charset; - FT_Service_PsCMaps psnames; - FT_Memory memory = FT_FACE_MEMORY( face ); - FT_String* name; - FT_UShort sid; - FT_UInt i; - FT_Int result; - - - cff = (CFF_FontRec *)face->extra.data; - charset = &cff->charset; - - FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); - if ( !psnames ) - return 0; - - for ( i = 0; i < cff->num_glyphs; i++ ) - { - sid = charset->sids[i]; - - if ( sid > 390 ) - name = cff_index_get_name( &cff->string_index, sid - 391 ); - else - name = (FT_String *)psnames->adobe_std_strings( sid ); - - result = ft_strcmp( glyph_name, name ); - - if ( sid > 390 ) - FT_FREE( name ); - - if ( !result ) - return i; - } - - return 0; - } - - - static const FT_Service_GlyphDictRec cff_service_glyph_dict = - { - (FT_GlyphDict_GetNameFunc) cff_get_glyph_name, - (FT_GlyphDict_NameIndexFunc)cff_get_name_index, - }; - - - /* - * POSTSCRIPT INFO SERVICE - * - */ - - static FT_Int - cff_ps_has_glyph_names( FT_Face face ) - { - return ( face->face_flags & FT_FACE_FLAG_GLYPH_NAMES ) > 0; - } - - - static const FT_Service_PsInfoRec cff_service_ps_info = - { - (PS_GetFontInfoFunc) NULL, /* unsupported with CFF fonts */ - (PS_HasGlyphNamesFunc)cff_ps_has_glyph_names - }; - - - /* - * TT CMAP INFO - * - * If the charmap is a synthetic Unicode encoding cmap or - * a Type 1 standard (or expert) encoding cmap, hide TT CMAP INFO - * service defined in SFNT module. - * - * Otherwise call the service function in the sfnt module. - * - */ - static FT_Error - cff_get_cmap_info( FT_CharMap charmap, - TT_CMapInfo *cmap_info ) - { - FT_CMap cmap = FT_CMAP( charmap ); - FT_Error error = CFF_Err_Ok; - - - cmap_info->language = 0; - - if ( cmap->clazz != &cff_cmap_encoding_class_rec && - cmap->clazz != &cff_cmap_unicode_class_rec ) - { - FT_Face face = FT_CMAP_FACE( cmap ); - FT_Library library = FT_FACE_LIBRARY( face ); - FT_Module sfnt = FT_Get_Module( library, "sfnt" ); - FT_Service_TTCMaps service = - (FT_Service_TTCMaps)ft_module_get_service( sfnt, - FT_SERVICE_ID_TT_CMAP ); - - - if ( service && service->get_cmap_info ) - error = service->get_cmap_info( charmap, cmap_info ); - } - - return error; - } - - - static const FT_Service_TTCMapsRec cff_service_get_cmap_info = - { - (TT_CMap_Info_GetFunc)cff_get_cmap_info - }; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** D R I V E R I N T E R F A C E ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - static const FT_ServiceDescRec cff_services[] = - { - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CFF }, - { FT_SERVICE_ID_POSTSCRIPT_INFO, &cff_service_ps_info }, -#ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES - { FT_SERVICE_ID_GLYPH_DICT, &cff_service_glyph_dict }, -#endif - { FT_SERVICE_ID_TT_CMAP, &cff_service_get_cmap_info }, - { NULL, NULL } - }; - - - FT_CALLBACK_DEF( FT_Module_Interface ) - cff_get_interface( FT_Module driver, /* CFF_Driver */ - const char* module_interface ) - { - FT_Module sfnt; - FT_Module_Interface result; - - - result = ft_service_list_lookup( cff_services, module_interface ); - if ( result != NULL ) - return result; - - /* we pass our request to the `sfnt' module */ - sfnt = FT_Get_Module( driver->library, "sfnt" ); - - return sfnt ? sfnt->clazz->get_interface( sfnt, module_interface ) : 0; - } - - - /* The FT_DriverInterface structure is defined in ftdriver.h. */ - - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec cff_driver_class = - { - /* begin with the FT_Module_Class fields */ - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_SCALABLE | - FT_MODULE_DRIVER_HAS_HINTER, - - sizeof( CFF_DriverRec ), - "cff", - 0x10000L, - 0x20000L, - - 0, /* module-specific interface */ - - cff_driver_init, - cff_driver_done, - cff_get_interface, - }, - - /* now the specific driver fields */ - sizeof( TT_FaceRec ), - sizeof( CFF_SizeRec ), - sizeof( CFF_GlyphSlotRec ), - - cff_face_init, - cff_face_done, - cff_size_init, - cff_size_done, - cff_slot_init, - cff_slot_done, - - cff_point_size_reset, - cff_size_reset, - - Load_Glyph, - - Get_Kerning, - 0, /* FT_Face_AttachFunc */ - 0 /* FT_Face_GetAdvancesFunc */ - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffdrivr.h b/nx-X11/extras/freetype2/src/cff/cffdrivr.h deleted file mode 100644 index 553848c0a..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffdrivr.h +++ /dev/null @@ -1,39 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffdrivr.h */ -/* */ -/* High-level OpenType driver interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFFDRIVER_H__ -#define __CFFDRIVER_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H - - -FT_BEGIN_HEADER - - - FT_CALLBACK_TABLE - const FT_Driver_ClassRec cff_driver_class; - - -FT_END_HEADER - -#endif /* __CFFDRIVER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cfferrs.h b/nx-X11/extras/freetype2/src/cff/cfferrs.h deleted file mode 100644 index 1b2a5c95c..000000000 --- a/nx-X11/extras/freetype2/src/cff/cfferrs.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************/ -/* */ -/* cfferrs.h */ -/* */ -/* CFF error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the CFF error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __CFFERRS_H__ -#define __CFFERRS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX CFF_Err_ -#define FT_ERR_BASE FT_Mod_Err_CFF - - -#include FT_ERRORS_H - -#endif /* __CFFERRS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffgload.c b/nx-X11/extras/freetype2/src/cff/cffgload.c deleted file mode 100644 index 934dcb07d..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffgload.c +++ /dev/null @@ -1,2594 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffgload.c */ -/* */ -/* OpenType Glyph Loader (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_OUTLINE_H -#include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H - -#include "cffobjs.h" -#include "cffload.h" -#include "cffgload.h" - -#include "cfferrs.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cffgload - - - typedef enum CFF_Operator_ - { - cff_op_unknown = 0, - - cff_op_rmoveto, - cff_op_hmoveto, - cff_op_vmoveto, - - cff_op_rlineto, - cff_op_hlineto, - cff_op_vlineto, - - cff_op_rrcurveto, - cff_op_hhcurveto, - cff_op_hvcurveto, - cff_op_rcurveline, - cff_op_rlinecurve, - cff_op_vhcurveto, - cff_op_vvcurveto, - - cff_op_flex, - cff_op_hflex, - cff_op_hflex1, - cff_op_flex1, - - cff_op_endchar, - - cff_op_hstem, - cff_op_vstem, - cff_op_hstemhm, - cff_op_vstemhm, - - cff_op_hintmask, - cff_op_cntrmask, - cff_op_dotsection, /* deprecated, acts as no-op */ - - cff_op_abs, - cff_op_add, - cff_op_sub, - cff_op_div, - cff_op_neg, - cff_op_random, - cff_op_mul, - cff_op_sqrt, - - cff_op_blend, - - cff_op_drop, - cff_op_exch, - cff_op_index, - cff_op_roll, - cff_op_dup, - - cff_op_put, - cff_op_get, - cff_op_store, - cff_op_load, - - cff_op_and, - cff_op_or, - cff_op_not, - cff_op_eq, - cff_op_ifelse, - - cff_op_callsubr, - cff_op_callgsubr, - cff_op_return, - - /* do not remove */ - cff_op_max - - } CFF_Operator; - - -#define CFF_COUNT_CHECK_WIDTH 0x80 -#define CFF_COUNT_EXACT 0x40 -#define CFF_COUNT_CLEAR_STACK 0x20 - - - static const FT_Byte cff_argument_counts[] = - { - 0, /* unknown */ - - 2 | CFF_COUNT_CHECK_WIDTH | CFF_COUNT_EXACT, /* rmoveto */ - 1 | CFF_COUNT_CHECK_WIDTH | CFF_COUNT_EXACT, - 1 | CFF_COUNT_CHECK_WIDTH | CFF_COUNT_EXACT, - - 0 | CFF_COUNT_CLEAR_STACK, /* rlineto */ - 0 | CFF_COUNT_CLEAR_STACK, - 0 | CFF_COUNT_CLEAR_STACK, - - 0 | CFF_COUNT_CLEAR_STACK, /* rrcurveto */ - 0 | CFF_COUNT_CLEAR_STACK, - 0 | CFF_COUNT_CLEAR_STACK, - 0 | CFF_COUNT_CLEAR_STACK, - 0 | CFF_COUNT_CLEAR_STACK, - 0 | CFF_COUNT_CLEAR_STACK, - 0 | CFF_COUNT_CLEAR_STACK, - - 13, /* flex */ - 7, - 9, - 11, - - 0 | CFF_COUNT_CHECK_WIDTH, /* endchar */ - - 2 | CFF_COUNT_CHECK_WIDTH, /* hstem */ - 2 | CFF_COUNT_CHECK_WIDTH, - 2 | CFF_COUNT_CHECK_WIDTH, - 2 | CFF_COUNT_CHECK_WIDTH, - - 0 | CFF_COUNT_CHECK_WIDTH, /* hintmask */ - 0 | CFF_COUNT_CHECK_WIDTH, /* cntrmask */ - 0, /* dotsection */ - - 1, /* abs */ - 2, - 2, - 2, - 1, - 0, - 2, - 1, - - 1, /* blend */ - - 1, /* drop */ - 2, - 1, - 2, - 1, - - 2, /* put */ - 1, - 4, - 3, - - 2, /* and */ - 2, - 1, - 2, - 4, - - 1, /* callsubr */ - 1, - 0 - }; - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** *********/ - /********** GENERIC CHARSTRING PARSING *********/ - /********** *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cff_builder_init */ - /* */ - /* <Description> */ - /* Initializes a given glyph builder. */ - /* */ - /* <InOut> */ - /* builder :: A pointer to the glyph builder to initialize. */ - /* */ - /* <Input> */ - /* face :: The current face object. */ - /* */ - /* size :: The current size object. */ - /* */ - /* glyph :: The current glyph object. */ - /* */ - static void - cff_builder_init( CFF_Builder* builder, - TT_Face face, - CFF_Size size, - CFF_GlyphSlot glyph, - FT_Bool hinting ) - { - builder->path_begun = 0; - builder->load_points = 1; - - builder->face = face; - builder->glyph = glyph; - builder->memory = face->root.memory; - - if ( glyph ) - { - FT_GlyphLoader loader = glyph->root.internal->loader; - - - builder->loader = loader; - builder->base = &loader->base.outline; - builder->current = &loader->current.outline; - FT_GlyphLoader_Rewind( loader ); - - builder->hints_globals = 0; - builder->hints_funcs = 0; - - if ( hinting && size ) - { - builder->hints_globals = size->root.internal; - builder->hints_funcs = glyph->root.internal->glyph_hints; - } - } - - if ( size ) - { - builder->scale_x = size->root.metrics.x_scale; - builder->scale_y = size->root.metrics.y_scale; - } - - builder->pos_x = 0; - builder->pos_y = 0; - - builder->left_bearing.x = 0; - builder->left_bearing.y = 0; - builder->advance.x = 0; - builder->advance.y = 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cff_builder_done */ - /* */ - /* <Description> */ - /* Finalizes a given glyph builder. Its contents can still be used */ - /* after the call, but the function saves important information */ - /* within the corresponding glyph slot. */ - /* */ - /* <Input> */ - /* builder :: A pointer to the glyph builder to finalize. */ - /* */ - static void - cff_builder_done( CFF_Builder* builder ) - { - CFF_GlyphSlot glyph = builder->glyph; - - - if ( glyph ) - glyph->root.outline = *builder->base; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cff_compute_bias */ - /* */ - /* <Description> */ - /* Computes the bias value in dependence of the number of glyph */ - /* subroutines. */ - /* */ - /* <Input> */ - /* num_subrs :: The number of glyph subroutines. */ - /* */ - /* <Return> */ - /* The bias value. */ - static FT_Int - cff_compute_bias( FT_UInt num_subrs ) - { - FT_Int result; - - - if ( num_subrs < 1240 ) - result = 107; - else if ( num_subrs < 33900U ) - result = 1131; - else - result = 32768U; - - return result; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cff_decoder_init */ - /* */ - /* <Description> */ - /* Initializes a given glyph decoder. */ - /* */ - /* <InOut> */ - /* decoder :: A pointer to the glyph builder to initialize. */ - /* */ - /* <Input> */ - /* face :: The current face object. */ - /* */ - /* size :: The current size object. */ - /* */ - /* slot :: The current glyph object. */ - /* */ - FT_LOCAL_DEF( void ) - cff_decoder_init( CFF_Decoder* decoder, - TT_Face face, - CFF_Size size, - CFF_GlyphSlot slot, - FT_Bool hinting, - FT_Render_Mode hint_mode ) - { - CFF_Font cff = (CFF_Font)face->extra.data; - - - /* clear everything */ - FT_MEM_ZERO( decoder, sizeof ( *decoder ) ); - - /* initialize builder */ - cff_builder_init( &decoder->builder, face, size, slot, hinting ); - - /* initialize Type2 decoder */ - decoder->num_globals = cff->num_global_subrs; - decoder->globals = cff->global_subrs; - decoder->globals_bias = cff_compute_bias( decoder->num_globals ); - - decoder->hint_mode = hint_mode; - } - - - /* this function is used to select the locals subrs array */ - FT_LOCAL_DEF( void ) - cff_decoder_prepare( CFF_Decoder* decoder, - FT_UInt glyph_index ) - { - CFF_Font cff = (CFF_Font)decoder->builder.face->extra.data; - CFF_SubFont sub = &cff->top_font; - - - /* manage CID fonts */ - if ( cff->num_subfonts >= 1 ) - { - FT_Byte fd_index = cff_fd_select_get( &cff->fd_select, glyph_index ); - - - sub = cff->subfonts[fd_index]; - } - - decoder->num_locals = sub->num_local_subrs; - decoder->locals = sub->local_subrs; - decoder->locals_bias = cff_compute_bias( decoder->num_locals ); - - decoder->glyph_width = sub->private_dict.default_width; - decoder->nominal_width = sub->private_dict.nominal_width; - } - - - /* check that there is enough space for `count' more points */ - static FT_Error - check_points( CFF_Builder* builder, - FT_Int count ) - { - return FT_GlyphLoader_CheckPoints( builder->loader, count, 0 ); - } - - - /* add a new point, do not check space */ - static void - cff_builder_add_point( CFF_Builder* builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ) - { - FT_Outline* outline = builder->current; - - - if ( builder->load_points ) - { - FT_Vector* point = outline->points + outline->n_points; - FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points; - - - point->x = x >> 16; - point->y = y >> 16; - *control = (FT_Byte)( flag ? FT_CURVE_TAG_ON : FT_CURVE_TAG_CUBIC ); - - builder->last = *point; - } - - outline->n_points++; - } - - - /* check space for a new on-curve point, then add it */ - static FT_Error - cff_builder_add_point1( CFF_Builder* builder, - FT_Pos x, - FT_Pos y ) - { - FT_Error error; - - - error = check_points( builder, 1 ); - if ( !error ) - cff_builder_add_point( builder, x, y, 1 ); - - return error; - } - - - /* check space for a new contour, then add it */ - static FT_Error - cff_builder_add_contour( CFF_Builder* builder ) - { - FT_Outline* outline = builder->current; - FT_Error error; - - - if ( !builder->load_points ) - { - outline->n_contours++; - return CFF_Err_Ok; - } - - error = FT_GlyphLoader_CheckPoints( builder->loader, 0, 1 ); - if ( !error ) - { - if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = - (short)( outline->n_points - 1 ); - - outline->n_contours++; - } - - return error; - } - - - /* if a path was begun, add its first on-curve point */ - static FT_Error - cff_builder_start_point( CFF_Builder* builder, - FT_Pos x, - FT_Pos y ) - { - FT_Error error = CFF_Err_Ok; - - - /* test whether we are building a new contour */ - if ( !builder->path_begun ) - { - builder->path_begun = 1; - error = cff_builder_add_contour( builder ); - if ( !error ) - error = cff_builder_add_point1( builder, x, y ); - } - - return error; - } - - - /* close the current contour */ - static void - cff_builder_close_contour( CFF_Builder* builder ) - { - FT_Outline* outline = builder->current; - - - /* XXXX: We must not include the last point in the path if it */ - /* is located on the first point. */ - if ( outline->n_points > 1 ) - { - FT_Int first = 0; - FT_Vector* p1 = outline->points + first; - FT_Vector* p2 = outline->points + outline->n_points - 1; - FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1; - - - if ( outline->n_contours > 1 ) - { - first = outline->contours[outline->n_contours - 2] + 1; - p1 = outline->points + first; - } - - /* `delete' last point only if it coincides with the first */ - /* point and if it is not a control point (which can happen). */ - if ( p1->x == p2->x && p1->y == p2->y ) - if ( *control == FT_CURVE_TAG_ON ) - outline->n_points--; - } - - if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = - (short)( outline->n_points - 1 ); - } - - - static FT_Int - cff_lookup_glyph_by_stdcharcode( CFF_Font cff, - FT_Int charcode ) - { - FT_UInt n; - FT_UShort glyph_sid; - - - /* CID-keyed fonts don't have glyph names */ - if ( !cff->charset.sids ) - return -1; - - /* check range of standard char code */ - if ( charcode < 0 || charcode > 255 ) - return -1; - - /* Get code to SID mapping from `cff_standard_encoding'. */ - glyph_sid = cff_get_standard_encoding( (FT_UInt)charcode ); - - for ( n = 0; n < cff->num_glyphs; n++ ) - { - if ( cff->charset.sids[n] == glyph_sid ) - return n; - } - - return -1; - } - - - static FT_Error - cff_get_glyph_data( TT_Face face, - FT_UInt glyph_index, - FT_Byte** pointer, - FT_ULong* length ) - { -#ifdef FT_CONFIG_OPTION_INCREMENTAL - /* For incremental fonts get the character data using the */ - /* callback function. */ - if ( face->root.internal->incremental_interface ) - { - FT_Data data; - FT_Error error = - face->root.internal->incremental_interface->funcs->get_glyph_data( - face->root.internal->incremental_interface->object, - glyph_index, &data ); - - - *pointer = (FT_Byte*)data.pointer; - *length = data.length; - - return error; - } - else -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - { - CFF_Font cff = (CFF_Font)(face->extra.data); - - - return cff_index_access_element( &cff->charstrings_index, glyph_index, - pointer, length ); - } - } - - - static void - cff_free_glyph_data( TT_Face face, - FT_Byte** pointer, - FT_ULong length ) - { -#ifndef FT_CONFIG_OPTION_INCREMENTAL - FT_UNUSED( length ); -#endif - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - /* For incremental fonts get the character data using the */ - /* callback function. */ - if ( face->root.internal->incremental_interface ) - { - FT_Data data; - - - data.pointer = *pointer; - data.length = length; - - face->root.internal->incremental_interface->funcs->free_glyph_data( - face->root.internal->incremental_interface->object,&data ); - } - else -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - { - CFF_Font cff = (CFF_Font)(face->extra.data); - - - cff_index_forget_element( &cff->charstrings_index, pointer ); - } - } - - - static FT_Error - cff_operator_seac( CFF_Decoder* decoder, - FT_Pos adx, - FT_Pos ady, - FT_Int bchar, - FT_Int achar ) - { - FT_Error error; - CFF_Builder* builder = &decoder->builder; - FT_Int bchar_index, achar_index; - TT_Face face = decoder->builder.face; - FT_Vector left_bearing, advance; - FT_Byte* charstring; - FT_ULong charstring_len; - - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - /* Incremental fonts don't necessarily have valid charsets. */ - /* They use the character code, not the glyph index, in this case. */ - if ( face->root.internal->incremental_interface ) - { - bchar_index = bchar; - achar_index = achar; - } - else -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - { - CFF_Font cff = (CFF_Font)(face->extra.data); - - - bchar_index = cff_lookup_glyph_by_stdcharcode( cff, bchar ); - achar_index = cff_lookup_glyph_by_stdcharcode( cff, achar ); - } - - if ( bchar_index < 0 || achar_index < 0 ) - { - FT_ERROR(( "cff_operator_seac:" )); - FT_ERROR(( " invalid seac character code arguments\n" )); - return CFF_Err_Syntax_Error; - } - - /* If we are trying to load a composite glyph, do not load the */ - /* accent character and return the array of subglyphs. */ - if ( builder->no_recurse ) - { - FT_GlyphSlot glyph = (FT_GlyphSlot)builder->glyph; - FT_GlyphLoader loader = glyph->internal->loader; - FT_SubGlyph subg; - - - /* reallocate subglyph array if necessary */ - error = FT_GlyphLoader_CheckSubGlyphs( loader, 2 ); - if ( error ) - goto Exit; - - subg = loader->current.subglyphs; - - /* subglyph 0 = base character */ - subg->index = bchar_index; - subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES | - FT_SUBGLYPH_FLAG_USE_MY_METRICS; - subg->arg1 = 0; - subg->arg2 = 0; - subg++; - - /* subglyph 1 = accent character */ - subg->index = achar_index; - subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES; - subg->arg1 = (FT_Int)( adx >> 16 ); - subg->arg2 = (FT_Int)( ady >> 16 ); - - /* set up remaining glyph fields */ - glyph->num_subglyphs = 2; - glyph->subglyphs = loader->base.subglyphs; - glyph->format = FT_GLYPH_FORMAT_COMPOSITE; - - loader->current.num_subglyphs = 2; - } - - FT_GlyphLoader_Prepare( builder->loader ); - - /* First load `bchar' in builder */ - error = cff_get_glyph_data( face, bchar_index, - &charstring, &charstring_len ); - if ( !error ) - { - error = cff_decoder_parse_charstrings( decoder, charstring, - charstring_len ); - - if ( error ) - goto Exit; - - cff_free_glyph_data( face, &charstring, charstring_len ); - } - - /* Save the left bearing and width of the base character */ - /* as they will be erased by the next load. */ - - left_bearing = builder->left_bearing; - advance = builder->advance; - - builder->left_bearing.x = 0; - builder->left_bearing.y = 0; - - builder->pos_x = adx; - builder->pos_y = ady; - - /* Now load `achar' on top of the base outline. */ - error = cff_get_glyph_data( face, achar_index, - &charstring, &charstring_len ); - if ( !error ) - { - error = cff_decoder_parse_charstrings( decoder, charstring, - charstring_len ); - - if ( error ) - goto Exit; - - cff_free_glyph_data( face, &charstring, charstring_len ); - } - - /* Restore the left side bearing and advance width */ - /* of the base character. */ - builder->left_bearing = left_bearing; - builder->advance = advance; - - builder->pos_x = 0; - builder->pos_y = 0; - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cff_decoder_parse_charstrings */ - /* */ - /* <Description> */ - /* Parses a given Type 2 charstrings program. */ - /* */ - /* <InOut> */ - /* decoder :: The current Type 1 decoder. */ - /* */ - /* <Input> */ - /* charstring_base :: The base of the charstring stream. */ - /* */ - /* charstring_len :: The length in bytes of the charstring stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - cff_decoder_parse_charstrings( CFF_Decoder* decoder, - FT_Byte* charstring_base, - FT_ULong charstring_len ) - { - FT_Error error; - CFF_Decoder_Zone* zone; - FT_Byte* ip; - FT_Byte* limit; - CFF_Builder* builder = &decoder->builder; - FT_Pos x, y; - FT_Fixed seed; - FT_Fixed* stack; - - T2_Hints_Funcs hinter; - - - /* set default width */ - decoder->num_hints = 0; - decoder->read_width = 1; - - /* compute random seed from stack address of parameter */ - seed = (FT_Fixed)(char*)&seed ^ - (FT_Fixed)(char*)&decoder ^ - (FT_Fixed)(char*)&charstring_base; - seed = ( seed ^ ( seed >> 10 ) ^ ( seed >> 20 ) ) & 0xFFFFL; - if ( seed == 0 ) - seed = 0x7384; - - /* initialize the decoder */ - decoder->top = decoder->stack; - decoder->zone = decoder->zones; - zone = decoder->zones; - stack = decoder->top; - - hinter = (T2_Hints_Funcs)builder->hints_funcs; - - builder->path_begun = 0; - - zone->base = charstring_base; - limit = zone->limit = charstring_base + charstring_len; - ip = zone->cursor = zone->base; - - error = CFF_Err_Ok; - - x = builder->pos_x; - y = builder->pos_y; - - /* begin hints recording session, if any */ - if ( hinter ) - hinter->open( hinter->hints ); - - /* now execute loop */ - while ( ip < limit ) - { - CFF_Operator op; - FT_Byte v; - - - /********************************************************************/ - /* */ - /* Decode operator or operand */ - /* */ - v = *ip++; - if ( v >= 32 || v == 28 ) - { - FT_Int shift = 16; - FT_Int32 val; - - - /* this is an operand, push it on the stack */ - if ( v == 28 ) - { - if ( ip + 1 >= limit ) - goto Syntax_Error; - val = (FT_Short)( ( (FT_Short)ip[0] << 8 ) | ip[1] ); - ip += 2; - } - else if ( v < 247 ) - val = (FT_Long)v - 139; - else if ( v < 251 ) - { - if ( ip >= limit ) - goto Syntax_Error; - val = ( (FT_Long)v - 247 ) * 256 + *ip++ + 108; - } - else if ( v < 255 ) - { - if ( ip >= limit ) - goto Syntax_Error; - val = -( (FT_Long)v - 251 ) * 256 - *ip++ - 108; - } - else - { - if ( ip + 3 >= limit ) - goto Syntax_Error; - val = ( (FT_Int32)ip[0] << 24 ) | - ( (FT_Int32)ip[1] << 16 ) | - ( (FT_Int32)ip[2] << 8 ) | - ip[3]; - ip += 4; - shift = 0; - } - if ( decoder->top - stack >= CFF_MAX_OPERANDS ) - goto Stack_Overflow; - - val <<= shift; - *decoder->top++ = val; - -#ifdef FT_DEBUG_LEVEL_TRACE - if ( !( val & 0xFFFFL ) ) - FT_TRACE4(( " %ld", (FT_Int32)( val >> 16 ) )); - else - FT_TRACE4(( " %.2f", val / 65536.0 )); -#endif - - } - else - { - FT_Fixed* args = decoder->top; - FT_Int num_args = (FT_Int)( args - decoder->stack ); - FT_Int req_args; - - - /* find operator */ - op = cff_op_unknown; - - switch ( v ) - { - case 1: - op = cff_op_hstem; - break; - case 3: - op = cff_op_vstem; - break; - case 4: - op = cff_op_vmoveto; - break; - case 5: - op = cff_op_rlineto; - break; - case 6: - op = cff_op_hlineto; - break; - case 7: - op = cff_op_vlineto; - break; - case 8: - op = cff_op_rrcurveto; - break; - case 10: - op = cff_op_callsubr; - break; - case 11: - op = cff_op_return; - break; - case 12: - { - if ( ip >= limit ) - goto Syntax_Error; - v = *ip++; - - switch ( v ) - { - case 0: - op = cff_op_dotsection; - break; - case 3: - op = cff_op_and; - break; - case 4: - op = cff_op_or; - break; - case 5: - op = cff_op_not; - break; - case 8: - op = cff_op_store; - break; - case 9: - op = cff_op_abs; - break; - case 10: - op = cff_op_add; - break; - case 11: - op = cff_op_sub; - break; - case 12: - op = cff_op_div; - break; - case 13: - op = cff_op_load; - break; - case 14: - op = cff_op_neg; - break; - case 15: - op = cff_op_eq; - break; - case 18: - op = cff_op_drop; - break; - case 20: - op = cff_op_put; - break; - case 21: - op = cff_op_get; - break; - case 22: - op = cff_op_ifelse; - break; - case 23: - op = cff_op_random; - break; - case 24: - op = cff_op_mul; - break; - case 26: - op = cff_op_sqrt; - break; - case 27: - op = cff_op_dup; - break; - case 28: - op = cff_op_exch; - break; - case 29: - op = cff_op_index; - break; - case 30: - op = cff_op_roll; - break; - case 34: - op = cff_op_hflex; - break; - case 35: - op = cff_op_flex; - break; - case 36: - op = cff_op_hflex1; - break; - case 37: - op = cff_op_flex1; - break; - default: - /* decrement ip for syntax error message */ - ip--; - } - } - break; - case 14: - op = cff_op_endchar; - break; - case 16: - op = cff_op_blend; - break; - case 18: - op = cff_op_hstemhm; - break; - case 19: - op = cff_op_hintmask; - break; - case 20: - op = cff_op_cntrmask; - break; - case 21: - op = cff_op_rmoveto; - break; - case 22: - op = cff_op_hmoveto; - break; - case 23: - op = cff_op_vstemhm; - break; - case 24: - op = cff_op_rcurveline; - break; - case 25: - op = cff_op_rlinecurve; - break; - case 26: - op = cff_op_vvcurveto; - break; - case 27: - op = cff_op_hhcurveto; - break; - case 29: - op = cff_op_callgsubr; - break; - case 30: - op = cff_op_vhcurveto; - break; - case 31: - op = cff_op_hvcurveto; - break; - default: - ; - } - if ( op == cff_op_unknown ) - goto Syntax_Error; - - /* check arguments */ - req_args = cff_argument_counts[op]; - if ( req_args & CFF_COUNT_CHECK_WIDTH ) - { - args = stack; - - if ( num_args > 0 && decoder->read_width ) - { - /* If `nominal_width' is non-zero, the number is really a */ - /* difference against `nominal_width'. Else, the number here */ - /* is truly a width, not a difference against `nominal_width'. */ - /* If the font does not set `nominal_width', then */ - /* `nominal_width' defaults to zero, and so we can set */ - /* `glyph_width' to `nominal_width' plus number on the stack */ - /* -- for either case. */ - - FT_Int set_width_ok; - - - switch ( op ) - { - case cff_op_hmoveto: - case cff_op_vmoveto: - set_width_ok = num_args & 2; - break; - - case cff_op_hstem: - case cff_op_vstem: - case cff_op_hstemhm: - case cff_op_vstemhm: - case cff_op_rmoveto: - case cff_op_hintmask: - case cff_op_cntrmask: - set_width_ok = num_args & 1; - break; - - case cff_op_endchar: - /* If there is a width specified for endchar, we either have */ - /* 1 argument or 5 arguments. We like to argue. */ - set_width_ok = ( ( num_args == 5 ) || ( num_args == 1 ) ); - break; - - default: - set_width_ok = 0; - break; - } - - if ( set_width_ok ) - { - decoder->glyph_width = decoder->nominal_width + - ( stack[0] >> 16 ); - - /* Consumed an argument. */ - num_args--; - args++; - } - } - - decoder->read_width = 0; - req_args = 0; - } - - req_args &= 15; - if ( num_args < req_args ) - goto Stack_Underflow; - args -= req_args; - num_args -= req_args; - - switch ( op ) - { - case cff_op_hstem: - case cff_op_vstem: - case cff_op_hstemhm: - case cff_op_vstemhm: - /* the number of arguments is always even here */ - FT_TRACE4(( op == cff_op_hstem ? " hstem" : - ( op == cff_op_vstem ? " vstem" : - ( op == cff_op_hstemhm ? " hstemhm" : " vstemhm" ) ) )); - - if ( hinter ) - hinter->stems( hinter->hints, - ( op == cff_op_hstem || op == cff_op_hstemhm ), - num_args / 2, - args ); - - decoder->num_hints += num_args / 2; - args = stack; - break; - - case cff_op_hintmask: - case cff_op_cntrmask: - FT_TRACE4(( op == cff_op_hintmask ? " hintmask" : " cntrmask" )); - - /* implement vstem when needed -- */ - /* the specification doesn't say it, but this also works */ - /* with the 'cntrmask' operator */ - /* */ - if ( num_args > 0 ) - { - if ( hinter ) - hinter->stems( hinter->hints, - 0, - num_args / 2, - args ); - - decoder->num_hints += num_args / 2; - } - - if ( hinter ) - { - if ( op == cff_op_hintmask ) - hinter->hintmask( hinter->hints, - builder->current->n_points, - decoder->num_hints, - ip ); - else - hinter->counter( hinter->hints, - decoder->num_hints, - ip ); - } - -#ifdef FT_DEBUG_LEVEL_TRACE - { - FT_UInt maskbyte; - - - FT_TRACE4(( " " )); - - for ( maskbyte = 0; - maskbyte < (FT_UInt)(( decoder->num_hints + 7 ) >> 3); - maskbyte++, ip++ ) - FT_TRACE4(( "0x%02X", *ip )); - } -#else - ip += ( decoder->num_hints + 7 ) >> 3; -#endif - if ( ip >= limit ) - goto Syntax_Error; - args = stack; - break; - - case cff_op_rmoveto: - FT_TRACE4(( " rmoveto" )); - - cff_builder_close_contour( builder ); - builder->path_begun = 0; - x += args[0]; - y += args[1]; - args = stack; - break; - - case cff_op_vmoveto: - FT_TRACE4(( " vmoveto" )); - - cff_builder_close_contour( builder ); - builder->path_begun = 0; - y += args[0]; - args = stack; - break; - - case cff_op_hmoveto: - FT_TRACE4(( " hmoveto" )); - - cff_builder_close_contour( builder ); - builder->path_begun = 0; - x += args[0]; - args = stack; - break; - - case cff_op_rlineto: - FT_TRACE4(( " rlineto" )); - - if ( cff_builder_start_point ( builder, x, y ) || - check_points( builder, num_args / 2 ) ) - goto Fail; - - if ( num_args < 2 || num_args & 1 ) - goto Stack_Underflow; - - args = stack; - while ( args < decoder->top ) - { - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, 1 ); - args += 2; - } - args = stack; - break; - - case cff_op_hlineto: - case cff_op_vlineto: - { - FT_Int phase = ( op == cff_op_hlineto ); - - - FT_TRACE4(( op == cff_op_hlineto ? " hlineto" - : " vlineto" )); - - if ( cff_builder_start_point ( builder, x, y ) || - check_points( builder, num_args ) ) - goto Fail; - - args = stack; - while (args < decoder->top ) - { - if ( phase ) - x += args[0]; - else - y += args[0]; - - if ( cff_builder_add_point1( builder, x, y ) ) - goto Fail; - - args++; - phase ^= 1; - } - args = stack; - } - break; - - case cff_op_rrcurveto: - FT_TRACE4(( " rrcurveto" )); - - /* check number of arguments; must be a multiple of 6 */ - if ( num_args % 6 != 0 ) - goto Stack_Underflow; - - if ( cff_builder_start_point ( builder, x, y ) || - check_points( builder, num_args / 2 ) ) - goto Fail; - - args = stack; - while ( args < decoder->top ) - { - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[2]; - y += args[3]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[4]; - y += args[5]; - cff_builder_add_point( builder, x, y, 1 ); - args += 6; - } - args = stack; - break; - - case cff_op_vvcurveto: - FT_TRACE4(( " vvcurveto" )); - - if ( cff_builder_start_point( builder, x, y ) ) - goto Fail; - - args = stack; - if ( num_args & 1 ) - { - x += args[0]; - args++; - num_args--; - } - - if ( num_args % 4 != 0 ) - goto Stack_Underflow; - - if ( check_points( builder, 3 * ( num_args / 4 ) ) ) - goto Fail; - - while ( args < decoder->top ) - { - y += args[0]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - cff_builder_add_point( builder, x, y, 0 ); - y += args[3]; - cff_builder_add_point( builder, x, y, 1 ); - args += 4; - } - args = stack; - break; - - case cff_op_hhcurveto: - FT_TRACE4(( " hhcurveto" )); - - if ( cff_builder_start_point( builder, x, y ) ) - goto Fail; - - args = stack; - if ( num_args & 1 ) - { - y += args[0]; - args++; - num_args--; - } - - if ( num_args % 4 != 0 ) - goto Stack_Underflow; - - if ( check_points( builder, 3 * ( num_args / 4 ) ) ) - goto Fail; - - while ( args < decoder->top ) - { - x += args[0]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[3]; - cff_builder_add_point( builder, x, y, 1 ); - args += 4; - } - args = stack; - break; - - case cff_op_vhcurveto: - case cff_op_hvcurveto: - { - FT_Int phase; - - - FT_TRACE4(( op == cff_op_vhcurveto ? " vhcurveto" - : " hvcurveto" )); - - if ( cff_builder_start_point( builder, x, y ) ) - goto Fail; - - args = stack; - if (num_args < 4 || ( num_args % 4 ) > 1 ) - goto Stack_Underflow; - - if ( check_points( builder, ( num_args / 4 ) * 3 ) ) - goto Stack_Underflow; - - phase = ( op == cff_op_hvcurveto ); - - while ( num_args >= 4 ) - { - num_args -= 4; - if ( phase ) - { - x += args[0]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - cff_builder_add_point( builder, x, y, 0 ); - y += args[3]; - if ( num_args == 1 ) - x += args[4]; - cff_builder_add_point( builder, x, y, 1 ); - } - else - { - y += args[0]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[1]; - y += args[2]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[3]; - if ( num_args == 1 ) - y += args[4]; - cff_builder_add_point( builder, x, y, 1 ); - } - args += 4; - phase ^= 1; - } - args = stack; - } - break; - - case cff_op_rlinecurve: - { - FT_Int num_lines = ( num_args - 6 ) / 2; - - - FT_TRACE4(( " rlinecurve" )); - - if ( num_args < 8 || ( num_args - 6 ) & 1 ) - goto Stack_Underflow; - - if ( cff_builder_start_point( builder, x, y ) || - check_points( builder, num_lines + 3 ) ) - goto Fail; - - args = stack; - - /* first, add the line segments */ - while ( num_lines > 0 ) - { - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, 1 ); - args += 2; - num_lines--; - } - - /* then the curve */ - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[2]; - y += args[3]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[4]; - y += args[5]; - cff_builder_add_point( builder, x, y, 1 ); - args = stack; - } - break; - - case cff_op_rcurveline: - { - FT_Int num_curves = ( num_args - 2 ) / 6; - - - FT_TRACE4(( " rcurveline" )); - - if ( num_args < 8 || ( num_args - 2 ) % 6 ) - goto Stack_Underflow; - - if ( cff_builder_start_point ( builder, x, y ) || - check_points( builder, num_curves*3 + 2 ) ) - goto Fail; - - args = stack; - - /* first, add the curves */ - while ( num_curves > 0 ) - { - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[2]; - y += args[3]; - cff_builder_add_point( builder, x, y, 0 ); - x += args[4]; - y += args[5]; - cff_builder_add_point( builder, x, y, 1 ); - args += 6; - num_curves--; - } - - /* then the final line */ - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, 1 ); - args = stack; - } - break; - - case cff_op_hflex1: - { - FT_Pos start_y; - - - FT_TRACE4(( " hflex1" )); - - args = stack; - - /* adding five more points; 4 control points, 1 on-curve point */ - /* make sure we have enough space for the start point if it */ - /* needs to be added */ - if ( cff_builder_start_point( builder, x, y ) || - check_points( builder, 6 ) ) - goto Fail; - - /* Record the starting point's y postion for later use */ - start_y = y; - - /* first control point */ - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, 0 ); - - /* second control point */ - x += args[2]; - y += args[3]; - cff_builder_add_point( builder, x, y, 0 ); - - /* join point; on curve, with y-value the same as the last */ - /* control point's y-value */ - x += args[4]; - cff_builder_add_point( builder, x, y, 1 ); - - /* third control point, with y-value the same as the join */ - /* point's y-value */ - x += args[5]; - cff_builder_add_point( builder, x, y, 0 ); - - /* fourth control point */ - x += args[6]; - y += args[7]; - cff_builder_add_point( builder, x, y, 0 ); - - /* ending point, with y-value the same as the start */ - x += args[8]; - y = start_y; - cff_builder_add_point( builder, x, y, 1 ); - - args = stack; - break; - } - - case cff_op_hflex: - { - FT_Pos start_y; - - - FT_TRACE4(( " hflex" )); - - args = stack; - - /* adding six more points; 4 control points, 2 on-curve points */ - if ( cff_builder_start_point( builder, x, y ) || - check_points( builder, 6 ) ) - goto Fail; - - /* record the starting point's y-position for later use */ - start_y = y; - - /* first control point */ - x += args[0]; - cff_builder_add_point( builder, x, y, 0 ); - - /* second control point */ - x += args[1]; - y += args[2]; - cff_builder_add_point( builder, x, y, 0 ); - - /* join point; on curve, with y-value the same as the last */ - /* control point's y-value */ - x += args[3]; - cff_builder_add_point( builder, x, y, 1 ); - - /* third control point, with y-value the same as the join */ - /* point's y-value */ - x += args[4]; - cff_builder_add_point( builder, x, y, 0 ); - - /* fourth control point */ - x += args[5]; - y = start_y; - cff_builder_add_point( builder, x, y, 0 ); - - /* ending point, with y-value the same as the start point's */ - /* y-value -- we don't add this point, though */ - x += args[6]; - cff_builder_add_point( builder, x, y, 1 ); - - args = stack; - break; - } - - case cff_op_flex1: - { - FT_Pos start_x, start_y; /* record start x, y values for */ - /* alter use */ - FT_Fixed dx = 0, dy = 0; /* used in horizontal/vertical */ - /* algorithm below */ - FT_Int horizontal, count; - - - FT_TRACE4(( " flex1" )); - - /* adding six more points; 4 control points, 2 on-curve points */ - if ( cff_builder_start_point( builder, x, y ) || - check_points( builder, 6 ) ) - goto Fail; - - /* record the starting point's x, y postion for later use */ - start_x = x; - start_y = y; - - /* XXX: figure out whether this is supposed to be a horizontal */ - /* or vertical flex; the Type 2 specification is vague... */ - - args = stack; - - /* grab up to the last argument */ - for ( count = 5; count > 0; count-- ) - { - dx += args[0]; - dy += args[1]; - args += 2; - } - - /* rewind */ - args = stack; - - if ( dx < 0 ) dx = -dx; - if ( dy < 0 ) dy = -dy; - - /* strange test, but here it is... */ - horizontal = ( dx > dy ); - - for ( count = 5; count > 0; count-- ) - { - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, (FT_Bool)( count == 3 ) ); - args += 2; - } - - /* is last operand an x- or y-delta? */ - if ( horizontal ) - { - x += args[0]; - y = start_y; - } - else - { - x = start_x; - y += args[0]; - } - - cff_builder_add_point( builder, x, y, 1 ); - - args = stack; - break; - } - - case cff_op_flex: - { - FT_UInt count; - - - FT_TRACE4(( " flex" )); - - if ( cff_builder_start_point( builder, x, y ) || - check_points( builder, 6 ) ) - goto Fail; - - args = stack; - for ( count = 6; count > 0; count-- ) - { - x += args[0]; - y += args[1]; - cff_builder_add_point( builder, x, y, - (FT_Bool)( count == 4 || count == 1 ) ); - args += 2; - } - - args = stack; - } - break; - - case cff_op_endchar: - FT_TRACE4(( " endchar" )); - - /* We are going to emulate the seac operator. */ - if ( num_args == 4 ) - { - /* Save glyph width so that the subglyphs don't overwrite it. */ - FT_Pos glyph_width = decoder->glyph_width; - - - error = cff_operator_seac( decoder, - args[0], - args[1], - (FT_Int)( args[2] >> 16 ), - (FT_Int)( args[3] >> 16 ) ); - args += 4; - - decoder->glyph_width = glyph_width; - } - else - { - if ( !error ) - error = CFF_Err_Ok; - - cff_builder_close_contour( builder ); - - /* close hints recording session */ - if ( hinter ) - { - if (hinter->close( hinter->hints, builder->current->n_points ) ) - goto Syntax_Error; - - /* apply hints to the loaded glyph outline now */ - hinter->apply( hinter->hints, - builder->current, - (PSH_Globals)builder->hints_globals, - decoder->hint_mode ); - } - - /* add current outline to the glyph slot */ - FT_GlyphLoader_Add( builder->loader ); - } - - /* return now! */ - FT_TRACE4(( "\n\n" )); - return error; - - case cff_op_abs: - FT_TRACE4(( " abs" )); - - if ( args[0] < 0 ) - args[0] = -args[0]; - args++; - break; - - case cff_op_add: - FT_TRACE4(( " add" )); - - args[0] += args[1]; - args++; - break; - - case cff_op_sub: - FT_TRACE4(( " sub" )); - - args[0] -= args[1]; - args++; - break; - - case cff_op_div: - FT_TRACE4(( " div" )); - - args[0] = FT_DivFix( args[0], args[1] ); - args++; - break; - - case cff_op_neg: - FT_TRACE4(( " neg" )); - - args[0] = -args[0]; - args++; - break; - - case cff_op_random: - { - FT_Fixed Rand; - - - FT_TRACE4(( " rand" )); - - Rand = seed; - if ( Rand >= 0x8000L ) - Rand++; - - args[0] = Rand; - seed = FT_MulFix( seed, 0x10000L - seed ); - if ( seed == 0 ) - seed += 0x2873; - args++; - } - break; - - case cff_op_mul: - FT_TRACE4(( " mul" )); - - args[0] = FT_MulFix( args[0], args[1] ); - args++; - break; - - case cff_op_sqrt: - FT_TRACE4(( " sqrt" )); - - if ( args[0] > 0 ) - { - FT_Int count = 9; - FT_Fixed root = args[0]; - FT_Fixed new_root; - - - for (;;) - { - new_root = ( root + FT_DivFix( args[0], root ) + 1 ) >> 1; - if ( new_root == root || count <= 0 ) - break; - root = new_root; - } - args[0] = new_root; - } - else - args[0] = 0; - args++; - break; - - case cff_op_drop: - /* nothing */ - FT_TRACE4(( " drop" )); - - break; - - case cff_op_exch: - { - FT_Fixed tmp; - - - FT_TRACE4(( " exch" )); - - tmp = args[0]; - args[0] = args[1]; - args[1] = tmp; - args += 2; - } - break; - - case cff_op_index: - { - FT_Int idx = (FT_Int)( args[0] >> 16 ); - - - FT_TRACE4(( " index" )); - - if ( idx < 0 ) - idx = 0; - else if ( idx > num_args - 2 ) - idx = num_args - 2; - args[0] = args[-( idx + 1 )]; - args++; - } - break; - - case cff_op_roll: - { - FT_Int count = (FT_Int)( args[0] >> 16 ); - FT_Int idx = (FT_Int)( args[1] >> 16 ); - - - FT_TRACE4(( " roll" )); - - if ( count <= 0 ) - count = 1; - - args -= count; - if ( args < stack ) - goto Stack_Underflow; - - if ( idx >= 0 ) - { - while ( idx > 0 ) - { - FT_Fixed tmp = args[count - 1]; - FT_Int i; - - - for ( i = count - 2; i >= 0; i-- ) - args[i + 1] = args[i]; - args[0] = tmp; - idx--; - } - } - else - { - while ( idx < 0 ) - { - FT_Fixed tmp = args[0]; - FT_Int i; - - - for ( i = 0; i < count - 1; i++ ) - args[i] = args[i + 1]; - args[count - 1] = tmp; - idx++; - } - } - args += count; - } - break; - - case cff_op_dup: - FT_TRACE4(( " dup" )); - - args[1] = args[0]; - args++; - break; - - case cff_op_put: - { - FT_Fixed val = args[0]; - FT_Int idx = (FT_Int)( args[1] >> 16 ); - - - FT_TRACE4(( " put" )); - - if ( idx >= 0 && idx < decoder->len_buildchar ) - decoder->buildchar[idx] = val; - } - break; - - case cff_op_get: - { - FT_Int idx = (FT_Int)( args[0] >> 16 ); - FT_Fixed val = 0; - - - FT_TRACE4(( " get" )); - - if ( idx >= 0 && idx < decoder->len_buildchar ) - val = decoder->buildchar[idx]; - - args[0] = val; - args++; - } - break; - - case cff_op_store: - FT_TRACE4(( " store ")); - - goto Unimplemented; - - case cff_op_load: - FT_TRACE4(( " load" )); - - goto Unimplemented; - - case cff_op_dotsection: - /* this operator is deprecated and ignored by the parser */ - FT_TRACE4(( " dotsection" )); - break; - - case cff_op_and: - { - FT_Fixed cond = args[0] && args[1]; - - - FT_TRACE4(( " and" )); - - args[0] = cond ? 0x10000L : 0; - args++; - } - break; - - case cff_op_or: - { - FT_Fixed cond = args[0] || args[1]; - - - FT_TRACE4(( " or" )); - - args[0] = cond ? 0x10000L : 0; - args++; - } - break; - - case cff_op_eq: - { - FT_Fixed cond = !args[0]; - - - FT_TRACE4(( " eq" )); - - args[0] = cond ? 0x10000L : 0; - args++; - } - break; - - case cff_op_ifelse: - { - FT_Fixed cond = (args[2] <= args[3]); - - - FT_TRACE4(( " ifelse" )); - - if ( !cond ) - args[0] = args[1]; - args++; - } - break; - - case cff_op_callsubr: - { - FT_UInt idx = (FT_UInt)( ( args[0] >> 16 ) + - decoder->locals_bias ); - - - FT_TRACE4(( " callsubr(%d)", idx )); - - if ( idx >= decoder->num_locals ) - { - FT_ERROR(( "cff_decoder_parse_charstrings:" )); - FT_ERROR(( " invalid local subr index\n" )); - goto Syntax_Error; - } - - if ( zone - decoder->zones >= CFF_MAX_SUBRS_CALLS ) - { - FT_ERROR(( "cff_decoder_parse_charstrings:" - " too many nested subrs\n" )); - goto Syntax_Error; - } - - zone->cursor = ip; /* save current instruction pointer */ - - zone++; - zone->base = decoder->locals[idx]; - zone->limit = decoder->locals[idx + 1]; - zone->cursor = zone->base; - - if ( !zone->base ) - { - FT_ERROR(( "cff_decoder_parse_charstrings:" - " invoking empty subrs!\n" )); - goto Syntax_Error; - } - - decoder->zone = zone; - ip = zone->base; - limit = zone->limit; - } - break; - - case cff_op_callgsubr: - { - FT_UInt idx = (FT_UInt)( ( args[0] >> 16 ) + - decoder->globals_bias ); - - - FT_TRACE4(( " callgsubr(%d)", idx )); - - if ( idx >= decoder->num_globals ) - { - FT_ERROR(( "cff_decoder_parse_charstrings:" )); - FT_ERROR(( " invalid global subr index\n" )); - goto Syntax_Error; - } - - if ( zone - decoder->zones >= CFF_MAX_SUBRS_CALLS ) - { - FT_ERROR(( "cff_decoder_parse_charstrings:" - " too many nested subrs\n" )); - goto Syntax_Error; - } - - zone->cursor = ip; /* save current instruction pointer */ - - zone++; - zone->base = decoder->globals[idx]; - zone->limit = decoder->globals[idx + 1]; - zone->cursor = zone->base; - - if ( !zone->base ) - { - FT_ERROR(( "cff_decoder_parse_charstrings:" - " invoking empty subrs!\n" )); - goto Syntax_Error; - } - - decoder->zone = zone; - ip = zone->base; - limit = zone->limit; - } - break; - - case cff_op_return: - FT_TRACE4(( " return" )); - - if ( decoder->zone <= decoder->zones ) - { - FT_ERROR(( "cff_decoder_parse_charstrings:" - " unexpected return\n" )); - goto Syntax_Error; - } - - decoder->zone--; - zone = decoder->zone; - ip = zone->cursor; - limit = zone->limit; - break; - - default: - Unimplemented: - FT_ERROR(( "Unimplemented opcode: %d", ip[-1] )); - - if ( ip[-1] == 12 ) - FT_ERROR(( " %d", ip[0] )); - FT_ERROR(( "\n" )); - - return CFF_Err_Unimplemented_Feature; - } - - decoder->top = args; - - } /* general operator processing */ - - } /* while ip < limit */ - - FT_TRACE4(( "..end..\n\n" )); - - Fail: - return error; - - Syntax_Error: - FT_TRACE4(( "cff_decoder_parse_charstrings: syntax error!" )); - return CFF_Err_Invalid_File_Format; - - Stack_Underflow: - FT_TRACE4(( "cff_decoder_parse_charstrings: stack underflow!" )); - return CFF_Err_Too_Few_Arguments; - - Stack_Overflow: - FT_TRACE4(( "cff_decoder_parse_charstrings: stack overflow!" )); - return CFF_Err_Stack_Overflow; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** *********/ - /********** COMPUTE THE MAXIMUM ADVANCE WIDTH *********/ - /********** *********/ - /********** The following code is in charge of computing *********/ - /********** the maximum advance width of the font. It *********/ - /********** quickly processes each glyph charstring to *********/ - /********** extract the value from either a `sbw' or `seac' *********/ - /********** operator. *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#if 0 /* unused until we support pure CFF fonts */ - - - FT_LOCAL_DEF( FT_Error ) - cff_compute_max_advance( TT_Face face, - FT_Int* max_advance ) - { - FT_Error error = CFF_Err_Ok; - CFF_Decoder decoder; - FT_Int glyph_index; - CFF_Font cff = (CFF_Font)face->other; - - - *max_advance = 0; - - /* Initialize load decoder */ - cff_decoder_init( &decoder, face, 0, 0, 0, 0 ); - - decoder.builder.metrics_only = 1; - decoder.builder.load_points = 0; - - /* For each glyph, parse the glyph charstring and extract */ - /* the advance width. */ - for ( glyph_index = 0; glyph_index < face->root.num_glyphs; - glyph_index++ ) - { - FT_Byte* charstring; - FT_ULong charstring_len; - - - /* now get load the unscaled outline */ - error = cff_get_glyph_data( face, glyph_index, - &charstring, &charstring_len ); - if ( !error ) - { - cff_decoder_prepare( &decoder, glyph_index ); - error = cff_decoder_parse_charstrings( &decoder, - charstring, charstring_len ); - - cff_free_glyph_data( face, &charstring, &charstring_len ); - } - - /* ignore the error if one has occurred -- skip to next glyph */ - error = CFF_Err_Ok; - } - - *max_advance = decoder.builder.advance.x; - - return CFF_Err_Ok; - } - - -#endif /* 0 */ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** *********/ - /********** UNHINTED GLYPH LOADER *********/ - /********** *********/ - /********** The following code is in charge of loading a *********/ - /********** single outline. It completely ignores hinting *********/ - /********** and is used when FT_LOAD_NO_HINTING is set. *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - cff_slot_load( CFF_GlyphSlot glyph, - CFF_Size size, - FT_Int glyph_index, - FT_Int32 load_flags ) - { - FT_Error error; - CFF_Decoder decoder; - TT_Face face = (TT_Face)glyph->root.face; - FT_Bool hinting; - CFF_Font cff = (CFF_Font)face->extra.data; - - FT_Matrix font_matrix; - FT_Vector font_offset; - - - if ( load_flags & FT_LOAD_NO_RECURSE ) - load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - - glyph->x_scale = 0x10000L; - glyph->y_scale = 0x10000L; - if ( size ) - { - glyph->x_scale = size->root.metrics.x_scale; - glyph->y_scale = size->root.metrics.y_scale; - } - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - /* try to load embedded bitmap if any */ - /* */ - /* XXX: The convention should be emphasized in */ - /* the documents because it can be confusing. */ - if ( size ) - { - CFF_Face cff_face = (CFF_Face)size->root.face; - SFNT_Service sfnt = (SFNT_Service)cff_face->sfnt; - FT_Stream stream = cff_face->root.stream; - - - if ( size->strike_index != 0xFFFFU && - sfnt->load_sbits && - ( load_flags & FT_LOAD_NO_BITMAP ) == 0 ) - { - TT_SBit_MetricsRec metrics; - - - error = sfnt->load_sbit_image( face, - (FT_ULong)size->strike_index, - (FT_UInt)glyph_index, - (FT_Int)load_flags, - stream, - &glyph->root.bitmap, - &metrics ); - - if ( !error ) - { - glyph->root.outline.n_points = 0; - glyph->root.outline.n_contours = 0; - - glyph->root.metrics.width = (FT_Pos)metrics.width << 6; - glyph->root.metrics.height = (FT_Pos)metrics.height << 6; - - glyph->root.metrics.horiBearingX = (FT_Pos)metrics.horiBearingX << 6; - glyph->root.metrics.horiBearingY = (FT_Pos)metrics.horiBearingY << 6; - glyph->root.metrics.horiAdvance = (FT_Pos)metrics.horiAdvance << 6; - - glyph->root.metrics.vertBearingX = (FT_Pos)metrics.vertBearingX << 6; - glyph->root.metrics.vertBearingY = (FT_Pos)metrics.vertBearingY << 6; - glyph->root.metrics.vertAdvance = (FT_Pos)metrics.vertAdvance << 6; - - glyph->root.format = FT_GLYPH_FORMAT_BITMAP; - - if ( load_flags & FT_LOAD_VERTICAL_LAYOUT ) - { - glyph->root.bitmap_left = metrics.vertBearingX; - glyph->root.bitmap_top = metrics.vertBearingY; - } - else - { - glyph->root.bitmap_left = metrics.horiBearingX; - glyph->root.bitmap_top = metrics.horiBearingY; - } - return error; - } - } - } - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - /* return immediately if we only want the embedded bitmaps */ - if ( load_flags & FT_LOAD_SBITS_ONLY ) - return CFF_Err_Invalid_Argument; - - glyph->root.outline.n_points = 0; - glyph->root.outline.n_contours = 0; - - hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 && - ( load_flags & FT_LOAD_NO_HINTING ) == 0 ); - - glyph->root.format = FT_GLYPH_FORMAT_OUTLINE; /* by default */ - - { - FT_Byte* charstring; - FT_ULong charstring_len; - - - /* in a CID-keyed font, consider `glyph_index' as a CID and map */ - /* it immediately to the real glyph_index -- if it isn't a */ - /* subsetted font, glyph_indices and CIDs are identical, though */ - if ( cff->top_font.font_dict.cid_registry != 0xFFFFU && - cff->charset.cids ) - glyph_index = cff->charset.cids[glyph_index]; - - cff_decoder_init( &decoder, face, size, glyph, hinting, - FT_LOAD_TARGET_MODE( load_flags ) ); - - decoder.builder.no_recurse = - (FT_Bool)( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); - - /* now load the unscaled outline */ - error = cff_get_glyph_data( face, glyph_index, - &charstring, &charstring_len ); - if ( !error ) - { - cff_decoder_prepare( &decoder, glyph_index ); - error = cff_decoder_parse_charstrings( &decoder, - charstring, charstring_len ); - - cff_free_glyph_data( face, &charstring, charstring_len ); - - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - /* Control data and length may not be available for incremental */ - /* fonts. */ - if ( face->root.internal->incremental_interface ) - { - glyph->root.control_data = 0; - glyph->root.control_len = 0; - } - else -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - /* We set control_data and control_len if charstrings is loaded. */ - /* See how charstring loads at cff_index_access_element() in */ - /* cffload.c. */ - { - CFF_IndexRec csindex = cff->charstrings_index; - - - glyph->root.control_data = - csindex.bytes + csindex.offsets[glyph_index] - 1; - glyph->root.control_len = - charstring_len; - } - } - - /* save new glyph tables */ - cff_builder_done( &decoder.builder ); - } - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* Incremental fonts can optionally override the metrics. */ - if ( !error && - face->root.internal->incremental_interface && - face->root.internal->incremental_interface->funcs->get_glyph_metrics ) - { - FT_Incremental_MetricsRec metrics; - - - metrics.bearing_x = decoder.builder.left_bearing.x; - metrics.bearing_y = decoder.builder.left_bearing.y; - metrics.advance = decoder.builder.advance.x; - error = face->root.internal->incremental_interface->funcs->get_glyph_metrics( - face->root.internal->incremental_interface->object, - glyph_index, FALSE, &metrics ); - decoder.builder.left_bearing.x = metrics.bearing_x; - decoder.builder.left_bearing.y = metrics.bearing_y; - decoder.builder.advance.x = metrics.advance; - decoder.builder.advance.y = 0; - } - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - font_matrix = cff->top_font.font_dict.font_matrix; - font_offset = cff->top_font.font_dict.font_offset; - - /* Now, set the metrics -- this is rather simple, as */ - /* the left side bearing is the xMin, and the top side */ - /* bearing the yMax. */ - if ( !error ) - { - /* For composite glyphs, return only left side bearing and */ - /* advance width. */ - if ( load_flags & FT_LOAD_NO_RECURSE ) - { - FT_Slot_Internal internal = glyph->root.internal; - - - glyph->root.metrics.horiBearingX = decoder.builder.left_bearing.x; - glyph->root.metrics.horiAdvance = decoder.glyph_width; - internal->glyph_matrix = font_matrix; - internal->glyph_delta = font_offset; - internal->glyph_transformed = 1; - } - else - { - FT_BBox cbox; - FT_Glyph_Metrics* metrics = &glyph->root.metrics; - FT_Vector advance; - - - /* copy the _unscaled_ advance width */ - metrics->horiAdvance = decoder.glyph_width; - glyph->root.linearHoriAdvance = decoder.glyph_width; - glyph->root.internal->glyph_transformed = 0; - - /* make up vertical metrics */ - metrics->vertBearingX = 0; - metrics->vertBearingY = 0; - metrics->vertAdvance = 0; - - glyph->root.linearVertAdvance = 0; - - glyph->root.format = FT_GLYPH_FORMAT_OUTLINE; - - glyph->root.outline.flags = 0; - if ( size && size->root.metrics.y_ppem < 24 ) - glyph->root.outline.flags |= FT_OUTLINE_HIGH_PRECISION; - - glyph->root.outline.flags |= FT_OUTLINE_REVERSE_FILL; - - /* apply the font matrix */ - FT_Outline_Transform( &glyph->root.outline, &font_matrix ); - - FT_Outline_Translate( &glyph->root.outline, - font_offset.x, - font_offset.y ); - - advance.x = metrics->horiAdvance; - advance.y = 0; - FT_Vector_Transform( &advance, &font_matrix ); - metrics->horiAdvance = advance.x + font_offset.x; - advance.x = 0; - advance.y = metrics->vertAdvance; - FT_Vector_Transform( &advance, &font_matrix ); - metrics->vertAdvance = advance.y + font_offset.y; - - if ( ( load_flags & FT_LOAD_NO_SCALE ) == 0 ) - { - /* scale the outline and the metrics */ - FT_Int n; - FT_Outline* cur = &glyph->root.outline; - FT_Vector* vec = cur->points; - FT_Fixed x_scale = glyph->x_scale; - FT_Fixed y_scale = glyph->y_scale; - - - /* First of all, scale the points */ - if ( !hinting ) - for ( n = cur->n_points; n > 0; n--, vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } - - FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - - /* Then scale the metrics */ - metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); - metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); - - metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); - metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); - - if ( hinting ) - { - metrics->horiAdvance = FT_PIX_ROUND( metrics->horiAdvance ); - metrics->vertAdvance = FT_PIX_ROUND( metrics->vertAdvance ); - - metrics->vertBearingX = FT_PIX_ROUND( metrics->vertBearingX ); - metrics->vertBearingY = FT_PIX_ROUND( metrics->vertBearingY ); - } - } - - /* compute the other metrics */ - FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - - /* grid fit the bounding box if necessary */ - if ( hinting ) - { - cbox.xMin &= -64; - cbox.yMin &= -64; - cbox.xMax = ( cbox.xMax + 63 ) & -64; - cbox.yMax = ( cbox.yMax + 63 ) & -64; - } - - metrics->width = cbox.xMax - cbox.xMin; - metrics->height = cbox.yMax - cbox.yMin; - - metrics->horiBearingX = cbox.xMin; - metrics->horiBearingY = cbox.yMax; - } - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffgload.h b/nx-X11/extras/freetype2/src/cff/cffgload.h deleted file mode 100644 index 89ae049b5..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffgload.h +++ /dev/null @@ -1,208 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffgload.h */ -/* */ -/* OpenType Glyph Loader (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFFGLOAD_H__ -#define __CFFGLOAD_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include "cffobjs.h" - - -FT_BEGIN_HEADER - - -#define CFF_MAX_OPERANDS 48 -#define CFF_MAX_SUBRS_CALLS 32 - - - /*************************************************************************/ - /* */ - /* <Structure> */ - /* CFF_Builder */ - /* */ - /* <Description> */ - /* A structure used during glyph loading to store its outline. */ - /* */ - /* <Fields> */ - /* memory :: The current memory object. */ - /* */ - /* face :: The current face object. */ - /* */ - /* glyph :: The current glyph slot. */ - /* */ - /* loader :: The current glyph loader. */ - /* */ - /* base :: The base glyph outline. */ - /* */ - /* current :: The current glyph outline. */ - /* */ - /* last :: The last point position. */ - /* */ - /* scale_x :: The horizontal scale (FUnits to sub-pixels). */ - /* */ - /* scale_y :: The vertical scale (FUnits to sub-pixels). */ - /* */ - /* pos_x :: The horizontal translation (if composite glyph). */ - /* */ - /* pos_y :: The vertical translation (if composite glyph). */ - /* */ - /* left_bearing :: The left side bearing point. */ - /* */ - /* advance :: The horizontal advance vector. */ - /* */ - /* bbox :: Unused. */ - /* */ - /* path_begun :: A flag which indicates that a new path has begun. */ - /* */ - /* load_points :: If this flag is not set, no points are loaded. */ - /* */ - /* no_recurse :: Set but not used. */ - /* */ - /* metrics_only :: A boolean indicating that we only want to compute */ - /* the metrics of a given glyph, not load all of its */ - /* points. */ - /* */ - /* hints_funcs :: Auxiliary pointer for hinting. */ - /* */ - /* hints_globals :: Auxiliary pointer for hinting. */ - /* */ - typedef struct CFF_Builder_ - { - FT_Memory memory; - TT_Face face; - CFF_GlyphSlot glyph; - FT_GlyphLoader loader; - FT_Outline* base; - FT_Outline* current; - - FT_Vector last; - - FT_Fixed scale_x; - FT_Fixed scale_y; - - FT_Pos pos_x; - FT_Pos pos_y; - - FT_Vector left_bearing; - FT_Vector advance; - - FT_BBox bbox; /* bounding box */ - FT_Bool path_begun; - FT_Bool load_points; - FT_Bool no_recurse; - - FT_Bool metrics_only; - - void* hints_funcs; /* hinter-specific */ - void* hints_globals; /* hinter-specific */ - - } CFF_Builder; - - - /* execution context charstring zone */ - - typedef struct CFF_Decoder_Zone_ - { - FT_Byte* base; - FT_Byte* limit; - FT_Byte* cursor; - - } CFF_Decoder_Zone; - - - typedef struct CFF_Decoder_ - { - CFF_Builder builder; - CFF_Font cff; - - FT_Fixed stack[CFF_MAX_OPERANDS + 1]; - FT_Fixed* top; - - CFF_Decoder_Zone zones[CFF_MAX_SUBRS_CALLS + 1]; - CFF_Decoder_Zone* zone; - - FT_Int flex_state; - FT_Int num_flex_vectors; - FT_Vector flex_vectors[7]; - - FT_Pos glyph_width; - FT_Pos nominal_width; - - FT_Bool read_width; - FT_Int num_hints; - FT_Fixed* buildchar; - FT_Int len_buildchar; - - FT_UInt num_locals; - FT_UInt num_globals; - - FT_Int locals_bias; - FT_Int globals_bias; - - FT_Byte** locals; - FT_Byte** globals; - - FT_Byte** glyph_names; /* for pure CFF fonts only */ - FT_UInt num_glyphs; /* number of glyphs in font */ - - FT_Render_Mode hint_mode; - - } CFF_Decoder; - - - FT_LOCAL( void ) - cff_decoder_init( CFF_Decoder* decoder, - TT_Face face, - CFF_Size size, - CFF_GlyphSlot slot, - FT_Bool hinting, - FT_Render_Mode hint_mode ); - - FT_LOCAL( void ) - cff_decoder_prepare( CFF_Decoder* decoder, - FT_UInt glyph_index ); - -#if 0 /* unused until we support pure CFF fonts */ - - /* Compute the maximum advance width of a font through quick parsing */ - FT_LOCAL( FT_Error ) - cff_compute_max_advance( TT_Face face, - FT_Int* max_advance ); - -#endif /* 0 */ - - FT_LOCAL( FT_Error ) - cff_decoder_parse_charstrings( CFF_Decoder* decoder, - FT_Byte* charstring_base, - FT_ULong charstring_len ); - - FT_LOCAL( FT_Error ) - cff_slot_load( CFF_GlyphSlot glyph, - CFF_Size size, - FT_Int glyph_index, - FT_Int32 load_flags ); - - -FT_END_HEADER - -#endif /* __CFFGLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffload.c b/nx-X11/extras/freetype2/src/cff/cffload.c deleted file mode 100644 index 350e01f3f..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffload.c +++ /dev/null @@ -1,2313 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffload.c */ -/* */ -/* OpenType and CFF data/program tables loader (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_TRUETYPE_TAGS_H - -#include "cffload.h" -#include "cffparse.h" - -#include "cfferrs.h" - - -#if 1 - static const FT_UShort cff_isoadobe_charset[229] = - { - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 141, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 154, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 173, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 186, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 205, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 218, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228 - }; - - static const FT_UShort cff_expert_charset[166] = - { - 0, - 1, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 13, - 14, - 15, - 99, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 27, - 28, - 249, - 250, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 109, - 110, - 267, - 268, - 269, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 314, - 315, - 316, - 317, - 318, - 158, - 155, - 163, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 150, - 164, - 169, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378 - }; - - static const FT_UShort cff_expertsubset_charset[87] = - { - 0, - 1, - 231, - 232, - 235, - 236, - 237, - 238, - 13, - 14, - 15, - 99, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 27, - 28, - 249, - 250, - 251, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 109, - 110, - 267, - 268, - 269, - 270, - 272, - 300, - 301, - 302, - 305, - 314, - 315, - 158, - 155, - 163, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 150, - 164, - 169, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346 - }; - - static const FT_UShort cff_standard_encoding[256] = - { - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 0, - 111, - 112, - 113, - 114, - 0, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 0, - 123, - 0, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 0, - 132, - 133, - 0, - 134, - 135, - 136, - 137, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 138, - 0, - 139, - 0, - 0, - 0, - 0, - 140, - 141, - 142, - 143, - 0, - 0, - 0, - 0, - 0, - 144, - 0, - 0, - 0, - 145, - 0, - 0, - 146, - 147, - 148, - 149, - 0, - 0, - 0, - 0 - }; - - static const FT_UShort cff_expert_encoding[256] = - { - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 229, - 230, - 0, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 13, - 14, - 15, - 99, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 27, - 28, - 249, - 250, - 251, - 252, - 0, - 253, - 254, - 255, - 256, - 257, - 0, - 0, - 0, - 258, - 0, - 0, - 259, - 260, - 261, - 262, - 0, - 0, - 263, - 264, - 265, - 0, - 266, - 109, - 110, - 267, - 268, - 269, - 0, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 304, - 305, - 306, - 0, - 0, - 307, - 308, - 309, - 310, - 311, - 0, - 312, - 0, - 0, - 312, - 0, - 0, - 314, - 315, - 0, - 0, - 316, - 317, - 318, - 0, - 0, - 0, - 158, - 155, - 163, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 0, - 0, - 326, - 150, - 164, - 169, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378 - }; -#endif - - - FT_LOCAL_DEF( FT_UShort ) - cff_get_standard_encoding( FT_UInt charcode ) - { - return (FT_UShort)(charcode < 256 ? cff_standard_encoding[charcode] : 0); - } - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cffload - - - /* read a CFF offset from memory */ - static FT_ULong - cff_get_offset( FT_Byte* p, - FT_Byte off_size ) - { - FT_ULong result; - - - for ( result = 0; off_size > 0; off_size-- ) - { - result <<= 8; - result |= *p++; - } - - return result; - } - - - static FT_Error - cff_new_index( CFF_Index idx, - FT_Stream stream, - FT_Bool load ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_UShort count; - - - FT_MEM_ZERO( idx, sizeof ( *idx ) ); - - idx->stream = stream; - if ( !FT_READ_USHORT( count ) && - count > 0 ) - { - FT_Byte* p; - FT_Byte offsize; - FT_ULong data_size; - FT_ULong* poff; - - - /* there is at least one element; read the offset size, */ - /* then access the offset table to compute the index's total size */ - if ( FT_READ_BYTE( offsize ) ) - goto Exit; - - idx->stream = stream; - idx->count = count; - idx->off_size = offsize; - data_size = (FT_ULong)( count + 1 ) * offsize; - - if ( FT_NEW_ARRAY( idx->offsets, count + 1 ) || - FT_FRAME_ENTER( data_size ) ) - goto Exit; - - poff = idx->offsets; - p = (FT_Byte*)stream->cursor; - - for ( ; (FT_Short)count >= 0; count-- ) - { - poff[0] = cff_get_offset( p, offsize ); - poff++; - p += offsize; - } - - FT_FRAME_EXIT(); - - idx->data_offset = FT_STREAM_POS(); - data_size = poff[-1] - 1; - - if ( load ) - { - /* load the data */ - if ( FT_FRAME_EXTRACT( data_size, idx->bytes ) ) - goto Exit; - } - else - { - /* skip the data */ - if ( FT_STREAM_SKIP( data_size ) ) - goto Exit; - } - } - - Exit: - if ( error ) - FT_FREE( idx->offsets ); - - return error; - } - - - static void - cff_done_index( CFF_Index idx ) - { - if ( idx->stream ) - { - FT_Stream stream = idx->stream; - FT_Memory memory = stream->memory; - - - if ( idx->bytes ) - FT_FRAME_RELEASE( idx->bytes ); - - FT_FREE( idx->offsets ); - FT_MEM_ZERO( idx, sizeof ( *idx ) ); - } - } - - - /* allocate a table containing pointers to an index's elements */ - static FT_Error - cff_index_get_pointers( CFF_Index idx, - FT_Byte*** table ) - { - FT_Error error = CFF_Err_Ok; - FT_Memory memory = idx->stream->memory; - FT_ULong n, offset, old_offset; - FT_Byte** t; - - - *table = 0; - - if ( idx->count > 0 && !FT_NEW_ARRAY( t, idx->count + 1 ) ) - { - old_offset = 1; - for ( n = 0; n <= idx->count; n++ ) - { - offset = idx->offsets[n]; - if ( !offset ) - offset = old_offset; - - t[n] = idx->bytes + offset - 1; - - old_offset = offset; - } - *table = t; - } - - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - cff_index_access_element( CFF_Index idx, - FT_UInt element, - FT_Byte** pbytes, - FT_ULong* pbyte_len ) - { - FT_Error error = CFF_Err_Ok; - - - if ( idx && idx->count > element ) - { - /* compute start and end offsets */ - FT_ULong off1, off2 = 0; - - - off1 = idx->offsets[element]; - if ( off1 ) - { - do - { - element++; - off2 = idx->offsets[element]; - - } while ( off2 == 0 && element < idx->count ); - - if ( !off2 ) - off1 = 0; - } - - /* access element */ - if ( off1 ) - { - *pbyte_len = off2 - off1; - - if ( idx->bytes ) - { - /* this index was completely loaded in memory, that's easy */ - *pbytes = idx->bytes + off1 - 1; - } - else - { - /* this index is still on disk/file, access it through a frame */ - FT_Stream stream = idx->stream; - - - if ( FT_STREAM_SEEK( idx->data_offset + off1 - 1 ) || - FT_FRAME_EXTRACT( off2 - off1, *pbytes ) ) - goto Exit; - } - } - else - { - /* empty index element */ - *pbytes = 0; - *pbyte_len = 0; - } - } - else - error = CFF_Err_Invalid_Argument; - - Exit: - return error; - } - - - FT_LOCAL_DEF( void ) - cff_index_forget_element( CFF_Index idx, - FT_Byte** pbytes ) - { - if ( idx->bytes == 0 ) - { - FT_Stream stream = idx->stream; - - - FT_FRAME_RELEASE( *pbytes ); - } - } - - - FT_LOCAL_DEF( FT_String* ) - cff_index_get_name( CFF_Index idx, - FT_UInt element ) - { - FT_Memory memory = idx->stream->memory; - FT_Byte* bytes; - FT_ULong byte_len; - FT_Error error; - FT_String* name = 0; - - - error = cff_index_access_element( idx, element, &bytes, &byte_len ); - if ( error ) - goto Exit; - - if ( !FT_ALLOC( name, byte_len + 1 ) ) - { - FT_MEM_COPY( name, bytes, byte_len ); - name[byte_len] = 0; - } - cff_index_forget_element( idx, &bytes ); - - Exit: - return name; - } - - - FT_LOCAL_DEF( FT_String* ) - cff_index_get_sid_string( CFF_Index idx, - FT_UInt sid, - FT_Service_PsCMaps psnames ) - { - /* value 0xFFFFU indicates a missing dictionary entry */ - if ( sid == 0xFFFFU ) - return 0; - - /* if it is not a standard string, return it */ - if ( sid > 390 ) - return cff_index_get_name( idx, sid - 391 ); - - /* CID-keyed CFF fonts don't have glyph names */ - if ( !psnames ) - return 0; - - /* that's a standard string, fetch a copy from the PSName module */ - { - FT_String* name = 0; - const char* adobe_name = psnames->adobe_std_strings( sid ); - FT_UInt len; - - - if ( adobe_name ) - { - FT_Memory memory = idx->stream->memory; - FT_Error error; - - - len = (FT_UInt)ft_strlen( adobe_name ); - if ( !FT_ALLOC( name, len + 1 ) ) - { - FT_MEM_COPY( name, adobe_name, len ); - name[len] = 0; - } - - FT_UNUSED( error ); - } - - return name; - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** FD Select table support ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - - - static void - CFF_Done_FD_Select( CFF_FDSelect fdselect, - FT_Stream stream ) - { - if ( fdselect->data ) - FT_FRAME_RELEASE( fdselect->data ); - - fdselect->data_size = 0; - fdselect->format = 0; - fdselect->range_count = 0; - } - - - static FT_Error - CFF_Load_FD_Select( CFF_FDSelect fdselect, - FT_UInt num_glyphs, - FT_Stream stream, - FT_ULong offset ) - { - FT_Error error; - FT_Byte format; - FT_UInt num_ranges; - - - /* read format */ - if ( FT_STREAM_SEEK( offset ) || FT_READ_BYTE( format ) ) - goto Exit; - - fdselect->format = format; - fdselect->cache_count = 0; /* clear cache */ - - switch ( format ) - { - case 0: /* format 0, that's simple */ - fdselect->data_size = num_glyphs; - goto Load_Data; - - case 3: /* format 3, a tad more complex */ - if ( FT_READ_USHORT( num_ranges ) ) - goto Exit; - - fdselect->data_size = num_ranges * 3 + 2; - - Load_Data: - if ( FT_FRAME_EXTRACT( fdselect->data_size, fdselect->data ) ) - goto Exit; - break; - - default: /* hmm... that's wrong */ - error = CFF_Err_Invalid_File_Format; - } - - Exit: - return error; - } - - - FT_LOCAL_DEF( FT_Byte ) - cff_fd_select_get( CFF_FDSelect fdselect, - FT_UInt glyph_index ) - { - FT_Byte fd = 0; - - - switch ( fdselect->format ) - { - case 0: - fd = fdselect->data[glyph_index]; - break; - - case 3: - /* first, compare to cache */ - if ( (FT_UInt)( glyph_index - fdselect->cache_first ) < - fdselect->cache_count ) - { - fd = fdselect->cache_fd; - break; - } - - /* then, lookup the ranges array */ - { - FT_Byte* p = fdselect->data; - FT_Byte* p_limit = p + fdselect->data_size; - FT_Byte fd2; - FT_UInt first, limit; - - - first = FT_NEXT_USHORT( p ); - do - { - if ( glyph_index < first ) - break; - - fd2 = *p++; - limit = FT_NEXT_USHORT( p ); - - if ( glyph_index < limit ) - { - fd = fd2; - - /* update cache */ - fdselect->cache_first = first; - fdselect->cache_count = limit-first; - fdselect->cache_fd = fd2; - break; - } - first = limit; - - } while ( p < p_limit ); - } - break; - - default: - ; - } - - return fd; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*** ***/ - /*** CFF font support ***/ - /*** ***/ - /*************************************************************************/ - /*************************************************************************/ - - static void - cff_charset_done( CFF_Charset charset, - FT_Stream stream ) - { - FT_Memory memory = stream->memory; - - - FT_FREE( charset->sids ); - FT_FREE( charset->cids ); - charset->format = 0; - charset->offset = 0; - } - - - static FT_Error - cff_charset_load( CFF_Charset charset, - FT_UInt num_glyphs, - FT_Stream stream, - FT_ULong base_offset, - FT_ULong offset, - FT_Bool invert ) - { - FT_Memory memory = stream->memory; - FT_Error error = CFF_Err_Ok; - FT_UShort glyph_sid; - - - /* If the the offset is greater than 2, we have to parse the */ - /* charset table. */ - if ( offset > 2 ) - { - FT_UInt j; - - - charset->offset = base_offset + offset; - - /* Get the format of the table. */ - if ( FT_STREAM_SEEK( charset->offset ) || - FT_READ_BYTE( charset->format ) ) - goto Exit; - - /* Allocate memory for sids. */ - if ( FT_NEW_ARRAY( charset->sids, num_glyphs ) ) - goto Exit; - - /* assign the .notdef glyph */ - charset->sids[0] = 0; - - switch ( charset->format ) - { - case 0: - if ( num_glyphs > 0 ) - { - if ( FT_FRAME_ENTER( ( num_glyphs - 1 ) * 2 ) ) - goto Exit; - - for ( j = 1; j < num_glyphs; j++ ) - charset->sids[j] = FT_GET_USHORT(); - - FT_FRAME_EXIT(); - } - break; - - case 1: - case 2: - { - FT_UInt nleft; - FT_UInt i; - - - j = 1; - - while ( j < num_glyphs ) - { - /* Read the first glyph sid of the range. */ - if ( FT_READ_USHORT( glyph_sid ) ) - goto Exit; - - /* Read the number of glyphs in the range. */ - if ( charset->format == 2 ) - { - if ( FT_READ_USHORT( nleft ) ) - goto Exit; - } - else - { - if ( FT_READ_BYTE( nleft ) ) - goto Exit; - } - - /* Fill in the range of sids -- `nleft + 1' glyphs. */ - for ( i = 0; j < num_glyphs && i <= nleft; i++, j++, glyph_sid++ ) - charset->sids[j] = glyph_sid; - } - } - break; - - default: - FT_ERROR(( "cff_charset_load: invalid table format!\n" )); - error = CFF_Err_Invalid_File_Format; - goto Exit; - } - } - else - { - /* Parse default tables corresponding to offset == 0, 1, or 2. */ - /* CFF specification intimates the following: */ - /* */ - /* In order to use a predefined charset, the following must be */ - /* true: The charset constructed for the glyphs in the font's */ - /* charstrings dictionary must match the predefined charset in */ - /* the first num_glyphs. */ - - charset->offset = offset; /* record charset type */ - - switch ( (FT_UInt)offset ) - { - case 0: - if ( num_glyphs > 229 ) - { - FT_ERROR(( "cff_charset_load: implicit charset larger than\n" - "predefined charset (Adobe ISO-Latin)!\n" )); - error = CFF_Err_Invalid_File_Format; - goto Exit; - } - - /* Allocate memory for sids. */ - if ( FT_NEW_ARRAY( charset->sids, num_glyphs ) ) - goto Exit; - - /* Copy the predefined charset into the allocated memory. */ - FT_ARRAY_COPY( charset->sids, cff_isoadobe_charset, num_glyphs ); - - break; - - case 1: - if ( num_glyphs > 166 ) - { - FT_ERROR(( "cff_charset_load: implicit charset larger than\n" - "predefined charset (Adobe Expert)!\n" )); - error = CFF_Err_Invalid_File_Format; - goto Exit; - } - - /* Allocate memory for sids. */ - if ( FT_NEW_ARRAY( charset->sids, num_glyphs ) ) - goto Exit; - - /* Copy the predefined charset into the allocated memory. */ - FT_ARRAY_COPY( charset->sids, cff_expert_charset, num_glyphs ); - - break; - - case 2: - if ( num_glyphs > 87 ) - { - FT_ERROR(( "cff_charset_load: implicit charset larger than\n" - "predefined charset (Adobe Expert Subset)!\n" )); - error = CFF_Err_Invalid_File_Format; - goto Exit; - } - - /* Allocate memory for sids. */ - if ( FT_NEW_ARRAY( charset->sids, num_glyphs ) ) - goto Exit; - - /* Copy the predefined charset into the allocated memory. */ - FT_ARRAY_COPY( charset->sids, cff_expertsubset_charset, num_glyphs ); - - break; - - default: - error = CFF_Err_Invalid_File_Format; - goto Exit; - } - } - - /* we have to invert the `sids' array for subsetted CID-keyed fonts */ - if ( invert ) - { - FT_UInt i; - FT_UShort max_cid = 0; - - - for ( i = 0; i < num_glyphs; i++ ) - if ( charset->sids[i] > max_cid ) - max_cid = charset->sids[i]; - max_cid++; - - if ( FT_NEW_ARRAY( charset->cids, max_cid ) ) - goto Exit; - FT_MEM_ZERO( charset->cids, sizeof ( FT_UShort ) * max_cid ); - - for ( i = 0; i < num_glyphs; i++ ) - charset->cids[charset->sids[i]] = i; - } - - Exit: - /* Clean up if there was an error. */ - if ( error ) - { - FT_FREE( charset->sids ); - FT_FREE( charset->cids ); - charset->format = 0; - charset->offset = 0; - charset->sids = 0; - } - - return error; - } - - - static void - cff_encoding_done( CFF_Encoding encoding ) - { - encoding->format = 0; - encoding->offset = 0; - encoding->count = 0; - } - - - static FT_Error - cff_encoding_load( CFF_Encoding encoding, - CFF_Charset charset, - FT_UInt num_glyphs, - FT_Stream stream, - FT_ULong base_offset, - FT_ULong offset ) - { - FT_Error error = CFF_Err_Ok; - FT_UInt count; - FT_UInt j; - FT_UShort glyph_sid; - FT_UInt glyph_code; - - - /* Check for charset->sids. If we do not have this, we fail. */ - if ( !charset->sids ) - { - error = CFF_Err_Invalid_File_Format; - goto Exit; - } - - /* Zero out the code to gid/sid mappings. */ - for ( j = 0; j < 256; j++ ) - { - encoding->sids [j] = 0; - encoding->codes[j] = 0; - } - - /* Note: The encoding table in a CFF font is indexed by glyph index; */ - /* the first encoded glyph index is 1. Hence, we read the character */ - /* code (`glyph_code') at index j and make the assignment: */ - /* */ - /* encoding->codes[glyph_code] = j + 1 */ - /* */ - /* We also make the assignment: */ - /* */ - /* encoding->sids[glyph_code] = charset->sids[j + 1] */ - /* */ - /* This gives us both a code to GID and a code to SID mapping. */ - - if ( offset > 1 ) - { - encoding->offset = base_offset + offset; - - /* we need to parse the table to determine its size */ - if ( FT_STREAM_SEEK( encoding->offset ) || - FT_READ_BYTE( encoding->format ) || - FT_READ_BYTE( count ) ) - goto Exit; - - switch ( encoding->format & 0x7F ) - { - case 0: - { - FT_Byte* p; - - - /* By convention, GID 0 is always ".notdef" and is never */ - /* coded in the font. Hence, the number of codes found */ - /* in the table is `count+1'. */ - /* */ - encoding->count = count + 1; - - if ( FT_FRAME_ENTER( count ) ) - goto Exit; - - p = (FT_Byte*)stream->cursor; - - for ( j = 1; j <= count; j++ ) - { - glyph_code = *p++; - - /* Make sure j is not too big. */ - if ( j < num_glyphs ) - { - /* Assign code to GID mapping. */ - encoding->codes[glyph_code] = (FT_UShort)j; - - /* Assign code to SID mapping. */ - encoding->sids[glyph_code] = charset->sids[j]; - } - } - - FT_FRAME_EXIT(); - } - break; - - case 1: - { - FT_UInt nleft; - FT_UInt i = 1; - FT_UInt k; - - - encoding->count = 0; - - /* Parse the Format1 ranges. */ - for ( j = 0; j < count; j++, i += nleft ) - { - /* Read the first glyph code of the range. */ - if ( FT_READ_BYTE( glyph_code ) ) - goto Exit; - - /* Read the number of codes in the range. */ - if ( FT_READ_BYTE( nleft ) ) - goto Exit; - - /* Increment nleft, so we read `nleft + 1' codes/sids. */ - nleft++; - - /* compute max number of character codes */ - if ( (FT_UInt)nleft > encoding->count ) - encoding->count = nleft; - - /* Fill in the range of codes/sids. */ - for ( k = i; k < nleft + i; k++, glyph_code++ ) - { - /* Make sure k is not too big. */ - if ( k < num_glyphs && glyph_code < 256 ) - { - /* Assign code to GID mapping. */ - encoding->codes[glyph_code] = (FT_UShort)k; - - /* Assign code to SID mapping. */ - encoding->sids[glyph_code] = charset->sids[k]; - } - } - } - - /* simple check; one never knows what can be found in a font */ - if ( encoding->count > 256 ) - encoding->count = 256; - } - break; - - default: - FT_ERROR(( "cff_encoding_load: invalid table format!\n" )); - error = CFF_Err_Invalid_File_Format; - goto Exit; - } - - /* Parse supplemental encodings, if any. */ - if ( encoding->format & 0x80 ) - { - FT_UInt gindex; - - - /* count supplements */ - if ( FT_READ_BYTE( count ) ) - goto Exit; - - for ( j = 0; j < count; j++ ) - { - /* Read supplemental glyph code. */ - if ( FT_READ_BYTE( glyph_code ) ) - goto Exit; - - /* Read the SID associated with this glyph code. */ - if ( FT_READ_USHORT( glyph_sid ) ) - goto Exit; - - /* Assign code to SID mapping. */ - encoding->sids[glyph_code] = glyph_sid; - - /* First, look up GID which has been assigned to */ - /* SID glyph_sid. */ - for ( gindex = 0; gindex < num_glyphs; gindex++ ) - { - if ( charset->sids[gindex] == glyph_sid ) - { - encoding->codes[glyph_code] = (FT_UShort)gindex; - break; - } - } - } - } - } - else - { - FT_UInt i; - - - /* We take into account the fact a CFF font can use a predefined */ - /* encoding without containing all of the glyphs encoded by this */ - /* encoding (see the note at the end of section 12 in the CFF */ - /* specification). */ - - switch ( (FT_UInt)offset ) - { - case 0: - /* First, copy the code to SID mapping. */ - FT_ARRAY_COPY( encoding->sids, cff_standard_encoding, 256 ); - goto Populate; - - case 1: - /* First, copy the code to SID mapping. */ - FT_ARRAY_COPY( encoding->sids, cff_expert_encoding, 256 ); - - Populate: - /* Construct code to GID mapping from code to SID mapping */ - /* and charset. */ - - encoding->count = 0; - - for ( j = 0; j < 256; j++ ) - { - /* If j is encoded, find the GID for it. */ - if ( encoding->sids[j] ) - { - for ( i = 1; i < num_glyphs; i++ ) - /* We matched, so break. */ - if ( charset->sids[i] == encoding->sids[j] ) - break; - - /* i will be equal to num_glyphs if we exited the above */ - /* loop without a match. In this case, we also have to */ - /* fix the code to SID mapping. */ - if ( i == num_glyphs ) - { - encoding->codes[j] = 0; - encoding->sids [j] = 0; - } - else - { - encoding->codes[j] = (FT_UShort)i; - - /* update encoding count */ - if ( encoding->count < j + 1 ) - encoding->count = j + 1; - } - } - } - break; - - default: - FT_ERROR(( "cff_encoding_load: invalid table format!\n" )); - error = CFF_Err_Invalid_File_Format; - goto Exit; - } - } - - Exit: - - /* Clean up if there was an error. */ - return error; - } - - - static FT_Error - cff_subfont_load( CFF_SubFont font, - CFF_Index idx, - FT_UInt font_index, - FT_Stream stream, - FT_ULong base_offset ) - { - FT_Error error; - CFF_ParserRec parser; - FT_Byte* dict = NULL; - FT_ULong dict_len; - CFF_FontRecDict top = &font->font_dict; - CFF_Private priv = &font->private_dict; - - - cff_parser_init( &parser, CFF_CODE_TOPDICT, &font->font_dict ); - - /* set defaults */ - FT_MEM_ZERO( top, sizeof ( *top ) ); - - top->underline_position = -100L << 16; - top->underline_thickness = 50L << 16; - top->charstring_type = 2; - top->font_matrix.xx = 0x10000L; - top->font_matrix.yy = 0x10000L; - top->cid_count = 8720; - - /* we use the implementation specific SID value 0xFFFF to indicate */ - /* missing entries */ - top->version = 0xFFFFU; - top->notice = 0xFFFFU; - top->copyright = 0xFFFFU; - top->full_name = 0xFFFFU; - top->family_name = 0xFFFFU; - top->weight = 0xFFFFU; - top->embedded_postscript = 0xFFFFU; - - top->cid_registry = 0xFFFFU; - top->cid_ordering = 0xFFFFU; - top->cid_font_name = 0xFFFFU; - - error = cff_index_access_element( idx, font_index, &dict, &dict_len ) || - cff_parser_run( &parser, dict, dict + dict_len ); - - cff_index_forget_element( idx, &dict ); - - if ( error ) - goto Exit; - - /* if it is a CID font, we stop there */ - if ( top->cid_registry != 0xFFFFU ) - goto Exit; - - /* parse the private dictionary, if any */ - if ( top->private_offset && top->private_size ) - { - /* set defaults */ - FT_MEM_ZERO( priv, sizeof ( *priv ) ); - - priv->blue_shift = 7; - priv->blue_fuzz = 1; - priv->lenIV = -1; - priv->expansion_factor = (FT_Fixed)( 0.06 * 0x10000L ); - priv->blue_scale = (FT_Fixed)( 0.039625 * 0x10000L * 1000 ); - - cff_parser_init( &parser, CFF_CODE_PRIVATE, priv ); - - if ( FT_STREAM_SEEK( base_offset + font->font_dict.private_offset ) || - FT_FRAME_ENTER( font->font_dict.private_size ) ) - goto Exit; - - error = cff_parser_run( &parser, - (FT_Byte*)stream->cursor, - (FT_Byte*)stream->limit ); - FT_FRAME_EXIT(); - if ( error ) - goto Exit; - } - - /* read the local subrs, if any */ - if ( priv->local_subrs_offset ) - { - if ( FT_STREAM_SEEK( base_offset + top->private_offset + - priv->local_subrs_offset ) ) - goto Exit; - - error = cff_new_index( &font->local_subrs_index, stream, 1 ); - if ( error ) - goto Exit; - - font->num_local_subrs = font->local_subrs_index.count; - error = cff_index_get_pointers( &font->local_subrs_index, - &font->local_subrs ); - if ( error ) - goto Exit; - } - - Exit: - return error; - } - - - static void - cff_subfont_done( FT_Memory memory, - CFF_SubFont subfont ) - { - if ( subfont ) - { - cff_done_index( &subfont->local_subrs_index ); - FT_FREE( subfont->local_subrs ); - } - } - - - FT_LOCAL_DEF( FT_Error ) - cff_font_load( FT_Stream stream, - FT_Int face_index, - CFF_Font font ) - { - static const FT_Frame_Field cff_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE CFF_FontRec - - FT_FRAME_START( 4 ), - FT_FRAME_BYTE( version_major ), - FT_FRAME_BYTE( version_minor ), - FT_FRAME_BYTE( header_size ), - FT_FRAME_BYTE( absolute_offsize ), - FT_FRAME_END - }; - - FT_Error error; - FT_Memory memory = stream->memory; - FT_ULong base_offset; - CFF_FontRecDict dict; - - FT_ZERO( font ); - - font->stream = stream; - font->memory = memory; - dict = &font->top_font.font_dict; - base_offset = FT_STREAM_POS(); - - /* read CFF font header */ - if ( FT_STREAM_READ_FIELDS( cff_header_fields, font ) ) - goto Exit; - - /* check format */ - if ( font->version_major != 1 || - font->header_size < 4 || - font->absolute_offsize > 4 ) - { - FT_TRACE2(( "[not a CFF font header!]\n" )); - error = CFF_Err_Unknown_File_Format; - goto Exit; - } - - /* skip the rest of the header */ - if ( FT_STREAM_SKIP( font->header_size - 4 ) ) - goto Exit; - - /* read the name, top dict, string and global subrs index */ - if ( FT_SET_ERROR( cff_new_index( &font->name_index, stream, 0 )) || - FT_SET_ERROR( cff_new_index( &font->font_dict_index, stream, 0 )) || - FT_SET_ERROR( cff_new_index( &font->string_index, stream, 0 )) || - FT_SET_ERROR( cff_new_index( &font->global_subrs_index, stream, 1 )) ) - goto Exit; - - /* well, we don't really forget the `disabled' fonts... */ - font->num_faces = font->name_index.count; - if ( face_index >= (FT_Int)font->num_faces ) - { - FT_ERROR(( "cff_font_load: incorrect face index = %d\n", - face_index )); - error = CFF_Err_Invalid_Argument; - } - - /* in case of a font format check, simply exit now */ - if ( face_index < 0 ) - goto Exit; - - /* now, parse the top-level font dictionary */ - error = cff_subfont_load( &font->top_font, - &font->font_dict_index, - face_index, - stream, - base_offset ); - if ( error ) - goto Exit; - - if ( FT_STREAM_SEEK( base_offset + dict->charstrings_offset ) ) - goto Exit; - - error = cff_new_index( &font->charstrings_index, stream, 0 ); - if ( error ) - goto Exit; - - /* now, check for a CID font */ - if ( dict->cid_registry != 0xFFFFU ) - { - CFF_IndexRec fd_index; - CFF_SubFont sub; - FT_UInt idx; - - - /* this is a CID-keyed font, we must now allocate a table of */ - /* sub-fonts, then load each of them separately */ - if ( FT_STREAM_SEEK( base_offset + dict->cid_fd_array_offset ) ) - goto Exit; - - error = cff_new_index( &fd_index, stream, 0 ); - if ( error ) - goto Exit; - - if ( fd_index.count > CFF_MAX_CID_FONTS ) - { - FT_ERROR(( "cff_font_load: FD array too large in CID font\n" )); - goto Fail_CID; - } - - /* allocate & read each font dict independently */ - font->num_subfonts = fd_index.count; - if ( FT_NEW_ARRAY( sub, fd_index.count ) ) - goto Fail_CID; - - /* setup pointer table */ - for ( idx = 0; idx < fd_index.count; idx++ ) - font->subfonts[idx] = sub + idx; - - /* now load each sub font independently */ - for ( idx = 0; idx < fd_index.count; idx++ ) - { - sub = font->subfonts[idx]; - error = cff_subfont_load( sub, &fd_index, idx, - stream, base_offset ); - if ( error ) - goto Fail_CID; - } - - /* now load the FD Select array */ - error = CFF_Load_FD_Select( &font->fd_select, - font->charstrings_index.count, - stream, - base_offset + dict->cid_fd_select_offset ); - - Fail_CID: - cff_done_index( &fd_index ); - - if ( error ) - goto Exit; - } - else - font->num_subfonts = 0; - - /* read the charstrings index now */ - if ( dict->charstrings_offset == 0 ) - { - FT_ERROR(( "cff_font_load: no charstrings offset!\n" )); - error = CFF_Err_Unknown_File_Format; - goto Exit; - } - - /* explicit the global subrs */ - font->num_global_subrs = font->global_subrs_index.count; - font->num_glyphs = font->charstrings_index.count; - - error = cff_index_get_pointers( &font->global_subrs_index, - &font->global_subrs ) ; - - if ( error ) - goto Exit; - - /* read the Charset and Encoding tables if available */ - if ( font->num_glyphs > 0 ) - { - FT_Bool invert; - - - invert = dict->cid_registry != 0xFFFFU && - font->charstrings_index.count != dict->cid_count; - error = cff_charset_load( &font->charset, font->num_glyphs, stream, - base_offset, dict->charset_offset, invert ); - if ( error ) - goto Exit; - - /* CID-keyed CFFs don't have an encoding */ - if ( dict->cid_registry == 0xFFFFU ) - { - error = cff_encoding_load( &font->encoding, - &font->charset, - font->num_glyphs, - stream, - base_offset, - dict->encoding_offset ); - if ( error ) - goto Exit; - } - else - /* CID-keyed fonts only need CIDs */ - FT_FREE( font->charset.sids ); - } - - /* get the font name (/CIDFontName for CID-keyed fonts, */ - /* /FontName otherwise) */ - font->font_name = cff_index_get_name( &font->name_index, face_index ); - - Exit: - return error; - } - - - FT_LOCAL_DEF( void ) - cff_font_done( CFF_Font font ) - { - FT_Memory memory = font->memory; - FT_UInt idx; - - - cff_done_index( &font->global_subrs_index ); - cff_done_index( &font->string_index ); - cff_done_index( &font->font_dict_index ); - cff_done_index( &font->name_index ); - cff_done_index( &font->charstrings_index ); - - /* release font dictionaries, but only if working with */ - /* a CID keyed CFF font */ - if ( font->num_subfonts > 0 ) - { - for ( idx = 0; idx < font->num_subfonts; idx++ ) - cff_subfont_done( memory, font->subfonts[idx] ); - - FT_FREE( font->subfonts ); - } - - cff_encoding_done( &font->encoding ); - cff_charset_done( &font->charset, font->stream ); - - cff_subfont_done( memory, &font->top_font ); - - CFF_Done_FD_Select( &font->fd_select, font->stream ); - - FT_FREE( font->global_subrs ); - FT_FREE( font->font_name ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffload.h b/nx-X11/extras/freetype2/src/cff/cffload.h deleted file mode 100644 index ccf8ada1c..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffload.h +++ /dev/null @@ -1,74 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffload.h */ -/* */ -/* OpenType & CFF data/program tables loader (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFFLOAD_H__ -#define __CFFLOAD_H__ - - -#include <ft2build.h> -#include "cfftypes.h" -#include FT_SERVICE_POSTSCRIPT_CMAPS_H - - -FT_BEGIN_HEADER - - FT_LOCAL( FT_UShort ) - cff_get_standard_encoding( FT_UInt charcode ); - - - FT_LOCAL( FT_String* ) - cff_index_get_name( CFF_Index idx, - FT_UInt element ); - - FT_LOCAL( FT_String* ) - cff_index_get_sid_string( CFF_Index idx, - FT_UInt sid, - FT_Service_PsCMaps psnames ); - - - FT_LOCAL( FT_Error ) - cff_index_access_element( CFF_Index idx, - FT_UInt element, - FT_Byte** pbytes, - FT_ULong* pbyte_len ); - - FT_LOCAL( void ) - cff_index_forget_element( CFF_Index idx, - FT_Byte** pbytes ); - - - FT_LOCAL( FT_Error ) - cff_font_load( FT_Stream stream, - FT_Int face_index, - CFF_Font font ); - - FT_LOCAL( void ) - cff_font_done( CFF_Font font ); - - - FT_LOCAL( FT_Byte ) - cff_fd_select_get( CFF_FDSelect fdselect, - FT_UInt glyph_index ); - - -FT_END_HEADER - -#endif /* __CFFLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffobjs.c b/nx-X11/extras/freetype2/src/cff/cffobjs.c deleted file mode 100644 index ec4d1e4f5..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffobjs.c +++ /dev/null @@ -1,775 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffobjs.c */ -/* */ -/* OpenType objects manager (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_STREAM_H -#include FT_ERRORS_H -#include FT_TRUETYPE_IDS_H -#include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_SFNT_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H -#include "cffobjs.h" -#include "cffload.h" -#include "cffcmap.h" -#include "cfferrs.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cffobjs - - - /*************************************************************************/ - /* */ - /* SIZE FUNCTIONS */ - /* */ - /* Note that we store the global hints in the size's `internal' root */ - /* field. */ - /* */ - /*************************************************************************/ - - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - static FT_Error - sbit_size_reset( CFF_Size size ) - { - CFF_Face face; - FT_Error error = CFF_Err_Ok; - - FT_ULong strike_index; - FT_Size_Metrics* metrics; - FT_Size_Metrics* sbit_metrics; - SFNT_Service sfnt; - - - metrics = &size->root.metrics; - - face = (CFF_Face)size->root.face; - sfnt = (SFNT_Service)face->sfnt; - - sbit_metrics = &size->strike_metrics; - - error = sfnt->set_sbit_strike( face, - metrics->x_ppem, metrics->y_ppem, - &strike_index ); - - if ( !error ) - { - TT_SBit_Strike strike = face->sbit_strikes + strike_index; - - - sbit_metrics->x_ppem = metrics->x_ppem; - sbit_metrics->y_ppem = metrics->y_ppem; - - sbit_metrics->ascender = strike->hori.ascender << 6; - sbit_metrics->descender = strike->hori.descender << 6; - - /* XXX: Is this correct? */ - sbit_metrics->height = sbit_metrics->ascender - - sbit_metrics->descender; - - /* XXX: Is this correct? */ - sbit_metrics->max_advance = ( strike->hori.min_origin_SB + - strike->hori.max_width + - strike->hori.min_advance_SB ) << 6; - - size->strike_index = (FT_UInt)strike_index; - } - else - { - size->strike_index = 0xFFFFU; - - sbit_metrics->x_ppem = 0; - sbit_metrics->y_ppem = 0; - sbit_metrics->ascender = 0; - sbit_metrics->descender = 0; - sbit_metrics->height = 0; - sbit_metrics->max_advance = 0; - } - - return error; - } - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - - static PSH_Globals_Funcs - cff_size_get_globals_funcs( CFF_Size size ) - { - CFF_Face face = (CFF_Face)size->root.face; - CFF_Font font = (CFF_FontRec *)face->extra.data; - PSHinter_Service pshinter = (PSHinter_Service)font->pshinter; - FT_Module module; - - - module = FT_Get_Module( size->root.face->driver->root.library, - "pshinter" ); - return ( module && pshinter && pshinter->get_globals_funcs ) - ? pshinter->get_globals_funcs( module ) - : 0; - } - - - FT_LOCAL_DEF( void ) - cff_size_done( FT_Size cffsize ) /* CFF_Size */ - { - CFF_Size size = (CFF_Size)cffsize; - - - if ( cffsize->internal ) - { - PSH_Globals_Funcs funcs; - - - funcs = cff_size_get_globals_funcs( size ); - if ( funcs ) - funcs->destroy( (PSH_Globals)cffsize->internal ); - - cffsize->internal = 0; - } - } - - - FT_LOCAL_DEF( FT_Error ) - cff_size_init( FT_Size cffsize ) /* CFF_Size */ - { - CFF_Size size = (CFF_Size)cffsize; - FT_Error error = CFF_Err_Ok; - PSH_Globals_Funcs funcs = cff_size_get_globals_funcs( size ); - - - if ( funcs ) - { - PSH_Globals globals; - CFF_Face face = (CFF_Face)cffsize->face; - CFF_Font font = (CFF_FontRec *)face->extra.data; - CFF_SubFont subfont = &font->top_font; - - CFF_Private cpriv = &subfont->private_dict; - PS_PrivateRec priv; - - - /* IMPORTANT: The CFF and Type1 private dictionaries have */ - /* slightly different structures; we need to */ - /* synthetize a type1 dictionary on the fly here. */ - - { - FT_UInt n, count; - - - FT_MEM_ZERO( &priv, sizeof ( priv ) ); - - count = priv.num_blue_values = cpriv->num_blue_values; - for ( n = 0; n < count; n++ ) - priv.blue_values[n] = (FT_Short)cpriv->blue_values[n]; - - count = priv.num_other_blues = cpriv->num_other_blues; - for ( n = 0; n < count; n++ ) - priv.other_blues[n] = (FT_Short)cpriv->other_blues[n]; - - count = priv.num_family_blues = cpriv->num_family_blues; - for ( n = 0; n < count; n++ ) - priv.family_blues[n] = (FT_Short)cpriv->family_blues[n]; - - count = priv.num_family_other_blues = cpriv->num_family_other_blues; - for ( n = 0; n < count; n++ ) - priv.family_other_blues[n] = (FT_Short)cpriv->family_other_blues[n]; - - priv.blue_scale = cpriv->blue_scale; - priv.blue_shift = (FT_Int)cpriv->blue_shift; - priv.blue_fuzz = (FT_Int)cpriv->blue_fuzz; - - priv.standard_width[0] = (FT_UShort)cpriv->standard_width; - priv.standard_height[0] = (FT_UShort)cpriv->standard_height; - - count = priv.num_snap_widths = cpriv->num_snap_widths; - for ( n = 0; n < count; n++ ) - priv.snap_widths[n] = (FT_Short)cpriv->snap_widths[n]; - - count = priv.num_snap_heights = cpriv->num_snap_heights; - for ( n = 0; n < count; n++ ) - priv.snap_heights[n] = (FT_Short)cpriv->snap_heights[n]; - - priv.force_bold = cpriv->force_bold; - priv.language_group = cpriv->language_group; - priv.lenIV = cpriv->lenIV; - } - - error = funcs->create( cffsize->face->memory, &priv, &globals ); - if ( !error ) - cffsize->internal = (FT_Size_Internal)(void*)globals; - } - - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - cff_size_reset( FT_Size cffsize, /* CFF_Size */ - FT_UInt char_width, - FT_UInt char_height ) - { - CFF_Size size = (CFF_Size)cffsize; - PSH_Globals_Funcs funcs = cff_size_get_globals_funcs( size ); - FT_Error error = CFF_Err_Ok; - FT_Face face = cffsize->face; - - FT_UNUSED( char_width ); - FT_UNUSED( char_height ); - - - if ( funcs ) - error = funcs->set_scale( (PSH_Globals)cffsize->internal, - cffsize->metrics.x_scale, - cffsize->metrics.y_scale, - 0, 0 ); - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - if ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) - { - error = sbit_size_reset( size ); - - if ( !error && !( face->face_flags & FT_FACE_FLAG_SCALABLE ) ) - cffsize->metrics = size->strike_metrics; - } - -#endif - - if ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - return CFF_Err_Ok; - else - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - cff_point_size_reset( FT_Size cffsize, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) - { - FT_UNUSED( char_width ); - FT_UNUSED( char_height ); - FT_UNUSED( horz_resolution ); - FT_UNUSED( vert_resolution ); - - return cff_size_reset( cffsize, 0, 0 ); - } - - - /*************************************************************************/ - /* */ - /* SLOT FUNCTIONS */ - /* */ - /*************************************************************************/ - - FT_LOCAL_DEF( void ) - cff_slot_done( FT_GlyphSlot slot ) - { - slot->internal->glyph_hints = 0; - } - - - FT_LOCAL_DEF( FT_Error ) - cff_slot_init( FT_GlyphSlot slot ) - { - CFF_Face face = (CFF_Face)slot->face; - CFF_Font font = (CFF_FontRec *)face->extra.data; - PSHinter_Service pshinter = (PSHinter_Service)font->pshinter; - - - if ( pshinter ) - { - FT_Module module; - - - module = FT_Get_Module( slot->face->driver->root.library, - "pshinter" ); - if ( module ) - { - T2_Hints_Funcs funcs; - - - funcs = pshinter->get_t2_funcs( module ); - slot->internal->glyph_hints = (void*)funcs; - } - } - - return 0; - } - - - /*************************************************************************/ - /* */ - /* FACE FUNCTIONS */ - /* */ - /*************************************************************************/ - - static FT_String* - cff_strcpy( FT_Memory memory, - const FT_String* source ) - { - FT_Error error; - FT_String* result = 0; - FT_Int len = (FT_Int)ft_strlen( source ); - - - if ( !FT_ALLOC( result, len + 1 ) ) - { - FT_MEM_COPY( result, source, len ); - result[len] = 0; - } - - FT_UNUSED( error ); - - return result; - } - - - FT_LOCAL_DEF( FT_Error ) - cff_face_init( FT_Stream stream, - FT_Face cffface, /* CFF_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - CFF_Face face = (CFF_Face)cffface; - FT_Error error; - SFNT_Service sfnt; - FT_Service_PsCMaps psnames; - PSHinter_Service pshinter; - FT_Bool pure_cff = 1; - FT_Bool sfnt_format = 0; - -#if 0 - FT_FACE_FIND_GLOBAL_SERVICE( face, sfnt, SFNT ); - FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_NAMES ); - FT_FACE_FIND_GLOBAL_SERVICE( face, pshinter, POSTSCRIPT_HINTER ); - - if ( !sfnt ) - goto Bad_Format; -#else - sfnt = (SFNT_Service)FT_Get_Module_Interface( - cffface->driver->root.library, "sfnt" ); - if ( !sfnt ) - goto Bad_Format; - - FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); - - pshinter = (PSHinter_Service)FT_Get_Module_Interface( - cffface->driver->root.library, "pshinter" ); -#endif - - /* create input stream from resource */ - if ( FT_STREAM_SEEK( 0 ) ) - goto Exit; - - /* check whether we have a valid OpenType file */ - error = sfnt->init_face( stream, face, face_index, num_params, params ); - if ( !error ) - { - if ( face->format_tag != 0x4F54544FL ) /* `OTTO'; OpenType/CFF font */ - { - FT_TRACE2(( "[not a valid OpenType/CFF font]\n" )); - goto Bad_Format; - } - - /* if we are performing a simple font format check, exit immediately */ - if ( face_index < 0 ) - return CFF_Err_Ok; - - sfnt_format = 1; - - /* now, the font can be either an OpenType/CFF font, or an SVG CEF */ - /* font; in the latter case it doesn't have a `head' table */ - error = face->goto_table( face, TTAG_head, stream, 0 ); - if ( !error ) - { - pure_cff = 0; - - /* load font directory */ - error = sfnt->load_face( stream, face, - face_index, num_params, params ); - if ( error ) - goto Exit; - } - else - { - /* load the `cmap' table explicitly */ - error = sfnt->load_charmaps( face, stream ); - if ( error ) - goto Exit; - - /* XXX: we don't load the GPOS table, as OpenType Layout */ - /* support will be added later to a layout library on top of */ - /* FreeType 2 */ - } - - /* now load the CFF part of the file */ - error = face->goto_table( face, TTAG_CFF, stream, 0 ); - if ( error ) - goto Exit; - } - else - { - /* rewind to start of file; we are going to load a pure-CFF font */ - if ( FT_STREAM_SEEK( 0 ) ) - goto Exit; - error = CFF_Err_Ok; - } - - /* now load and parse the CFF table in the file */ - { - CFF_Font cff; - CFF_FontRecDict dict; - FT_Memory memory = cffface->memory; - FT_Int32 flags; - - - if ( FT_NEW( cff ) ) - goto Exit; - - face->extra.data = cff; - error = cff_font_load( stream, face_index, cff ); - if ( error ) - goto Exit; - - cff->pshinter = pshinter; - cff->psnames = (void*)psnames; - - /* Complement the root flags with some interesting information. */ - /* Note that this is only necessary for pure CFF and CEF fonts. */ - - cffface->num_glyphs = cff->num_glyphs; - - dict = &cff->top_font.font_dict; - - /* we need the `PSNames' module for CFF and CEF formats */ - /* which aren't CID-keyed */ - if ( dict->cid_registry == 0xFFFFU && !psnames ) - { - FT_ERROR(( "cff_face_init:" )); - FT_ERROR(( " cannot open CFF & CEF fonts\n" )); - FT_ERROR(( " " )); - FT_ERROR(( " without the `PSNames' module\n" )); - goto Bad_Format; - } - - if ( pure_cff ) - { - char* style_name = NULL; - - - /* Set up num_faces. */ - cffface->num_faces = cff->num_faces; - - /* compute number of glyphs */ - if ( dict->cid_registry != 0xFFFFU ) - cffface->num_glyphs = dict->cid_count; - else - cffface->num_glyphs = cff->charstrings_index.count; - - /* set global bbox, as well as EM size */ - cffface->bbox.xMin = dict->font_bbox.xMin >> 16; - cffface->bbox.yMin = dict->font_bbox.yMin >> 16; - cffface->bbox.xMax = ( dict->font_bbox.xMax + 0xFFFFU ) >> 16; - cffface->bbox.yMax = ( dict->font_bbox.yMax + 0xFFFFU ) >> 16; - - cffface->ascender = (FT_Short)( cffface->bbox.yMax ); - cffface->descender = (FT_Short)( cffface->bbox.yMin ); - cffface->height = (FT_Short)( - ( ( cffface->ascender - cffface->descender ) * 12 ) / 10 ); - - if ( dict->units_per_em ) - cffface->units_per_EM = dict->units_per_em; - else - cffface->units_per_EM = 1000; - - cffface->underline_position = - (FT_Short)( dict->underline_position >> 16 ); - cffface->underline_thickness = - (FT_Short)( dict->underline_thickness >> 16 ); - - /* retrieve font family & style name */ - cffface->family_name = cff_index_get_name( &cff->name_index, - face_index ); - - if ( cffface->family_name ) - { - char* full = cff_index_get_sid_string( &cff->string_index, - dict->full_name, - psnames ); - char* fullp = full; - char* family = cffface->family_name; - - /* We try to extract the style name from the full name. */ - /* We need to ignore spaces and dashes during the search. */ - if ( full ) - { - while ( *fullp ) - { - /* skip common characters at the start of both strings */ - if ( *fullp == *family ) - { - family++; - fullp++; - continue; - } - - /* ignore spaces and dashes in full name during comparison */ - if ( *fullp == ' ' || *fullp == '-' ) - { - fullp++; - continue; - } - - /* ignore spaces and dashes in family name during comparison */ - if ( *family == ' ' || *family == '-' ) - { - family++; - continue; - } - - if ( !*family && *fullp ) - { - /* Rhe full name begins with the same characters as the */ - /* family name, with spaces and dashes removed. In this */ - /* case, the remaining string in `fullp' will be used as */ - /* the style name. */ - style_name = cff_strcpy( memory, fullp ); - } - break; - } - FT_FREE( full ); - } - } - else - { - char *cid_font_name = - cff_index_get_sid_string( &cff->string_index, - dict->cid_font_name, - psnames ); - - - /* do we have a `/FontName' for a CID-keyed font? */ - if ( cid_font_name ) - cffface->family_name = cid_font_name; - } - - if ( style_name ) - cffface->style_name = style_name; - else - /* assume "Regular" style if we don't know better */ - cffface->style_name = cff_strcpy( memory, (char *)"Regular" ); - - /*******************************************************************/ - /* */ - /* Compute face flags. */ - /* */ - flags = FT_FACE_FLAG_SCALABLE | /* scalable outlines */ - FT_FACE_FLAG_HORIZONTAL; /* horizontal data */ - - if ( sfnt_format ) - flags |= FT_FACE_FLAG_SFNT; - - /* fixed width font? */ - if ( dict->is_fixed_pitch ) - flags |= FT_FACE_FLAG_FIXED_WIDTH; - - /* XXX: WE DO NOT SUPPORT KERNING METRICS IN THE GPOS TABLE FOR NOW */ -#if 0 - /* kerning available? */ - if ( face->kern_pairs ) - flags |= FT_FACE_FLAG_KERNING; -#endif - - cffface->face_flags = flags; - - /*******************************************************************/ - /* */ - /* Compute style flags. */ - /* */ - flags = 0; - - if ( dict->italic_angle ) - flags |= FT_STYLE_FLAG_ITALIC; - - { - char *weight = cff_index_get_sid_string( &cff->string_index, - dict->weight, - psnames ); - - - if ( weight ) - if ( !ft_strcmp( weight, "Bold" ) || - !ft_strcmp( weight, "Black" ) ) - flags |= FT_STYLE_FLAG_BOLD; - FT_FREE( weight ); - } - - cffface->style_flags = flags; - } - -#ifndef FT_CONFIG_OPTION_NO_GLYPH_NAMES - /* CID-keyed CFF fonts don't have glyph names -- the SFNT loader */ - /* has unset this flag because of the 3.0 `post' table */ - if ( dict->cid_registry == 0xFFFFU ) - cffface->face_flags |= FT_FACE_FLAG_GLYPH_NAMES; -#endif - - /*******************************************************************/ - /* */ - /* Compute char maps. */ - /* */ - - /* Try to synthetize a Unicode charmap if there is none available */ - /* already. If an OpenType font contains a Unicode "cmap", we */ - /* will use it, whatever be in the CFF part of the file. */ - { - FT_CharMapRec cmaprec; - FT_CharMap cmap; - FT_UInt nn; - CFF_Encoding encoding = &cff->encoding; - - - for ( nn = 0; nn < (FT_UInt)cffface->num_charmaps; nn++ ) - { - cmap = cffface->charmaps[nn]; - - /* Windows Unicode (3,1)? */ - if ( cmap->platform_id == 3 && cmap->encoding_id == 1 ) - goto Skip_Unicode; - - /* Deprecated Unicode platform id? */ - if ( cmap->platform_id == 0 ) - goto Skip_Unicode; /* Standard Unicode (deprecated) */ - } - - /* since CID-keyed fonts don't contain glyph names, we can't */ - /* construct a cmap */ - if ( pure_cff && cff->top_font.font_dict.cid_registry != 0xFFFFU ) - goto Exit; - - /* we didn't find a Unicode charmap -- synthetize one */ - cmaprec.face = cffface; - cmaprec.platform_id = 3; - cmaprec.encoding_id = 1; - cmaprec.encoding = FT_ENCODING_UNICODE; - - nn = (FT_UInt)cffface->num_charmaps; - - FT_CMap_New( &cff_cmap_unicode_class_rec, NULL, &cmaprec, NULL ); - - /* if no Unicode charmap was previously selected, select this one */ - if ( cffface->charmap == NULL && nn != (FT_UInt)cffface->num_charmaps ) - cffface->charmap = cffface->charmaps[nn]; - - Skip_Unicode: - if ( encoding->count > 0 ) - { - FT_CMap_Class clazz; - - - cmaprec.face = cffface; - cmaprec.platform_id = 7; /* Adobe platform id */ - - if ( encoding->offset == 0 ) - { - cmaprec.encoding_id = TT_ADOBE_ID_STANDARD; - cmaprec.encoding = FT_ENCODING_ADOBE_STANDARD; - clazz = &cff_cmap_encoding_class_rec; - } - else if ( encoding->offset == 1 ) - { - cmaprec.encoding_id = TT_ADOBE_ID_EXPERT; - cmaprec.encoding = FT_ENCODING_ADOBE_EXPERT; - clazz = &cff_cmap_encoding_class_rec; - } - else - { - cmaprec.encoding_id = TT_ADOBE_ID_CUSTOM; - cmaprec.encoding = FT_ENCODING_ADOBE_CUSTOM; - clazz = &cff_cmap_encoding_class_rec; - } - - FT_CMap_New( clazz, NULL, &cmaprec, NULL ); - } - } - } - - Exit: - return error; - - Bad_Format: - error = CFF_Err_Unknown_File_Format; - goto Exit; - } - - - FT_LOCAL_DEF( void ) - cff_face_done( FT_Face cffface ) /* CFF_Face */ - { - CFF_Face face = (CFF_Face)cffface; - FT_Memory memory = cffface->memory; - SFNT_Service sfnt = (SFNT_Service)face->sfnt; - - - if ( sfnt ) - sfnt->done_face( face ); - - { - CFF_Font cff = (CFF_Font)face->extra.data; - - - if ( cff ) - { - cff_font_done( cff ); - FT_FREE( face->extra.data ); - } - } - } - - - FT_LOCAL_DEF( FT_Error ) - cff_driver_init( FT_Module module ) - { - FT_UNUSED( module ); - - return CFF_Err_Ok; - } - - - FT_LOCAL_DEF( void ) - cff_driver_done( FT_Module module ) - { - FT_UNUSED( module ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffobjs.h b/nx-X11/extras/freetype2/src/cff/cffobjs.h deleted file mode 100644 index 338ec748b..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffobjs.h +++ /dev/null @@ -1,171 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffobjs.h */ -/* */ -/* OpenType objects manager (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFFOBJS_H__ -#define __CFFOBJS_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include "cfftypes.h" -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* CFF_Driver */ - /* */ - /* <Description> */ - /* A handle to an OpenType driver object. */ - /* */ - typedef struct CFF_DriverRec_* CFF_Driver; - - typedef TT_Face CFF_Face; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* CFF_Size */ - /* */ - /* <Description> */ - /* A handle to an OpenType size object. */ - /* */ - typedef struct CFF_SizeRec_ - { - FT_SizeRec root; - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - FT_UInt strike_index; /* 0xFFFF to indicate invalid */ - FT_Size_Metrics strike_metrics; /* current strike's metrics */ - -#endif - - } CFF_SizeRec, *CFF_Size; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* CFF_GlyphSlot */ - /* */ - /* <Description> */ - /* A handle to an OpenType glyph slot object. */ - /* */ - typedef struct CFF_GlyphSlotRec_ - { - FT_GlyphSlotRec root; - - FT_Bool hint; - FT_Bool scaled; - - FT_Fixed x_scale; - FT_Fixed y_scale; - - } CFF_GlyphSlotRec, *CFF_GlyphSlot; - - - - /*************************************************************************/ - /* */ - /* Subglyph transformation record. */ - /* */ - typedef struct CFF_Transform_ - { - FT_Fixed xx, xy; /* transformation matrix coefficients */ - FT_Fixed yx, yy; - FT_F26Dot6 ox, oy; /* offsets */ - - } CFF_Transform; - - - /***********************************************************************/ - /* */ - /* TrueType driver class. */ - /* */ - typedef struct CFF_DriverRec_ - { - FT_DriverRec root; - void* extension_component; - - } CFF_DriverRec; - - - FT_LOCAL( FT_Error ) - cff_size_init( FT_Size size ); /* CFF_Size */ - - FT_LOCAL( void ) - cff_size_done( FT_Size size ); /* CFF_Size */ - - FT_LOCAL( FT_Error ) - cff_size_reset( FT_Size size, /* CFF_Size */ - FT_UInt char_width, - FT_UInt char_height ); - - FT_LOCAL( FT_Error ) - cff_point_size_reset( FT_Size cffsize, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); - - FT_LOCAL( void ) - cff_slot_done( FT_GlyphSlot slot ); - - FT_LOCAL( FT_Error ) - cff_slot_init( FT_GlyphSlot slot ); - - - /*************************************************************************/ - /* */ - /* Face functions */ - /* */ - FT_LOCAL( FT_Error ) - cff_face_init( FT_Stream stream, - FT_Face face, /* CFF_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL( void ) - cff_face_done( FT_Face face ); /* CFF_Face */ - - - /*************************************************************************/ - /* */ - /* Driver functions */ - /* */ - FT_LOCAL( FT_Error ) - cff_driver_init( FT_Module module ); - - FT_LOCAL( void ) - cff_driver_done( FT_Module module ); - - -FT_END_HEADER - -#endif /* __CFFOBJS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffparse.c b/nx-X11/extras/freetype2/src/cff/cffparse.c deleted file mode 100644 index 8f1a98c55..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffparse.c +++ /dev/null @@ -1,688 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffparse.c */ -/* */ -/* CFF token stream parser (body) */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "cffparse.h" -#include FT_INTERNAL_STREAM_H - -#include "cfferrs.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cffparse - - - enum - { - cff_kind_none = 0, - cff_kind_num, - cff_kind_fixed, - cff_kind_fixed_thousand, - cff_kind_string, - cff_kind_bool, - cff_kind_delta, - cff_kind_callback, - - cff_kind_max /* do not remove */ - }; - - - /* now generate handlers for the most simple fields */ - typedef FT_Error (*CFF_Field_Reader)( CFF_Parser parser ); - - typedef struct CFF_Field_Handler_ - { - int kind; - int code; - FT_UInt offset; - FT_Byte size; - CFF_Field_Reader reader; - FT_UInt array_max; - FT_UInt count_offset; - - } CFF_Field_Handler; - - - FT_LOCAL_DEF( void ) - cff_parser_init( CFF_Parser parser, - FT_UInt code, - void* object ) - { - FT_MEM_ZERO( parser, sizeof ( *parser ) ); - - parser->top = parser->stack; - parser->object_code = code; - parser->object = object; - } - - - /* read an integer */ - static FT_Long - cff_parse_integer( FT_Byte* start, - FT_Byte* limit ) - { - FT_Byte* p = start; - FT_Int v = *p++; - FT_Long val = 0; - - - if ( v == 28 ) - { - if ( p + 2 > limit ) - goto Bad; - - val = (FT_Short)( ( (FT_Int)p[0] << 8 ) | p[1] ); - p += 2; - } - else if ( v == 29 ) - { - if ( p + 4 > limit ) - goto Bad; - - val = ( (FT_Long)p[0] << 24 ) | - ( (FT_Long)p[1] << 16 ) | - ( (FT_Long)p[2] << 8 ) | - p[3]; - p += 4; - } - else if ( v < 247 ) - { - val = v - 139; - } - else if ( v < 251 ) - { - if ( p + 1 > limit ) - goto Bad; - - val = ( v - 247 ) * 256 + p[0] + 108; - p++; - } - else - { - if ( p + 1 > limit ) - goto Bad; - - val = -( v - 251 ) * 256 - p[0] - 108; - p++; - } - - Exit: - return val; - - Bad: - val = 0; - goto Exit; - } - - - /* read a real */ - static FT_Fixed - cff_parse_real( FT_Byte* start, - FT_Byte* limit, - FT_Int power_ten ) - { - FT_Byte* p = start; - FT_Long num, divider, result, exp; - FT_Int sign = 0, exp_sign = 0; - FT_UInt nib; - FT_UInt phase; - - - result = 0; - num = 0; - divider = 1; - - /* first of all, read the integer part */ - phase = 4; - - for (;;) - { - /* If we entered this iteration with phase == 4, we need to */ - /* read a new byte. This also skips past the intial 0x1E. */ - if ( phase ) - { - p++; - - /* Make sure we don't read past the end. */ - if ( p >= limit ) - goto Bad; - } - - /* Get the nibble. */ - nib = ( p[0] >> phase ) & 0xF; - phase = 4 - phase; - - if ( nib == 0xE ) - sign = 1; - else if ( nib > 9 ) - break; - else - result = result * 10 + nib; - } - - /* read decimal part, if any */ - if ( nib == 0xa ) - for (;;) - { - /* If we entered this iteration with phase == 4, we need */ - /* to read a new byte. */ - if ( phase ) - { - p++; - - /* Make sure we don't read past the end. */ - if ( p >= limit ) - goto Bad; - } - - /* Get the nibble. */ - nib = ( p[0] >> phase ) & 0xF; - phase = 4 - phase; - if ( nib >= 10 ) - break; - - if ( divider < 10000000L ) - { - num = num * 10 + nib; - divider *= 10; - } - } - - /* read exponent, if any */ - if ( nib == 12 ) - { - exp_sign = 1; - nib = 11; - } - - if ( nib == 11 ) - { - exp = 0; - - for (;;) - { - /* If we entered this iteration with phase == 4, we need */ - /* to read a new byte. */ - if ( phase ) - { - p++; - - /* Make sure we don't read past the end. */ - if ( p >= limit ) - goto Bad; - } - - /* Get the nibble. */ - nib = ( p[0] >> phase ) & 0xF; - phase = 4 - phase; - if ( nib >= 10 ) - break; - - exp = exp * 10 + nib; - } - - if ( exp_sign ) - exp = -exp; - - power_ten += (FT_Int)exp; - } - - /* raise to power of ten if needed */ - while ( power_ten > 0 ) - { - result = result * 10; - num = num * 10; - - power_ten--; - } - - while ( power_ten < 0 ) - { - result = result / 10; - divider = divider * 10; - - power_ten++; - } - - /* Move the integer part into the high 16 bits. */ - result <<= 16; - - /* Place the decimal part into the low 16 bits. */ - if ( num ) - result |= FT_DivFix( num, divider ); - - if ( sign ) - result = -result; - - Exit: - return result; - - Bad: - result = 0; - goto Exit; - } - - - /* read a number, either integer or real */ - static FT_Long - cff_parse_num( FT_Byte** d ) - { - return ( **d == 30 ? ( cff_parse_real ( d[0], d[1], 0 ) >> 16 ) - : cff_parse_integer( d[0], d[1] ) ); - } - - - /* read a floating point number, either integer or real */ - static FT_Fixed - cff_parse_fixed( FT_Byte** d ) - { - return ( **d == 30 ? cff_parse_real ( d[0], d[1], 0 ) - : cff_parse_integer( d[0], d[1] ) << 16 ); - } - - /* read a floating point number, either integer or real, */ - /* but return 1000 times the number read in. */ - static FT_Fixed - cff_parse_fixed_thousand( FT_Byte** d ) - { - return **d == - 30 ? cff_parse_real ( d[0], d[1], 3 ) - : (FT_Fixed)FT_MulFix( cff_parse_integer( d[0], d[1] ) << 16, 1000 ); - } - - static FT_Error - cff_parse_font_matrix( CFF_Parser parser ) - { - CFF_FontRecDict dict = (CFF_FontRecDict)parser->object; - FT_Matrix* matrix = &dict->font_matrix; - FT_Vector* offset = &dict->font_offset; - FT_UShort* upm = &dict->units_per_em; - FT_Byte** data = parser->stack; - FT_Error error; - FT_Fixed temp; - - - error = CFF_Err_Stack_Underflow; - - if ( parser->top >= parser->stack + 6 ) - { - matrix->xx = cff_parse_fixed_thousand( data++ ); - matrix->yx = cff_parse_fixed_thousand( data++ ); - matrix->xy = cff_parse_fixed_thousand( data++ ); - matrix->yy = cff_parse_fixed_thousand( data++ ); - offset->x = cff_parse_fixed_thousand( data++ ); - offset->y = cff_parse_fixed_thousand( data ); - - temp = FT_ABS( matrix->yy ); - - *upm = (FT_UShort)FT_DivFix( 0x10000L, FT_DivFix( temp, 1000 ) ); - - if ( temp != 0x10000L ) - { - matrix->xx = FT_DivFix( matrix->xx, temp ); - matrix->yx = FT_DivFix( matrix->yx, temp ); - matrix->xy = FT_DivFix( matrix->xy, temp ); - matrix->yy = FT_DivFix( matrix->yy, temp ); - offset->x = FT_DivFix( offset->x, temp ); - offset->y = FT_DivFix( offset->y, temp ); - } - - /* note that the offsets must be expressed in integer font units */ - offset->x >>= 16; - offset->y >>= 16; - - error = CFF_Err_Ok; - } - - return error; - } - - - static FT_Error - cff_parse_font_bbox( CFF_Parser parser ) - { - CFF_FontRecDict dict = (CFF_FontRecDict)parser->object; - FT_BBox* bbox = &dict->font_bbox; - FT_Byte** data = parser->stack; - FT_Error error; - - - error = CFF_Err_Stack_Underflow; - - if ( parser->top >= parser->stack + 4 ) - { - bbox->xMin = FT_RoundFix( cff_parse_fixed( data++ ) ); - bbox->yMin = FT_RoundFix( cff_parse_fixed( data++ ) ); - bbox->xMax = FT_RoundFix( cff_parse_fixed( data++ ) ); - bbox->yMax = FT_RoundFix( cff_parse_fixed( data ) ); - error = CFF_Err_Ok; - } - - return error; - } - - - static FT_Error - cff_parse_private_dict( CFF_Parser parser ) - { - CFF_FontRecDict dict = (CFF_FontRecDict)parser->object; - FT_Byte** data = parser->stack; - FT_Error error; - - - error = CFF_Err_Stack_Underflow; - - if ( parser->top >= parser->stack + 2 ) - { - dict->private_size = cff_parse_num( data++ ); - dict->private_offset = cff_parse_num( data ); - error = CFF_Err_Ok; - } - - return error; - } - - - static FT_Error - cff_parse_cid_ros( CFF_Parser parser ) - { - CFF_FontRecDict dict = (CFF_FontRecDict)parser->object; - FT_Byte** data = parser->stack; - FT_Error error; - - - error = CFF_Err_Stack_Underflow; - - if ( parser->top >= parser->stack + 3 ) - { - dict->cid_registry = (FT_UInt)cff_parse_num ( data++ ); - dict->cid_ordering = (FT_UInt)cff_parse_num ( data++ ); - dict->cid_supplement = (FT_ULong)cff_parse_num( data ); - error = CFF_Err_Ok; - } - - return error; - } - - -#define CFF_FIELD_NUM( code, name ) \ - CFF_FIELD( code, name, cff_kind_num ) -#define CFF_FIELD_FIXED( code, name ) \ - CFF_FIELD( code, name, cff_kind_fixed ) -#define CFF_FIELD_FIXED_1000( code, name ) \ - CFF_FIELD( code, name, cff_kind_fixed_thousand ) -#define CFF_FIELD_STRING( code, name ) \ - CFF_FIELD( code, name, cff_kind_string ) -#define CFF_FIELD_BOOL( code, name ) \ - CFF_FIELD( code, name, cff_kind_bool ) -#define CFF_FIELD_DELTA( code, name, max ) \ - CFF_FIELD( code, name, cff_kind_delta ) - -#define CFF_FIELD_CALLBACK( code, name ) \ - { \ - cff_kind_callback, \ - code | CFFCODE, \ - 0, 0, \ - cff_parse_ ## name, \ - 0, 0 \ - }, - -#undef CFF_FIELD -#define CFF_FIELD( code, name, kind ) \ - { \ - kind, \ - code | CFFCODE, \ - FT_FIELD_OFFSET( name ), \ - FT_FIELD_SIZE( name ), \ - 0, 0, 0 \ - }, - -#undef CFF_FIELD_DELTA -#define CFF_FIELD_DELTA( code, name, max ) \ - { \ - cff_kind_delta, \ - code | CFFCODE, \ - FT_FIELD_OFFSET( name ), \ - FT_FIELD_SIZE_DELTA( name ), \ - 0, \ - max, \ - FT_FIELD_OFFSET( num_ ## name ) \ - }, - -#define CFFCODE_TOPDICT 0x1000 -#define CFFCODE_PRIVATE 0x2000 - - static const CFF_Field_Handler cff_field_handlers[] = - { - -#include "cfftoken.h" - - { 0, 0, 0, 0, 0, 0, 0 } - }; - - - FT_LOCAL_DEF( FT_Error ) - cff_parser_run( CFF_Parser parser, - FT_Byte* start, - FT_Byte* limit ) - { - FT_Byte* p = start; - FT_Error error = CFF_Err_Ok; - - - parser->top = parser->stack; - parser->start = start; - parser->limit = limit; - parser->cursor = start; - - while ( p < limit ) - { - FT_UInt v = *p; - - - if ( v >= 27 && v != 31 ) - { - /* it's a number; we will push its position on the stack */ - if ( parser->top - parser->stack >= CFF_MAX_STACK_DEPTH ) - goto Stack_Overflow; - - *parser->top ++ = p; - - /* now, skip it */ - if ( v == 30 ) - { - /* skip real number */ - p++; - for (;;) - { - if ( p >= limit ) - goto Syntax_Error; - v = p[0] >> 4; - if ( v == 15 ) - break; - v = p[0] & 0xF; - if ( v == 15 ) - break; - p++; - } - } - else if ( v == 28 ) - p += 2; - else if ( v == 29 ) - p += 4; - else if ( v > 246 ) - p += 1; - } - else - { - /* This is not a number, hence it's an operator. Compute its code */ - /* and look for it in our current list. */ - - FT_UInt code; - FT_UInt num_args = (FT_UInt) - ( parser->top - parser->stack ); - const CFF_Field_Handler* field; - - - *parser->top = p; - code = v; - if ( v == 12 ) - { - /* two byte operator */ - p++; - if ( p >= limit ) - goto Syntax_Error; - - code = 0x100 | p[0]; - } - code = code | parser->object_code; - - for ( field = cff_field_handlers; field->kind; field++ ) - { - if ( field->code == (FT_Int)code ) - { - /* we found our field's handler; read it */ - FT_Long val; - FT_Byte* q = (FT_Byte*)parser->object + field->offset; - - - /* check that we have enough arguments -- except for */ - /* delta encoded arrays, which can be empty */ - if ( field->kind != cff_kind_delta && num_args < 1 ) - goto Stack_Underflow; - - switch ( field->kind ) - { - case cff_kind_bool: - case cff_kind_string: - case cff_kind_num: - val = cff_parse_num( parser->stack ); - goto Store_Number; - - case cff_kind_fixed: - val = cff_parse_fixed( parser->stack ); - goto Store_Number; - - case cff_kind_fixed_thousand: - val = cff_parse_fixed_thousand( parser->stack ); - - Store_Number: - switch ( field->size ) - { - case (8 / FT_CHAR_BIT): - *(FT_Byte*)q = (FT_Byte)val; - break; - - case (16 / FT_CHAR_BIT): - *(FT_Short*)q = (FT_Short)val; - break; - - case (32 / FT_CHAR_BIT): - *(FT_Int32*)q = (FT_Int)val; - break; - - default: /* for 64-bit systems */ - *(FT_Long*)q = val; - } - break; - - case cff_kind_delta: - { - FT_Byte* qcount = (FT_Byte*)parser->object + - field->count_offset; - - FT_Byte** data = parser->stack; - - - if ( num_args > field->array_max ) - num_args = field->array_max; - - /* store count */ - *qcount = (FT_Byte)num_args; - - val = 0; - while ( num_args > 0 ) - { - val += cff_parse_num( data++ ); - switch ( field->size ) - { - case (8 / FT_CHAR_BIT): - *(FT_Byte*)q = (FT_Byte)val; - break; - - case (16 / FT_CHAR_BIT): - *(FT_Short*)q = (FT_Short)val; - break; - - case (32 / FT_CHAR_BIT): - *(FT_Int32*)q = (FT_Int)val; - break; - - default: /* for 64-bit systems */ - *(FT_Long*)q = val; - } - - q += field->size; - num_args--; - } - } - break; - - default: /* callback */ - error = field->reader( parser ); - if ( error ) - goto Exit; - } - goto Found; - } - } - - /* this is an unknown operator, or it is unsupported; */ - /* we will ignore it for now. */ - - Found: - /* clear stack */ - parser->top = parser->stack; - } - p++; - } - - Exit: - return error; - - Stack_Overflow: - error = CFF_Err_Invalid_Argument; - goto Exit; - - Stack_Underflow: - error = CFF_Err_Invalid_Argument; - goto Exit; - - Syntax_Error: - error = CFF_Err_Invalid_Argument; - goto Exit; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cffparse.h b/nx-X11/extras/freetype2/src/cff/cffparse.h deleted file mode 100644 index 8f3fa5885..000000000 --- a/nx-X11/extras/freetype2/src/cff/cffparse.h +++ /dev/null @@ -1,69 +0,0 @@ -/***************************************************************************/ -/* */ -/* cffparse.h */ -/* */ -/* CFF token stream parser (specification) */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFF_PARSE_H__ -#define __CFF_PARSE_H__ - - -#include <ft2build.h> -#include "cfftypes.h" -#include FT_INTERNAL_OBJECTS_H - - -FT_BEGIN_HEADER - - -#define CFF_MAX_STACK_DEPTH 96 - -#define CFF_CODE_TOPDICT 0x1000 -#define CFF_CODE_PRIVATE 0x2000 - - - typedef struct CFF_ParserRec_ - { - FT_Byte* start; - FT_Byte* limit; - FT_Byte* cursor; - - FT_Byte* stack[CFF_MAX_STACK_DEPTH + 1]; - FT_Byte** top; - - FT_UInt object_code; - void* object; - - } CFF_ParserRec, *CFF_Parser; - - - FT_LOCAL( void ) - cff_parser_init( CFF_Parser parser, - FT_UInt code, - void* object ); - - FT_LOCAL( FT_Error ) - cff_parser_run( CFF_Parser parser, - FT_Byte* start, - FT_Byte* limit ); - - -FT_END_HEADER - - -#endif /* __CFF_PARSE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cfftoken.h b/nx-X11/extras/freetype2/src/cff/cfftoken.h deleted file mode 100644 index 659d1576a..000000000 --- a/nx-X11/extras/freetype2/src/cff/cfftoken.h +++ /dev/null @@ -1,97 +0,0 @@ -/***************************************************************************/ -/* */ -/* cfftoken.h */ -/* */ -/* CFF token definitions (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#undef FT_STRUCTURE -#define FT_STRUCTURE CFF_FontRecDictRec - -#undef CFFCODE -#define CFFCODE CFFCODE_TOPDICT - - CFF_FIELD_STRING ( 0, version ) - CFF_FIELD_STRING ( 1, notice ) - CFF_FIELD_STRING ( 0x100, copyright ) - CFF_FIELD_STRING ( 2, full_name ) - CFF_FIELD_STRING ( 3, family_name ) - CFF_FIELD_STRING ( 4, weight ) - CFF_FIELD_BOOL ( 0x101, is_fixed_pitch ) - CFF_FIELD_FIXED ( 0x102, italic_angle ) - CFF_FIELD_FIXED ( 0x103, underline_position ) - CFF_FIELD_FIXED ( 0x104, underline_thickness ) - CFF_FIELD_NUM ( 0x105, paint_type ) - CFF_FIELD_NUM ( 0x106, charstring_type ) - CFF_FIELD_CALLBACK( 0x107, font_matrix ) - CFF_FIELD_NUM ( 13, unique_id ) - CFF_FIELD_CALLBACK( 5, font_bbox ) - CFF_FIELD_NUM ( 0x108, stroke_width ) - CFF_FIELD_NUM ( 15, charset_offset ) - CFF_FIELD_NUM ( 16, encoding_offset ) - CFF_FIELD_NUM ( 17, charstrings_offset ) - CFF_FIELD_CALLBACK( 18, private_dict ) - CFF_FIELD_NUM ( 0x114, synthetic_base ) - CFF_FIELD_STRING ( 0x115, embedded_postscript ) - -#if 0 - CFF_FIELD_STRING ( 0x116, base_font_name ) - CFF_FIELD_DELTA ( 0x117, base_font_blend, 16 ) - CFF_FIELD_CALLBACK( 0x118, multiple_master ) - CFF_FIELD_CALLBACK( 0x119, blend_axit_types ) -#endif - - CFF_FIELD_CALLBACK( 0x11E, cid_ros ) - CFF_FIELD_NUM ( 0x11F, cid_font_version ) - CFF_FIELD_NUM ( 0x120, cid_font_revision ) - CFF_FIELD_NUM ( 0x121, cid_font_type ) - CFF_FIELD_NUM ( 0x122, cid_count ) - CFF_FIELD_NUM ( 0x123, cid_uid_base ) - CFF_FIELD_NUM ( 0x124, cid_fd_array_offset ) - CFF_FIELD_NUM ( 0x125, cid_fd_select_offset ) - CFF_FIELD_STRING ( 0x126, cid_font_name ) - -#if 0 - CFF_FIELD_NUM ( 0x127, chameleon ) -#endif - - -#undef FT_STRUCTURE -#define FT_STRUCTURE CFF_PrivateRec -#undef CFFCODE -#define CFFCODE CFFCODE_PRIVATE - - CFF_FIELD_DELTA ( 6, blue_values, 14 ) - CFF_FIELD_DELTA ( 7, other_blues, 10 ) - CFF_FIELD_DELTA ( 8, family_blues, 14 ) - CFF_FIELD_DELTA ( 9, family_other_blues, 10 ) - CFF_FIELD_FIXED_1000( 0x109, blue_scale ) - CFF_FIELD_NUM ( 0x10A, blue_shift ) - CFF_FIELD_NUM ( 0x10B, blue_fuzz ) - CFF_FIELD_NUM ( 10, standard_width ) - CFF_FIELD_NUM ( 11, standard_height ) - CFF_FIELD_DELTA ( 0x10C, snap_widths, 13 ) - CFF_FIELD_DELTA ( 0x10D, snap_heights, 13 ) - CFF_FIELD_BOOL ( 0x10E, force_bold ) - CFF_FIELD_FIXED ( 0x10F, force_bold_threshold ) - CFF_FIELD_NUM ( 0x110, lenIV ) - CFF_FIELD_NUM ( 0x111, language_group ) - CFF_FIELD_FIXED ( 0x112, expansion_factor ) - CFF_FIELD_NUM ( 0x113, initial_random_seed ) - CFF_FIELD_NUM ( 19, local_subrs_offset ) - CFF_FIELD_NUM ( 20, default_width ) - CFF_FIELD_NUM ( 21, nominal_width ) - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/cfftypes.h b/nx-X11/extras/freetype2/src/cff/cfftypes.h deleted file mode 100644 index 9ddc663de..000000000 --- a/nx-X11/extras/freetype2/src/cff/cfftypes.h +++ /dev/null @@ -1,255 +0,0 @@ -/***************************************************************************/ -/* */ -/* cfftypes.h */ -/* */ -/* Basic OpenType/CFF type definitions and interface (specification */ -/* only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CFFTYPES_H__ -#define __CFFTYPES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CFF_IndexRec */ - /* */ - /* <Description> */ - /* A structure used to model a CFF Index table. */ - /* */ - /* <Fields> */ - /* stream :: The source input stream. */ - /* */ - /* count :: The number of elements in the index. */ - /* */ - /* off_size :: The size in bytes of object offsets in index. */ - /* */ - /* data_offset :: The position of first data byte in the index's */ - /* bytes. */ - /* */ - /* offsets :: A table of element offsets in the index. */ - /* */ - /* bytes :: If the index is loaded in memory, its bytes. */ - /* */ - typedef struct CFF_IndexRec_ - { - FT_Stream stream; - FT_UInt count; - FT_Byte off_size; - FT_ULong data_offset; - - FT_ULong* offsets; - FT_Byte* bytes; - - } CFF_IndexRec, *CFF_Index; - - - typedef struct CFF_EncodingRec_ - { - FT_UInt format; - FT_ULong offset; - - FT_UInt count; - FT_UShort sids [256]; /* avoid dynamic allocations */ - FT_UShort codes[256]; - - } CFF_EncodingRec, *CFF_Encoding; - - - typedef struct CFF_CharsetRec_ - { - - FT_UInt format; - FT_ULong offset; - - FT_UShort* sids; - FT_UShort* cids; /* the inverse mapping of `sids'; only needed */ - /* for CID-keyed fonts */ - } CFF_CharsetRec, *CFF_Charset; - - - typedef struct CFF_FontRecDictRec_ - { - FT_UInt version; - FT_UInt notice; - FT_UInt copyright; - FT_UInt full_name; - FT_UInt family_name; - FT_UInt weight; - FT_Bool is_fixed_pitch; - FT_Fixed italic_angle; - FT_Fixed underline_position; - FT_Fixed underline_thickness; - FT_Int paint_type; - FT_Int charstring_type; - FT_Matrix font_matrix; - FT_UShort units_per_em; - FT_Vector font_offset; - FT_ULong unique_id; - FT_BBox font_bbox; - FT_Pos stroke_width; - FT_ULong charset_offset; - FT_ULong encoding_offset; - FT_ULong charstrings_offset; - FT_ULong private_offset; - FT_ULong private_size; - FT_Long synthetic_base; - FT_UInt embedded_postscript; - - /* these should only be used for the top-level font dictionary */ - FT_UInt cid_registry; - FT_UInt cid_ordering; - FT_ULong cid_supplement; - - FT_Long cid_font_version; - FT_Long cid_font_revision; - FT_Long cid_font_type; - FT_ULong cid_count; - FT_ULong cid_uid_base; - FT_ULong cid_fd_array_offset; - FT_ULong cid_fd_select_offset; - FT_UInt cid_font_name; - - } CFF_FontRecDictRec, *CFF_FontRecDict; - - - typedef struct CFF_PrivateRec_ - { - FT_Byte num_blue_values; - FT_Byte num_other_blues; - FT_Byte num_family_blues; - FT_Byte num_family_other_blues; - - FT_Pos blue_values[14]; - FT_Pos other_blues[10]; - FT_Pos family_blues[14]; - FT_Pos family_other_blues[10]; - - FT_Fixed blue_scale; - FT_Pos blue_shift; - FT_Pos blue_fuzz; - FT_Pos standard_width; - FT_Pos standard_height; - - FT_Byte num_snap_widths; - FT_Byte num_snap_heights; - FT_Pos snap_widths[13]; - FT_Pos snap_heights[13]; - FT_Bool force_bold; - FT_Fixed force_bold_threshold; - FT_Int lenIV; - FT_Int language_group; - FT_Fixed expansion_factor; - FT_Long initial_random_seed; - FT_ULong local_subrs_offset; - FT_Pos default_width; - FT_Pos nominal_width; - - } CFF_PrivateRec, *CFF_Private; - - - typedef struct CFF_FDSelectRec_ - { - FT_Byte format; - FT_UInt range_count; - - /* that's the table, taken from the file `as is' */ - FT_Byte* data; - FT_UInt data_size; - - /* small cache for format 3 only */ - FT_UInt cache_first; - FT_UInt cache_count; - FT_Byte cache_fd; - - } CFF_FDSelectRec, *CFF_FDSelect; - - - /* A SubFont packs a font dict and a private dict together. They are */ - /* needed to support CID-keyed CFF fonts. */ - typedef struct CFF_SubFontRec_ - { - CFF_FontRecDictRec font_dict; - CFF_PrivateRec private_dict; - - CFF_IndexRec local_subrs_index; - FT_UInt num_local_subrs; - FT_Byte** local_subrs; - - } CFF_SubFontRec, *CFF_SubFont; - - - /* maximum number of sub-fonts in a CID-keyed file */ -#define CFF_MAX_CID_FONTS 32 - - - typedef struct CFF_FontRec_ - { - FT_Stream stream; - FT_Memory memory; - FT_UInt num_faces; - FT_UInt num_glyphs; - - FT_Byte version_major; - FT_Byte version_minor; - FT_Byte header_size; - FT_Byte absolute_offsize; - - - CFF_IndexRec name_index; - CFF_IndexRec top_dict_index; - CFF_IndexRec string_index; - CFF_IndexRec global_subrs_index; - - CFF_EncodingRec encoding; - CFF_CharsetRec charset; - - CFF_IndexRec charstrings_index; - CFF_IndexRec font_dict_index; - CFF_IndexRec private_index; - CFF_IndexRec local_subrs_index; - - FT_String* font_name; - FT_UInt num_global_subrs; - FT_Byte** global_subrs; - - CFF_SubFontRec top_font; - FT_UInt num_subfonts; - CFF_SubFont subfonts[CFF_MAX_CID_FONTS]; - - CFF_FDSelectRec fd_select; - - /* interface to PostScript hinter */ - void* pshinter; - - /* interface to Postscript Names service */ - void* psnames; - - } CFF_FontRec, *CFF_Font; - - -FT_END_HEADER - -#endif /* __CFFTYPES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cff/descrip.mms b/nx-X11/extras/freetype2/src/cff/descrip.mms deleted file mode 100644 index 2401f2ee2..000000000 --- a/nx-X11/extras/freetype2/src/cff/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 OpenType/CFF driver compilation rules for VMS -# - - -# Copyright 2001, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.cff]) - -OBJS=cff.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/cff/module.mk b/nx-X11/extras/freetype2/src/cff/module.mk deleted file mode 100644 index 68789c98a..000000000 --- a/nx-X11/extras/freetype2/src/cff/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 CFF module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_cff_driver - -add_cff_driver: - $(OPEN_DRIVER)cff_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)cff $(ECHO_DRIVER_DESC)OpenType fonts with extension *.otf$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/cff/rules.mk b/nx-X11/extras/freetype2/src/cff/rules.mk deleted file mode 100644 index 4100c8068..000000000 --- a/nx-X11/extras/freetype2/src/cff/rules.mk +++ /dev/null @@ -1,72 +0,0 @@ -# -# FreeType 2 OpenType/CFF driver configuration rules -# - - -# Copyright 1996-2000, 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# OpenType driver directory -# -CFF_DIR := $(SRC_DIR)/cff - - -CFF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CFF_DIR)) - - -# CFF driver sources (i.e., C files) -# -CFF_DRV_SRC := $(CFF_DIR)/cffobjs.c \ - $(CFF_DIR)/cffload.c \ - $(CFF_DIR)/cffgload.c \ - $(CFF_DIR)/cffparse.c \ - $(CFF_DIR)/cffcmap.c \ - $(CFF_DIR)/cffdrivr.c - -# CFF driver headers -# -CFF_DRV_H := $(CFF_DRV_SRC:%.c=%.h) \ - $(CFF_DIR)/cfftoken.h \ - $(CFF_DIR)/cfftypes.h \ - $(CFF_DIR)/cfferrs.h - - -# CFF driver object(s) -# -# CFF_DRV_OBJ_M is used during `multi' builds -# CFF_DRV_OBJ_S is used during `single' builds -# -CFF_DRV_OBJ_M := $(CFF_DRV_SRC:$(CFF_DIR)/%.c=$(OBJ_DIR)/%.$O) -CFF_DRV_OBJ_S := $(OBJ_DIR)/cff.$O - -# CFF driver source file for single build -# -CFF_DRV_SRC_S := $(CFF_DIR)/cff.c - - -# CFF driver - single object -# -$(CFF_DRV_OBJ_S): $(CFF_DRV_SRC_S) $(CFF_DRV_SRC) $(FREETYPE_H) $(CFF_DRV_H) - $(CFF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CFF_DRV_SRC_S)) - - -# CFF driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(CFF_DIR)/%.c $(FREETYPE_H) $(CFF_DRV_H) - $(CFF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(CFF_DRV_OBJ_S) -DRV_OBJS_M += $(CFF_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/cid/Jamfile b/nx-X11/extras/freetype2/src/cid/Jamfile deleted file mode 100644 index a505e3ca4..000000000 --- a/nx-X11/extras/freetype2/src/cid/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/cid Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) cid ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = cidobjs cidload cidgload cidriver cidparse ; - } - else - { - _sources = type1cid ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/cid Jamfile diff --git a/nx-X11/extras/freetype2/src/cid/ciderrs.h b/nx-X11/extras/freetype2/src/cid/ciderrs.h deleted file mode 100644 index 01813e189..000000000 --- a/nx-X11/extras/freetype2/src/cid/ciderrs.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* ciderrs.h */ -/* */ -/* CID error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the CID error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __CIDERRS_H__ -#define __CIDERRS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX CID_Err_ -#define FT_ERR_BASE FT_Mod_Err_CID - -#include FT_ERRORS_H - -#endif /* __CIDERRS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidgload.c b/nx-X11/extras/freetype2/src/cid/cidgload.c deleted file mode 100644 index cbd0865d3..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidgload.c +++ /dev/null @@ -1,449 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidgload.c */ -/* */ -/* CID-keyed Type1 Glyph Loader (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "cidload.h" -#include "cidgload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_OUTLINE_H - -#include "ciderrs.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cidgload - - - FT_CALLBACK_DEF( FT_Error ) - cid_load_glyph( T1_Decoder decoder, - FT_UInt glyph_index ) - { - CID_Face face = (CID_Face)decoder->builder.face; - CID_FaceInfo cid = &face->cid; - FT_Byte* p; - FT_UInt fd_select; - FT_Stream stream = face->cid_stream; - FT_Error error = 0; - FT_Byte* charstring = 0; - FT_Memory memory = face->root.memory; - FT_ULong glyph_length = 0; - PSAux_Service psaux = (PSAux_Service)face->psaux; - - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* For incremental fonts get the character data using */ - /* the callback function. */ - if ( face->root.internal->incremental_interface ) - { - FT_Data glyph_data; - - - error = face->root.internal->incremental_interface->funcs->get_glyph_data( - face->root.internal->incremental_interface->object, - glyph_index, - &glyph_data ); - if ( error ) - goto Exit; - - p = (FT_Byte*)glyph_data.pointer; - fd_select = (FT_UInt)cid_get_offset( &p, (FT_Byte)cid->fd_bytes ); - - if ( glyph_data.length != 0 ) - { - glyph_length = glyph_data.length - cid->fd_bytes; - FT_ALLOC( charstring, glyph_length ); - if ( !error ) - ft_memcpy( charstring, glyph_data.pointer + cid->fd_bytes, - glyph_length ); - } - - face->root.internal->incremental_interface->funcs->free_glyph_data( - face->root.internal->incremental_interface->object, - &glyph_data ); - - if ( error ) - goto Exit; - } - - else - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - /* For ordinary fonts read the CID font dictionary index */ - /* and charstring offset from the CIDMap. */ - { - FT_UInt entry_len = cid->fd_bytes + cid->gd_bytes; - FT_ULong off1; - - - if ( FT_STREAM_SEEK( cid->data_offset + cid->cidmap_offset + - glyph_index * entry_len ) || - FT_FRAME_ENTER( 2 * entry_len ) ) - goto Exit; - - p = (FT_Byte*)stream->cursor; - fd_select = (FT_UInt) cid_get_offset( &p, (FT_Byte)cid->fd_bytes ); - off1 = (FT_ULong)cid_get_offset( &p, (FT_Byte)cid->gd_bytes ); - p += cid->fd_bytes; - glyph_length = cid_get_offset( &p, (FT_Byte)cid->gd_bytes ) - off1; - FT_FRAME_EXIT(); - - if ( glyph_length == 0 ) - goto Exit; - if ( FT_ALLOC( charstring, glyph_length ) ) - goto Exit; - if ( FT_STREAM_READ_AT( cid->data_offset + off1, - charstring, glyph_length ) ) - goto Exit; - } - - /* Now set up the subrs array and parse the charstrings. */ - { - CID_FaceDict dict; - CID_Subrs cid_subrs = face->subrs + fd_select; - FT_Int cs_offset; - - - /* Set up subrs */ - decoder->num_subrs = cid_subrs->num_subrs; - decoder->subrs = cid_subrs->code; - decoder->subrs_len = 0; - - /* Set up font matrix */ - dict = cid->font_dicts + fd_select; - - decoder->font_matrix = dict->font_matrix; - decoder->font_offset = dict->font_offset; - decoder->lenIV = dict->private_dict.lenIV; - - /* Decode the charstring. */ - - /* Adjustment for seed bytes. */ - cs_offset = ( decoder->lenIV >= 0 ? decoder->lenIV : 0 ); - - /* Decrypt only if lenIV >= 0. */ - if ( decoder->lenIV >= 0 ) - psaux->t1_decrypt( charstring, glyph_length, 4330 ); - - error = decoder->funcs.parse_charstrings( - decoder, charstring + cs_offset, - (FT_Int)glyph_length - cs_offset ); - } - - FT_FREE( charstring ); - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* Incremental fonts can optionally override the metrics. */ - if ( !error && - face->root.internal->incremental_interface && - face->root.internal->incremental_interface->funcs->get_glyph_metrics ) - { - FT_Incremental_MetricsRec metrics; - - - metrics.bearing_x = decoder->builder.left_bearing.x; - metrics.bearing_y = decoder->builder.left_bearing.y; - metrics.advance = decoder->builder.advance.x; - error = face->root.internal->incremental_interface->funcs->get_glyph_metrics( - face->root.internal->incremental_interface->object, - glyph_index, FALSE, &metrics ); - decoder->builder.left_bearing.x = metrics.bearing_x; - decoder->builder.left_bearing.y = metrics.bearing_y; - decoder->builder.advance.x = metrics.advance; - decoder->builder.advance.y = 0; - } - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - Exit: - return error; - } - - -#if 0 - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** *********/ - /********** COMPUTE THE MAXIMUM ADVANCE WIDTH *********/ - /********** *********/ - /********** The following code is in charge of computing *********/ - /********** the maximum advance width of the font. It *********/ - /********** quickly processes each glyph charstring to *********/ - /********** extract the value from either a `sbw' or `seac' *********/ - /********** operator. *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - cid_face_compute_max_advance( CID_Face face, - FT_Int* max_advance ) - { - FT_Error error; - T1_DecoderRec decoder; - FT_Int glyph_index; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - - - *max_advance = 0; - - /* Initialize load decoder */ - error = psaux->t1_decoder_funcs->init( &decoder, - (FT_Face)face, - 0, /* size */ - 0, /* glyph slot */ - 0, /* glyph names! XXX */ - 0, /* blend == 0 */ - 0, /* hinting == 0 */ - cid_load_glyph ); - if ( error ) - return error; - - decoder.builder.metrics_only = 1; - decoder.builder.load_points = 0; - - /* for each glyph, parse the glyph charstring and extract */ - /* the advance width */ - for ( glyph_index = 0; glyph_index < face->root.num_glyphs; - glyph_index++ ) - { - /* now get load the unscaled outline */ - error = cid_load_glyph( &decoder, glyph_index ); - /* ignore the error if one occurred - skip to next glyph */ - } - - *max_advance = decoder.builder.advance.x; - - return CID_Err_Ok; - } - - -#endif /* 0 */ - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** *********/ - /********** UNHINTED GLYPH LOADER *********/ - /********** *********/ - /********** The following code is in charge of loading a *********/ - /********** single outline. It completely ignores hinting *********/ - /********** and is used when FT_LOAD_NO_HINTING is set. *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - cid_slot_load_glyph( FT_GlyphSlot cidglyph, /* CID_GlyphSlot */ - FT_Size cidsize, /* CID_Size */ - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - CID_GlyphSlot glyph = (CID_GlyphSlot)cidglyph; - CID_Size size = (CID_Size)cidsize; - FT_Error error; - T1_DecoderRec decoder; - CID_Face face = (CID_Face)cidglyph->face; - FT_Bool hinting; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - FT_Matrix font_matrix; - FT_Vector font_offset; - - - if ( load_flags & FT_LOAD_NO_RECURSE ) - load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - - glyph->x_scale = cidsize->metrics.x_scale; - glyph->y_scale = cidsize->metrics.y_scale; - - cidglyph->outline.n_points = 0; - cidglyph->outline.n_contours = 0; - - hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 && - ( load_flags & FT_LOAD_NO_HINTING ) == 0 ); - - cidglyph->format = FT_GLYPH_FORMAT_OUTLINE; - - { - error = psaux->t1_decoder_funcs->init( &decoder, - cidglyph->face, - cidsize, - cidglyph, - 0, /* glyph names -- XXX */ - 0, /* blend == 0 */ - hinting, - FT_LOAD_TARGET_MODE( load_flags ), - cid_load_glyph ); - - /* set up the decoder */ - decoder.builder.no_recurse = FT_BOOL( - ( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ) ); - - error = cid_load_glyph( &decoder, glyph_index ); - - font_matrix = decoder.font_matrix; - font_offset = decoder.font_offset; - - /* save new glyph tables */ - psaux->t1_decoder_funcs->done( &decoder ); - } - - /* now, set the metrics -- this is rather simple, as */ - /* the left side bearing is the xMin, and the top side */ - /* bearing the yMax */ - if ( !error ) - { - cidglyph->outline.flags &= FT_OUTLINE_OWNER; - cidglyph->outline.flags |= FT_OUTLINE_REVERSE_FILL; - - /* for composite glyphs, return only left side bearing and */ - /* advance width */ - if ( load_flags & FT_LOAD_NO_RECURSE ) - { - FT_Slot_Internal internal = cidglyph->internal; - - - cidglyph->metrics.horiBearingX = decoder.builder.left_bearing.x; - cidglyph->metrics.horiAdvance = decoder.builder.advance.x; - - internal->glyph_matrix = font_matrix; - internal->glyph_delta = font_offset; - internal->glyph_transformed = 1; - } - else - { - FT_BBox cbox; - FT_Glyph_Metrics* metrics = &cidglyph->metrics; - FT_Vector advance; - - - /* copy the _unscaled_ advance width */ - metrics->horiAdvance = decoder.builder.advance.x; - cidglyph->linearHoriAdvance = decoder.builder.advance.x; - cidglyph->internal->glyph_transformed = 0; - - /* make up vertical metrics */ - metrics->vertBearingX = 0; - metrics->vertBearingY = 0; - metrics->vertAdvance = 0; - - cidglyph->linearVertAdvance = 0; - cidglyph->format = FT_GLYPH_FORMAT_OUTLINE; - - if ( size && cidsize->metrics.y_ppem < 24 ) - cidglyph->outline.flags |= FT_OUTLINE_HIGH_PRECISION; - - /* apply the font matrix */ - FT_Outline_Transform( &cidglyph->outline, &font_matrix ); - - FT_Outline_Translate( &cidglyph->outline, - font_offset.x, - font_offset.y ); - - advance.x = metrics->horiAdvance; - advance.y = 0; - FT_Vector_Transform( &advance, &font_matrix ); - metrics->horiAdvance = advance.x + font_offset.x; - advance.x = 0; - advance.y = metrics->vertAdvance; - FT_Vector_Transform( &advance, &font_matrix ); - metrics->vertAdvance = advance.y + font_offset.y; - - if ( ( load_flags & FT_LOAD_NO_SCALE ) == 0 ) - { - /* scale the outline and the metrics */ - FT_Int n; - FT_Outline* cur = decoder.builder.base; - FT_Vector* vec = cur->points; - FT_Fixed x_scale = glyph->x_scale; - FT_Fixed y_scale = glyph->y_scale; - - - /* First of all, scale the points */ - if ( !hinting ) - for ( n = cur->n_points; n > 0; n--, vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } - - FT_Outline_Get_CBox( &cidglyph->outline, &cbox ); - - /* Then scale the metrics */ - metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); - metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); - - metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); - metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); - - if ( hinting ) - { - metrics->horiAdvance = FT_PIX_ROUND( metrics->horiAdvance ); - metrics->vertAdvance = FT_PIX_ROUND( metrics->vertAdvance ); - - metrics->vertBearingX = FT_PIX_ROUND( metrics->vertBearingX ); - metrics->vertBearingY = FT_PIX_ROUND( metrics->vertBearingY ); - } - } - - /* compute the other metrics */ - FT_Outline_Get_CBox( &cidglyph->outline, &cbox ); - - /* grid fit the bounding box if necessary */ - if ( hinting ) - { - cbox.xMin = FT_PIX_FLOOR( cbox.xMin ); - cbox.yMin = FT_PIX_FLOOR( cbox.yMin ); - cbox.xMax = FT_PIX_CEIL( cbox.xMax ); - cbox.yMax = FT_PIX_CEIL( cbox.yMax ); - } - - metrics->width = cbox.xMax - cbox.xMin; - metrics->height = cbox.yMax - cbox.yMin; - - metrics->horiBearingX = cbox.xMin; - metrics->horiBearingY = cbox.yMax; - } - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidgload.h b/nx-X11/extras/freetype2/src/cid/cidgload.h deleted file mode 100644 index a0a91bfea..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidgload.h +++ /dev/null @@ -1,51 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidgload.h */ -/* */ -/* OpenType Glyph Loader (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CIDGLOAD_H__ -#define __CIDGLOAD_H__ - - -#include <ft2build.h> -#include "cidobjs.h" - - -FT_BEGIN_HEADER - - -#if 0 - - /* Compute the maximum advance width of a font through quick parsing */ - FT_LOCAL( FT_Error ) - cid_face_compute_max_advance( CID_Face face, - FT_Int* max_advance ); - -#endif /* 0 */ - - FT_LOCAL( FT_Error ) - cid_slot_load_glyph( FT_GlyphSlot glyph, /* CID_Glyph_Slot */ - FT_Size size, /* CID_Size */ - FT_UInt glyph_index, - FT_Int32 load_flags ); - - -FT_END_HEADER - -#endif /* __CIDGLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidload.c b/nx-X11/extras/freetype2/src/cid/cidload.c deleted file mode 100644 index ad29dd52d..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidload.c +++ /dev/null @@ -1,644 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidload.c */ -/* */ -/* CID-keyed Type1 font loader (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_CONFIG_CONFIG_H -#include FT_MULTIPLE_MASTERS_H -#include FT_INTERNAL_TYPE1_TYPES_H - -#include "cidload.h" - -#include "ciderrs.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cidload - - - /* read a single offset */ - FT_LOCAL_DEF( FT_Long ) - cid_get_offset( FT_Byte* *start, - FT_Byte offsize ) - { - FT_Long result; - FT_Byte* p = *start; - - - for ( result = 0; offsize > 0; offsize-- ) - { - result <<= 8; - result |= *p++; - } - - *start = p; - return result; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE 1 SYMBOL PARSING *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - static FT_Error - cid_load_keyword( CID_Face face, - CID_Loader* loader, - const T1_Field keyword ) - { - FT_Error error; - CID_Parser* parser = &loader->parser; - FT_Byte* object; - void* dummy_object; - CID_FaceInfo cid = &face->cid; - - - /* if the keyword has a dedicated callback, call it */ - if ( keyword->type == T1_FIELD_TYPE_CALLBACK ) - { - keyword->reader( (FT_Face)face, parser ); - error = parser->root.error; - goto Exit; - } - - /* we must now compute the address of our target object */ - switch ( keyword->location ) - { - case T1_FIELD_LOCATION_CID_INFO: - object = (FT_Byte*)cid; - break; - - case T1_FIELD_LOCATION_FONT_INFO: - object = (FT_Byte*)&cid->font_info; - break; - - case T1_FIELD_LOCATION_BBOX: - object = (FT_Byte*)&cid->font_bbox; - break; - - default: - { - CID_FaceDict dict; - - - if ( parser->num_dict < 0 ) - { - FT_ERROR(( "cid_load_keyword: invalid use of `%s'!\n", - keyword->ident )); - error = CID_Err_Syntax_Error; - goto Exit; - } - - dict = cid->font_dicts + parser->num_dict; - switch ( keyword->location ) - { - case T1_FIELD_LOCATION_PRIVATE: - object = (FT_Byte*)&dict->private_dict; - break; - - default: - object = (FT_Byte*)dict; - } - } - } - - dummy_object = object; - - /* now, load the keyword data in the object's field(s) */ - if ( keyword->type == T1_FIELD_TYPE_INTEGER_ARRAY || - keyword->type == T1_FIELD_TYPE_FIXED_ARRAY ) - error = cid_parser_load_field_table( &loader->parser, keyword, - &dummy_object ); - else - error = cid_parser_load_field( &loader->parser, - keyword, &dummy_object ); - Exit: - return error; - } - - - FT_CALLBACK_DEF( FT_Error ) - parse_font_matrix( CID_Face face, - CID_Parser* parser ) - { - FT_Matrix* matrix; - FT_Vector* offset; - CID_FaceDict dict; - FT_Face root = (FT_Face)&face->root; - FT_Fixed temp[6]; - FT_Fixed temp_scale; - - - if ( parser->num_dict >= 0 ) - { - dict = face->cid.font_dicts + parser->num_dict; - matrix = &dict->font_matrix; - offset = &dict->font_offset; - - (void)cid_parser_to_fixed_array( parser, 6, temp, 3 ); - - temp_scale = FT_ABS( temp[3] ); - - /* Set units per EM based on FontMatrix values. We set the value to */ - /* `1000/temp_scale', because temp_scale was already multiplied by */ - /* 1000 (in `t1_tofixed', from psobjs.c). */ - root->units_per_EM = (FT_UShort)( FT_DivFix( 0x10000L, - FT_DivFix( temp_scale, 1000 ) ) ); - - /* we need to scale the values by 1.0/temp[3] */ - if ( temp_scale != 0x10000L ) - { - temp[0] = FT_DivFix( temp[0], temp_scale ); - temp[1] = FT_DivFix( temp[1], temp_scale ); - temp[2] = FT_DivFix( temp[2], temp_scale ); - temp[4] = FT_DivFix( temp[4], temp_scale ); - temp[5] = FT_DivFix( temp[5], temp_scale ); - temp[3] = 0x10000L; - } - - matrix->xx = temp[0]; - matrix->yx = temp[1]; - matrix->xy = temp[2]; - matrix->yy = temp[3]; - - /* note that the font offsets are expressed in integer font units */ - offset->x = temp[4] >> 16; - offset->y = temp[5] >> 16; - } - - return CID_Err_Ok; /* this is a callback function; */ - /* we must return an error code */ - } - - - FT_CALLBACK_DEF( FT_Error ) - parse_fd_array( CID_Face face, - CID_Parser* parser ) - { - CID_FaceInfo cid = &face->cid; - FT_Memory memory = face->root.memory; - FT_Error error = CID_Err_Ok; - FT_Long num_dicts; - - - num_dicts = cid_parser_to_int( parser ); - - if ( !cid->font_dicts ) - { - FT_Int n; - - - if ( FT_NEW_ARRAY( cid->font_dicts, num_dicts ) ) - goto Exit; - - cid->num_dicts = (FT_UInt)num_dicts; - - /* don't forget to set a few defaults */ - for ( n = 0; n < cid->num_dicts; n++ ) - { - CID_FaceDict dict = cid->font_dicts + n; - - - /* default value for lenIV */ - dict->private_dict.lenIV = 4; - } - } - - Exit: - return error; - } - - - static - const T1_FieldRec cid_field_records[] = - { - -#include "cidtoken.h" - - T1_FIELD_CALLBACK( "FDArray", parse_fd_array ) - T1_FIELD_CALLBACK( "FontMatrix", parse_font_matrix ) - - { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0 } - }; - - - static FT_Error - cid_parse_dict( CID_Face face, - CID_Loader* loader, - FT_Byte* base, - FT_Long size ) - { - CID_Parser* parser = &loader->parser; - - - parser->root.cursor = base; - parser->root.limit = base + size; - parser->root.error = CID_Err_Ok; - - { - FT_Byte* cur = base; - FT_Byte* limit = cur + size; - - - for (;;) - { - FT_Byte* newlimit; - - - parser->root.cursor = cur; - cid_parser_skip_spaces( parser ); - - if ( parser->root.cursor >= limit ) - newlimit = limit - 1 - 17; - else - newlimit = parser->root.cursor - 17; - - /* look for `%ADOBeginFontDict' */ - for ( ; cur < newlimit; cur++ ) - { - if ( *cur == '%' && - ft_strncmp( (char*)cur, "%ADOBeginFontDict", 17 ) == 0 ) - { - /* if /FDArray was found, then cid->num_dicts is > 0, and */ - /* we can start increasing parser->num_dict */ - if ( face->cid.num_dicts > 0 ) - parser->num_dict++; - } - } - - cur = parser->root.cursor; - /* no error can occur in cid_parser_skip_spaces */ - if ( cur >= limit ) - break; - - cid_parser_skip_PS_token( parser ); - if ( parser->root.cursor >= limit || parser->root.error ) - break; - - /* look for immediates */ - if ( *cur == '/' && cur + 2 < limit ) - { - FT_PtrDist len; - - - cur++; - len = parser->root.cursor - cur; - - if ( len > 0 && len < 22 ) - { - /* now compare the immediate name to the keyword table */ - T1_Field keyword = (T1_Field)cid_field_records; - - - for (;;) - { - FT_Byte* name; - - - name = (FT_Byte*)keyword->ident; - if ( !name ) - break; - - if ( cur[0] == name[0] && - len == ft_strlen( (const char*)name ) ) - { - FT_PtrDist n; - - - for ( n = 1; n < len; n++ ) - if ( cur[n] != name[n] ) - break; - - if ( n >= len ) - { - /* we found it - run the parsing callback */ - parser->root.error = cid_load_keyword( face, - loader, - keyword ); - if ( parser->root.error ) - return parser->root.error; - break; - } - } - keyword++; - } - } - } - - cur = parser->root.cursor; - } - } - return parser->root.error; - } - - - /* read the subrmap and the subrs of each font dict */ - static FT_Error - cid_read_subrs( CID_Face face ) - { - CID_FaceInfo cid = &face->cid; - FT_Memory memory = face->root.memory; - FT_Stream stream = face->cid_stream; - FT_Error error; - FT_Int n; - CID_Subrs subr; - FT_UInt max_offsets = 0; - FT_ULong* offsets = 0; - PSAux_Service psaux = (PSAux_Service)face->psaux; - - - if ( FT_NEW_ARRAY( face->subrs, cid->num_dicts ) ) - goto Exit; - - subr = face->subrs; - for ( n = 0; n < cid->num_dicts; n++, subr++ ) - { - CID_FaceDict dict = cid->font_dicts + n; - FT_Int lenIV = dict->private_dict.lenIV; - FT_UInt count, num_subrs = dict->num_subrs; - FT_ULong data_len; - FT_Byte* p; - - - /* reallocate offsets array if needed */ - if ( num_subrs + 1 > max_offsets ) - { - FT_UInt new_max = FT_PAD_CEIL( num_subrs + 1, 4 ); - - - if ( FT_RENEW_ARRAY( offsets, max_offsets, new_max ) ) - goto Fail; - - max_offsets = new_max; - } - - /* read the subrmap's offsets */ - if ( FT_STREAM_SEEK( cid->data_offset + dict->subrmap_offset ) || - FT_FRAME_ENTER( ( num_subrs + 1 ) * dict->sd_bytes ) ) - goto Fail; - - p = (FT_Byte*)stream->cursor; - for ( count = 0; count <= num_subrs; count++ ) - offsets[count] = cid_get_offset( &p, (FT_Byte)dict->sd_bytes ); - - FT_FRAME_EXIT(); - - /* now, compute the size of subrs charstrings, */ - /* allocate, and read them */ - data_len = offsets[num_subrs] - offsets[0]; - - if ( FT_NEW_ARRAY( subr->code, num_subrs + 1 ) || - FT_ALLOC( subr->code[0], data_len ) ) - goto Fail; - - if ( FT_STREAM_SEEK( cid->data_offset + offsets[0] ) || - FT_STREAM_READ( subr->code[0], data_len ) ) - goto Fail; - - /* set up pointers */ - for ( count = 1; count <= num_subrs; count++ ) - { - FT_ULong len; - - - len = offsets[count] - offsets[count - 1]; - subr->code[count] = subr->code[count - 1] + len; - } - - /* decrypt subroutines, but only if lenIV >= 0 */ - if ( lenIV >= 0 ) - { - for ( count = 0; count < num_subrs; count++ ) - { - FT_ULong len; - - - len = offsets[count + 1] - offsets[count]; - psaux->t1_decrypt( subr->code[count], len, 4330 ); - } - } - - subr->num_subrs = num_subrs; - } - - Exit: - FT_FREE( offsets ); - return error; - - Fail: - if ( face->subrs ) - { - for ( n = 0; n < cid->num_dicts; n++ ) - { - if ( face->subrs[n].code ) - FT_FREE( face->subrs[n].code[0] ); - - FT_FREE( face->subrs[n].code ); - } - FT_FREE( face->subrs ); - } - goto Exit; - } - - - static void - t1_init_loader( CID_Loader* loader, - CID_Face face ) - { - FT_UNUSED( face ); - - FT_MEM_ZERO( loader, sizeof ( *loader ) ); - } - - - static void - t1_done_loader( CID_Loader* loader ) - { - CID_Parser* parser = &loader->parser; - - - /* finalize parser */ - cid_parser_done( parser ); - } - - - static FT_Error - cid_hex_to_binary( FT_Byte* data, - FT_Long data_len, - FT_ULong offset, - CID_Face face ) - { - FT_Stream stream = face->root.stream; - FT_Error error; - - FT_Byte buffer[256]; - FT_Byte *p, *plimit; - FT_Byte *d, *dlimit; - FT_Byte val; - - FT_Bool upper_nibble, done; - - - if ( FT_STREAM_SEEK( offset ) ) - goto Exit; - - d = data; - dlimit = d + data_len; - p = buffer; - plimit = p; - - upper_nibble = 1; - done = 0; - - while ( d < dlimit ) - { - if ( p >= plimit ) - { - FT_ULong oldpos = FT_STREAM_POS(); - FT_ULong size = stream->size - oldpos; - - - if ( size == 0 ) - { - error = CID_Err_Syntax_Error; - goto Exit; - } - - if ( FT_STREAM_READ( buffer, 256 > size ? size : 256 ) ) - goto Exit; - p = buffer; - plimit = p + FT_STREAM_POS() - oldpos; - } - - if ( ft_isdigit( *p ) ) - val = *p - '0'; - else if ( *p >= 'a' && *p <= 'f' ) - val = *p - 'a'; - else if ( *p >= 'A' && *p <= 'F' ) - val = *p - 'A' + 10; - else if ( *p == ' ' || - *p == '\t' || - *p == '\r' || - *p == '\n' || - *p == '\f' || - *p == '\0' ) - { - p++; - continue; - } - else if ( *p == '>' ) - { - val = 0; - done = 1; - } - else - { - error = CID_Err_Syntax_Error; - goto Exit; - } - - if ( upper_nibble ) - *d = val << 4; - else - { - *d += val; - d++; - } - - upper_nibble = 1 - upper_nibble; - - if ( done ) - break; - - p++; - } - - error = CID_Err_Ok; - - Exit: - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - cid_face_open( CID_Face face, - FT_Int face_index ) - { - CID_Loader loader; - CID_Parser* parser; - FT_Memory memory = face->root.memory; - FT_Error error; - - - t1_init_loader( &loader, face ); - - parser = &loader.parser; - error = cid_parser_new( parser, face->root.stream, face->root.memory, - (PSAux_Service)face->psaux ); - if ( error ) - goto Exit; - - error = cid_parse_dict( face, &loader, - parser->postscript, - parser->postscript_len ); - if ( error ) - goto Exit; - - if ( face_index < 0 ) - goto Exit; - - if ( FT_NEW( face->cid_stream ) ) - goto Exit; - - if ( parser->binary_length ) - { - /* we must convert the data section from hexadecimal to binary */ - if ( FT_ALLOC( face->binary_data, parser->binary_length ) || - cid_hex_to_binary( face->binary_data, parser->binary_length, - parser->data_offset, face ) ) - goto Exit; - - FT_Stream_OpenMemory( face->cid_stream, - face->binary_data, parser->binary_length ); - face->cid.data_offset = 0; - } - else - { - *face->cid_stream = *face->root.stream; - face->cid.data_offset = loader.parser.data_offset; - } - - error = cid_read_subrs( face ); - - Exit: - t1_done_loader( &loader ); - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidload.h b/nx-X11/extras/freetype2/src/cid/cidload.h deleted file mode 100644 index 8c172ffee..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidload.h +++ /dev/null @@ -1,53 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidload.h */ -/* */ -/* CID-keyed Type1 font loader (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CIDLOAD_H__ -#define __CIDLOAD_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include "cidparse.h" - - -FT_BEGIN_HEADER - - - typedef struct CID_Loader_ - { - CID_Parser parser; /* parser used to read the stream */ - FT_Int num_chars; /* number of characters in encoding */ - - } CID_Loader; - - - FT_LOCAL( FT_Long ) - cid_get_offset( FT_Byte** start, - FT_Byte offsize ); - - FT_LOCAL( FT_Error ) - cid_face_open( CID_Face face, - FT_Int face_index ); - - -FT_END_HEADER - -#endif /* __CIDLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidobjs.c b/nx-X11/extras/freetype2/src/cid/cidobjs.c deleted file mode 100644 index 691ec1749..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidobjs.c +++ /dev/null @@ -1,501 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidobjs.c */ -/* */ -/* CID objects manager (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H - -#include "cidgload.h" -#include "cidload.h" - -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H - -#include "ciderrs.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cidobjs - - - /*************************************************************************/ - /* */ - /* SLOT FUNCTIONS */ - /* */ - /*************************************************************************/ - - FT_LOCAL_DEF( void ) - cid_slot_done( FT_GlyphSlot slot ) - { - slot->internal->glyph_hints = 0; - } - - - FT_LOCAL_DEF( FT_Error ) - cid_slot_init( FT_GlyphSlot slot ) - { - CID_Face face; - PSHinter_Service pshinter; - - - face = (CID_Face)slot->face; - pshinter = (PSHinter_Service)face->pshinter; - - if ( pshinter ) - { - FT_Module module; - - - module = FT_Get_Module( slot->face->driver->root.library, - "pshinter" ); - if ( module ) - { - T1_Hints_Funcs funcs; - - - funcs = pshinter->get_t1_funcs( module ); - slot->internal->glyph_hints = (void*)funcs; - } - } - - return 0; - } - - - /*************************************************************************/ - /* */ - /* SIZE FUNCTIONS */ - /* */ - /*************************************************************************/ - - - static PSH_Globals_Funcs - cid_size_get_globals_funcs( CID_Size size ) - { - CID_Face face = (CID_Face)size->root.face; - PSHinter_Service pshinter = (PSHinter_Service)face->pshinter; - FT_Module module; - - - module = FT_Get_Module( size->root.face->driver->root.library, - "pshinter" ); - return ( module && pshinter && pshinter->get_globals_funcs ) - ? pshinter->get_globals_funcs( module ) - : 0; - } - - - FT_LOCAL_DEF( void ) - cid_size_done( FT_Size cidsize ) /* CID_Size */ - { - CID_Size size = (CID_Size)cidsize; - - - if ( cidsize->internal ) - { - PSH_Globals_Funcs funcs; - - - funcs = cid_size_get_globals_funcs( size ); - if ( funcs ) - funcs->destroy( (PSH_Globals)cidsize->internal ); - - cidsize->internal = 0; - } - } - - - FT_LOCAL_DEF( FT_Error ) - cid_size_init( FT_Size cidsize ) /* CID_Size */ - { - CID_Size size = (CID_Size)cidsize; - FT_Error error = 0; - PSH_Globals_Funcs funcs = cid_size_get_globals_funcs( size ); - - - if ( funcs ) - { - PSH_Globals globals; - CID_Face face = (CID_Face)cidsize->face; - CID_FaceDict dict = face->cid.font_dicts + face->root.face_index; - PS_Private priv = &dict->private_dict; - - - error = funcs->create( cidsize->face->memory, priv, &globals ); - if ( !error ) - cidsize->internal = (FT_Size_Internal)(void*)globals; - } - - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - cid_size_reset( FT_Size cidsize, /* CID_Size */ - FT_UInt char_width, - FT_UInt char_height ) - { - CID_Size size = (CID_Size)cidsize; - PSH_Globals_Funcs funcs = cid_size_get_globals_funcs( size ); - FT_Error error = 0; - - FT_UNUSED( char_width ); - FT_UNUSED( char_height ); - - - if ( funcs ) - error = funcs->set_scale( (PSH_Globals)cidsize->internal, - cidsize->metrics.x_scale, - cidsize->metrics.y_scale, - 0, 0 ); - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - cid_point_size_reset( FT_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) - { - FT_UNUSED( char_width ); - FT_UNUSED( char_height ); - FT_UNUSED( horz_resolution ); - FT_UNUSED( vert_resolution ); - - return cid_size_reset( size, 0, 0 ); - } - - - /*************************************************************************/ - /* */ - /* FACE FUNCTIONS */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cid_face_done */ - /* */ - /* <Description> */ - /* Finalizes a given face object. */ - /* */ - /* <Input> */ - /* face :: A pointer to the face object to destroy. */ - /* */ - FT_LOCAL_DEF( void ) - cid_face_done( FT_Face cidface ) /* CID_Face */ - { - CID_Face face = (CID_Face)cidface; - FT_Memory memory; - - - if ( face ) - { - CID_FaceInfo cid = &face->cid; - PS_FontInfo info = &cid->font_info; - - - memory = cidface->memory; - - /* release subrs */ - if ( face->subrs ) - { - FT_Int n; - - - for ( n = 0; n < cid->num_dicts; n++ ) - { - CID_Subrs subr = face->subrs + n; - - - if ( subr->code ) - { - FT_FREE( subr->code[0] ); - FT_FREE( subr->code ); - } - } - - FT_FREE( face->subrs ); - } - - /* release FontInfo strings */ - FT_FREE( info->version ); - FT_FREE( info->notice ); - FT_FREE( info->full_name ); - FT_FREE( info->family_name ); - FT_FREE( info->weight ); - - /* release font dictionaries */ - FT_FREE( cid->font_dicts ); - cid->num_dicts = 0; - - /* release other strings */ - FT_FREE( cid->cid_font_name ); - FT_FREE( cid->registry ); - FT_FREE( cid->ordering ); - - cidface->family_name = 0; - cidface->style_name = 0; - - FT_FREE( face->binary_data ); - FT_FREE( face->cid_stream ); - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cid_face_init */ - /* */ - /* <Description> */ - /* Initializes a given CID face object. */ - /* */ - /* <Input> */ - /* stream :: The source font stream. */ - /* */ - /* face_index :: The index of the font face in the resource. */ - /* */ - /* num_params :: Number of additional generic parameters. Ignored. */ - /* */ - /* params :: Additional generic parameters. Ignored. */ - /* */ - /* <InOut> */ - /* face :: The newly built face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - cid_face_init( FT_Stream stream, - FT_Face cidface, /* CID_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - CID_Face face = (CID_Face)cidface; - FT_Error error; - FT_Service_PsCMaps psnames; - PSAux_Service psaux; - PSHinter_Service pshinter; - - FT_UNUSED( num_params ); - FT_UNUSED( params ); - FT_UNUSED( stream ); - - - cidface->num_faces = 1; - - FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); - - psaux = (PSAux_Service)face->psaux; - if ( !psaux ) - { - psaux = (PSAux_Service)FT_Get_Module_Interface( - FT_FACE_LIBRARY( face ), "psaux" ); - - face->psaux = psaux; - } - - pshinter = (PSHinter_Service)face->pshinter; - if ( !pshinter ) - { - pshinter = (PSHinter_Service)FT_Get_Module_Interface( - FT_FACE_LIBRARY( face ), "pshinter" ); - - face->pshinter = pshinter; - } - - /* open the tokenizer; this will also check the font format */ - if ( FT_STREAM_SEEK( 0 ) ) - goto Exit; - - error = cid_face_open( face, face_index ); - if ( error ) - goto Exit; - - /* if we just wanted to check the format, leave successfully now */ - if ( face_index < 0 ) - goto Exit; - - /* check the face index */ - if ( face_index != 0 ) - { - FT_ERROR(( "cid_face_init: invalid face index\n" )); - error = CID_Err_Invalid_Argument; - goto Exit; - } - - /* now load the font program into the face object */ - - /* initialize the face object fields */ - - /* set up root face fields */ - { - CID_FaceInfo cid = &face->cid; - PS_FontInfo info = &cid->font_info; - - - cidface->num_glyphs = cid->cid_count; - cidface->num_charmaps = 0; - - cidface->face_index = face_index; - cidface->face_flags = FT_FACE_FLAG_SCALABLE; - - cidface->face_flags |= FT_FACE_FLAG_HORIZONTAL; - - if ( info->is_fixed_pitch ) - cidface->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; - - /* XXX: TODO: add kerning with .afm support */ - - /* get style name -- be careful, some broken fonts only */ - /* have a /FontName dictionary entry! */ - cidface->family_name = info->family_name; - /* assume "Regular" style if we don't know better */ - cidface->style_name = (char *)"Regular"; - if ( cidface->family_name ) - { - char* full = info->full_name; - char* family = cidface->family_name; - - - if ( full ) - { - while ( *full ) - { - if ( *full == *family ) - { - family++; - full++; - } - else - { - if ( *full == ' ' || *full == '-' ) - full++; - else if ( *family == ' ' || *family == '-' ) - family++; - else - { - if ( !*family ) - cidface->style_name = full; - break; - } - } - } - } - } - else - { - /* do we have a `/FontName'? */ - if ( cid->cid_font_name ) - cidface->family_name = cid->cid_font_name; - } - - /* compute style flags */ - cidface->style_flags = 0; - if ( info->italic_angle ) - cidface->style_flags |= FT_STYLE_FLAG_ITALIC; - if ( info->weight ) - { - if ( !ft_strcmp( info->weight, "Bold" ) || - !ft_strcmp( info->weight, "Black" ) ) - cidface->style_flags |= FT_STYLE_FLAG_BOLD; - } - - /* no embedded bitmap support */ - cidface->num_fixed_sizes = 0; - cidface->available_sizes = 0; - - cidface->bbox.xMin = cid->font_bbox.xMin >> 16; - cidface->bbox.yMin = cid->font_bbox.yMin >> 16; - cidface->bbox.xMax = ( cid->font_bbox.xMax + 0xFFFFU ) >> 16; - cidface->bbox.yMax = ( cid->font_bbox.yMax + 0xFFFFU ) >> 16; - - if ( !cidface->units_per_EM ) - cidface->units_per_EM = 1000; - - cidface->ascender = (FT_Short)( cidface->bbox.yMax ); - cidface->descender = (FT_Short)( cidface->bbox.yMin ); - cidface->height = (FT_Short)( - ( ( cidface->ascender - cidface->descender ) * 12 ) / 10 ); - - cidface->underline_position = (FT_Short)info->underline_position; - cidface->underline_thickness = (FT_Short)info->underline_thickness; - - cidface->internal->max_points = 0; - cidface->internal->max_contours = 0; - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cid_driver_init */ - /* */ - /* <Description> */ - /* Initializes a given CID driver object. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target driver object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - cid_driver_init( FT_Module driver ) - { - FT_UNUSED( driver ); - - return CID_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* cid_driver_done */ - /* */ - /* <Description> */ - /* Finalizes a given CID driver. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target CID driver. */ - /* */ - FT_LOCAL_DEF( void ) - cid_driver_done( FT_Module driver ) - { - FT_UNUSED( driver ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidobjs.h b/nx-X11/extras/freetype2/src/cid/cidobjs.h deleted file mode 100644 index 9d230baf8..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidobjs.h +++ /dev/null @@ -1,163 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidobjs.h */ -/* */ -/* CID objects manager (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CIDOBJS_H__ -#define __CIDOBJS_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_TYPE1_TYPES_H - - -FT_BEGIN_HEADER - - - /* The following structures must be defined by the hinter */ - typedef struct CID_Size_Hints_ CID_Size_Hints; - typedef struct CID_Glyph_Hints_ CID_Glyph_Hints; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* CID_Driver */ - /* */ - /* <Description> */ - /* A handle to a Type 1 driver object. */ - /* */ - typedef struct CID_DriverRec_* CID_Driver; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* CID_Size */ - /* */ - /* <Description> */ - /* A handle to a Type 1 size object. */ - /* */ - typedef struct CID_SizeRec_* CID_Size; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* CID_GlyphSlot */ - /* */ - /* <Description> */ - /* A handle to a Type 1 glyph slot object. */ - /* */ - typedef struct CID_GlyphSlotRec_* CID_GlyphSlot; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* CID_CharMap */ - /* */ - /* <Description> */ - /* A handle to a Type 1 character mapping object. */ - /* */ - /* <Note> */ - /* The Type 1 format doesn't use a charmap but an encoding table. */ - /* The driver is responsible for making up charmap objects */ - /* corresponding to these tables. */ - /* */ - typedef struct CID_CharMapRec_* CID_CharMap; - - - /*************************************************************************/ - /* */ - /* HERE BEGINS THE TYPE 1 SPECIFIC STUFF */ - /* */ - /*************************************************************************/ - - - typedef struct CID_SizeRec_ - { - FT_SizeRec root; - FT_Bool valid; - - } CID_SizeRec; - - - typedef struct CID_GlyphSlotRec_ - { - FT_GlyphSlotRec root; - - FT_Bool hint; - FT_Bool scaled; - - FT_Fixed x_scale; - FT_Fixed y_scale; - - } CID_GlyphSlotRec; - - - FT_LOCAL( void ) - cid_slot_done( FT_GlyphSlot slot ); - - FT_LOCAL( FT_Error ) - cid_slot_init( FT_GlyphSlot slot ); - - - FT_LOCAL( void ) - cid_size_done( FT_Size size ); /* CID_Size */ - - FT_LOCAL( FT_Error ) - cid_size_init( FT_Size size ); /* CID_Size */ - - FT_LOCAL( FT_Error ) - cid_size_reset( FT_Size size, /* CID_Size */ - FT_UInt char_width, - FT_UInt char_height ); - - FT_LOCAL( FT_Error ) - cid_point_size_reset( FT_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); - - - FT_LOCAL( FT_Error ) - cid_face_init( FT_Stream stream, - FT_Face face, /* CID_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL( void ) - cid_face_done( FT_Face face ); /* CID_Face */ - - - FT_LOCAL( FT_Error ) - cid_driver_init( FT_Module driver ); - - FT_LOCAL( void ) - cid_driver_done( FT_Module driver ); - - -FT_END_HEADER - -#endif /* __CIDOBJS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidparse.c b/nx-X11/extras/freetype2/src/cid/cidparse.c deleted file mode 100644 index 3f18749f6..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidparse.c +++ /dev/null @@ -1,198 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidparse.c */ -/* */ -/* CID-keyed Type1 parser (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H - -#include "cidparse.h" - -#include "ciderrs.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_cidparse - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** INPUT STREAM PARSER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - cid_parser_new( CID_Parser* parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Service psaux ) - { - FT_Error error; - FT_ULong base_offset, offset, ps_len; - FT_Byte buffer[256 + 10]; - FT_Int buff_len; - FT_Byte *cur, *limit; - FT_Byte *arg1, *arg2; - - - FT_MEM_ZERO( parser, sizeof ( *parser ) ); - psaux->ps_parser_funcs->init( &parser->root, 0, 0, memory ); - - parser->stream = stream; - - base_offset = FT_STREAM_POS(); - - /* first of all, check the font format in the header */ - if ( FT_FRAME_ENTER( 31 ) ) - goto Exit; - - if ( ft_strncmp( (char *)stream->cursor, - "%!PS-Adobe-3.0 Resource-CIDFont", 31 ) ) - { - FT_TRACE2(( "[not a valid CID-keyed font]\n" )); - error = CID_Err_Unknown_File_Format; - } - - FT_FRAME_EXIT(); - if ( error ) - goto Exit; - - Again: - /* now, read the rest of the file until we find a `StartData' */ - buff_len = 256; - for (;;) - { - FT_Byte* p; - FT_ULong top_position; - - - /* fill input buffer */ - limit = buffer + 256; - buff_len -= 256; - if ( buff_len > 0 ) - FT_MEM_MOVE( buffer, limit, buff_len ); - - p = buffer + buff_len; - - if ( FT_STREAM_READ( p, 256 + 10 - buff_len ) ) - goto Exit; - - top_position = FT_STREAM_POS() - buff_len; - buff_len = 256 + 10; - - /* look for `StartData' */ - for ( p = buffer; p < limit; p++ ) - { - if ( p[0] == 'S' && ft_strncmp( (char*)p, "StartData", 9 ) == 0 ) - { - /* save offset of binary data after `StartData' */ - offset = (FT_ULong)( top_position - ( limit - p ) + 10 ); - goto Found; - } - } - } - - Found: - /* we have found the start of the binary data. We will now */ - /* rewind and extract the frame corresponding to the PostScript */ - /* section */ - - ps_len = offset - base_offset; - if ( FT_STREAM_SEEK( base_offset ) || - FT_FRAME_EXTRACT( ps_len, parser->postscript ) ) - goto Exit; - - parser->data_offset = offset; - parser->postscript_len = ps_len; - parser->root.base = parser->postscript; - parser->root.cursor = parser->postscript; - parser->root.limit = parser->root.cursor + ps_len; - parser->num_dict = -1; - - /* Finally, we check whether `StartData' was real -- it could be */ - /* in a comment or string. We also get its arguments to find out */ - /* whether the data is represented in binary or hex format. */ - - arg1 = parser->root.cursor; - cid_parser_skip_PS_token( parser ); - cid_parser_skip_spaces ( parser ); - arg2 = parser->root.cursor; - cid_parser_skip_PS_token( parser ); - cid_parser_skip_spaces ( parser ); - - limit = parser->root.limit; - cur = parser->root.cursor; - - while ( cur < limit ) - { - if ( *cur == 'S' && ft_strncmp( (char*)cur, "StartData", 9 ) == 0 ) - { - if ( ft_strncmp( (char*)arg1, "(Hex)", 5 ) == 0 ) - parser->binary_length = ft_atol( (const char *)arg2 ); - - limit = parser->root.limit; - cur = parser->root.cursor; - goto Exit; - } - - cid_parser_skip_PS_token( parser ); - cid_parser_skip_spaces ( parser ); - arg1 = arg2; - arg2 = cur; - cur = parser->root.cursor; - } - - /* we haven't found the correct `StartData'; go back and continue */ - /* searching */ - FT_FRAME_RELEASE( parser->postscript ); - if ( !FT_STREAM_SEEK( offset ) ) - goto Again; - - Exit: - return error; - } - - - FT_LOCAL_DEF( void ) - cid_parser_done( CID_Parser* parser ) - { - /* always free the private dictionary */ - if ( parser->postscript ) - { - FT_Stream stream = parser->stream; - - - FT_FRAME_RELEASE( parser->postscript ); - } - parser->root.funcs.done( &parser->root ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidparse.h b/nx-X11/extras/freetype2/src/cid/cidparse.h deleted file mode 100644 index ca37deab9..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidparse.h +++ /dev/null @@ -1,123 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidparse.h */ -/* */ -/* CID-keyed Type1 parser (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CIDPARSE_H__ -#define __CIDPARSE_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* CID_Parser */ - /* */ - /* <Description> */ - /* A CID_Parser is an object used to parse a Type 1 fonts very */ - /* quickly. */ - /* */ - /* <Fields> */ - /* root :: The root PS_ParserRec fields. */ - /* */ - /* stream :: The current input stream. */ - /* */ - /* postscript :: A pointer to the data to be parsed. */ - /* */ - /* postscript_len :: The length of the data to be parsed. */ - /* */ - /* data_offset :: The start position of the binary data (i.e., the */ - /* end of the data to be parsed. */ - /* */ - /* binary_length :: The length of the data after the `StartData' */ - /* command if the data format is hexadecimal. */ - /* */ - /* cid :: A structure which holds the information about */ - /* the current font. */ - /* */ - /* num_dict :: The number of font dictionaries. */ - /* */ - typedef struct CID_Parser_ - { - PS_ParserRec root; - FT_Stream stream; - - FT_Byte* postscript; - FT_Long postscript_len; - - FT_ULong data_offset; - - FT_Long binary_length; - - CID_FaceInfo cid; - FT_Int num_dict; - - } CID_Parser; - - - FT_LOCAL( FT_Error ) - cid_parser_new( CID_Parser* parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Service psaux ); - - FT_LOCAL( void ) - cid_parser_done( CID_Parser* parser ); - - - /*************************************************************************/ - /* */ - /* PARSING ROUTINES */ - /* */ - /*************************************************************************/ - -#define cid_parser_skip_spaces( p ) \ - (p)->root.funcs.skip_spaces( &(p)->root ) -#define cid_parser_skip_PS_token( p ) \ - (p)->root.funcs.skip_PS_token( &(p)->root ) - -#define cid_parser_to_int( p ) (p)->root.funcs.to_int( &(p)->root ) -#define cid_parser_to_fixed( p, t ) (p)->root.funcs.to_fixed( &(p)->root, t ) - -#define cid_parser_to_coord_array( p, m, c ) \ - (p)->root.funcs.to_coord_array( &(p)->root, m, c ) -#define cid_parser_to_fixed_array( p, m, f, t ) \ - (p)->root.funcs.to_fixed_array( &(p)->root, m, f, t ) -#define cid_parser_to_token( p, t ) \ - (p)->root.funcs.to_token( &(p)->root, t ) -#define cid_parser_to_token_array( p, t, m, c ) \ - (p)->root.funcs.to_token_array( &(p)->root, t, m, c ) - -#define cid_parser_load_field( p, f, o ) \ - (p)->root.funcs.load_field( &(p)->root, f, o, 0, 0 ) -#define cid_parser_load_field_table( p, f, o ) \ - (p)->root.funcs.load_field_table( &(p)->root, f, o, 0, 0 ) - - -FT_END_HEADER - -#endif /* __CIDPARSE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidriver.c b/nx-X11/extras/freetype2/src/cid/cidriver.c deleted file mode 100644 index 7d885a818..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidriver.c +++ /dev/null @@ -1,157 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidriver.c */ -/* */ -/* CID driver interface (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "cidriver.h" -#include "cidgload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H - -#include "ciderrs.h" - -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_XFREE86_NAME_H -#include FT_SERVICE_POSTSCRIPT_INFO_H - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ciddriver - - - /* - * POSTSCRIPT NAME SERVICE - * - */ - - static const char* - cid_get_postscript_name( CID_Face face ) - { - const char* result = face->cid.cid_font_name; - - - if ( result && result[0] == '/' ) - result++; - - return result; - } - - - static const FT_Service_PsFontNameRec cid_service_ps_name = - { - (FT_PsName_GetFunc) cid_get_postscript_name - }; - - - /* - * POSTSCRIPT INFO SERVICE - * - */ - - static FT_Error - cid_ps_get_font_info( FT_Face face, - PS_FontInfoRec* afont_info ) - { - *afont_info = ((CID_Face)face)->cid.font_info; - return 0; - } - - - static const FT_Service_PsInfoRec cid_service_ps_info = - { - (PS_GetFontInfoFunc) cid_ps_get_font_info, - (PS_HasGlyphNamesFunc)NULL /* unsupported with CID fonts */ - }; - - - /* - * SERVICE LIST - * - */ - - static const FT_ServiceDescRec cid_services[] = - { - { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cid_service_ps_name }, - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_CID }, - { FT_SERVICE_ID_POSTSCRIPT_INFO, &cid_service_ps_info }, - { NULL, NULL } - }; - - - FT_CALLBACK_DEF( FT_Module_Interface ) - cid_get_interface( FT_Module module, - const char* cid_interface ) - { - FT_UNUSED( module ); - - return ft_service_list_lookup( cid_services, cid_interface ); - } - - - - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec t1cid_driver_class = - { - /* first of all, the FT_Module_Class fields */ - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_SCALABLE | - FT_MODULE_DRIVER_HAS_HINTER, - - sizeof( FT_DriverRec ), - "t1cid", /* module name */ - 0x10000L, /* version 1.0 of driver */ - 0x20000L, /* requires FreeType 2.0 */ - - 0, - - cid_driver_init, - cid_driver_done, - cid_get_interface - }, - - /* then the other font drivers fields */ - sizeof( CID_FaceRec ), - sizeof( CID_SizeRec ), - sizeof( CID_GlyphSlotRec ), - - cid_face_init, - cid_face_done, - - cid_size_init, - cid_size_done, - cid_slot_init, - cid_slot_done, - - cid_point_size_reset, - cid_size_reset, - - cid_slot_load_glyph, - - 0, /* FT_Face_GetKerningFunc */ - 0, /* FT_Face_AttachFunc */ - - 0 /* FT_Face_GetAdvancesFunc */ - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidriver.h b/nx-X11/extras/freetype2/src/cid/cidriver.h deleted file mode 100644 index d5a80f6f9..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidriver.h +++ /dev/null @@ -1,39 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidriver.h */ -/* */ -/* High-level CID driver interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __CIDRIVER_H__ -#define __CIDRIVER_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H - - -FT_BEGIN_HEADER - - - FT_CALLBACK_TABLE - const FT_Driver_ClassRec t1cid_driver_class; - - -FT_END_HEADER - -#endif /* __CIDRIVER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/cidtoken.h b/nx-X11/extras/freetype2/src/cid/cidtoken.h deleted file mode 100644 index 2070aa91b..000000000 --- a/nx-X11/extras/freetype2/src/cid/cidtoken.h +++ /dev/null @@ -1,103 +0,0 @@ -/***************************************************************************/ -/* */ -/* cidtoken.h */ -/* */ -/* CID token definitions (specification only). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#undef FT_STRUCTURE -#define FT_STRUCTURE CID_FaceInfoRec -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_CID_INFO - - T1_FIELD_KEY ( "CIDFontName", cid_font_name ) - T1_FIELD_NUM ( "CIDFontVersion", cid_version ) - T1_FIELD_NUM ( "CIDFontType", cid_font_type ) - T1_FIELD_STRING( "Registry", registry ) - T1_FIELD_STRING( "Ordering", ordering ) - T1_FIELD_NUM ( "Supplement", supplement ) - T1_FIELD_NUM ( "UIDBase", uid_base ) - T1_FIELD_NUM ( "CIDMapOffset", cidmap_offset ) - T1_FIELD_NUM ( "FDBytes", fd_bytes ) - T1_FIELD_NUM ( "GDBytes", gd_bytes ) - T1_FIELD_NUM ( "CIDCount", cid_count ) - - -#undef FT_STRUCTURE -#define FT_STRUCTURE PS_FontInfoRec -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_FONT_INFO - - T1_FIELD_STRING( "version", version ) - T1_FIELD_STRING( "Notice", notice ) - T1_FIELD_STRING( "FullName", full_name ) - T1_FIELD_STRING( "FamilyName", family_name ) - T1_FIELD_STRING( "Weight", weight ) - T1_FIELD_NUM ( "ItalicAngle", italic_angle ) - T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch ) - T1_FIELD_NUM ( "UnderlinePosition", underline_position ) - T1_FIELD_NUM ( "UnderlineThickness", underline_thickness ) - - -#undef FT_STRUCTURE -#define FT_STRUCTURE CID_FaceDictRec -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_FONT_DICT - - T1_FIELD_NUM ( "PaintType", paint_type ) - T1_FIELD_NUM ( "FontType", font_type ) - T1_FIELD_NUM ( "SubrMapOffset", subrmap_offset ) - T1_FIELD_NUM ( "SDBytes", sd_bytes ) - T1_FIELD_NUM ( "SubrCount", num_subrs ) - T1_FIELD_NUM ( "lenBuildCharArray", len_buildchar ) - T1_FIELD_FIXED( "ForceBoldThreshold", forcebold_threshold ) - T1_FIELD_FIXED( "ExpansionFactor", expansion_factor ) - T1_FIELD_FIXED( "StrokeWidth", stroke_width ) - - -#undef FT_STRUCTURE -#define FT_STRUCTURE PS_PrivateRec -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_PRIVATE - - T1_FIELD_NUM ( "UniqueID", unique_id ) - T1_FIELD_NUM ( "lenIV", lenIV ) - T1_FIELD_NUM ( "LanguageGroup", language_group ) - T1_FIELD_NUM ( "password", password ) - - T1_FIELD_FIXED_1000( "BlueScale", blue_scale ) - T1_FIELD_NUM ( "BlueShift", blue_shift ) - T1_FIELD_NUM ( "BlueFuzz", blue_fuzz ) - - T1_FIELD_NUM_TABLE ( "BlueValues", blue_values, 14 ) - T1_FIELD_NUM_TABLE ( "OtherBlues", other_blues, 10 ) - T1_FIELD_NUM_TABLE ( "FamilyBlues", family_blues, 14 ) - T1_FIELD_NUM_TABLE ( "FamilyOtherBlues", family_other_blues, 10 ) - - T1_FIELD_NUM_TABLE2( "StdHW", standard_width, 1 ) - T1_FIELD_NUM_TABLE2( "StdVW", standard_height, 1 ) - T1_FIELD_NUM_TABLE2( "MinFeature", min_feature, 2 ) - - T1_FIELD_NUM_TABLE ( "StemSnapH", snap_widths, 12 ) - T1_FIELD_NUM_TABLE ( "StemSnapV", snap_heights, 12 ) - -#undef FT_STRUCTURE -#define FT_STRUCTURE FT_BBox -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_BBOX - - T1_FIELD_BBOX( "FontBBox", xMin ) - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/cid/descrip.mms b/nx-X11/extras/freetype2/src/cid/descrip.mms deleted file mode 100644 index 592fd587a..000000000 --- a/nx-X11/extras/freetype2/src/cid/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 CID driver compilation rules for VMS -# - - -# Copyright 2001 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.cid]) - -OBJS=type1cid.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/cid/module.mk b/nx-X11/extras/freetype2/src/cid/module.mk deleted file mode 100644 index f59d8a951..000000000 --- a/nx-X11/extras/freetype2/src/cid/module.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# FreeType 2 CID module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_type1cid_driver - -add_type1cid_driver: - $(OPEN_DRIVER)t1cid_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)cid $(ECHO_DRIVER_DESC)Postscript CID-keyed fonts, no known extension$(ECHO_DRIVER_DONE) -# EOF diff --git a/nx-X11/extras/freetype2/src/cid/rules.mk b/nx-X11/extras/freetype2/src/cid/rules.mk deleted file mode 100644 index f36274461..000000000 --- a/nx-X11/extras/freetype2/src/cid/rules.mk +++ /dev/null @@ -1,70 +0,0 @@ -# -# FreeType 2 CID driver configuration rules -# - - -# Copyright 1996-2000, 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# CID driver directory -# -CID_DIR := $(SRC_DIR)/cid - - -CID_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(CID_DIR)) - - -# CID driver sources (i.e., C files) -# -CID_DRV_SRC := $(CID_DIR)/cidparse.c \ - $(CID_DIR)/cidload.c \ - $(CID_DIR)/cidriver.c \ - $(CID_DIR)/cidgload.c \ - $(CID_DIR)/cidobjs.c - -# CID driver headers -# -CID_DRV_H := $(CID_DRV_SRC:%.c=%.h) \ - $(CID_DIR)/cidtoken.h \ - $(CID_DIR)/ciderrs.h - - -# CID driver object(s) -# -# CID_DRV_OBJ_M is used during `multi' builds -# CID_DRV_OBJ_S is used during `single' builds -# -CID_DRV_OBJ_M := $(CID_DRV_SRC:$(CID_DIR)/%.c=$(OBJ_DIR)/%.$O) -CID_DRV_OBJ_S := $(OBJ_DIR)/type1cid.$O - -# CID driver source file for single build -# -CID_DRV_SRC_S := $(CID_DIR)/type1cid.c - - -# CID driver - single object -# -$(CID_DRV_OBJ_S): $(CID_DRV_SRC_S) $(CID_DRV_SRC) $(FREETYPE_H) $(CID_DRV_H) - $(CID_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(CID_DRV_SRC_S)) - - -# CID driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(CID_DIR)/%.c $(FREETYPE_H) $(CID_DRV_H) - $(CID_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(CID_DRV_OBJ_S) -DRV_OBJS_M += $(CID_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/cid/type1cid.c b/nx-X11/extras/freetype2/src/cid/type1cid.c deleted file mode 100644 index 0b866e97c..000000000 --- a/nx-X11/extras/freetype2/src/cid/type1cid.c +++ /dev/null @@ -1,29 +0,0 @@ -/***************************************************************************/ -/* */ -/* type1cid.c */ -/* */ -/* FreeType OpenType driver component (body only). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "cidparse.c" -#include "cidload.c" -#include "cidobjs.c" -#include "cidriver.c" -#include "cidgload.c" - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/gzip/Jamfile b/nx-X11/extras/freetype2/src/gzip/Jamfile deleted file mode 100644 index e461cf174..000000000 --- a/nx-X11/extras/freetype2/src/gzip/Jamfile +++ /dev/null @@ -1,8 +0,0 @@ -# FreeType 2 src/gzip Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) gzip ; - -Library $(FT2_LIB) : ftgzip.c ; - -# end of src/pcf Jamfile diff --git a/nx-X11/extras/freetype2/src/gzip/adler32.c b/nx-X11/extras/freetype2/src/gzip/adler32.c deleted file mode 100644 index 11a25bee6..000000000 --- a/nx-X11/extras/freetype2/src/gzip/adler32.c +++ /dev/null @@ -1,48 +0,0 @@ -/* adler32.c -- compute the Adler-32 checksum of a data stream - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id: adler32.c,v 1.1.1.3 2004/03/14 08:28:54 eich Exp $ */ - -#include "zlib.h" - -#define BASE 65521L /* largest prime smaller than 65536 */ -#define NMAX 5552 -/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ - -#define DO1(buf,i) {s1 += buf[i]; s2 += s1;} -#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); -#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); -#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); -#define DO16(buf) DO8(buf,0); DO8(buf,8); - -/* ========================================================================= */ -ZEXPORT(uLong) adler32( /* adler, buf, len) */ - uLong adler, - const Bytef *buf, - uInt len ) -{ - unsigned long s1 = adler & 0xffff; - unsigned long s2 = (adler >> 16) & 0xffff; - int k; - - if (buf == Z_NULL) return 1L; - - while (len > 0) { - k = len < NMAX ? len : NMAX; - len -= k; - while (k >= 16) { - DO16(buf); - buf += 16; - k -= 16; - } - if (k != 0) do { - s1 += *buf++; - s2 += s1; - } while (--k); - s1 %= BASE; - s2 %= BASE; - } - return (s2 << 16) | s1; -} diff --git a/nx-X11/extras/freetype2/src/gzip/descrip.mms b/nx-X11/extras/freetype2/src/gzip/descrip.mms deleted file mode 100644 index 68d7a870d..000000000 --- a/nx-X11/extras/freetype2/src/gzip/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 GZip support compilation rules for VMS -# - - -# Copyright 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.gzip]) - -OBJS=ftgzip.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/gzip/ftgzip.c b/nx-X11/extras/freetype2/src/gzip/ftgzip.c deleted file mode 100644 index a78c19524..000000000 --- a/nx-X11/extras/freetype2/src/gzip/ftgzip.c +++ /dev/null @@ -1,605 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgzip.c */ -/* */ -/* FreeType support for .gz compressed files. */ -/* */ -/* This optional component relies on zlib. It should mainly be used to */ -/* parse compressed PCF fonts, as found with many X11 server */ -/* distributions. */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H -#include <string.h> - - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX Gzip_Err_ -#define FT_ERR_BASE FT_Mod_Err_Gzip - -#include FT_ERRORS_H - - -#ifdef FT_CONFIG_OPTION_USE_ZLIB - -#ifdef FT_CONFIG_OPTION_SYSTEM_ZLIB - -#include <zlib.h> - -#else /* !FT_CONFIG_OPTION_SYSTEM_ZLIB */ - - /* In this case, we include our own modified sources of the ZLib */ - /* within the "ftgzip" component. The modifications were necessary */ - /* to #include all files without conflicts, as well as preventing */ - /* the definition of "extern" functions that may cause linking */ - /* conflicts when a program is linked with both FreeType and the */ - /* original ZLib. */ - -#define NO_DUMMY_DECL -#define MY_ZCALLOC - -#include "zlib.h" - -#undef SLOW -#define SLOW 1 /* we can't use asm-optimized sources here! */ - - /* Urgh. `inflate_mask' must not be declared twice -- C++ doesn't like - this. We temporarily disable it and load all necessary header files. */ -#define NO_INFLATE_MASK -#include "zutil.h" -#include "inftrees.h" -#include "infblock.h" -#include "infcodes.h" -#include "infutil.h" -#undef NO_INFLATE_MASK - - /* infutil.c must be included before infcodes.c */ -#include "zutil.c" -#include "inftrees.c" -#include "infutil.c" -#include "infcodes.c" -#include "infblock.c" -#include "inflate.c" -#include "adler32.c" - -#endif /* !FT_CONFIG_OPTION_SYSTEM_ZLIB */ - - -/***************************************************************************/ -/***************************************************************************/ -/***** *****/ -/***** Z L I B M E M O R Y M A N A G E M E N T *****/ -/***** *****/ -/***************************************************************************/ -/***************************************************************************/ - - /* it is better to use FreeType memory routines instead of raw - 'malloc/free' */ - - static voidpf - ft_gzip_alloc( FT_Memory memory, - uInt items, - uInt size ) - { - FT_ULong sz = (FT_ULong)size * items; - FT_Pointer p; - - - FT_MEM_ALLOC( p, sz ); - - return (voidpf) p; - } - - - static void - ft_gzip_free( FT_Memory memory, - voidpf address ) - { - FT_MEM_FREE( address ); - } - - -#ifndef FT_CONFIG_OPTION_SYSTEM_ZLIB - - local voidpf - zcalloc ( voidpf opaque, - unsigned items, - unsigned size ) - { - return ft_gzip_alloc( (FT_Memory)opaque, items, size ); - } - - local void - zcfree( voidpf opaque, - voidpf ptr ) - { - ft_gzip_free( (FT_Memory)opaque, ptr ); - } - -#endif /* !SYSTEM_ZLIB */ - - -/***************************************************************************/ -/***************************************************************************/ -/***** *****/ -/***** Z L I B F I L E D E S C R I P T O R *****/ -/***** *****/ -/***************************************************************************/ -/***************************************************************************/ - -#define FT_GZIP_BUFFER_SIZE 4096 - - typedef struct FT_GZipFileRec_ - { - FT_Stream source; /* parent/source stream */ - FT_Stream stream; /* embedding stream */ - FT_Memory memory; /* memory allocator */ - z_stream zstream; /* zlib input stream */ - - FT_ULong start; /* starting position, after .gz header */ - FT_Byte input[FT_GZIP_BUFFER_SIZE]; /* input read buffer */ - - FT_Byte buffer[FT_GZIP_BUFFER_SIZE]; /* output buffer */ - FT_ULong pos; /* position in output */ - FT_Byte* cursor; - FT_Byte* limit; - - } FT_GZipFileRec, *FT_GZipFile; - - - /* gzip flag byte */ -#define FT_GZIP_ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */ -#define FT_GZIP_HEAD_CRC 0x02 /* bit 1 set: header CRC present */ -#define FT_GZIP_EXTRA_FIELD 0x04 /* bit 2 set: extra field present */ -#define FT_GZIP_ORIG_NAME 0x08 /* bit 3 set: original file name present */ -#define FT_GZIP_COMMENT 0x10 /* bit 4 set: file comment present */ -#define FT_GZIP_RESERVED 0xE0 /* bits 5..7: reserved */ - - - /* check and skip .gz header - we don't support `transparent' compression */ - static FT_Error - ft_gzip_check_header( FT_Stream stream ) - { - FT_Error error; - FT_Byte head[4]; - - - if ( FT_STREAM_SEEK( 0 ) || - FT_STREAM_READ( head, 4 ) ) - goto Exit; - - /* head[0] && head[1] are the magic numbers; */ - /* head[2] is the method, and head[3] the flags */ - if ( head[0] != 0x1f || - head[1] != 0x8b || - head[2] != Z_DEFLATED || - (head[3] & FT_GZIP_RESERVED) ) - { - error = Gzip_Err_Invalid_File_Format; - goto Exit; - } - - /* skip time, xflags and os code */ - (void)FT_STREAM_SKIP( 6 ); - - /* skip the extra field */ - if ( head[3] & FT_GZIP_EXTRA_FIELD ) - { - FT_UInt len; - - - if ( FT_READ_USHORT_LE( len ) || - FT_STREAM_SKIP( len ) ) - goto Exit; - } - - /* skip original file name */ - if ( head[3] & FT_GZIP_ORIG_NAME ) - for (;;) - { - FT_UInt c; - - - if ( FT_READ_BYTE( c ) ) - goto Exit; - - if ( c == 0 ) - break; - } - - /* skip .gz comment */ - if ( head[3] & FT_GZIP_COMMENT ) - for (;;) - { - FT_UInt c; - - - if ( FT_READ_BYTE( c ) ) - goto Exit; - - if ( c == 0 ) - break; - } - - /* skip CRC */ - if ( head[3] & FT_GZIP_HEAD_CRC ) - if ( FT_STREAM_SKIP( 2 ) ) - goto Exit; - - Exit: - return error; - } - - - static FT_Error - ft_gzip_file_init( FT_GZipFile zip, - FT_Stream stream, - FT_Stream source ) - { - z_stream* zstream = &zip->zstream; - FT_Error error = Gzip_Err_Ok; - - - zip->stream = stream; - zip->source = source; - zip->memory = stream->memory; - - zip->limit = zip->buffer + FT_GZIP_BUFFER_SIZE; - zip->cursor = zip->limit; - zip->pos = 0; - - /* check and skip .gz header */ - { - stream = source; - - error = ft_gzip_check_header( stream ); - if ( error ) - goto Exit; - - zip->start = FT_STREAM_POS(); - } - - /* initialize zlib -- there is no zlib header in the compressed stream */ - zstream->zalloc = (alloc_func)ft_gzip_alloc; - zstream->zfree = (free_func) ft_gzip_free; - zstream->opaque = stream->memory; - - zstream->avail_in = 0; - zstream->next_in = zip->buffer; - - if ( inflateInit2( zstream, -MAX_WBITS ) != Z_OK || - zstream->next_in == NULL ) - error = Gzip_Err_Invalid_File_Format; - - Exit: - return error; - } - - - static void - ft_gzip_file_done( FT_GZipFile zip ) - { - z_stream* zstream = &zip->zstream; - - - inflateEnd( zstream ); - - /* clear the rest */ - zstream->zalloc = NULL; - zstream->zfree = NULL; - zstream->opaque = NULL; - zstream->next_in = NULL; - zstream->next_out = NULL; - zstream->avail_in = 0; - zstream->avail_out = 0; - - zip->memory = NULL; - zip->source = NULL; - zip->stream = NULL; - } - - - static FT_Error - ft_gzip_file_reset( FT_GZipFile zip ) - { - FT_Stream stream = zip->source; - FT_Error error; - - - if ( !FT_STREAM_SEEK( zip->start ) ) - { - z_stream* zstream = &zip->zstream; - - - inflateReset( zstream ); - - zstream->avail_in = 0; - zstream->next_in = zip->input; - zstream->avail_out = 0; - zstream->next_out = zip->buffer; - - zip->limit = zip->buffer + FT_GZIP_BUFFER_SIZE; - zip->cursor = zip->limit; - zip->pos = 0; - } - - return error; - } - - - static FT_Error - ft_gzip_file_fill_input( FT_GZipFile zip ) - { - z_stream* zstream = &zip->zstream; - FT_Stream stream = zip->source; - FT_ULong size; - - - if ( stream->read ) - { - size = stream->read( stream, stream->pos, zip->input, - FT_GZIP_BUFFER_SIZE ); - if ( size == 0 ) - return Gzip_Err_Invalid_Stream_Operation; - } - else - { - size = stream->size - stream->pos; - if ( size > FT_GZIP_BUFFER_SIZE ) - size = FT_GZIP_BUFFER_SIZE; - - if ( size == 0 ) - return Gzip_Err_Invalid_Stream_Operation; - - FT_MEM_COPY( zip->input, stream->base + stream->pos, size ); - } - stream->pos += size; - - zstream->next_in = zip->input; - zstream->avail_in = size; - - return Gzip_Err_Ok; - } - - - static FT_Error - ft_gzip_file_fill_output( FT_GZipFile zip ) - { - z_stream* zstream = &zip->zstream; - FT_Error error = 0; - - - zip->cursor = zip->buffer; - zstream->next_out = zip->cursor; - zstream->avail_out = FT_GZIP_BUFFER_SIZE; - - while ( zstream->avail_out > 0 ) - { - int err; - - - if ( zstream->avail_in == 0 ) - { - error = ft_gzip_file_fill_input( zip ); - if ( error ) - break; - } - - err = inflate( zstream, Z_NO_FLUSH ); - - if ( err == Z_STREAM_END ) - { - zip->limit = zstream->next_out; - if ( zip->limit == zip->cursor ) - error = Gzip_Err_Invalid_Stream_Operation; - break; - } - else if ( err != Z_OK ) - { - error = Gzip_Err_Invalid_Stream_Operation; - break; - } - } - - return error; - } - - - /* fill output buffer; `count' must be <= FT_GZIP_BUFFER_SIZE */ - static FT_Error - ft_gzip_file_skip_output( FT_GZipFile zip, - FT_ULong count ) - { - FT_Error error = Gzip_Err_Ok; - FT_ULong delta; - - - for (;;) - { - delta = (FT_ULong)( zip->limit - zip->cursor ); - if ( delta >= count ) - delta = count; - - zip->cursor += delta; - zip->pos += delta; - - count -= delta; - if ( count == 0 ) - break; - - error = ft_gzip_file_fill_output( zip ); - if ( error ) - break; - } - - return error; - } - - - static FT_ULong - ft_gzip_file_io( FT_GZipFile zip, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ) - { - FT_ULong result = 0; - FT_Error error; - - - /* Reset inflate stream if we're seeking backwards. */ - /* Yes, that is not too efficient, but it saves memory :-) */ - if ( pos < zip->pos ) - { - error = ft_gzip_file_reset( zip ); - if ( error ) - goto Exit; - } - - /* skip unwanted bytes */ - if ( pos > zip->pos ) - { - error = ft_gzip_file_skip_output( zip, (FT_ULong)( pos - zip->pos ) ); - if ( error ) - goto Exit; - } - - if ( count == 0 ) - goto Exit; - - /* now read the data */ - for (;;) - { - FT_ULong delta; - - - delta = (FT_ULong)( zip->limit - zip->cursor ); - if ( delta >= count ) - delta = count; - - FT_MEM_COPY( buffer, zip->cursor, delta ); - buffer += delta; - result += delta; - zip->cursor += delta; - zip->pos += delta; - - count -= delta; - if ( count == 0 ) - break; - - error = ft_gzip_file_fill_output( zip ); - if ( error ) - break; - } - - Exit: - return result; - } - - -/***************************************************************************/ -/***************************************************************************/ -/***** *****/ -/***** G Z E M B E D D I N G S T R E A M *****/ -/***** *****/ -/***************************************************************************/ -/***************************************************************************/ - - static void - ft_gzip_stream_close( FT_Stream stream ) - { - FT_GZipFile zip = (FT_GZipFile)stream->descriptor.pointer; - FT_Memory memory = stream->memory; - - - if ( zip ) - { - /* finalize gzip file descriptor */ - ft_gzip_file_done( zip ); - - FT_FREE( zip ); - - stream->descriptor.pointer = NULL; - } - } - - - static FT_ULong - ft_gzip_stream_io( FT_Stream stream, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ) - { - FT_GZipFile zip = (FT_GZipFile)stream->descriptor.pointer; - - - return ft_gzip_file_io( zip, pos, buffer, count ); - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Stream_OpenGzip( FT_Stream stream, - FT_Stream source ) - { - FT_Error error; - FT_Memory memory = source->memory; - FT_GZipFile zip; - - - FT_ZERO( stream ); - stream->memory = memory; - - if ( !FT_QNEW( zip ) ) - { - error = ft_gzip_file_init( zip, stream, source ); - if ( error ) - { - FT_FREE( zip ); - goto Exit; - } - - stream->descriptor.pointer = zip; - } - - stream->size = 0x7FFFFFFFL; /* don't know the real size! */ - stream->pos = 0; - stream->base = 0; - stream->read = ft_gzip_stream_io; - stream->close = ft_gzip_stream_close; - - Exit: - return error; - } - -#else /* !FT_CONFIG_OPTION_USE_ZLIB */ - - FT_EXPORT_DEF( FT_Error ) - FT_Stream_OpenGzip( FT_Stream stream, - FT_Stream source ) - { - FT_UNUSED( stream ); - FT_UNUSED( source ); - - return Gzip_Err_Unimplemented_Feature; - } - -#endif /* !FT_CONFIG_OPTION_USE_ZLIB */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/gzip/infblock.c b/nx-X11/extras/freetype2/src/gzip/infblock.c deleted file mode 100644 index d6e2dc297..000000000 --- a/nx-X11/extras/freetype2/src/gzip/infblock.c +++ /dev/null @@ -1,387 +0,0 @@ -/* infblock.c -- interpret and process block types to last block - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "infblock.h" -#include "inftrees.h" -#include "infcodes.h" -#include "infutil.h" - - -/* simplify the use of the inflate_huft type with some defines */ -#define exop word.what.Exop -#define bits word.what.Bits - -/* Table for deflate from PKZIP's appnote.txt. */ -local const uInt border[] = { /* Order of the bit length code lengths */ - 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - -/* - Notes beyond the 1.93a appnote.txt: - - 1. Distance pointers never point before the beginning of the output - stream. - 2. Distance pointers can point back across blocks, up to 32k away. - 3. There is an implied maximum of 7 bits for the bit length table and - 15 bits for the actual data. - 4. If only one code exists, then it is encoded using one bit. (Zero - would be more efficient, but perhaps a little confusing.) If two - codes exist, they are coded using one bit each (0 and 1). - 5. There is no way of sending zero distance codes--a dummy must be - sent if there are none. (History: a pre 2.0 version of PKZIP would - store blocks with no distance codes, but this was discovered to be - too harsh a criterion.) Valid only for 1.93a. 2.04c does allow - zero distance codes, which is sent as one code of zero bits in - length. - 6. There are up to 286 literal/length codes. Code 256 represents the - end-of-block. Note however that the static length tree defines - 288 codes just to fill out the Huffman codes. Codes 286 and 287 - cannot be used though, since there is no length base or extra bits - defined for them. Similarily, there are up to 30 distance codes. - However, static trees define 32 codes (all 5 bits) to fill out the - Huffman codes, but the last two had better not show up in the data. - 7. Unzip can check dynamic Huffman blocks for complete code sets. - The exception is that a single code would not be complete (see #4). - 8. The five bits following the block type is really the number of - literal codes sent minus 257. - 9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits - (1+6+6). Therefore, to output three times the length, you output - three codes (1+1+1), whereas to output four times the same length, - you only need two codes (1+3). Hmm. - 10. In the tree reconstruction algorithm, Code = Code + Increment - only if BitLength(i) is not zero. (Pretty obvious.) - 11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19) - 12. Note: length code 284 can represent 227-258, but length code 285 - really is 258. The last length deserves its own, short code - since it gets used a lot in very redundant files. The length - 258 is special since 258 - 3 (the min match length) is 255. - 13. The literal/length and distance code bit lengths are read as a - single stream of lengths. It is possible (and advantageous) for - a repeat code (16, 17, or 18) to go across the boundary between - the two sets of lengths. - */ - - -local void inflate_blocks_reset( /* s, z, c) */ -inflate_blocks_statef *s, -z_streamp z, -uLongf *c ) -{ - if (c != Z_NULL) - *c = s->check; - if (s->mode == BTREE || s->mode == DTREE) - ZFREE(z, s->sub.trees.blens); - if (s->mode == CODES) - inflate_codes_free(s->sub.decode.codes, z); - s->mode = TYPE; - s->bitk = 0; - s->bitb = 0; - s->read = s->write = s->window; - if (s->checkfn != Z_NULL) - z->adler = s->check = (*s->checkfn)(0L, (const Bytef *)Z_NULL, 0); - Tracev((stderr, "inflate: blocks reset\n")); -} - - -local inflate_blocks_statef *inflate_blocks_new( /* z, c, w) */ -z_streamp z, -check_func c, -uInt w ) -{ - inflate_blocks_statef *s; - - if ((s = (inflate_blocks_statef *)ZALLOC - (z,1,sizeof(struct inflate_blocks_state))) == Z_NULL) - return s; - if ((s->hufts = - (inflate_huft *)ZALLOC(z, sizeof(inflate_huft), MANY)) == Z_NULL) - { - ZFREE(z, s); - return Z_NULL; - } - if ((s->window = (Bytef *)ZALLOC(z, 1, w)) == Z_NULL) - { - ZFREE(z, s->hufts); - ZFREE(z, s); - return Z_NULL; - } - s->end = s->window + w; - s->checkfn = c; - s->mode = TYPE; - Tracev((stderr, "inflate: blocks allocated\n")); - inflate_blocks_reset(s, z, Z_NULL); - return s; -} - - -local int inflate_blocks( /* s, z, r) */ -inflate_blocks_statef *s, -z_streamp z, -int r ) -{ - uInt t; /* temporary storage */ - uLong b; /* bit buffer */ - uInt k; /* bits in bit buffer */ - Bytef *p; /* input data pointer */ - uInt n; /* bytes available there */ - Bytef *q; /* output window write pointer */ - uInt m; /* bytes to end of window or read pointer */ - - /* copy input/output information to locals (UPDATE macro restores) */ - LOAD - - /* process input based on current state */ - while (1) switch (s->mode) - { - case TYPE: - NEEDBITS(3) - t = (uInt)b & 7; - s->last = t & 1; - switch (t >> 1) - { - case 0: /* stored */ - Tracev((stderr, "inflate: stored block%s\n", - s->last ? " (last)" : "")); - DUMPBITS(3) - t = k & 7; /* go to byte boundary */ - DUMPBITS(t) - s->mode = LENS; /* get length of stored block */ - break; - case 1: /* fixed */ - Tracev((stderr, "inflate: fixed codes block%s\n", - s->last ? " (last)" : "")); - { - uInt bl, bd; - inflate_huft *tl, *td; - - inflate_trees_fixed(&bl, &bd, (const inflate_huft**)&tl, - (const inflate_huft**)&td, z); - s->sub.decode.codes = inflate_codes_new(bl, bd, tl, td, z); - if (s->sub.decode.codes == Z_NULL) - { - r = Z_MEM_ERROR; - LEAVE - } - } - DUMPBITS(3) - s->mode = CODES; - break; - case 2: /* dynamic */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - s->last ? " (last)" : "")); - DUMPBITS(3) - s->mode = TABLE; - break; - case 3: /* illegal */ - DUMPBITS(3) - s->mode = BAD; - z->msg = (char*)"invalid block type"; - r = Z_DATA_ERROR; - LEAVE - } - break; - case LENS: - NEEDBITS(32) - if ((((~b) >> 16) & 0xffff) != (b & 0xffff)) - { - s->mode = BAD; - z->msg = (char*)"invalid stored block lengths"; - r = Z_DATA_ERROR; - LEAVE - } - s->sub.left = (uInt)b & 0xffff; - b = k = 0; /* dump bits */ - Tracev((stderr, "inflate: stored length %u\n", s->sub.left)); - s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE); - break; - case STORED: - if (n == 0) - LEAVE - NEEDOUT - t = s->sub.left; - if (t > n) t = n; - if (t > m) t = m; - zmemcpy(q, p, t); - p += t; n -= t; - q += t; m -= t; - if ((s->sub.left -= t) != 0) - break; - Tracev((stderr, "inflate: stored end, %lu total out\n", - z->total_out + (q >= s->read ? q - s->read : - (s->end - s->read) + (q - s->window)))); - s->mode = s->last ? DRY : TYPE; - break; - case TABLE: - NEEDBITS(14) - s->sub.trees.table = t = (uInt)b & 0x3fff; -#ifndef PKZIP_BUG_WORKAROUND - if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29) - { - s->mode = BAD; - z->msg = (char*)"too many length or distance symbols"; - r = Z_DATA_ERROR; - LEAVE - } -#endif - t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f); - if ((s->sub.trees.blens = (uIntf*)ZALLOC(z, t, sizeof(uInt))) == Z_NULL) - { - r = Z_MEM_ERROR; - LEAVE - } - DUMPBITS(14) - s->sub.trees.index = 0; - Tracev((stderr, "inflate: table sizes ok\n")); - s->mode = BTREE; - case BTREE: - while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10)) - { - NEEDBITS(3) - s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7; - DUMPBITS(3) - } - while (s->sub.trees.index < 19) - s->sub.trees.blens[border[s->sub.trees.index++]] = 0; - s->sub.trees.bb = 7; - t = inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb, - &s->sub.trees.tb, s->hufts, z); - if (t != Z_OK) - { - r = t; - if (r == Z_DATA_ERROR) - { - ZFREE(z, s->sub.trees.blens); - s->mode = BAD; - } - LEAVE - } - s->sub.trees.index = 0; - Tracev((stderr, "inflate: bits tree ok\n")); - s->mode = DTREE; - case DTREE: - while (t = s->sub.trees.table, - s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f)) - { - inflate_huft *h; - uInt i, j, c; - - t = s->sub.trees.bb; - NEEDBITS(t) - h = s->sub.trees.tb + ((uInt)b & inflate_mask[t]); - t = h->bits; - c = h->base; - if (c < 16) - { - DUMPBITS(t) - s->sub.trees.blens[s->sub.trees.index++] = c; - } - else /* c == 16..18 */ - { - i = c == 18 ? 7 : c - 14; - j = c == 18 ? 11 : 3; - NEEDBITS(t + i) - DUMPBITS(t) - j += (uInt)b & inflate_mask[i]; - DUMPBITS(i) - i = s->sub.trees.index; - t = s->sub.trees.table; - if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || - (c == 16 && i < 1)) - { - ZFREE(z, s->sub.trees.blens); - s->mode = BAD; - z->msg = (char*)"invalid bit length repeat"; - r = Z_DATA_ERROR; - LEAVE - } - c = c == 16 ? s->sub.trees.blens[i - 1] : 0; - do { - s->sub.trees.blens[i++] = c; - } while (--j); - s->sub.trees.index = i; - } - } - s->sub.trees.tb = Z_NULL; - { - uInt bl, bd; - inflate_huft *tl, *td; - inflate_codes_statef *c; - - bl = 9; /* must be <= 9 for lookahead assumptions */ - bd = 6; /* must be <= 9 for lookahead assumptions */ - t = s->sub.trees.table; - t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), - s->sub.trees.blens, &bl, &bd, &tl, &td, - s->hufts, z); - if (t != Z_OK) - { - if (t == (uInt)Z_DATA_ERROR) - { - ZFREE(z, s->sub.trees.blens); - s->mode = BAD; - } - r = t; - LEAVE - } - Tracev((stderr, "inflate: trees ok\n")); - if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL) - { - r = Z_MEM_ERROR; - LEAVE - } - s->sub.decode.codes = c; - } - ZFREE(z, s->sub.trees.blens); - s->mode = CODES; - case CODES: - UPDATE - if ((r = inflate_codes(s, z, r)) != Z_STREAM_END) - return inflate_flush(s, z, r); - r = Z_OK; - inflate_codes_free(s->sub.decode.codes, z); - LOAD - Tracev((stderr, "inflate: codes end, %lu total out\n", - z->total_out + (q >= s->read ? q - s->read : - (s->end - s->read) + (q - s->window)))); - if (!s->last) - { - s->mode = TYPE; - break; - } - s->mode = DRY; - case DRY: - FLUSH - if (s->read != s->write) - LEAVE - s->mode = DONE; - case DONE: - r = Z_STREAM_END; - LEAVE - case BAD: - r = Z_DATA_ERROR; - LEAVE - default: - r = Z_STREAM_ERROR; - LEAVE - } -#ifdef NEED_DUMMY_RETURN - return 0; -#endif -} - - -local int inflate_blocks_free( /* s, z) */ -inflate_blocks_statef *s, -z_streamp z ) -{ - inflate_blocks_reset(s, z, Z_NULL); - ZFREE(z, s->window); - ZFREE(z, s->hufts); - ZFREE(z, s); - Tracev((stderr, "inflate: blocks freed\n")); - return Z_OK; -} - - diff --git a/nx-X11/extras/freetype2/src/gzip/infblock.h b/nx-X11/extras/freetype2/src/gzip/infblock.h deleted file mode 100644 index c2535a1e4..000000000 --- a/nx-X11/extras/freetype2/src/gzip/infblock.h +++ /dev/null @@ -1,36 +0,0 @@ -/* infblock.h -- header to use infblock.c - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -#ifndef _INFBLOCK_H -#define _INFBLOCK_H - -struct inflate_blocks_state; -typedef struct inflate_blocks_state FAR inflate_blocks_statef; - -local inflate_blocks_statef * inflate_blocks_new OF(( - z_streamp z, - check_func c, /* check function */ - uInt w)); /* window size */ - -local int inflate_blocks OF(( - inflate_blocks_statef *, - z_streamp , - int)); /* initial return code */ - -local void inflate_blocks_reset OF(( - inflate_blocks_statef *, - z_streamp , - uLongf *)); /* check value on output */ - -local int inflate_blocks_free OF(( - inflate_blocks_statef *, - z_streamp)); - -#endif /* _INFBLOCK_H */ diff --git a/nx-X11/extras/freetype2/src/gzip/infcodes.c b/nx-X11/extras/freetype2/src/gzip/infcodes.c deleted file mode 100644 index f7bfd58c4..000000000 --- a/nx-X11/extras/freetype2/src/gzip/infcodes.c +++ /dev/null @@ -1,250 +0,0 @@ -/* infcodes.c -- process literals and length/distance pairs - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" -#include "infblock.h" -#include "infcodes.h" -#include "infutil.h" - -/* simplify the use of the inflate_huft type with some defines */ -#define exop word.what.Exop -#define bits word.what.Bits - -typedef enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */ - START, /* x: set up for LEN */ - LEN, /* i: get length/literal/eob next */ - LENEXT, /* i: getting length extra (have base) */ - DIST, /* i: get distance next */ - DISTEXT, /* i: getting distance extra */ - COPY, /* o: copying bytes in window, waiting for space */ - LIT, /* o: got literal, waiting for output space */ - WASH, /* o: got eob, possibly still output waiting */ - END, /* x: got eob and all data flushed */ - BADCODE} /* x: got error */ -inflate_codes_mode; - -/* inflate codes private state */ -struct inflate_codes_state { - - /* mode */ - inflate_codes_mode mode; /* current inflate_codes mode */ - - /* mode dependent information */ - uInt len; - union { - struct { - inflate_huft *tree; /* pointer into tree */ - uInt need; /* bits needed */ - } code; /* if LEN or DIST, where in tree */ - uInt lit; /* if LIT, literal */ - struct { - uInt get; /* bits to get for extra */ - uInt dist; /* distance back to copy from */ - } copy; /* if EXT or COPY, where and how much */ - } sub; /* submode */ - - /* mode independent information */ - Byte lbits; /* ltree bits decoded per branch */ - Byte dbits; /* dtree bits decoder per branch */ - inflate_huft *ltree; /* literal/length/eob tree */ - inflate_huft *dtree; /* distance tree */ - -}; - - -local inflate_codes_statef *inflate_codes_new( /* bl, bd, tl, td, z) */ -uInt bl, uInt bd, -inflate_huft *tl, -inflate_huft *td, /* need separate declaration for Borland C++ */ -z_streamp z ) -{ - inflate_codes_statef *c; - - if ((c = (inflate_codes_statef *) - ZALLOC(z,1,sizeof(struct inflate_codes_state))) != Z_NULL) - { - c->mode = START; - c->lbits = (Byte)bl; - c->dbits = (Byte)bd; - c->ltree = tl; - c->dtree = td; - Tracev((stderr, "inflate: codes new\n")); - } - return c; -} - - -local int inflate_codes( /* s, z, r) */ -inflate_blocks_statef *s, -z_streamp z, -int r ) -{ - uInt j; /* temporary storage */ - inflate_huft *t; /* temporary pointer */ - uInt e; /* extra bits or operation */ - uLong b; /* bit buffer */ - uInt k; /* bits in bit buffer */ - Bytef *p; /* input data pointer */ - uInt n; /* bytes available there */ - Bytef *q; /* output window write pointer */ - uInt m; /* bytes to end of window or read pointer */ - Bytef *f; /* pointer to copy strings from */ - inflate_codes_statef *c = s->sub.decode.codes; /* codes state */ - - /* copy input/output information to locals (UPDATE macro restores) */ - LOAD - - /* process input and output based on current state */ - while (1) switch (c->mode) - { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */ - case START: /* x: set up for LEN */ -#ifndef SLOW - if (m >= 258 && n >= 10) - { - UPDATE - r = inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z); - LOAD - if (r != Z_OK) - { - c->mode = r == Z_STREAM_END ? WASH : BADCODE; - break; - } - } -#endif /* !SLOW */ - c->sub.code.need = c->lbits; - c->sub.code.tree = c->ltree; - c->mode = LEN; - case LEN: /* i: get length/literal/eob next */ - j = c->sub.code.need; - NEEDBITS(j) - t = c->sub.code.tree + ((uInt)b & inflate_mask[j]); - DUMPBITS(t->bits) - e = (uInt)(t->exop); - if (e == 0) /* literal */ - { - c->sub.lit = t->base; - Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", t->base)); - c->mode = LIT; - break; - } - if (e & 16) /* length */ - { - c->sub.copy.get = e & 15; - c->len = t->base; - c->mode = LENEXT; - break; - } - if ((e & 64) == 0) /* next table */ - { - c->sub.code.need = e; - c->sub.code.tree = t + t->base; - break; - } - if (e & 32) /* end of block */ - { - Tracevv((stderr, "inflate: end of block\n")); - c->mode = WASH; - break; - } - c->mode = BADCODE; /* invalid code */ - z->msg = (char*)"invalid literal/length code"; - r = Z_DATA_ERROR; - LEAVE - case LENEXT: /* i: getting length extra (have base) */ - j = c->sub.copy.get; - NEEDBITS(j) - c->len += (uInt)b & inflate_mask[j]; - DUMPBITS(j) - c->sub.code.need = c->dbits; - c->sub.code.tree = c->dtree; - Tracevv((stderr, "inflate: length %u\n", c->len)); - c->mode = DIST; - case DIST: /* i: get distance next */ - j = c->sub.code.need; - NEEDBITS(j) - t = c->sub.code.tree + ((uInt)b & inflate_mask[j]); - DUMPBITS(t->bits) - e = (uInt)(t->exop); - if (e & 16) /* distance */ - { - c->sub.copy.get = e & 15; - c->sub.copy.dist = t->base; - c->mode = DISTEXT; - break; - } - if ((e & 64) == 0) /* next table */ - { - c->sub.code.need = e; - c->sub.code.tree = t + t->base; - break; - } - c->mode = BADCODE; /* invalid code */ - z->msg = (char*)"invalid distance code"; - r = Z_DATA_ERROR; - LEAVE - case DISTEXT: /* i: getting distance extra */ - j = c->sub.copy.get; - NEEDBITS(j) - c->sub.copy.dist += (uInt)b & inflate_mask[j]; - DUMPBITS(j) - Tracevv((stderr, "inflate: distance %u\n", c->sub.copy.dist)); - c->mode = COPY; - case COPY: /* o: copying bytes in window, waiting for space */ - f = q - c->sub.copy.dist; - while (f < s->window) /* modulo window size-"while" instead */ - f += s->end - s->window; /* of "if" handles invalid distances */ - while (c->len) - { - NEEDOUT - OUTBYTE(*f++) - if (f == s->end) - f = s->window; - c->len--; - } - c->mode = START; - break; - case LIT: /* o: got literal, waiting for output space */ - NEEDOUT - OUTBYTE(c->sub.lit) - c->mode = START; - break; - case WASH: /* o: got eob, possibly more output */ - if (k > 7) /* return unused byte, if any */ - { - Assert(k < 16, "inflate_codes grabbed too many bytes") - k -= 8; - n++; - p--; /* can always return one */ - } - FLUSH - if (s->read != s->write) - LEAVE - c->mode = END; - case END: - r = Z_STREAM_END; - LEAVE - case BADCODE: /* x: got error */ - r = Z_DATA_ERROR; - LEAVE - default: - r = Z_STREAM_ERROR; - LEAVE - } -#ifdef NEED_DUMMY_RETURN - return Z_STREAM_ERROR; /* Some dumb compilers complain without this */ -#endif -} - - -local void inflate_codes_free( /* c, z) */ -inflate_codes_statef *c, -z_streamp z ) -{ - ZFREE(z, c); - Tracev((stderr, "inflate: codes free\n")); -} diff --git a/nx-X11/extras/freetype2/src/gzip/infcodes.h b/nx-X11/extras/freetype2/src/gzip/infcodes.h deleted file mode 100644 index 154d7f896..000000000 --- a/nx-X11/extras/freetype2/src/gzip/infcodes.h +++ /dev/null @@ -1,31 +0,0 @@ -/* infcodes.h -- header to use infcodes.c - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -#ifndef _INFCODES_H -#define _INFCODES_H - -struct inflate_codes_state; -typedef struct inflate_codes_state FAR inflate_codes_statef; - -local inflate_codes_statef *inflate_codes_new OF(( - uInt, uInt, - inflate_huft *, inflate_huft *, - z_streamp )); - -local int inflate_codes OF(( - inflate_blocks_statef *, - z_streamp , - int)); - -local void inflate_codes_free OF(( - inflate_codes_statef *, - z_streamp )); - -#endif /* _INFCODES_H */ diff --git a/nx-X11/extras/freetype2/src/gzip/inffixed.h b/nx-X11/extras/freetype2/src/gzip/inffixed.h deleted file mode 100644 index 4d4760ea0..000000000 --- a/nx-X11/extras/freetype2/src/gzip/inffixed.h +++ /dev/null @@ -1,151 +0,0 @@ -/* inffixed.h -- table for decoding fixed codes - * Generated automatically by the maketree.c program - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -local const uInt fixed_bl = 9; -local const uInt fixed_bd = 5; -local const inflate_huft fixed_tl[] = { - {{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115}, - {{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},192}, - {{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},160}, - {{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},224}, - {{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},144}, - {{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},208}, - {{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},176}, - {{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},240}, - {{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227}, - {{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},200}, - {{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},168}, - {{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},232}, - {{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},152}, - {{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},216}, - {{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},184}, - {{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},248}, - {{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163}, - {{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},196}, - {{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},164}, - {{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},228}, - {{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},148}, - {{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},212}, - {{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},180}, - {{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},244}, - {{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0}, - {{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},204}, - {{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},172}, - {{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},236}, - {{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},156}, - {{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},220}, - {{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},188}, - {{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},252}, - {{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131}, - {{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},194}, - {{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},162}, - {{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},226}, - {{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},146}, - {{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},210}, - {{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},178}, - {{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},242}, - {{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258}, - {{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},202}, - {{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},170}, - {{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},234}, - {{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},154}, - {{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},218}, - {{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},186}, - {{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},250}, - {{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195}, - {{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},198}, - {{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},166}, - {{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},230}, - {{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},150}, - {{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},214}, - {{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},182}, - {{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},246}, - {{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0}, - {{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},206}, - {{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},174}, - {{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},238}, - {{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},158}, - {{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},222}, - {{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},190}, - {{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},254}, - {{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115}, - {{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},193}, - {{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},161}, - {{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},225}, - {{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},145}, - {{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},209}, - {{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},177}, - {{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},241}, - {{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227}, - {{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},201}, - {{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},169}, - {{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},233}, - {{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},153}, - {{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},217}, - {{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},185}, - {{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},249}, - {{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163}, - {{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},197}, - {{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},165}, - {{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},229}, - {{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},149}, - {{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},213}, - {{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},181}, - {{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},245}, - {{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0}, - {{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},205}, - {{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},173}, - {{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},237}, - {{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},157}, - {{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},221}, - {{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},189}, - {{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},253}, - {{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131}, - {{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},195}, - {{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},163}, - {{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},227}, - {{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},147}, - {{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},211}, - {{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},179}, - {{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},243}, - {{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258}, - {{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},203}, - {{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},171}, - {{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},235}, - {{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},155}, - {{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},219}, - {{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},187}, - {{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},251}, - {{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195}, - {{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},199}, - {{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},167}, - {{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},231}, - {{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},151}, - {{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},215}, - {{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},183}, - {{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},247}, - {{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0}, - {{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},207}, - {{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},175}, - {{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},239}, - {{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},159}, - {{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},223}, - {{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},191}, - {{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},255} - }; -local const inflate_huft fixed_td[] = { - {{{80,5}},1}, {{{87,5}},257}, {{{83,5}},17}, {{{91,5}},4097}, - {{{81,5}},5}, {{{89,5}},1025}, {{{85,5}},65}, {{{93,5}},16385}, - {{{80,5}},3}, {{{88,5}},513}, {{{84,5}},33}, {{{92,5}},8193}, - {{{82,5}},9}, {{{90,5}},2049}, {{{86,5}},129}, {{{192,5}},24577}, - {{{80,5}},2}, {{{87,5}},385}, {{{83,5}},25}, {{{91,5}},6145}, - {{{81,5}},7}, {{{89,5}},1537}, {{{85,5}},97}, {{{93,5}},24577}, - {{{80,5}},4}, {{{88,5}},769}, {{{84,5}},49}, {{{92,5}},12289}, - {{{82,5}},13}, {{{90,5}},3073}, {{{86,5}},193}, {{{192,5}},24577} - }; diff --git a/nx-X11/extras/freetype2/src/gzip/inflate.c b/nx-X11/extras/freetype2/src/gzip/inflate.c deleted file mode 100644 index 8877fa3eb..000000000 --- a/nx-X11/extras/freetype2/src/gzip/inflate.c +++ /dev/null @@ -1,273 +0,0 @@ -/* inflate.c -- zlib interface to inflate modules - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "infblock.h" - -#define DONE INFLATE_DONE -#define BAD INFLATE_BAD - -typedef enum { - METHOD, /* waiting for method byte */ - FLAG, /* waiting for flag byte */ - DICT4, /* four dictionary check bytes to go */ - DICT3, /* three dictionary check bytes to go */ - DICT2, /* two dictionary check bytes to go */ - DICT1, /* one dictionary check byte to go */ - DICT0, /* waiting for inflateSetDictionary */ - BLOCKS, /* decompressing blocks */ - CHECK4, /* four check bytes to go */ - CHECK3, /* three check bytes to go */ - CHECK2, /* two check bytes to go */ - CHECK1, /* one check byte to go */ - DONE, /* finished check, done */ - BAD} /* got an error--stay here */ -inflate_mode; - -/* inflate private state */ -struct internal_state { - - /* mode */ - inflate_mode mode; /* current inflate mode */ - - /* mode dependent information */ - union { - uInt method; /* if FLAGS, method byte */ - struct { - uLong was; /* computed check value */ - uLong need; /* stream check value */ - } check; /* if CHECK, check values to compare */ - uInt marker; /* if BAD, inflateSync's marker bytes count */ - } sub; /* submode */ - - /* mode independent information */ - int nowrap; /* flag for no wrapper */ - uInt wbits; /* log2(window size) (8..15, defaults to 15) */ - inflate_blocks_statef - *blocks; /* current inflate_blocks state */ - -}; - - -ZEXPORT(int) inflateReset( /* z) */ -z_streamp z ) -{ - if (z == Z_NULL || z->state == Z_NULL) - return Z_STREAM_ERROR; - z->total_in = z->total_out = 0; - z->msg = Z_NULL; - z->state->mode = z->state->nowrap ? BLOCKS : METHOD; - inflate_blocks_reset(z->state->blocks, z, Z_NULL); - Tracev((stderr, "inflate: reset\n")); - return Z_OK; -} - - -ZEXPORT(int) inflateEnd( /* z) */ -z_streamp z ) -{ - if (z == Z_NULL || z->state == Z_NULL || z->zfree == Z_NULL) - return Z_STREAM_ERROR; - if (z->state->blocks != Z_NULL) - inflate_blocks_free(z->state->blocks, z); - ZFREE(z, z->state); - z->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} - - -ZEXPORT(int) inflateInit2_( /* z, w, version, stream_size) */ -z_streamp z, -int w, -const char *version, -int stream_size ) -{ - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != sizeof(z_stream)) - return Z_VERSION_ERROR; - - /* initialize state */ - if (z == Z_NULL) - return Z_STREAM_ERROR; - z->msg = Z_NULL; - if (z->zalloc == Z_NULL) - { - z->zalloc = zcalloc; - z->opaque = (voidpf)0; - } - if (z->zfree == Z_NULL) z->zfree = zcfree; - if ((z->state = (struct internal_state FAR *) - ZALLOC(z,1,sizeof(struct internal_state))) == Z_NULL) - return Z_MEM_ERROR; - z->state->blocks = Z_NULL; - - /* handle undocumented nowrap option (no zlib header or check) */ - z->state->nowrap = 0; - if (w < 0) - { - w = - w; - z->state->nowrap = 1; - } - - /* set window size */ - if (w < 8 || w > 15) - { - inflateEnd(z); - return Z_STREAM_ERROR; - } - z->state->wbits = (uInt)w; - - /* create inflate_blocks state */ - if ((z->state->blocks = - inflate_blocks_new(z, z->state->nowrap ? Z_NULL : adler32, (uInt)1 << w)) - == Z_NULL) - { - inflateEnd(z); - return Z_MEM_ERROR; - } - Tracev((stderr, "inflate: allocated\n")); - - /* reset state */ - inflateReset(z); - return Z_OK; -} - - - -#undef NEEDBYTE -#define NEEDBYTE {if(z->avail_in==0)return r;r=f;} - -#undef NEXTBYTE -#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++) - - -ZEXPORT(int) inflate( /* z, f) */ -z_streamp z, -int f ) -{ - int r; - uInt b; - - if (z == Z_NULL || z->state == Z_NULL || z->next_in == Z_NULL) - return Z_STREAM_ERROR; - f = f == Z_FINISH ? Z_BUF_ERROR : Z_OK; - r = Z_BUF_ERROR; - while (1) switch (z->state->mode) - { - case METHOD: - NEEDBYTE - if (((z->state->sub.method = NEXTBYTE) & 0xf) != Z_DEFLATED) - { - z->state->mode = BAD; - z->msg = (char*)"unknown compression method"; - z->state->sub.marker = 5; /* can't try inflateSync */ - break; - } - if ((z->state->sub.method >> 4) + 8 > z->state->wbits) - { - z->state->mode = BAD; - z->msg = (char*)"invalid window size"; - z->state->sub.marker = 5; /* can't try inflateSync */ - break; - } - z->state->mode = FLAG; - case FLAG: - NEEDBYTE - b = NEXTBYTE; - if (((z->state->sub.method << 8) + b) % 31) - { - z->state->mode = BAD; - z->msg = (char*)"incorrect header check"; - z->state->sub.marker = 5; /* can't try inflateSync */ - break; - } - Tracev((stderr, "inflate: zlib header ok\n")); - if (!(b & PRESET_DICT)) - { - z->state->mode = BLOCKS; - break; - } - z->state->mode = DICT4; - case DICT4: - NEEDBYTE - z->state->sub.check.need = (uLong)NEXTBYTE << 24; - z->state->mode = DICT3; - case DICT3: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE << 16; - z->state->mode = DICT2; - case DICT2: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE << 8; - z->state->mode = DICT1; - case DICT1: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE; - z->adler = z->state->sub.check.need; - z->state->mode = DICT0; - return Z_NEED_DICT; - case DICT0: - z->state->mode = BAD; - z->msg = (char*)"need dictionary"; - z->state->sub.marker = 0; /* can try inflateSync */ - return Z_STREAM_ERROR; - case BLOCKS: - r = inflate_blocks(z->state->blocks, z, r); - if (r == Z_DATA_ERROR) - { - z->state->mode = BAD; - z->state->sub.marker = 0; /* can try inflateSync */ - break; - } - if (r == Z_OK) - r = f; - if (r != Z_STREAM_END) - return r; - r = f; - inflate_blocks_reset(z->state->blocks, z, &z->state->sub.check.was); - if (z->state->nowrap) - { - z->state->mode = DONE; - break; - } - z->state->mode = CHECK4; - case CHECK4: - NEEDBYTE - z->state->sub.check.need = (uLong)NEXTBYTE << 24; - z->state->mode = CHECK3; - case CHECK3: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE << 16; - z->state->mode = CHECK2; - case CHECK2: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE << 8; - z->state->mode = CHECK1; - case CHECK1: - NEEDBYTE - z->state->sub.check.need += (uLong)NEXTBYTE; - - if (z->state->sub.check.was != z->state->sub.check.need) - { - z->state->mode = BAD; - z->msg = (char*)"incorrect data check"; - z->state->sub.marker = 5; /* can't try inflateSync */ - break; - } - Tracev((stderr, "inflate: zlib check ok\n")); - z->state->mode = DONE; - case DONE: - return Z_STREAM_END; - case BAD: - return Z_DATA_ERROR; - default: - return Z_STREAM_ERROR; - } -#ifdef NEED_DUMMY_RETURN - return Z_STREAM_ERROR; /* Some dumb compilers complain without this */ -#endif -} - diff --git a/nx-X11/extras/freetype2/src/gzip/inftrees.c b/nx-X11/extras/freetype2/src/gzip/inftrees.c deleted file mode 100644 index 9002bf5b8..000000000 --- a/nx-X11/extras/freetype2/src/gzip/inftrees.c +++ /dev/null @@ -1,462 +0,0 @@ -/* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" - -#if !defined(BUILDFIXED) && !defined(STDC) -# define BUILDFIXED /* non ANSI compilers may not accept inffixed.h */ -#endif - - -#if 0 -local const char inflate_copyright[] = - " inflate 1.1.4 Copyright 1995-2002 Mark Adler "; -#endif -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* simplify the use of the inflate_huft type with some defines */ -#define exop word.what.Exop -#define bits word.what.Bits - - -local int huft_build OF(( - uIntf *, /* code lengths in bits */ - uInt, /* number of codes */ - uInt, /* number of "simple" codes */ - const uIntf *, /* list of base values for non-simple codes */ - const uIntf *, /* list of extra bits for non-simple codes */ - inflate_huft * FAR*,/* result: starting table */ - uIntf *, /* maximum lookup bits (returns actual) */ - inflate_huft *, /* space for trees */ - uInt *, /* hufts used in space */ - uIntf * )); /* space for values */ - -/* Tables for deflate from PKZIP's appnote.txt. */ -local const uInt cplens[31] = { /* Copy lengths for literal codes 257..285 */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0}; - /* see note #13 above about 258 */ -local const uInt cplext[31] = { /* Extra bits for literal codes 257..285 */ - 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, - 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112}; /* 112==invalid */ -local const uInt cpdist[30] = { /* Copy offsets for distance codes 0..29 */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577}; -local const uInt cpdext[30] = { /* Extra bits for distance codes */ - 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, - 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, - 12, 12, 13, 13}; - -/* - Huffman code decoding is performed using a multi-level table lookup. - The fastest way to decode is to simply build a lookup table whose - size is determined by the longest code. However, the time it takes - to build this table can also be a factor if the data being decoded - is not very long. The most common codes are necessarily the - shortest codes, so those codes dominate the decoding time, and hence - the speed. The idea is you can have a shorter table that decodes the - shorter, more probable codes, and then point to subsidiary tables for - the longer codes. The time it costs to decode the longer codes is - then traded against the time it takes to make longer tables. - - This results of this trade are in the variables lbits and dbits - below. lbits is the number of bits the first level table for literal/ - length codes can decode in one step, and dbits is the same thing for - the distance codes. Subsequent tables are also less than or equal to - those sizes. These values may be adjusted either when all of the - codes are shorter than that, in which case the longest code length in - bits is used, or when the shortest code is *longer* than the requested - table size, in which case the length of the shortest code in bits is - used. - - There are two different values for the two tables, since they code a - different number of possibilities each. The literal/length table - codes 286 possible values, or in a flat code, a little over eight - bits. The distance table codes 30 possible values, or a little less - than five bits, flat. The optimum values for speed end up being - about one bit more than those, so lbits is 8+1 and dbits is 5+1. - The optimum values may differ though from machine to machine, and - possibly even between compilers. Your mileage may vary. - */ - - -/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */ -#define BMAX 15 /* maximum bit length of any code */ - -local int huft_build( /* b, n, s, d, e, t, m, hp, hn, v) */ -uIntf *b, /* code lengths in bits (all assumed <= BMAX) */ -uInt n, /* number of codes (assumed <= 288) */ -uInt s, /* number of simple-valued codes (0..s-1) */ -const uIntf *d, /* list of base values for non-simple codes */ -const uIntf *e, /* list of extra bits for non-simple codes */ -inflate_huft * FAR *t, /* result: starting table */ -uIntf *m, /* maximum lookup bits, returns actual */ -inflate_huft *hp, /* space for trees */ -uInt *hn, /* hufts used in space */ -uIntf *v /* working area: values in order of bit length */ -/* Given a list of code lengths and a maximum table size, make a set of - tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR - if the given code set is incomplete (the tables are still built in this - case), or Z_DATA_ERROR if the input is invalid. */ -) -{ - - uInt a; /* counter for codes of length k */ - uInt c[BMAX+1]; /* bit length count table */ - uInt f; /* i repeats in table every f entries */ - int g; /* maximum code length */ - int h; /* table level */ - register uInt i; /* counter, current code */ - register uInt j; /* counter */ - register int k; /* number of bits in current code */ - int l; /* bits per table (returned in m) */ - uInt mask; /* (1 << w) - 1, to avoid cc -O bug on HP */ - register uIntf *p; /* pointer into c[], b[], or v[] */ - inflate_huft *q; /* points to current table */ - struct inflate_huft_s r; /* table entry for structure assignment */ - inflate_huft *u[BMAX]; /* table stack */ - register int w; /* bits before this table == (l * h) */ - uInt x[BMAX+1]; /* bit offsets, then code stack */ - uIntf *xp; /* pointer into x */ - int y; /* number of dummy codes added */ - uInt z; /* number of entries in current table */ - - - /* Generate counts for each bit length */ - p = c; -#define C0 *p++ = 0; -#define C2 C0 C0 C0 C0 -#define C4 C2 C2 C2 C2 - C4 /* clear c[]--assume BMAX+1 is 16 */ - p = b; i = n; - do { - c[*p++]++; /* assume all entries <= BMAX */ - } while (--i); - if (c[0] == n) /* null input--all zero length codes */ - { - *t = (inflate_huft *)Z_NULL; - *m = 0; - return Z_OK; - } - - - /* Find minimum and maximum length, bound *m by those */ - l = *m; - for (j = 1; j <= BMAX; j++) - if (c[j]) - break; - k = j; /* minimum code length */ - if ((uInt)l < j) - l = j; - for (i = BMAX; i; i--) - if (c[i]) - break; - g = i; /* maximum code length */ - if ((uInt)l > i) - l = i; - *m = l; - - - /* Adjust last length count to fill out codes, if needed */ - for (y = 1 << j; j < i; j++, y <<= 1) - if ((y -= c[j]) < 0) - return Z_DATA_ERROR; - if ((y -= c[i]) < 0) - return Z_DATA_ERROR; - c[i] += y; - - - /* Generate starting offsets into the value table for each length */ - x[1] = j = 0; - p = c + 1; xp = x + 2; - while (--i) { /* note that i == g from above */ - *xp++ = (j += *p++); - } - - - /* Make a table of values in order of bit lengths */ - p = b; i = 0; - do { - if ((j = *p++) != 0) - v[x[j]++] = i; - } while (++i < n); - n = x[g]; /* set n to length of v */ - - - /* Generate the Huffman codes and for each, make the table entries */ - x[0] = i = 0; /* first Huffman code is zero */ - p = v; /* grab values in bit order */ - h = -1; /* no tables yet--level -1 */ - w = -l; /* bits decoded == (l * h) */ - u[0] = (inflate_huft *)Z_NULL; /* just to keep compilers happy */ - q = (inflate_huft *)Z_NULL; /* ditto */ - z = 0; /* ditto */ - - /* go through the bit lengths (k already is bits in shortest code) */ - for (; k <= g; k++) - { - a = c[k]; - while (a--) - { - /* here i is the Huffman code of length k bits for value *p */ - /* make tables up to required level */ - while (k > w + l) - { - h++; - w += l; /* previous table always l bits */ - - /* compute minimum size table less than or equal to l bits */ - z = g - w; - z = z > (uInt)l ? (uInt)l : z; /* table size upper limit */ - if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */ - { /* too few codes for k-w bit table */ - f -= a + 1; /* deduct codes from patterns left */ - xp = c + k; - if (j < z) - while (++j < z) /* try smaller tables up to z bits */ - { - if ((f <<= 1) <= *++xp) - break; /* enough codes to use up j bits */ - f -= *xp; /* else deduct codes from patterns */ - } - } - z = 1 << j; /* table entries for j-bit table */ - - /* allocate new table */ - if (*hn + z > MANY) /* (note: doesn't matter for fixed) */ - return Z_DATA_ERROR; /* overflow of MANY */ - u[h] = q = hp + *hn; - *hn += z; - - /* connect to last table, if there is one */ - if (h) - { - x[h] = i; /* save pattern for backing up */ - r.bits = (Byte)l; /* bits to dump before this table */ - r.exop = (Byte)j; /* bits in this table */ - j = i >> (w - l); - r.base = (uInt)(q - u[h-1] - j); /* offset to this table */ - u[h-1][j] = r; /* connect to last table */ - } - else - *t = q; /* first table is returned result */ - } - - /* set up table entry in r */ - r.bits = (Byte)(k - w); - if (p >= v + n) - r.exop = 128 + 64; /* out of values--invalid code */ - else if (*p < s) - { - r.exop = (Byte)(*p < 256 ? 0 : 32 + 64); /* 256 is end-of-block */ - r.base = *p++; /* simple code is just the value */ - } - else - { - r.exop = (Byte)(e[*p - s] + 16 + 64);/* non-simple--look up in lists */ - r.base = d[*p++ - s]; - } - - /* fill code-like entries with r */ - f = 1 << (k - w); - for (j = i >> w; j < z; j += f) - q[j] = r; - - /* backwards increment the k-bit code i */ - for (j = 1 << (k - 1); i & j; j >>= 1) - i ^= j; - i ^= j; - - /* backup over finished tables */ - mask = (1 << w) - 1; /* needed on HP, cc -O bug */ - while ((i & mask) != x[h]) - { - h--; /* don't need to update q */ - w -= l; - mask = (1 << w) - 1; - } - } - } - - - /* Return Z_BUF_ERROR if we were given an incomplete table */ - return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK; -} - - -local int inflate_trees_bits( /* c, bb, tb, hp, z) */ -uIntf *c, /* 19 code lengths */ -uIntf *bb, /* bits tree desired/actual depth */ -inflate_huft * FAR *tb, /* bits tree result */ -inflate_huft *hp, /* space for trees */ -z_streamp z /* for messages */ -) -{ - int r; - uInt hn = 0; /* hufts used in space */ - uIntf *v; /* work area for huft_build */ - - if ((v = (uIntf*)ZALLOC(z, 19, sizeof(uInt))) == Z_NULL) - return Z_MEM_ERROR; - r = huft_build(c, 19, 19, (uIntf*)Z_NULL, (uIntf*)Z_NULL, - tb, bb, hp, &hn, v); - if (r == Z_DATA_ERROR) - z->msg = (char*)"oversubscribed dynamic bit lengths tree"; - else if (r == Z_BUF_ERROR || *bb == 0) - { - z->msg = (char*)"incomplete dynamic bit lengths tree"; - r = Z_DATA_ERROR; - } - ZFREE(z, v); - return r; -} - - -local int inflate_trees_dynamic( /* nl, nd, c, bl, bd, tl, td, hp, z) */ -uInt nl, /* number of literal/length codes */ -uInt nd, /* number of distance codes */ -uIntf *c, /* that many (total) code lengths */ -uIntf *bl, /* literal desired/actual bit depth */ -uIntf *bd, /* distance desired/actual bit depth */ -inflate_huft * FAR *tl, /* literal/length tree result */ -inflate_huft * FAR *td, /* distance tree result */ -inflate_huft *hp, /* space for trees */ -z_streamp z /* for messages */ -) -{ - int r; - uInt hn = 0; /* hufts used in space */ - uIntf *v; /* work area for huft_build */ - - /* allocate work area */ - if ((v = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL) - return Z_MEM_ERROR; - - /* build literal/length tree */ - r = huft_build(c, nl, 257, cplens, cplext, tl, bl, hp, &hn, v); - if (r != Z_OK || *bl == 0) - { - if (r == Z_DATA_ERROR) - z->msg = (char*)"oversubscribed literal/length tree"; - else if (r != Z_MEM_ERROR) - { - z->msg = (char*)"incomplete literal/length tree"; - r = Z_DATA_ERROR; - } - ZFREE(z, v); - return r; - } - - /* build distance tree */ - r = huft_build(c + nl, nd, 0, cpdist, cpdext, td, bd, hp, &hn, v); - if (r != Z_OK || (*bd == 0 && nl > 257)) - { - if (r == Z_DATA_ERROR) - z->msg = (char*)"oversubscribed distance tree"; - else if (r == Z_BUF_ERROR) { -#ifdef PKZIP_BUG_WORKAROUND - r = Z_OK; - } -#else - z->msg = (char*)"incomplete distance tree"; - r = Z_DATA_ERROR; - } - else if (r != Z_MEM_ERROR) - { - z->msg = (char*)"empty distance tree with lengths"; - r = Z_DATA_ERROR; - } - ZFREE(z, v); - return r; -#endif - } - - /* done */ - ZFREE(z, v); - return Z_OK; -} - - -/* build fixed tables only once--keep them here */ -#ifdef BUILDFIXED -local int fixed_built = 0; -#define FIXEDH 544 /* number of hufts used by fixed tables */ -local inflate_huft fixed_mem[FIXEDH]; -local uInt fixed_bl; -local uInt fixed_bd; -local inflate_huft *fixed_tl; -local inflate_huft *fixed_td; -#else -#include "inffixed.h" -#endif - - -local int inflate_trees_fixed( /* bl, bd, tl, td, z) */ -uIntf *bl, /* literal desired/actual bit depth */ -uIntf *bd, /* distance desired/actual bit depth */ -const inflate_huft * FAR *tl, /* literal/length tree result */ -const inflate_huft * FAR *td, /* distance tree result */ -z_streamp z /* for memory allocation */ -) -{ -#ifdef BUILDFIXED - /* build fixed tables if not already */ - if (!fixed_built) - { - int k; /* temporary variable */ - uInt f = 0; /* number of hufts used in fixed_mem */ - uIntf *c; /* length list for huft_build */ - uIntf *v; /* work area for huft_build */ - - /* allocate memory */ - if ((c = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL) - return Z_MEM_ERROR; - if ((v = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL) - { - ZFREE(z, c); - return Z_MEM_ERROR; - } - - /* literal table */ - for (k = 0; k < 144; k++) - c[k] = 8; - for (; k < 256; k++) - c[k] = 9; - for (; k < 280; k++) - c[k] = 7; - for (; k < 288; k++) - c[k] = 8; - fixed_bl = 9; - huft_build(c, 288, 257, cplens, cplext, &fixed_tl, &fixed_bl, - fixed_mem, &f, v); - - /* distance table */ - for (k = 0; k < 30; k++) - c[k] = 5; - fixed_bd = 5; - huft_build(c, 30, 0, cpdist, cpdext, &fixed_td, &fixed_bd, - fixed_mem, &f, v); - - /* done */ - ZFREE(z, v); - ZFREE(z, c); - fixed_built = 1; - } -#else - FT_UNUSED(z); -#endif - *bl = fixed_bl; - *bd = fixed_bd; - *tl = fixed_tl; - *td = fixed_td; - return Z_OK; -} diff --git a/nx-X11/extras/freetype2/src/gzip/inftrees.h b/nx-X11/extras/freetype2/src/gzip/inftrees.h deleted file mode 100644 index 07bf2aa0b..000000000 --- a/nx-X11/extras/freetype2/src/gzip/inftrees.h +++ /dev/null @@ -1,63 +0,0 @@ -/* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Huffman code lookup table entry--this entry is four bytes for machines - that have 16-bit pointers (e.g. PC's in the small or medium model). */ - -#ifndef _INFTREES_H -#define _INFTREES_H - -typedef struct inflate_huft_s FAR inflate_huft; - -struct inflate_huft_s { - union { - struct { - Byte Exop; /* number of extra bits or operation */ - Byte Bits; /* number of bits in this code or subcode */ - } what; - uInt pad; /* pad structure to a power of 2 (4 bytes for */ - } word; /* 16-bit, 8 bytes for 32-bit int's) */ - uInt base; /* literal, length base, distance base, - or table offset */ -}; - -/* Maximum size of dynamic tree. The maximum found in a long but non- - exhaustive search was 1004 huft structures (850 for length/literals - and 154 for distances, the latter actually the result of an - exhaustive search). The actual maximum is not known, but the - value below is more than safe. */ -#define MANY 1440 - -local int inflate_trees_bits OF(( - uIntf *, /* 19 code lengths */ - uIntf *, /* bits tree desired/actual depth */ - inflate_huft * FAR *, /* bits tree result */ - inflate_huft *, /* space for trees */ - z_streamp)); /* for messages */ - -local int inflate_trees_dynamic OF(( - uInt, /* number of literal/length codes */ - uInt, /* number of distance codes */ - uIntf *, /* that many (total) code lengths */ - uIntf *, /* literal desired/actual bit depth */ - uIntf *, /* distance desired/actual bit depth */ - inflate_huft * FAR *, /* literal/length tree result */ - inflate_huft * FAR *, /* distance tree result */ - inflate_huft *, /* space for trees */ - z_streamp)); /* for messages */ - -local int inflate_trees_fixed OF(( - uIntf *, /* literal desired/actual bit depth */ - uIntf *, /* distance desired/actual bit depth */ - const inflate_huft * FAR *, /* literal/length tree result */ - const inflate_huft * FAR *, /* distance tree result */ - z_streamp)); /* for memory allocation */ - -#endif /* _INFTREES_H */ diff --git a/nx-X11/extras/freetype2/src/gzip/infutil.c b/nx-X11/extras/freetype2/src/gzip/infutil.c deleted file mode 100644 index 6087b4064..000000000 --- a/nx-X11/extras/freetype2/src/gzip/infutil.c +++ /dev/null @@ -1,86 +0,0 @@ -/* inflate_util.c -- data and routines common to blocks and codes - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "infblock.h" -#include "inftrees.h" -#include "infcodes.h" -#include "infutil.h" - - -/* And'ing with mask[n] masks the lower n bits */ -local const uInt inflate_mask[17] = { - 0x0000, - 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, - 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff -}; - - -/* copy as much as possible from the sliding window to the output area */ -local int inflate_flush( /* s, z, r) */ -inflate_blocks_statef *s, -z_streamp z, -int r ) -{ - uInt n; - Bytef *p; - Bytef *q; - - /* local copies of source and destination pointers */ - p = z->next_out; - q = s->read; - - /* compute number of bytes to copy as far as end of window */ - n = (uInt)((q <= s->write ? s->write : s->end) - q); - if (n > z->avail_out) n = z->avail_out; - if (n && r == Z_BUF_ERROR) r = Z_OK; - - /* update counters */ - z->avail_out -= n; - z->total_out += n; - - /* update check information */ - if (s->checkfn != Z_NULL) - z->adler = s->check = (*s->checkfn)(s->check, q, n); - - /* copy as far as end of window */ - zmemcpy(p, q, n); - p += n; - q += n; - - /* see if more to copy at beginning of window */ - if (q == s->end) - { - /* wrap pointers */ - q = s->window; - if (s->write == s->end) - s->write = s->window; - - /* compute bytes to copy */ - n = (uInt)(s->write - q); - if (n > z->avail_out) n = z->avail_out; - if (n && r == Z_BUF_ERROR) r = Z_OK; - - /* update counters */ - z->avail_out -= n; - z->total_out += n; - - /* update check information */ - if (s->checkfn != Z_NULL) - z->adler = s->check = (*s->checkfn)(s->check, q, n); - - /* copy */ - zmemcpy(p, q, n); - p += n; - q += n; - } - - /* update pointers */ - z->next_out = p; - s->read = q; - - /* done */ - return r; -} diff --git a/nx-X11/extras/freetype2/src/gzip/infutil.h b/nx-X11/extras/freetype2/src/gzip/infutil.h deleted file mode 100644 index 7174b6dd0..000000000 --- a/nx-X11/extras/freetype2/src/gzip/infutil.h +++ /dev/null @@ -1,98 +0,0 @@ -/* infutil.h -- types and macros common to blocks and codes - * Copyright (C) 1995-2002 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -#ifndef _INFUTIL_H -#define _INFUTIL_H - -typedef enum { - TYPE, /* get type bits (3, including end bit) */ - LENS, /* get lengths for stored */ - STORED, /* processing stored block */ - TABLE, /* get table lengths */ - BTREE, /* get bit lengths tree for a dynamic block */ - DTREE, /* get length, distance trees for a dynamic block */ - CODES, /* processing fixed or dynamic block */ - DRY, /* output remaining window bytes */ - DONE, /* finished last block, done */ - BAD} /* got a data error--stuck here */ -inflate_block_mode; - -/* inflate blocks semi-private state */ -struct inflate_blocks_state { - - /* mode */ - inflate_block_mode mode; /* current inflate_block mode */ - - /* mode dependent information */ - union { - uInt left; /* if STORED, bytes left to copy */ - struct { - uInt table; /* table lengths (14 bits) */ - uInt index; /* index into blens (or border) */ - uIntf *blens; /* bit lengths of codes */ - uInt bb; /* bit length tree depth */ - inflate_huft *tb; /* bit length decoding tree */ - } trees; /* if DTREE, decoding info for trees */ - struct { - inflate_codes_statef - *codes; - } decode; /* if CODES, current state */ - } sub; /* submode */ - uInt last; /* true if this block is the last block */ - - /* mode independent information */ - uInt bitk; /* bits in bit buffer */ - uLong bitb; /* bit buffer */ - inflate_huft *hufts; /* single malloc for tree space */ - Bytef *window; /* sliding window */ - Bytef *end; /* one byte after sliding window */ - Bytef *read; /* window read pointer */ - Bytef *write; /* window write pointer */ - check_func checkfn; /* check function */ - uLong check; /* check on output */ - -}; - - -/* defines for inflate input/output */ -/* update pointers and return */ -#define UPDBITS {s->bitb=b;s->bitk=k;} -#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;} -#define UPDOUT {s->write=q;} -#define UPDATE {UPDBITS UPDIN UPDOUT} -#define LEAVE {UPDATE return inflate_flush(s,z,r);} -/* get bytes and bits */ -#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;} -#define NEEDBYTE {if(n)r=Z_OK;else LEAVE} -#define NEXTBYTE (n--,*p++) -#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}} -#define DUMPBITS(j) {b>>=(j);k-=(j);} -/* output bytes */ -#define WAVAIL (uInt)(q<s->read?s->read-q-1:s->end-q) -#define LOADOUT {q=s->write;m=(uInt)WAVAIL;} -#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}} -#define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT} -#define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;} -#define OUTBYTE(a) {*q++=(Byte)(a);m--;} -/* load local pointers */ -#define LOAD {LOADIN LOADOUT} - -/* masks for lower bits (size given to avoid silly warnings with Visual C++) */ -#ifndef NO_INFLATE_MASK -local uInt inflate_mask[17]; -#endif - -/* copy as much as possible from the sliding window to the output area */ -local int inflate_flush OF(( - inflate_blocks_statef *, - z_streamp , - int)); - -#endif diff --git a/nx-X11/extras/freetype2/src/gzip/rules.mk b/nx-X11/extras/freetype2/src/gzip/rules.mk deleted file mode 100644 index d2a43a6a8..000000000 --- a/nx-X11/extras/freetype2/src/gzip/rules.mk +++ /dev/null @@ -1,75 +0,0 @@ -# -# FreeType 2 GZip support configuration rules -# - - -# Copyright 2002, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# gzip driver directory -# -GZIP_DIR := $(SRC_DIR)/gzip - - -# compilation flags for the driver -# -ifeq ($(SYSTEM_ZLIB),) - GZIP_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(GZIP_DIR)) -else - GZIP_COMPILE := $(FT_COMPILE) -endif - - -# gzip support sources (i.e., C files) -# -GZIP_DRV_SRC := $(GZIP_DIR)/ftgzip.c - -# gzip support headers -# -GZIP_DRV_H := - - -# gzip driver object(s) -# -# GZIP_DRV_OBJ_M is used during `multi' builds -# GZIP_DRV_OBJ_S is used during `single' builds -# -ifeq ($(SYSTEM_ZLIB),) - GZIP_DRV_OBJ_M := $(GZIP_DRV_SRC:$(GZIP_DIR)/%.c=$(OBJ_DIR)/%.$O) -else - GZIP_DRV_OBJ_M := $(OBJ_DIR)/ftgzip.$O -endif -GZIP_DRV_OBJ_S := $(OBJ_DIR)/ftgzip.$O - -# gzip support source file for single build -# -GZIP_DRV_SRC_S := $(GZIP_DIR)/ftgzip.c - - -# gzip support - single object -# -$(GZIP_DRV_OBJ_S): $(GZIP_DRV_SRC_S) $(GZIP_DRV_SRC) $(FREETYPE_H) \ - $(GZIP_DRV_H) - $(GZIP_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(GZIP_DRV_SRC_S)) - - -# gzip support - multiple objects -# -$(OBJ_DIR)/%.$O: $(GZIP_DIR)/%.c $(FREETYPE_H) $(GZIP_DRV_H) - $(GZIP_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(GZIP_DRV_OBJ_S) -DRV_OBJS_M += $(GZIP_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/gzip/zconf.h b/nx-X11/extras/freetype2/src/gzip/zconf.h deleted file mode 100644 index 271d3386a..000000000 --- a/nx-X11/extras/freetype2/src/gzip/zconf.h +++ /dev/null @@ -1,278 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2002 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id: zconf.h,v 1.1.1.3 2004/03/14 08:28:54 eich Exp $ */ - -#ifndef _ZCONF_H -#define _ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - */ -#ifdef Z_PREFIX -# define deflateInit_ z_deflateInit_ -# define deflate z_deflate -# define deflateEnd z_deflateEnd -# define inflateInit_ z_inflateInit_ -# define inflate z_inflate -# define inflateEnd z_inflateEnd -# define deflateInit2_ z_deflateInit2_ -# define deflateSetDictionary z_deflateSetDictionary -# define deflateCopy z_deflateCopy -# define deflateReset z_deflateReset -# define deflateParams z_deflateParams -# define inflateInit2_ z_inflateInit2_ -# define inflateSetDictionary z_inflateSetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateReset z_inflateReset -# define compress z_compress -# define compress2 z_compress2 -# define uncompress z_uncompress -# define adler32 z_adler32 -# define crc32 z_crc32 -# define get_crc_table z_get_crc_table - -# define Byte z_Byte -# define uInt z_uInt -# define uLong z_uLong -# define Bytef z_Bytef -# define charf z_charf -# define intf z_intf -# define uIntf z_uIntf -# define uLongf z_uLongf -# define voidpf z_voidpf -# define voidp z_voidp -#endif - -#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32) -# define WIN32 -#endif -#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386) -# ifndef __32BIT__ -# define __32BIT__ -# endif -#endif -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#if defined(MSDOS) && !defined(__32BIT__) -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC) -# define STDC -#endif -#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__) -# ifndef STDC -# define STDC -# endif -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const -# endif -#endif - -/* Some Mac compilers merge all .h files incorrectly: */ -#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__) -# define NO_DUMMY_DECL -#endif - -/* Old Borland C and LCC incorrectly complains about missing returns: */ -#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500) -# define NEED_DUMMY_RETURN -#endif - -#if defined(__LCC__) -# define NEED_DUMMY_RETURN -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus a few kilobytes - for small objects. -*/ - - /* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__) - /* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -#endif -#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__)) -# ifndef __32BIT__ -# define SMALL_MEDIUM -# define FAR _far -# endif -#endif - -/* Compile with -DZLIB_DLL for Windows DLL support */ -#if defined(ZLIB_DLL) -# if defined(_WINDOWS) || defined(WINDOWS) -# ifdef FAR -# undef FAR -# endif -# include <windows.h> -# define ZEXPORT(x) x WINAPI -# ifdef WIN32 -# define ZEXPORTVA(x) x WINAPIV -# else -# define ZEXPORTVA(x) x FAR _cdecl _export -# endif -# endif -# if defined (__BORLANDC__) -# if (__BORLANDC__ >= 0x0500) && defined (WIN32) -# include <windows.h> -# define ZEXPORT(x) x __declspec(dllexport) WINAPI -# define ZEXPORTRVA(x) x __declspec(dllexport) WINAPIV -# else -# if defined (_Windows) && defined (__DLL__) -# define ZEXPORT(x) x _export -# define ZEXPORTVA(x) x _export -# endif -# endif -# endif -#endif - - -#ifndef ZEXPORT -# define ZEXPORT(x) static x -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA(x) static x -#endif -#ifndef ZEXTERN -# define ZEXTERN(x) static x -#endif -#ifndef ZEXTERNDEF -# define ZEXTERNDEF(x) static x -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(MACOS) && !defined(TARGET_OS_MAC) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM - /* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else - typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC - typedef void FAR *voidpf; - typedef void *voidp; -#else - typedef Byte FAR *voidpf; - typedef Byte *voidp; -#endif - -#ifdef HAVE_UNISTD_H -# include <sys/types.h> /* for off_t */ -# include <unistd.h> /* for SEEK_* and off_t */ -# define z_off_t off_t -#endif -#ifndef SEEK_SET -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif -#ifndef z_off_t -# define z_off_t long -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) -# pragma map(deflateInit_,"DEIN") -# pragma map(deflateInit2_,"DEIN2") -# pragma map(deflateEnd,"DEEND") -# pragma map(inflateInit_,"ININ") -# pragma map(inflateInit2_,"ININ2") -# pragma map(inflateEnd,"INEND") -# pragma map(inflateSync,"INSY") -# pragma map(inflateSetDictionary,"INSEDI") -# pragma map(inflate_blocks,"INBL") -# pragma map(inflate_blocks_new,"INBLNE") -# pragma map(inflate_blocks_free,"INBLFR") -# pragma map(inflate_blocks_reset,"INBLRE") -# pragma map(inflate_codes_free,"INCOFR") -# pragma map(inflate_codes,"INCO") -# pragma map(inflate_fast,"INFA") -# pragma map(inflate_flush,"INFLU") -# pragma map(inflate_mask,"INMA") -# pragma map(inflate_set_dictionary,"INSEDI2") -# pragma map(inflate_copyright,"INCOPY") -# pragma map(inflate_trees_bits,"INTRBI") -# pragma map(inflate_trees_dynamic,"INTRDY") -# pragma map(inflate_trees_fixed,"INTRFI") -# pragma map(inflate_trees_free,"INTRFR") -#endif - -#endif /* _ZCONF_H */ diff --git a/nx-X11/extras/freetype2/src/gzip/zlib.h b/nx-X11/extras/freetype2/src/gzip/zlib.h deleted file mode 100644 index 50d0d3f14..000000000 --- a/nx-X11/extras/freetype2/src/gzip/zlib.h +++ /dev/null @@ -1,830 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.1.4, March 11th, 2002 - - Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt - (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format). -*/ - -#ifndef _ZLIB_H -#define _ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ZLIB_VERSION "1.1.4" - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed - data. This version of the library supports only one compression method - (deflation) but other algorithms will be added later and will have the same - stream interface. - - Compression can be done in a single step if the buffers are large - enough (for example if an input file is mmap'ed), or can be done by - repeated calls of the compression function. In the latter case, the - application must provide more input and/or consume the output - (providing more output space) before each call. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never - crash even in case of corrupted input. -*/ - -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total nb of input bytes read so far */ - - Bytef *next_out; /* next output byte should be put there */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total nb of bytes output so far */ - - char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: ascii or binary */ - uLong adler; /* adler32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - The application must update next_in and avail_in when avail_in has - dropped to zero. It must update next_out and avail_out when avail_out - has dropped to zero. The application must initialize zalloc, zfree and - opaque before calling the init function. All other fields are set by the - compression library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this - if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, - pointers returned by zalloc for objects of exactly 65536 bytes *must* - have their offset normalized to zero. The default allocation function - provided by this library ensures this (see zutil.c). To reduce memory - requirements and avoid any allocation of 64K objects, at the expense of - compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or - progress reports. After compression, total_in holds the total size of - the uncompressed data and may be saved for use in the decompressor - (particularly if the decompressor wants to decompress everything in - a single step). -*/ - - /* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */ -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -/* Allowed flush values; see deflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative - * values are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_ASCII 1 -#define Z_UNKNOWN 2 -/* Possible values of the data_type field */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - - - /* basic functions */ - -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is - not compatible with the zlib.h header file used by the application. - This check is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN(int) deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. - If zalloc and zfree are set to Z_NULL, deflateInit updates them to - use default allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at - all (the input data is simply copied a block at a time). - Z_DEFAULT_COMPRESSION requests a default compromise between speed and - compression (currently equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if level is not a valid compression level, - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). - msg is set to null if there is no error message. deflateInit does not - perform any compression: this will be done by deflate(). -*/ - - -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce some - output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary (in interactive applications). - Some output may be provided even if flush is not set. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating avail_in or avail_out accordingly; avail_out - should never be zero before the call. The application can consume the - compressed output when it wants, for example when the output buffer is full - (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK - and with zero avail_out, it must be called again after making room in the - output buffer because there might be more output pending. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In particular - avail_in is zero after the call if enough output space has been provided - before the call.) Flushing may degrade compression for some compression - algorithms and so it should be used only when necessary. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - the compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there - was enough output space; if deflate returns with Z_OK, this function must be - called again with Z_FINISH and more output space (updated avail_out) but no - more input data, until it returns with Z_STREAM_END or an error. After - deflate has returned Z_STREAM_END, the only possible operations on the - stream are deflateReset or deflateEnd. - - Z_FINISH can be used immediately after deflateInit if all the compression - is to be done in a single step. In this case, avail_out must be at least - 0.1% larger than avail_in plus 12 bytes. If deflate does not return - Z_STREAM_END, then it must be called again as described above. - - deflate() sets strm->adler to the adler32 checksum of all input read - so far (that is, total_in bytes). - - deflate() may update data_type if it can make a good guess about - the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered - binary. This field is only for information purposes and does not affect - the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible - (for example avail_in or avail_out was zero). -*/ - - -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, - msg may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN(int) inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. If next_in is not Z_NULL and avail_in is large enough (the exact - value depends on the compression method), inflateInit determines the - compression method from the zlib header and allocates all data structures - accordingly; otherwise the allocation will be deferred to the first call of - inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to - use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller. msg is set to null if there is no error - message. inflateInit does not perform any decompression apart from reading - the zlib header if present: this will be done by inflate(). (So next_in and - avail_in may be modified, but next_out and avail_out are unchanged.) -*/ - - -ZEXTERN(int) inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may some - introduce some output latency (reading input without producing any output) - except when forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in is updated and processing - will resume at this point for the next call of inflate(). - - - Provide more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there - is no more input data or no more space in the output buffer (see below - about the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming - more output, and updating the next_* and avail_* values accordingly. - The application can consume the uncompressed output when it wants, for - example when the output buffer is full (avail_out == 0), or after each - call of inflate(). If inflate returns Z_OK and with zero avail_out, it - must be called again after making room in the output buffer because there - might be more output pending. - - If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much - output as possible to the output buffer. The flushing behavior of inflate is - not specified for values of the flush parameter other than Z_SYNC_FLUSH - and Z_FINISH, but the current implementation actually flushes as much output - as possible anyway. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step - (a single call of inflate), the parameter flush should be set to - Z_FINISH. In this case all pending input is processed and all pending - output is flushed; avail_out must be large enough to hold all the - uncompressed data. (The size of the uncompressed data may have been saved - by the compressor for this purpose.) The next operation on this stream must - be inflateEnd to deallocate the decompression state. The use of Z_FINISH - is never required, but can be used to inform inflate that a faster routine - may be used for the single inflate() call. - - If a preset dictionary is needed at this point (see inflateSetDictionary - below), inflate sets strm-adler to the adler32 checksum of the - dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise - it sets strm->adler to the adler32 checksum of all output produced - so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or - an error code as described below. At the end of the stream, inflate() - checks that its computed adler32 checksum is equal to that saved by the - compressor and returns Z_STREAM_END only if the checksum is correct. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect - adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent - (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if no progress is possible or if there was not - enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR - case, the application may then call inflateSync to look for a good - compression block. -*/ - - -ZEXTERN(int) inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any - pending output. - - inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state - was inconsistent. In the error case, msg may be set but then points to a - static string (which must not be deallocated). -*/ - - /* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN(int) deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by - the caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but - is slow and reduces compression ratio; memLevel=9 uses maximum memory - for optimal speed. The default value is 8. See zconf.h for total memory - usage as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match). Filtered data consists mostly of small values with a - somewhat random distribution. In this case, the compression algorithm is - tuned to compress them better. The effect of Z_FILTERED is to force more - Huffman coding and less string matching; it is somewhat intermediate - between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects - the compression ratio but not the correctness of the compressed output even - if it is not set appropriately. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid - method). msg is set to null if there is no error message. deflateInit2 does - not perform any compression: this will be done by deflate(). -*/ - -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. This function must be called - immediately after deflateInit, deflateInit2 or deflateReset, before any - call of deflate. The compressor and decompressor must use exactly the same - dictionary (see inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size in - deflate or deflate2. Thus the strings most likely to be useful should be - put at the end of the dictionary, not at the front. - - Upon return of this function, strm->adler is set to the Adler32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The Adler32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if the compression method is bsort). deflateSetDictionary does not - perform any compression: this will be done by deflate(). -*/ - -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and - can consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being NULL). msg is left unchanged in both source and - destination. -*/ - -/* - This function is equivalent to deflateEnd followed by deflateInit, - but does not free and reallocate all the internal compression state. - The stream will keep the same compression level and any other attributes - that may have been set by deflateInit2. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2. This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different - strategy. If the compression level is changed, the input available so far - is compressed with the old level (and may be flushed); the new level will - take effect only at the next call of deflate(). - - Before the call of deflateParams, the stream state must be set as for - a call of deflate(), since the currently available input may have to - be compressed and flushed. In particular, strm->avail_out must be non-zero. - - deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source - stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR - if strm->avail_out was zero. -*/ - -/* -ZEXTERN(int) inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. If a compressed stream with a larger window size is given as - input, inflate() will return with the error code Z_DATA_ERROR instead of - trying to allocate a larger window. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative - memLevel). msg is set to null if there is no error message. inflateInit2 - does not perform any decompression apart from reading the zlib header if - present: this will be done by inflate(). (So next_in and avail_in may be - modified, but next_out and avail_out are unchanged.) -*/ - -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate - if this call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the Adler32 value returned by this call of - inflate. The compressor and decompressor must use exactly the same - dictionary (see deflateSetDictionary). - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (such as NULL dictionary) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect Adler32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -/* - Skips invalid compressed data until a full flush point (see above the - description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR - if no more input was provided, Z_DATA_ERROR if no flush point has been found, - or Z_STREAM_ERROR if the stream structure was inconsistent. In the success - case, the application may save the current current value of total_in which - indicates where valid compressed data was found. In the error case, the - application may repeatedly call inflateSync, providing more input each time, - until success or end of the input data. -*/ - -ZEXTERN(int) inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate all the internal decompression state. - The stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being NULL). -*/ - - - /* utility functions */ - -/* - The following utility functions are implemented on top of the - basic stream-oriented functions. To simplify the interface, some - default options are assumed (compression level and memory usage, - standard memory allocation functions). The source code of these - utility functions can easily be modified if you need special options. -*/ - -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be at least 0.1% larger than - sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the - compressed buffer. - This function can be used to compress a whole file at once if the - input file is mmap'ed. - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least 0.1% larger than sourceLen plus - 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total - size of the destination buffer, which must be large enough to hold the - entire uncompressed data. (The size of the uncompressed data must have - been saved previously by the compressor and transmitted to the decompressor - by some mechanism outside the scope of this compression library.) - Upon exit, destLen is the actual size of the compressed buffer. - This function can be used to decompress a whole file at once if the - input file is mmap'ed. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted. -*/ - - -/* - Opens a gzip (.gz) file for reading or writing. The mode parameter - is as in fopen ("rb" or "wb") but can also include a compression level - ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for - Huffman only compression as in "wb1h". (See the description - of deflateInit2 for more information about the strategy parameter.) - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. - - gzopen returns NULL if the file could not be opened or if there was - insufficient memory to allocate the (de)compression state; errno - can be checked to distinguish the two cases (if errno is zero, the - zlib error is Z_MEM_ERROR). */ - -/* - gzdopen() associates a gzFile with the file descriptor fd. File - descriptors are obtained from calls like open, dup, creat, pipe or - fileno (in the file has been previously opened with fopen). - The mode parameter is as in gzopen. - The next call of gzclose on the returned gzFile will also close the - file descriptor fd, just like fclose(fdopen(fd), mode) closes the file - descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode). - gzdopen returns NULL if there was insufficient memory to allocate - the (de)compression state. -*/ - -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. - gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not - opened for writing. -*/ - -/* - Reads the given number of uncompressed bytes from the compressed file. - If the input file was not in gzip format, gzread copies the given number - of bytes into the buffer. - gzread returns the number of uncompressed bytes actually read (0 for - end of file, -1 for error). */ - -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes actually written - (0 in case of error). -*/ - -/* - Converts, formats, and writes the args to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written (0 in case of error). -*/ - -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - gzputs returns the number of characters written, or -1 in case of error. -*/ - -/* - Reads bytes from the compressed file until len-1 characters are read, or - a newline character is read and transferred to buf, or an end-of-file - condition is encountered. The string is then terminated with a null - character. - gzgets returns buf, or Z_NULL in case of error. -*/ - -/* - Writes c, converted to an unsigned char, into the compressed file. - gzputc returns the value that was written, or -1 in case of error. -*/ - -/* - Reads one byte from the compressed file. gzgetc returns this byte - or -1 in case of end of file or error. -*/ - -/* - Flushes all pending output into the compressed file. The parameter - flush is as in the deflate() function. The return value is the zlib - error number (see function gzerror below). gzflush returns Z_OK if - the flush parameter is Z_FINISH and all output could be flushed. - gzflush should be called only when strictly necessary because it can - degrade compression. -*/ - -/* - Sets the starting position for the next gzread or gzwrite on the - given compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -/* - Returns the starting position for the next gzread or gzwrite on the - given compressed file. This position represents a number of bytes in the - uncompressed data stream. - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -/* - Returns 1 when EOF has previously been detected reading the given - input stream, otherwise zero. -*/ - -/* - Flushes all pending output if necessary, closes the compressed file - and deallocates all the (de)compression state. The return value is the zlib - error number (see function gzerror below). -*/ - -/* - Returns the error message for the last error which occurred on the - given compressed file. errnum is set to zlib error number. If an - error occurred in the file system and not in the compression library, - errnum is set to Z_ERRNO and the application may consult errno - to get the exact error code. -*/ - - /* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the - compression library. -*/ - -ZEXTERN(uLong) adler32 OF((uLong adler, const Bytef *buf, uInt len)); - -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is NULL, this function returns - the required initial value for the checksum. - An Adler-32 checksum is almost as reliable as a CRC32 but can be computed - much faster. Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -/* - Update a running crc with the bytes buf[0..len-1] and return the updated - crc. If buf is NULL, this function returns the required initial value - for the crc. Pre- and post-conditioning (one's complement) is performed - within this function so it shouldn't be done by the application. - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - - - /* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN(int) inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -#define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream)) -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, sizeof(z_stream)) -#define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream)) - - -#ifdef __cplusplus -} -#endif - -#endif /* _ZLIB_H */ diff --git a/nx-X11/extras/freetype2/src/gzip/zutil.c b/nx-X11/extras/freetype2/src/gzip/zutil.c deleted file mode 100644 index 7df679c1a..000000000 --- a/nx-X11/extras/freetype2/src/gzip/zutil.c +++ /dev/null @@ -1,181 +0,0 @@ -/* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2002 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id: zutil.c,v 1.1.1.3 2004/03/14 08:28:54 eich Exp $ */ - -#include "zutil.h" - -#ifndef STDC -extern void exit OF((int)); -#endif - - -#ifndef HAVE_MEMCPY - -void zmemcpy(dest, source, len) - Bytef* dest; - const Bytef* source; - uInt len; -{ - if (len == 0) return; - do { - *dest++ = *source++; /* ??? to be unrolled */ - } while (--len != 0); -} - -int zmemcmp(s1, s2, len) - const Bytef* s1; - const Bytef* s2; - uInt len; -{ - uInt j; - - for (j = 0; j < len; j++) { - if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1; - } - return 0; -} - -void zmemzero(dest, len) - Bytef* dest; - uInt len; -{ - if (len == 0) return; - do { - *dest++ = 0; /* ??? to be unrolled */ - } while (--len != 0); -} -#endif - -#ifdef __TURBOC__ -#if (defined( __BORLANDC__) || !defined(SMALL_MEDIUM)) && !defined(__32BIT__) -/* Small and medium model in Turbo C are for now limited to near allocation - * with reduced MAX_WBITS and MAX_MEM_LEVEL - */ -# define MY_ZCALLOC - -/* Turbo C malloc() does not allow dynamic allocation of 64K bytes - * and farmalloc(64K) returns a pointer with an offset of 8, so we - * must fix the pointer. Warning: the pointer must be put back to its - * original form in order to free it, use zcfree(). - */ - -#define MAX_PTR 10 -/* 10*64K = 640K */ - -local int next_ptr = 0; - -typedef struct ptr_table_s { - voidpf org_ptr; - voidpf new_ptr; -} ptr_table; - -local ptr_table table[MAX_PTR]; -/* This table is used to remember the original form of pointers - * to large buffers (64K). Such pointers are normalized with a zero offset. - * Since MSDOS is not a preemptive multitasking OS, this table is not - * protected from concurrent access. This hack doesn't work anyway on - * a protected system like OS/2. Use Microsoft C instead. - */ - -voidpf zcalloc (voidpf opaque, unsigned items, unsigned size) -{ - voidpf buf = opaque; /* just to make some compilers happy */ - ulg bsize = (ulg)items*size; - - /* If we allocate less than 65520 bytes, we assume that farmalloc - * will return a usable pointer which doesn't have to be normalized. - */ - if (bsize < 65520L) { - buf = farmalloc(bsize); - if (*(ush*)&buf != 0) return buf; - } else { - buf = farmalloc(bsize + 16L); - } - if (buf == NULL || next_ptr >= MAX_PTR) return NULL; - table[next_ptr].org_ptr = buf; - - /* Normalize the pointer to seg:0 */ - *((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4; - *(ush*)&buf = 0; - table[next_ptr++].new_ptr = buf; - return buf; -} - -void zcfree (voidpf opaque, voidpf ptr) -{ - int n; - if (*(ush*)&ptr != 0) { /* object < 64K */ - farfree(ptr); - return; - } - /* Find the original pointer */ - for (n = 0; n < next_ptr; n++) { - if (ptr != table[n].new_ptr) continue; - - farfree(table[n].org_ptr); - while (++n < next_ptr) { - table[n-1] = table[n]; - } - next_ptr--; - return; - } - ptr = opaque; /* just to make some compilers happy */ - Assert(0, "zcfree: ptr not found"); -} -#endif -#endif /* __TURBOC__ */ - - -#if defined(M_I86) && !defined(__32BIT__) -/* Microsoft C in 16-bit mode */ - -# define MY_ZCALLOC - -#if (!defined(_MSC_VER) || (_MSC_VER <= 600)) -# define _halloc halloc -# define _hfree hfree -#endif - -voidpf zcalloc (voidpf opaque, unsigned items, unsigned size) -{ - if (opaque) opaque = 0; /* to make compiler happy */ - return _halloc((long)items, size); -} - -void zcfree (voidpf opaque, voidpf ptr) -{ - if (opaque) opaque = 0; /* to make compiler happy */ - _hfree(ptr); -} - -#endif /* MSC */ - - -#ifndef MY_ZCALLOC /* Any system without a special alloc function */ - -#ifndef STDC -extern voidp calloc OF((uInt items, uInt size)); -extern void free OF((voidpf ptr)); -#endif - -voidpf zcalloc (opaque, items, size) - voidpf opaque; - unsigned items; - unsigned size; -{ - if (opaque) items += size - size; /* make compiler happy */ - return (voidpf)calloc(items, size); -} - -void zcfree (opaque, ptr) - voidpf opaque; - voidpf ptr; -{ - free(ptr); - if (opaque) return; /* make compiler happy */ -} - -#endif /* MY_ZCALLOC */ diff --git a/nx-X11/extras/freetype2/src/gzip/zutil.h b/nx-X11/extras/freetype2/src/gzip/zutil.h deleted file mode 100644 index 247ec8525..000000000 --- a/nx-X11/extras/freetype2/src/gzip/zutil.h +++ /dev/null @@ -1,216 +0,0 @@ -/* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2002 Jean-loup Gailly. - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id: zutil.h,v 1.3 2004/04/28 10:39:05 gisburn Exp $ */ - -#ifndef _Z_UTIL_H -#define _Z_UTIL_H - -#include "zlib.h" - -#ifdef STDC -# include <stddef.h> -# include <string.h> -# include <stdlib.h> -#endif -#ifdef NO_ERRNO_H - extern int errno; -#else -# include <errno.h> -#endif - -#ifndef local -# define local static -#endif -/* compile with -Dlocal if your debugger can't find static symbols */ - -typedef unsigned char uch; -typedef uch FAR uchf; -typedef unsigned short ush; -typedef ush FAR ushf; -typedef unsigned long ulg; - - -#define ERR_RETURN(strm,err) \ - return (strm->msg = (char*)ERR_MSG(err), (err)) -/* To be used only when the state is known to be valid */ - - /* common constants */ - -#ifndef DEF_WBITS -# define DEF_WBITS MAX_WBITS -#endif -/* default windowBits for decompression. MAX_WBITS is for compression only */ - -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -/* default memLevel */ - -#define STORED_BLOCK 0 -#define STATIC_TREES 1 -#define DYN_TREES 2 -/* The three kinds of block type */ - -#define MIN_MATCH 3 -#define MAX_MATCH 258 -/* The minimum and maximum match lengths */ - -#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ - - /* target dependencies */ - -#ifdef MSDOS -# define OS_CODE 0x00 -# if defined(__TURBOC__) || defined(__BORLANDC__) -# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) - /* Allow compilation with ANSI keywords only enabled */ - void _Cdecl farfree( void *block ); - void *_Cdecl farmalloc( unsigned long nbytes ); -# else -# include <alloc.h> -# endif -# else /* MSC or DJGPP */ -# include <malloc.h> -# endif -#endif - -#ifdef OS2 -# define OS_CODE 0x06 -#endif - -#ifdef WIN32 /* Window 95 & Windows NT */ -# define OS_CODE 0x0b -#endif - -#if defined(VAXC) || defined(VMS) -# define OS_CODE 0x02 -# define F_OPEN(name, mode) \ - fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") -#endif - -#ifdef AMIGA -# define OS_CODE 0x01 -#endif - -#if defined(ATARI) || defined(atarist) -# define OS_CODE 0x05 -#endif - -#if defined(MACOS) || defined(TARGET_OS_MAC) -# define OS_CODE 0x07 -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include <unix.h> /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -# endif -#endif - -#ifdef __50SERIES /* Prime/PRIMOS */ -# define OS_CODE 0x0F -#endif - -#ifdef TOPS20 -# define OS_CODE 0x0a -#endif - -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER > 600)) -# define fdopen(fd,type) _fdopen(fd,type) -#endif - - - /* Common defaults */ - -#ifndef OS_CODE -# define OS_CODE 0x03 /* assume Unix */ -#endif - -#ifndef F_OPEN -# define F_OPEN(name, mode) fopen((name), (mode)) -#endif - - /* functions */ - -#ifdef HAVE_STRERROR - extern char *strerror OF((int)); -# define zstrerror(errnum) strerror(errnum) -#else -# define zstrerror(errnum) "" -#endif - -#if defined(pyr) -# define NO_MEMCPY -#endif -#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) - /* Use our own functions for small and medium model with MSC <= 5.0. - * You may have to use the same strategy for Borland C (untested). - * The __SC__ check is for Symantec. - */ -# define NO_MEMCPY -#endif -#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) -# define HAVE_MEMCPY -#endif -#ifdef HAVE_MEMCPY -# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ -# define zmemcpy _fmemcpy -# define zmemcmp _fmemcmp -# define zmemzero(dest, len) _fmemset(dest, 0, len) -# else -# define zmemcpy ft_memcpy -# define zmemcmp ft_memcmp -# define zmemzero(dest, len) ft_memset(dest, 0, len) -# endif -#else - extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len)); - extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len)); - extern void zmemzero OF((Bytef* dest, uInt len)); -#endif - -/* Diagnostic functions */ -#ifdef DEBUG -# include <stdio.h> - extern int z_verbose; - extern void z_error OF((char *m)); -# define Assert(cond,msg) {if(!(cond)) z_error(msg);} -# define Trace(x) {if (z_verbose>=0) fprintf x ;} -# define Tracev(x) {if (z_verbose>0) fprintf x ;} -# define Tracevv(x) {if (z_verbose>1) fprintf x ;} -# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} -# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} -#else -# define Assert(cond,msg) -# define Trace(x) -# define Tracev(x) -# define Tracevv(x) -# define Tracec(c,x) -# define Tracecv(c,x) -#endif - - -typedef uLong (*check_func) OF((uLong check, const Bytef *buf, - uInt len)); -local voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size)); -local void zcfree OF((voidpf opaque, voidpf ptr)); - -#define ZALLOC(strm, items, size) \ - (*((strm)->zalloc))((strm)->opaque, (items), (size)) -#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) -#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} - -#endif /* _Z_UTIL_H */ diff --git a/nx-X11/extras/freetype2/src/lzw/Jamfile b/nx-X11/extras/freetype2/src/lzw/Jamfile deleted file mode 100644 index 995cbb98c..000000000 --- a/nx-X11/extras/freetype2/src/lzw/Jamfile +++ /dev/null @@ -1,9 +0,0 @@ -# FreeType 2 src/lzw Jamfile (C) 2004 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) lzw ; - -Library $(FT2_LIB) : ftlzw.c ; - -# end of src/lzw Jamfile - diff --git a/nx-X11/extras/freetype2/src/lzw/ftlzw.c b/nx-X11/extras/freetype2/src/lzw/ftlzw.c deleted file mode 100644 index a0e4cc576..000000000 --- a/nx-X11/extras/freetype2/src/lzw/ftlzw.c +++ /dev/null @@ -1,463 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftlzw.c */ -/* */ -/* FreeType support for .Z compressed files. */ -/* */ -/* This optional component relies on NetBSD's zopen(). It should mainly */ -/* be used to parse compressed PCF fonts, as found with many X11 server */ -/* distributions. */ -/* */ -/* Copyright 2004 by */ -/* Albert Chin-A-Young. */ -/* */ -/* Based on code in src/gzip/ftgzip.c, Copyright 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -#include <ft2build.h> -#include FT_INTERNAL_MEMORY_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_DEBUG_H -#include <string.h> -#include <stdio.h> - - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX LZW_Err_ -#define FT_ERR_BASE FT_Mod_Err_LZW - -#include FT_ERRORS_H - - -#ifdef FT_CONFIG_OPTION_USE_LZW - -#include "zopen.h" - - -/***************************************************************************/ -/***************************************************************************/ -/***** *****/ -/***** M E M O R Y M A N A G E M E N T *****/ -/***** *****/ -/***************************************************************************/ -/***************************************************************************/ - -/***************************************************************************/ -/***************************************************************************/ -/***** *****/ -/***** F I L E D E S C R I P T O R *****/ -/***** *****/ -/***************************************************************************/ -/***************************************************************************/ - -#define FT_LZW_BUFFER_SIZE 4096 - - typedef struct FT_LZWFileRec_ - { - FT_Stream source; /* parent/source stream */ - FT_Stream stream; /* embedding stream */ - FT_Memory memory; /* memory allocator */ - s_zstate_t zstream; /* lzw input stream */ - - FT_ULong start; /* starting position, after .Z header */ - FT_Byte input[FT_LZW_BUFFER_SIZE]; /* input buffer */ - - FT_Byte buffer[FT_LZW_BUFFER_SIZE]; /* output buffer */ - FT_ULong pos; /* position in output */ - FT_Byte* cursor; - FT_Byte* limit; - - } FT_LZWFileRec, *FT_LZWFile; - - - /* check and skip .Z header */ - static FT_Error - ft_lzw_check_header( FT_Stream stream ) - { - FT_Error error; - FT_Byte head[2]; - - - if ( FT_STREAM_SEEK( 0 ) || - FT_STREAM_READ( head, 2 ) ) - goto Exit; - - /* head[0] && head[1] are the magic numbers */ - if ( head[0] != 0x1f || - head[1] != 0x9d ) - error = LZW_Err_Invalid_File_Format; - - Exit: - return error; - } - - - static FT_Error - ft_lzw_file_init( FT_LZWFile zip, - FT_Stream stream, - FT_Stream source ) - { - s_zstate_t* zstream = &zip->zstream; - FT_Error error = LZW_Err_Ok; - - - zip->stream = stream; - zip->source = source; - zip->memory = stream->memory; - - zip->limit = zip->buffer + FT_LZW_BUFFER_SIZE; - zip->cursor = zip->limit; - zip->pos = 0; - - /* check and skip .Z header */ - { - stream = source; - - error = ft_lzw_check_header( source ); - if ( error ) - goto Exit; - - zip->start = FT_STREAM_POS(); - } - - /* initialize internal lzw variable */ - zinit( zstream ); - - zstream->avail_in = 0; - zstream->next_in = zip->buffer; - zstream->zs_in_count = source->size - 2; - - if ( zstream->next_in == NULL ) - error = LZW_Err_Invalid_File_Format; - - Exit: - return error; - } - - - static void - ft_lzw_file_done( FT_LZWFile zip ) - { - s_zstate_t* zstream = &zip->zstream; - - - /* clear the rest */ - zstream->next_in = NULL; - zstream->next_out = NULL; - zstream->avail_in = 0; - zstream->avail_out = 0; - zstream->total_in = 0; - zstream->total_out = 0; - - zip->memory = NULL; - zip->source = NULL; - zip->stream = NULL; - } - - - static FT_Error - ft_lzw_file_reset( FT_LZWFile zip ) - { - FT_Stream stream = zip->source; - FT_Error error; - - - if ( !FT_STREAM_SEEK( zip->start ) ) - { - s_zstate_t* zstream = &zip->zstream; - - - zinit( zstream ); - - zstream->avail_in = 0; - zstream->next_in = zip->input; - zstream->total_in = 0; - zstream->avail_out = 0; - zstream->next_out = zip->buffer; - zstream->total_out = 0; - zstream->zs_in_count = zip->source->size - 2; - - zip->limit = zip->buffer + FT_LZW_BUFFER_SIZE; - zip->cursor = zip->limit; - zip->pos = 0; - } - - return error; - } - - - static FT_Error - ft_lzw_file_fill_input( FT_LZWFile zip ) - { - s_zstate_t* zstream = &zip->zstream; - FT_Stream stream = zip->source; - FT_ULong size; - - - if ( stream->read ) - { - size = stream->read( stream, stream->pos, zip->input, - FT_LZW_BUFFER_SIZE ); - if ( size == 0 ) - return LZW_Err_Invalid_Stream_Operation; - } - else - { - size = stream->size - stream->pos; - if ( size > FT_LZW_BUFFER_SIZE ) - size = FT_LZW_BUFFER_SIZE; - - if ( size == 0 ) - return LZW_Err_Invalid_Stream_Operation; - - FT_MEM_COPY( zip->input, stream->base + stream->pos, size ); - } - stream->pos += size; - - zstream->next_in = zip->input; - zstream->avail_in = size; - - return LZW_Err_Ok; - } - - - - static FT_Error - ft_lzw_file_fill_output( FT_LZWFile zip ) - { - s_zstate_t* zstream = &zip->zstream; - FT_Error error = 0; - - - zip->cursor = zip->buffer; - zstream->next_out = zip->cursor; - zstream->avail_out = FT_LZW_BUFFER_SIZE; - - while ( zstream->avail_out > 0 ) - { - int num_read = 0; - - - if ( zstream->avail_in == 0 ) - { - error = ft_lzw_file_fill_input( zip ); - if ( error ) - break; - } - - num_read = zread( zstream ); - - if ( num_read == -1 && zstream->zs_in_count == 0 ) - { - zip->limit = zstream->next_out; - if ( zip->limit == zip->cursor ) - error = LZW_Err_Invalid_Stream_Operation; - break; - } - else if ( num_read == -1 ) - break; - else - zstream->avail_out -= num_read; - } - - return error; - } - - - /* fill output buffer; `count' must be <= FT_LZW_BUFFER_SIZE */ - static FT_Error - ft_lzw_file_skip_output( FT_LZWFile zip, - FT_ULong count ) - { - FT_Error error = LZW_Err_Ok; - FT_ULong delta; - - - for (;;) - { - delta = (FT_ULong)( zip->limit - zip->cursor ); - if ( delta >= count ) - delta = count; - - zip->cursor += delta; - zip->pos += delta; - - count -= delta; - if ( count == 0 ) - break; - - error = ft_lzw_file_fill_output( zip ); - if ( error ) - break; - } - - return error; - } - - - static FT_ULong - ft_lzw_file_io( FT_LZWFile zip, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ) - { - FT_ULong result = 0; - FT_Error error; - - - /* Teset inflate stream if we're seeking backwards. */ - /* Yes, that is not too efficient, but it saves memory :-) */ - if ( pos < zip->pos ) - { - error = ft_lzw_file_reset( zip ); - if ( error ) - goto Exit; - } - - /* skip unwanted bytes */ - if ( pos > zip->pos ) - { - error = ft_lzw_file_skip_output( zip, (FT_ULong)( pos - zip->pos ) ); - if ( error ) - goto Exit; - } - - if ( count == 0 ) - goto Exit; - - /* now read the data */ - for (;;) - { - FT_ULong delta; - - - delta = (FT_ULong)( zip->limit - zip->cursor ); - if ( delta >= count ) - delta = count; - - FT_MEM_COPY( buffer, zip->cursor, delta ); - buffer += delta; - result += delta; - zip->cursor += delta; - zip->pos += delta; - - count -= delta; - if ( count == 0 ) - break; - - error = ft_lzw_file_fill_output( zip ); - if ( error ) - break; - } - - Exit: - return result; - } - - -/***************************************************************************/ -/***************************************************************************/ -/***** *****/ -/***** L Z W E M B E D D I N G S T R E A M *****/ -/***** *****/ -/***************************************************************************/ -/***************************************************************************/ - - static void - ft_lzw_stream_close( FT_Stream stream ) - { - FT_LZWFile zip = (FT_LZWFile)stream->descriptor.pointer; - FT_Memory memory = stream->memory; - - - if ( zip ) - { - /* finalize lzw file descriptor */ - ft_lzw_file_done( zip ); - - FT_FREE( zip ); - - stream->descriptor.pointer = NULL; - } - } - - - static FT_ULong - ft_lzw_stream_io( FT_Stream stream, - FT_ULong pos, - FT_Byte* buffer, - FT_ULong count ) - { - FT_LZWFile zip = (FT_LZWFile)stream->descriptor.pointer; - - - return ft_lzw_file_io( zip, pos, buffer, count ); - } - - - FT_EXPORT_DEF( FT_Error ) - FT_Stream_OpenLZW( FT_Stream stream, - FT_Stream source ) - { - FT_Error error; - FT_Memory memory = source->memory; - FT_LZWFile zip; - - - FT_ZERO( stream ); - stream->memory = memory; - - if ( !FT_NEW( zip ) ) - { - error = ft_lzw_file_init( zip, stream, source ); - if ( error ) - { - FT_FREE( zip ); - goto Exit; - } - - stream->descriptor.pointer = zip; - } - - stream->size = 0x7FFFFFFFL; /* don't know the real size! */ - stream->pos = 0; - stream->base = 0; - stream->read = ft_lzw_stream_io; - stream->close = ft_lzw_stream_close; - - Exit: - return error; - } - -#include "zopen.c" - - -#else /* !FT_CONFIG_OPTION_USE_LZW */ - - - FT_EXPORT_DEF( FT_Error ) - FT_Stream_OpenLZW( FT_Stream stream, - FT_Stream source ) - { - FT_UNUSED( stream ); - FT_UNUSED( source ); - - return LZW_Err_Unimplemented_Feature; - } - - -#endif /* !FT_CONFIG_OPTION_USE_LZW */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/lzw/rules.mk b/nx-X11/extras/freetype2/src/lzw/rules.mk deleted file mode 100644 index 73ce71804..000000000 --- a/nx-X11/extras/freetype2/src/lzw/rules.mk +++ /dev/null @@ -1,70 +0,0 @@ -# -# FreeType 2 LZW support configuration rules -# - - -# Copyright 2004 by -# Albert Chin-A-Young. -# -# Based on src/lzw/rules.mk, Copyright 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# LZW driver directory -# -LZW_DIR := $(SRC_DIR)/lzw - - -# compilation flags for the driver -# -LZW_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(LZW_DIR)) - - -# LZW support sources (i.e., C files) -# -LZW_DRV_SRC := $(LZW_DIR)/ftlzw.c \ - $(LZW_DIR)/zopen.c - -# LZW support headers -# -LZW_DRV_H := $(LZW_DIR)/zopen.h - - -# LZW driver object(s) -# -# LZW_DRV_OBJ_M is used during `multi' builds -# LZW_DRV_OBJ_S is used during `single' builds -# -LZW_DRV_OBJ_M := $(OBJ_DIR)/ftlzw.$O -LZW_DRV_OBJ_S := $(OBJ_DIR)/ftlzw.$O - -# LZW support source file for single build -# -LZW_DRV_SRC_S := $(LZW_DIR)/ftlzw.c - - -# LZW support - single object -# -$(LZW_DRV_OBJ_S): $(LZW_DRV_SRC_S) $(LZW_DRV_SRC) $(FREETYPE_H) $(LZW_DRV_H) - $(LZW_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(LZW_DRV_SRC_S)) - - -# LZW support - multiple objects -# -$(OBJ_DIR)/%.$O: $(LZW_DIR)/%.c $(FREETYPE_H) $(LZW_DRV_H) - $(LZW_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(LZW_DRV_OBJ_S) -DRV_OBJS_M += $(LZW_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/lzw/zopen.c b/nx-X11/extras/freetype2/src/lzw/zopen.c deleted file mode 100644 index 2b438c25b..000000000 --- a/nx-X11/extras/freetype2/src/lzw/zopen.c +++ /dev/null @@ -1,400 +0,0 @@ -/* $NetBSD: zopen.c,v 1.8 2003/08/07 11:13:29 agc Exp $ */ - -/*- - * Copyright (c) 1985, 1986, 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Diomidis Spinellis and James A. Woods, derived from original - * work by Spencer Thomas and Joseph Orost. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/*- - * - * Copyright (c) 2004 - * Albert Chin-A-Young. - * - * Modified to work with FreeType's PCF driver. - * - */ - -#if defined(LIBC_SCCS) && !defined(lint) -#if 0 -static char sccsid[] = "@(#)zopen.c 8.1 (Berkeley) 6/27/93"; -#else -static char rcsid[] = "$NetBSD: zopen.c,v 1.8 2003/08/07 11:13:29 agc Exp $"; -#endif -#endif /* LIBC_SCCS and not lint */ - -/*- - * fcompress.c - File compression ala IEEE Computer, June 1984. - * - * Compress authors: - * Spencer W. Thomas (decvax!utah-cs!thomas) - * Jim McKie (decvax!mcvax!jim) - * Steve Davies (decvax!vax135!petsd!peora!srd) - * Ken Turkowski (decvax!decwrl!turtlevax!ken) - * James A. Woods (decvax!ihnp4!ames!jaw) - * Joe Orost (decvax!vax135!petsd!joe) - * - * Cleaned up and converted to library returning I/O streams by - * Diomidis Spinellis <dds@doc.ic.ac.uk>. - */ - -#include <ctype.h> -#if 0 -#include <signal.h> -#endif -#include <stdlib.h> -#include <string.h> -#if 0 -#include <unistd.h> -#endif - -#if 0 -static char_type magic_header[] = - { 0x1f, 0x9d }; /* 1F 9D */ -#endif - -#define BIT_MASK 0x1f /* Defines for third byte of header. */ -#define BLOCK_MASK 0x80 - -/* - * Masks 0x40 and 0x20 are free. I think 0x20 should mean that there is - * a fourth header byte (for expansion). - */ -#define INIT_BITS 9 /* Initial number of bits/code. */ - -#define MAXCODE(n_bits) ((1 << (n_bits)) - 1) - -/* Definitions to retain old variable names */ -#define fp zs->zs_fp -#define state zs->zs_state -#define n_bits zs->zs_n_bits -#define maxbits zs->zs_maxbits -#define maxcode zs->zs_maxcode -#define maxmaxcode zs->zs_maxmaxcode -#define htab zs->zs_htab -#define codetab zs->zs_codetab -#define hsize zs->zs_hsize -#define free_ent zs->zs_free_ent -#define block_compress zs->zs_block_compress -#define clear_flg zs->zs_clear_flg -#define offset zs->zs_offset -#define in_count zs->zs_in_count -#define buf_len zs->zs_buf_len -#define buf zs->zs_buf -#define stackp zs->u.r.zs_stackp -#define finchar zs->u.r.zs_finchar -#define code zs->u.r.zs_code -#define oldcode zs->u.r.zs_oldcode -#define incode zs->u.r.zs_incode -#define roffset zs->u.r.zs_roffset -#define size zs->u.r.zs_size -#define gbuf zs->u.r.zs_gbuf - -/* - * To save much memory, we overlay the table used by compress() with those - * used by decompress(). The tab_prefix table is the same size and type as - * the codetab. The tab_suffix table needs 2**BITS characters. We get this - * from the beginning of htab. The output stack uses the rest of htab, and - * contains characters. There is plenty of room for any possible stack - * (stack used to be 8000 characters). - */ - -#define htabof(i) htab[i] -#define codetabof(i) codetab[i] - -#define tab_prefixof(i) codetabof(i) -#define tab_suffixof(i) ((char_type *)(htab))[i] -#define de_stack ((char_type *)&tab_suffixof(1 << BITS)) - -#define CHECK_GAP 10000 /* Ratio check interval. */ - -/* - * the next two codes should not be changed lightly, as they must not - * lie within the contiguous general code space. - */ -#define FIRST 257 /* First free entry. */ -#define CLEAR 256 /* Table clear output code. */ - -/*- - * Algorithm from "A Technique for High Performance Data Compression", - * Terry A. Welch, IEEE Computer Vol 17, No 6 (June 1984), pp 8-19. - * - * Algorithm: - * Modified Lempel-Ziv method (LZW). Basically finds common - * substrings and replaces them with a variable size code. This is - * deterministic, and can be done on the fly. Thus, the decompression - * procedure needs no input table, but tracks the way the table was built. - */ - -#if 0 -static int -zclose(s_zstate_t *zs) -{ - free(zs); - return (0); -} -#endif - -/*- - * Output the given code. - * Inputs: - * code: A n_bits-bit integer. If == -1, then EOF. This assumes - * that n_bits =< (long)wordsize - 1. - * Outputs: - * Outputs code to the file. - * Assumptions: - * Chars are 8 bits long. - * Algorithm: - * Maintain a BITS character long buffer (so that 8 codes will - * fit in it exactly). Use the VAX insv instruction to insert each - * code in turn. When the buffer fills up empty it and start over. - */ - -static const char_type rmask[9] = - {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff}; - -/* - * Decompress read. This routine adapts to the codes in the file building - * the "string" table on-the-fly; requiring no table to be stored in the - * compressed file. The tables used herein are shared with those of the - * compress() routine. See the definitions above. - */ -static int -zread(s_zstate_t *zs) -{ - unsigned int count; - - if (in_count == 0) - return -1; - if (zs->avail_out == 0) - return 0; - - count = zs->avail_out; - switch (state) { - case S_START: - state = S_MIDDLE; - break; - case S_MIDDLE: - goto middle; - case S_EOF: - goto eof; - } - - maxbits = *(zs->next_in); /* Set -b from file. */ - zs->avail_in--; - zs->next_in++; - zs->total_in++; - in_count--; - block_compress = maxbits & BLOCK_MASK; - maxbits &= BIT_MASK; - maxmaxcode = 1L << maxbits; - if (maxbits > BITS) { - return -1; - } - /* As above, initialize the first 256 entries in the table. */ - maxcode = MAXCODE(n_bits = INIT_BITS); - for (code = 255; code >= 0; code--) { - tab_prefixof(code) = 0; - tab_suffixof(code) = (char_type) code; - } - free_ent = block_compress ? FIRST : 256; - - finchar = oldcode = getcode(zs); - if (oldcode == -1) /* EOF already? */ - return 0; /* Get out of here */ - - /* First code must be 8 bits = char. */ - *(zs->next_out)++ = (unsigned char)finchar; - zs->total_out++; - count--; - stackp = de_stack; - - while ((code = getcode(zs)) > -1) { - if ((code == CLEAR) && block_compress) { - for (code = 255; code >= 0; code--) - tab_prefixof(code) = 0; - clear_flg = 1; - free_ent = FIRST - 1; - if ((code = getcode(zs)) == -1) - /* O, untimely death! */ - break; - } - incode = code; - - /* Special case for KwKwK string. */ - if (code >= free_ent) { - *stackp++ = finchar; - code = oldcode; - } - - /* Generate output characters in reverse order. */ - while (code >= 256) { - *stackp++ = tab_suffixof(code); - code = tab_prefixof(code); - } - *stackp++ = finchar = tab_suffixof(code); - - /* And put them out in forward order. */ -middle: - if (stackp == de_stack) - continue; - - do { - if (count-- == 0) { - return zs->avail_out; - } - *(zs->next_out)++ = *--stackp; - zs->total_out++; - } while (stackp > de_stack); - - /* Generate the new entry. */ - if ((code = free_ent) < maxmaxcode) { - tab_prefixof(code) = (unsigned short) oldcode; - tab_suffixof(code) = finchar; - free_ent = code + 1; - } - - /* Remember previous code. */ - oldcode = incode; - } - /* state = S_EOF; */ -eof: return (zs->avail_out - count); -} - -/*- - * Read one code from the standard input. If EOF, return -1. - * Inputs: - * stdin - * Outputs: - * code or -1 is returned. - */ -static code_int -getcode(s_zstate_t *zs) -{ - code_int gcode; - int r_off, bits; - char_type *bp; - - bp = gbuf; - if (clear_flg > 0 || roffset >= size || free_ent > maxcode) { - /* - * If the next entry will be too big for the current gcode - * size, then we must increase the size. This implies reading - * a new buffer full, too. - */ - if (free_ent > maxcode) { - n_bits++; - if (n_bits == maxbits) /* Won't get any bigger now. */ - maxcode = maxmaxcode; - else - maxcode = MAXCODE(n_bits); - } - if (clear_flg > 0) { - maxcode = MAXCODE(n_bits = INIT_BITS); - clear_flg = 0; - } - if ( zs->avail_in < (unsigned int)n_bits && in_count > (long)n_bits ) { - memcpy (buf, zs->next_in, zs->avail_in); - buf_len = zs->avail_in; - zs->avail_in = 0; - return -1; - } - if (buf_len) { - memcpy (gbuf, buf, buf_len); - memcpy (gbuf + buf_len, zs->next_in, - n_bits - buf_len); - zs->next_in += n_bits - buf_len; - zs->avail_in -= n_bits - buf_len; - buf_len = 0; - zs->total_in += n_bits; - size = n_bits; - in_count -= n_bits; - } else { - if (in_count > n_bits) { - memcpy (gbuf, zs->next_in, n_bits); - zs->next_in += n_bits; - zs->avail_in -= n_bits; - zs->total_in += n_bits; - size = n_bits; - in_count -= n_bits; - } else { - memcpy (gbuf, zs->next_in, in_count); - zs->next_in += in_count; - zs->avail_in -= in_count; - zs->total_in += in_count; - size = in_count; - in_count = 0; - } - } - roffset = 0; - /* Round size down to integral number of codes. */ - size = (size << 3) - (n_bits - 1); - } - r_off = roffset; - bits = n_bits; - - /* Get to the first byte. */ - bp += (r_off >> 3); - r_off &= 7; - - /* Get first part (low order bits). */ - gcode = (*bp++ >> r_off); - bits -= (8 - r_off); - r_off = 8 - r_off; /* Now, roffset into gcode word. */ - - /* Get any 8 bit parts in the middle (<=1 for up to 16 bits). */ - if (bits >= 8) { - gcode |= *bp++ << r_off; - r_off += 8; - bits -= 8; - } - - /* High order bits. */ - gcode |= (*bp & rmask[bits]) << r_off; - roffset += n_bits; - - return (gcode); -} - -static void -zinit(s_zstate_t *zs) -{ - memset(zs, 0, sizeof (s_zstate_t)); - - maxbits = BITS; /* User settable max # bits/code. */ - maxmaxcode = 1 << maxbits; /* Should NEVER generate this code. */ - hsize = HSIZE; /* For dynamic table sizing. */ - free_ent = 0; /* First unused entry. */ - block_compress = BLOCK_MASK; - clear_flg = 0; - state = S_START; - roffset = 0; - size = 0; -} diff --git a/nx-X11/extras/freetype2/src/lzw/zopen.h b/nx-X11/extras/freetype2/src/lzw/zopen.h deleted file mode 100644 index 483b47e5c..000000000 --- a/nx-X11/extras/freetype2/src/lzw/zopen.h +++ /dev/null @@ -1,114 +0,0 @@ -/* $NetBSD: zopen.c,v 1.8 2003/08/07 11:13:29 agc Exp $ */ - -/*- - * Copyright (c) 1985, 1986, 1992, 1993 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Diomidis Spinellis and James A. Woods, derived from original - * work by Spencer Thomas and Joseph Orost. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -/*- - * - * Copyright (c) 2004 - * Albert Chin-A-Young. - * - * Modified to work with FreeType's PCF driver. - * - */ - -#if defined(LIBC_SCCS) && !defined(lint) -#if 0 -static char sccsid[] = "@(#)zopen.c 8.1 (Berkeley) 6/27/93"; -#else -static char rcsid[] = "$NetBSD: zopen.c,v 1.8 2003/08/07 11:13:29 agc Exp $"; -#endif -#endif /* LIBC_SCCS and not lint */ - -#include <stdio.h> - -#define BITS 16 /* Default bits. */ -#define HSIZE 69001 /* 95% occupancy */ - -/* A code_int must be able to hold 2**BITS values of type int, and also -1. */ -typedef long code_int; -typedef long count_int; - -typedef unsigned char char_type; - -typedef enum { - S_START, S_MIDDLE, S_EOF -} zs_enum; - -typedef struct { - unsigned char *next_in; - unsigned int avail_in; - unsigned long total_in; - - unsigned char *next_out; - unsigned int avail_out; - unsigned long total_out; - - zs_enum zs_state; /* State of computation */ - int zs_n_bits; /* Number of bits/code. */ - int zs_maxbits; /* User settable max # bits/code. */ - code_int zs_maxcode; /* Maximum code, given n_bits. */ - code_int zs_maxmaxcode; /* Should NEVER generate this code. */ - count_int zs_htab [HSIZE]; - unsigned short zs_codetab [HSIZE]; - code_int zs_hsize; /* For dynamic table sizing. */ - code_int zs_free_ent; /* First unused entry. */ - /* - * Block compression parameters -- after all codes are used up, - * and compression rate changes, start over. - */ - int zs_block_compress; - int zs_clear_flg; - int zs_offset; - long zs_in_count; /* Remaining uncompressed bytes. */ - char_type zs_buf_len; - char_type zs_buf[BITS]; /* Temporary buffer if we need - to read more to accumulate - n_bits. */ - union { - struct { - char_type *zs_stackp; - int zs_finchar; - code_int zs_code, zs_oldcode, zs_incode; - int zs_roffset, zs_size; - char_type zs_gbuf[BITS]; - } r; /* Read parameters */ - } u; -} s_zstate_t; - -static code_int getcode(s_zstate_t *); -#if 0 -static int zclose(s_zstate_t *); -#endif -static void zinit(s_zstate_t *); -static int zread(s_zstate_t *); diff --git a/nx-X11/extras/freetype2/src/otlayout/otlayout.h b/nx-X11/extras/freetype2/src/otlayout/otlayout.h deleted file mode 100644 index 2cd67f568..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlayout.h +++ /dev/null @@ -1,205 +0,0 @@ -#ifndef __OT_LAYOUT_H__ -#define __OT_LAYOUT_H__ - - -#include "otlconf.h" - -OTL_BEGIN_HEADER - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** BASE DATA TYPES *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - typedef unsigned char OTL_Byte; - typedef const OTL_Byte* OTL_Bytes; - - typedef int OTL_Error; - - typedef void* OTL_Pointer; - - typedef int OTL_Int; - typedef unsigned int OTL_UInt; - - typedef long OTL_Long; - typedef unsigned long OTL_ULong; - - typedef short OTL_Int16; - typedef unsigned short OTL_UInt16; - - -#if OTL_SIZEOF_INT == 4 - - typedef int OTL_Int32; - typedef unsigned int OTL_UInt32; - -#elif OTL_SIZEOF_LONG == 4 - - typedef long OTL_Int32; - typedef unsigned long OTL_UInt32; - -#else -# error "no 32-bits type found" -#endif - - typedef OTL_UInt32 OTL_Tag; - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** ERROR CODES *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - typedef enum - { - OTL_Err_Ok = 0, - OTL_Err_InvalidArgument, - OTL_Err_InvalidFormat, - OTL_Err_InvalidOffset, - - OTL_Err_Max - - } OTL_Error; - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** MEMORY MANAGEMENT *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - typedef OTL_Pointer (*OTL_AllocFunc)( OTL_ULong size, - OTL_Pointer data ); - - typedef OTL_Pointer (*OTL_ReallocFunc)( OTL_Pointer block, - OTL_ULong size, - OTL_Pointer data ); - - typedef void (*OTL_FreeFunc)( OTL_Pointer block, - OTL_Pointer data ); - - typedef struct OTL_MemoryRec_ - { - OTL_Pointer mem_data; - OTL_AllocFunc mem_alloc; - OTL_ReallocFunc mem_realloc; - OTL_FreeFunc mem_free; - - } OTL_MemoryRec, *OTL_Memory; - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** ENUMERATIONS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -/* re-define OTL_MAKE_TAG to something different if you're not */ -/* using an ASCII-based character set (Vaxes anyone ?) */ -#ifndef OTL_MAKE_TAG -#define OTL_MAKE_TAG(c1,c2,c3,c4) \ - ( ( (OTL_UInt32)(c1) << 24 ) | \ - (OTL_UInt32)(c2) << 16 ) | \ - (OTL_UInt32)(c3) << 8 ) | \ - (OTL_UInt32)(c4) ) -#endif - - typedef enum OTL_ScriptTag_ - { - OTL_SCRIPT_NONE = 0, - -#define OTL_SCRIPT_TAG(c1,c2,c3,c4,s,n) OTL_SCRIPT_TAG_ ## n = OTL_MAKE_TAG(c1,c2,c3,c4), -#include "otltags.h" - - OTL_SCRIPT_MAX - - } OTL_ScriptTag; - - - typedef enum OTL_LangTag_ - { - OTL_LANG_DEFAULT = 0, - -#define OTL_LANG_TAG(c1,c2,c3,c4,s,n) OTL_LANG_TAG_ ## n = OTL_MAKE_TAG(c1,c2,c3,c4), -#include "otltags.h" - - OTL_LANG_MAX - - } OTL_LangTag; - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** MEMORY READS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -#define OTL_PEEK_USHORT(p) ( ((OTL_UInt)((p)[0]) << 8) | \ - ((OTL_UInt)((p)[1]) ) ) - -#define OTL_PEEK_ULONG(p) ( ((OTL_UInt32)((p)[0]) << 24) | \ - ((OTL_UInt32)((p)[1]) << 16) | \ - ((OTL_UInt32)((p)[2]) << 8) | \ - ((OTL_UInt32)((p)[3]) ) ) - -#define OTL_PEEK_SHORT(p) ((OTL_Int16)OTL_PEEK_USHORT(p)) - -#define OTL_PEEK_LONG(p) ((OTL_Int32)OTL_PEEK_ULONG(p)) - -#define OTL_NEXT_USHORT(p) ( (p) += 2, OTL_PEEK_USHORT((p)-2) ) -#define OTL_NEXT_ULONG(p) ( (p) += 4, OTL_PEEK_ULONG((p)-4) ) - -#define OTL_NEXT_SHORT(p) ((OTL_Int16)OTL_NEXT_USHORT(p)) -#define OTL_NEXT_LONG(p) ((OTL_Int32)OTL_NEXT_ULONG(p)) - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** VALIDATION *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - typedef struct OTL_ValidatorRec_* OTL_Validator; - - typedef struct OTL_ValidatorRec_ - { - OTL_Bytes limit; - OTL_Bytes base; - OTL_Error error; - OTL_jmp_buf jump_buffer; - - } OTL_ValidatorRec; - - typedef void (*OTL_ValidateFunc)( OTL_Bytes table, - OTL_Valid valid ); - - OTL_API( void ) - otl_validator_error( OTL_Validator validator, - OTL_Error error ); - -#define OTL_INVALID(e) otl_validator_error( valid, e ) - -#define OTL_INVALID_TOO_SHORT OTL_INVALID( OTL_Err_InvalidOffset ) -#define OTL_INVALID_DATA OTL_INVALID( OTL_Err_InvalidFormat ) - -#define OTL_CHECK(_count) OTL_BEGIN_STMNT \ - if ( p + (_count) > valid->limit ) \ - OTL_INVALID_TOO_SHORT; \ - OTL_END_STMNT - - /* */ - -OTL_END_HEADER - -#endif /* __OPENTYPE_LAYOUT_H__ */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otlbase.c b/nx-X11/extras/freetype2/src/otlayout/otlbase.c deleted file mode 100644 index 614e13c1a..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlbase.c +++ /dev/null @@ -1,181 +0,0 @@ -#include "otlbase.h" -#include "otlcommn.h" - - static void - otl_base_coord_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 4 ); - - format = OTL_NEXT_USHORT( p ); - p += 2; - - switch ( format ) - { - case 1: - break; - - case 2: - OTL_CHECK( 4 ); - break; - - case 3: - OTL_CHECK( 2 ); - otl_device_table_validate( table + OTL_PEEK_USHORT( p ) ); - break; - - default: - OTL_INVALID_DATA; - } - } - - - static void - otl_base_tag_list_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK(2); - - count = OTL_NEXT_USHORT( p ); - OTL_CHECK( count*4 ); - } - - - - static void - otl_base_values_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 4 ); - - p += 2; /* skip default index */ - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*2 ); - - for ( ; count > 0; count-- ) - otl_base_coord_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_base_minmax_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt min_coord, max_coord, count; - - OTL_CHECK(6); - min_coord = OTL_NEXT_USHORT( p ); - max_coord = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - if ( min_coord ) - otl_base_coord_validate( table + min_coord, valid ); - - if ( max_coord ) - otl_base_coord_validate( table + max_coord, valid ); - - OTL_CHECK( count*8 ); - for ( ; count > 0; count-- ) - { - p += 4; /* ignore tag */ - min_coord = OTL_NEXT_USHORT( p ); - max_coord = OTL_NEXT_USHORT( p ); - - if ( min_coord ) - otl_base_coord_validate( table + min_coord, valid ); - - if ( max_coord ) - otl_base_coord_validate( table + max_coord, valid ); - } - } - - - static void - otl_base_script_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt values, default_minmax; - - OTL_CHECK(6); - - values = OTL_NEXT_USHORT( p ); - default_minmax = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - if ( values ) - otl_base_values_validate( table + values, valid ); - - if ( default_minmax ) - otl_base_minmax_validate( table + default_minmax, valid ); - - OTL_CHECK( count*6 ); - for ( ; count > 0; count-- ) - { - p += 4; /* ignore tag */ - otl_base_minmax_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - } - - - static void - otl_base_script_list_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK(2); - - count = OTL_NEXT_USHORT( p ); - OTL_CHECK(count*6); - - for ( ; count > 0; count-- ) - { - p += 4; /* ignore script tag */ - otl_base_script_validate( table + OTL_NEXT_USHORT( p ) ); - } - } - - static void - otl_axis_table_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt tags; - - OTL_CHECK(4); - - tags = OTL_NEXT_USHORT( p ); - if ( tags ) - otl_base_tag_list_validate ( table + tags ); - - otl_base_script_list_validate( table + OTL_NEXT_USHORT( p ) ); - } - - - OTL_LOCALDEF( void ) - otl_base_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - - OTL_CHECK(6); - - if ( OTL_NEXT_ULONG( p ) != 0x10000UL ) - OTL_INVALID_DATA; - - otl_axis_table_validate( table + OTL_NEXT_USHORT( p ) ); - otl_axis_table_validate( table + OTL_NEXT_USHORT( p ) ); - } \ No newline at end of file diff --git a/nx-X11/extras/freetype2/src/otlayout/otlbase.h b/nx-X11/extras/freetype2/src/otlayout/otlbase.h deleted file mode 100644 index 563d3002d..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlbase.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __OTL_BASE_H__ -#define __OTL_BASE_H__ - -#include "otlayout.h" - -OTL_BEGIN_HEADER - - OTL_LOCAL( void ) - otl_base_validate( OTL_Bytes table, - OTL_Validator valid ); - -OTL_END_HEADER - -#endif /* __OTL_BASE_H__ */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otlcommn.c b/nx-X11/extras/freetype2/src/otlayout/otlcommn.c deleted file mode 100644 index 742ff5b36..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlcommn.c +++ /dev/null @@ -1,940 +0,0 @@ -/***************************************************************************/ -/* */ -/* otlcommn.c */ -/* */ -/* OpenType layout support, common tables (body). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "otlayout.h" - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** COVERAGE TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCALDEF( void ) - otl_coverage_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p; - OTL_UInt format; - - - if ( table + 4 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt count = OTL_NEXT_USHORT( p ); - - - if ( p + count * 2 >= valid->limit ) - OTL_INVALID_TOO_SHORT; - - /* XXX: check glyph indices */ - } - break; - - case 2: - { - OTL_UInt n, num_ranges = OTL_NEXT_USHORT( p ); - OTL_UInt start, end, start_cover, total = 0, last = 0; - - - if ( p + num_ranges * 6 >= valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( n = 0; n < num_ranges; n++ ) - { - start = OTL_NEXT_USHORT( p ); - end = OTL_NEXT_USHORT( p ); - start_cover = OTL_NEXT_USHORT( p ); - - if ( start > end || start_cover != total ) - OTL_INVALID_DATA; - - if ( n > 0 && start <= last ) - OTL_INVALID_DATA; - - total += end - start + 1; - last = end; - } - } - break; - - default: - OTL_INVALID_FORMAT; - } - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_coverage_get_count( OTL_Bytes table ) - { - OTL_Bytes p = table; - OTL_UInt format = OTL_NEXT_USHORT( p ); - OTL_UInt count = OTL_NEXT_USHORT( p ); - OTL_UInt result = 0; - - - switch ( format ) - { - case 1: - return count; - - case 2: - { - OTL_UInt start, end; - - - for ( ; count > 0; count-- ) - { - start = OTL_NEXT_USHORT( p ); - end = OTL_NEXT_USHORT( p ); - p += 2; /* skip start_index */ - - result += end - start + 1; - } - } - break; - - default: - ; - } - - return result; - } - - - OTL_LOCALDEF( OTL_Int ) - otl_coverage_get_index( OTL_Bytes table, - OTL_UInt glyph_index ) - { - OTL_Bytes p = table; - OTL_UInt format = OTL_NEXT_USHORT( p ); - OTL_UInt count = OTL_NEXT_USHORT( p ); - - - switch ( format ) - { - case 1: - { - OTL_UInt min = 0, max = count, mid, gindex; - - - table += 4; - while ( min < max ) - { - mid = ( min + max ) >> 1; - p = table + 2 * mid; - gindex = OTL_PEEK_USHORT( p ); - - if ( glyph_index == gindex ) - return (OTL_Int)mid; - - if ( glyph_index < gindex ) - max = mid; - else - min = mid + 1; - } - } - break; - - case 2: - { - OTL_UInt min = 0, max = count, mid; - OTL_UInt start, end, delta, start_cover; - - - table += 4; - while ( min < max ) - { - mid = ( min + max ) >> 1; - p = table + 6 * mid; - start = OTL_NEXT_USHORT( p ); - end = OTL_NEXT_USHORT( p ); - - if ( glyph_index < start ) - max = mid; - else if ( glyph_index > end ) - min = mid + 1; - else - return (OTL_Int)( glyph_index + OTL_NEXT_USHORT( p ) - start ); - } - } - break; - - default: - ; - } - - return -1; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CLASS DEFINITION TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCALDEF( void ) - otl_class_definition_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - - if ( p + 4 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt count, start = OTL_NEXT_USHORT( p ); - - - if ( p + 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - count = OTL_NEXT_USHORT( p ); - - if ( p + count * 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - /* XXX: check glyph indices */ - } - break; - - case 2: - { - OTL_UInt n, num_ranges = OTL_NEXT_USHORT( p ); - OTL_UInt start, end, value, last = 0; - - - if ( p + num_ranges * 6 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( n = 0; n < num_ranges; n++ ) - { - start = OTL_NEXT_USHORT( p ); - end = OTL_NEXT_USHORT( p ); - value = OTL_NEXT_USHORT( p ); /* ignored */ - - if ( start > end || ( n > 0 && start <= last ) ) - OTL_INVALID_DATA; - - last = end; - } - } - break; - - default: - OTL_INVALID_FORMAT; - } - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_class_definition_get_value( OTL_Bytes table, - OTL_UInt glyph_index ) - { - OTL_Bytes p = table; - OTL_UInt format = OTL_NEXT_USHORT( p ); - - - switch ( format ) - { - case 1: - { - OTL_UInt start = OTL_NEXT_USHORT( p ); - OTL_UInt count = OTL_NEXT_USHORT( p ); - OTL_UInt idx = (OTL_UInt)( glyph_index - start ); - - - if ( idx < count ) - { - p += 2 * idx; - return OTL_PEEK_USHORT( p ); - } - } - break; - - case 2: - { - OTL_UInt count = OTL_NEXT_USHORT( p ); - OTL_UInt min = 0, max = count, mid, gindex; - - - table += 4; - while ( min < max ) - { - mid = ( min + max ) >> 1; - p = table + 6 * mid; - start = OTL_NEXT_USHORT( p ); - end = OTL_NEXT_USHORT( p ); - - if ( glyph_index < start ) - max = mid; - else if ( glyph_index > end ) - min = mid + 1; - else - return OTL_PEEK_USHORT( p ); - } - } - break; - - default: - ; - } - - return 0; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** DEVICE TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCALDEF( void ) - otl_device_table_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt start, end, count, format, count; - - - if ( p + 8 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - start = OTL_NEXT_USHORT( p ); - end = OTL_NEXT_USHORT( p ); - format = OTL_NEXT_USHORT( p ); - - if ( format < 1 || format > 3 || end < start ) - OTL_INVALID_DATA; - - count = (OTL_UInt)( end - start + 1 ); - - if ( p + ( ( 1 << format ) * count ) / 8 > valid->limit ) - OTL_INVALID_TOO_SHORT; - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_device_table_get_start( OTL_Bytes table ) - { - OTL_Bytes p = table; - - - return OTL_PEEK_USHORT( p ); - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_device_table_get_end( OTL_Bytes table ) - { - OTL_Bytes p = table + 2; - - - return OTL_PEEK_USHORT( p ); - } - - - OTL_LOCALDEF( OTL_Int ) - otl_device_table_get_delta( OTL_Bytes table, - OTL_UInt size ) - { - OTL_Bytes p = table; - OTL_Int result = 0; - OTL_UInt start, end, format, idx, value; - - - start = OTL_NEXT_USHORT( p ); - end = OTL_NEXT_USHORT( p ); - format = OTL_NEXT_USHORT( p ); - - if ( size >= start && size <= end ) - { - /* we could do that with clever bit operations, but a switch is */ - /* much simpler to understand and maintain */ - /* */ - switch ( format ) - { - case 1: - idx = (OTL_UInt)( ( size - start ) * 2 ); - p += idx / 16; - value = OTL_PEEK_USHORT( p ); - shift = idx & 15; - result = (OTL_Short)( value << shift ) >> ( 14 - shift ); - - break; - - case 2: - idx = (OTL_UInt)( ( size - start ) * 4 ); - p += idx / 16; - value = OTL_PEEK_USHORT( p ); - shift = idx & 15; - result = (OTL_Short)( value << shift ) >> ( 12 - shift ); - - break; - - case 3: - idx = (OTL_UInt)( ( size - start ) * 8 ); - p += idx / 16; - value = OTL_PEEK_USHORT( p ); - shift = idx & 15; - result = (OTL_Short)( value << shift ) >> ( 8 - shift ); - - break; - - default: - ; - } - } - - return result; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** LOOKUP LISTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCALDEF( void ) - otl_lookup_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt num_tables; - - - if ( table + 6 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - p += 4; - num_tables = OTL_NEXT_USHORT( p ); - - if ( p + num_tables * 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( ; num_tables > 0; num_tables-- ) - { - offset = OTL_NEXT_USHORT( p ); - - if ( table + offset >= valid->limit ) - OTL_INVALID_OFFSET; - } - - /* XXX: check sub-tables? */ - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_lookup_get_count( OTL_Bytes table ) - { - OTL_Bytes p = table + 4; - - - return OTL_PEEK_USHORT( p ); - } - - - OTL_LOCALDEF( OTL_Bytes ) - otl_lookup_get_table( OTL_Bytes table, - OTL_UInt idx ) - { - OTL_Bytes p, result = NULL; - OTL_UInt count; - - - p = table + 4; - count = OTL_NEXT_USHORT( p ); - if ( idx < count ) - { - p += idx * 2; - result = table + OTL_PEEK_USHORT( p ); - } - - return result; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** LOOKUP LISTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCALDEF( void ) - otl_lookup_list_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table, q; - OTL_UInt num_lookups, offset; - - - if ( p + 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - num_lookups = OTL_NEXT_USHORT( p ); - - if ( p + num_lookups * 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( ; num_lookups > 0; num_lookups-- ) - { - offset = OTL_NEXT_USHORT( p ); - - otl_lookup_validate( table + offset, valid ); - } - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_lookup_list_get_count( OTL_Bytes table ) - { - OTL_Bytes p = table; - - - return OTL_PEEK_USHORT( p ); - } - - - OTL_LOCALDEF( OTL_Bytes ) - otl_lookup_list_get_lookup( OTL_Bytes table, - OTL_UInt idx ) - { - OTL_Bytes p, result = 0; - OTL_UInt count; - - - p = table; - count = OTL_NEXT_USHORT( p ); - if ( idx < count ) - { - p += idx * 2; - result = table + OTL_PEEK_USHORT( p ); - } - - return result; - } - - - OTL_LOCALDEF( OTL_Bytes ) - otl_lookup_list_get_table( OTL_Bytes table, - OTL_UInt lookup_index, - OTL_UInt table_index ) - { - OTL_Bytes result = NULL; - - - result = otl_lookup_list_get_lookup( table, lookup_index ); - if ( result ) - result = otl_lookup_get_table( result, table_index ); - - return result; - } - - - OTL_LOCALDEF( void ) - otl_lookup_list_foreach( OTL_Bytes table, - OTL_ForeachFunc func, - OTL_Pointer func_data ) - { - OTL_Bytes p = table; - OTL_UInt count = OTL_NEXT_USHORT( p ); - - - for ( ; count > 0; count-- ) - func( table + OTL_NEXT_USHORT( p ), func_data ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FEATURES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCALDEF( void ) - otl_feature_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt feat_params, num_lookups; - - - if ( p + 4 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - feat_params = OTL_NEXT_USHORT( p ); /* ignored */ - num_lookups = OTL_NEXT_USHORT( p ); - - if ( p + num_lookups * 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - /* XXX: check lookup indices */ - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_feature_get_count( OTL_Bytes table ) - { - OTL_Bytes p = table + 4; - - - return OTL_PEEK_USHORT( p ); - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_feature_get_lookups( OTL_Bytes table, - OTL_UInt start, - OTL_UInt count, - OTL_UInt *lookups ) - { - OTL_Bytes p; - OTL_UInt num_features, result = 0; - - - p = table + 4; - num_features = OTL_NEXT_USHORT( p ); - - p += start * 2; - - for ( ; count > 0 && start < num_features; count--, start++ ) - { - lookups[0] = OTL_NEXT_USHORT(p); - lookups++; - result++; - } - - return result; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FEATURE LIST *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCALDEF( void ) - otl_feature_list_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt num_features, offset; - - - if ( table + 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - num_features = OTL_NEXT_USHORT( p ); - - if ( p + num_features * 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( ; num_features > 0; num_features-- ) - { - p += 4; /* skip tag */ - offset = OTL_NEXT_USHORT( p ); - - otl_feature_table_validate( table + offset, valid ); - } - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_feature_list_get_count( OTL_Bytes table ) - { - OTL_Bytes p = table; - - - return OTL_PEEK_USHORT( p ); - } - - - OTL_LOCALDEF( OTL_Bytes ) - otl_feature_list_get_feature( OTL_Bytes table, - OTL_UInt idx ) - { - OTL_Bytes p, result = NULL; - OTL_UInt count; - - - p = table; - count = OTL_NEXT_USHORT( p ); - - if ( idx < count ) - { - p += idx * 2; - result = table + OTL_PEEK_USHORT( p ); - } - - return result; - } - - - OTL_LOCALDEF( void ) - otl_feature_list_foreach( OTL_Bytes table, - OTL_ForeachFunc func, - OTL_Pointer func_data ) - { - OTL_Bytes p; - OTL_UInt count; - - - p = table; - count = OTL_NEXT_USHORT( p ); - - for ( ; count > 0; count-- ) - func( table + OTL_NEXT_USHORT( p ), func_data ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** LANGUAGE SYSTEM *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - OTL_LOCALDEF( void ) - otl_lang_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt lookup_order; - OTL_UInt req_feature; - OTL_UInt num_features; - - - if ( table + 6 >= valid->limit ) - OTL_INVALID_TOO_SHORT; - - lookup_order = OTL_NEXT_USHORT( p ); - req_feature = OTL_NEXT_USHORT( p ); - num_features = OTL_NEXT_USHORT( p ); - - /* XXX: check req_feature if not 0xFFFFU */ - - if ( p + 2 * num_features >= valid->limit ) - OTL_INVALID_TOO_SHORT; - - /* XXX: check features indices! */ - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_lang_get_count( OTL_Bytes table ) - { - OTL_Bytes p = table + 4; - - return OTL_PEEK_USHORT( p ); - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_lang_get_req_feature( OTL_Bytes table ) - { - OTL_Bytes p = table + 2; - - - return OTL_PEEK_USHORT( p ); - } - - - OTL_LOCALDEF( OTL_UInt ) - otl_lang_get_features( OTL_Bytes table, - OTL_UInt start, - OTL_UInt count, - OTL_UInt *features ) - { - OTL_Bytes p = table + 4; - OTL_UInt num_features = OTL_NEXT_USHORT( p ); - OTL_UInt result = 0; - - - p += start * 2; - - for ( ; count > 0 && start < num_features; start++, count-- ) - { - features[0] = OTL_NEXT_USHORT( p ); - features++; - result++; - } - - return result; - } - - - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** SCRIPTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - OTL_LOCALDEF( void ) - otl_script_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_UInt default_lang; - OTL_Bytes p = table; - - - if ( table + 4 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - default_lang = OTL_NEXT_USHORT( p ); - num_langs = OTL_NEXT_USHORT( p ); - - if ( default_lang != 0 ) - { - if ( table + default_lang >= valid->limit ) - OTL_INVALID_OFFSET; - } - - if ( p + num_langs * 6 >= valid->limit ) - OTL_INVALID_OFFSET; - - for ( ; num_langs > 0; num_langs-- ) - { - OTL_UInt offset; - - - p += 4; /* skip tag */ - offset = OTL_NEXT_USHORT( p ); - - otl_lang_validate( table + offset, valid ); - } - } - - - OTL_LOCALDEF( void ) - otl_script_list_validate( OTL_Bytes list, - OTL_Validator valid ) - { - OTL_UInt num_scripts; - OTL_Bytes p = list; - - - if ( list + 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - num_scripts = OTL_NEXT_USHORT( p ); - - if ( p + num_scripts * 6 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( ; num_scripts > 0; num_scripts-- ) - { - OTL_UInt offset; - - - p += 4; /* skip tag */ - offset = OTL_NEXT_USHORT( p ); - - otl_script_table_validate( list + offset, valid ); - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** LOOKUP LISTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static void - otl_lookup_table_validate( OTL_Bytes table, - OTL_UInt type_count, - OTL_ValidateFunc* type_funcs, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt lookup_type, lookup_flag, count; - OTL_ValidateFunc validate; - - OTL_CHECK( 6 ); - lookup_type = OTL_NEXT_USHORT( p ); - lookup_flag = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - if ( lookup_type == 0 || lookup_type >= type_count ) - OTL_INVALID_DATA; - - validate = type_funcs[ lookup_type - 1 ]; - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - OTL_LOCALDEF( void ) - otl_lookup_list_validate( OTL_Bytes table, - OTL_UInt type_count, - OTL_ValidateFunc* type_funcs, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_lookup_table_validate( table + OTL_NEXT_USHORT( p ), - type_count, type_funcs, valid ); - } - -/* END */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otlcommn.h b/nx-X11/extras/freetype2/src/otlayout/otlcommn.h deleted file mode 100644 index 25914fb9f..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlcommn.h +++ /dev/null @@ -1,277 +0,0 @@ -/***************************************************************************/ -/* */ -/* otlcommn.h */ -/* */ -/* OpenType layout support, common tables (specification). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __OTLCOMMN_H__ -#define __OTLCOMMN_H__ - -#include "otlayout.h" - -OTL_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** COVERAGE TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* validate coverage table */ - OTL_LOCALDEF( void ) - otl_coverage_validate( OTL_Bytes base, - OTL_Validator valid ); - - /* return number of covered glyphs */ - OTL_LOCALDEF( OTL_UInt ) - otl_coverage_get_count( OTL_Bytes base ); - - /* Return the coverage index corresponding to a glyph glyph index. */ - /* Return -1 if the glyph isn't covered. */ - OTL_LOCALDEF( OTL_Int ) - otl_coverage_get_index( OTL_Bytes base, - OTL_UInt glyph_index ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** CLASS DEFINITION TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* validate class definition table */ - OTL_LOCALDEF( void ) - otl_class_definition_validate( OTL_Bytes table, - OTL_Validator valid ); - - /* return class value for a given glyph index */ - OTL_LOCALDEF( OTL_UInt ) - otl_class_definition_get_value( OTL_Bytes table, - OTL_UInt glyph_index ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** DEVICE TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* validate a device table */ - OTL_LOCALDEF( void ) - otl_device_table_validate( OTL_Bytes table, - OTL_Validator valid ); - - /* return a device table's first size */ - OTL_LOCALDEF( OTL_UInt ) - otl_device_table_get_start( OTL_Bytes table ); - - /* return a device table's last size */ - OTL_LOCALDEF( OTL_UInt ) - otl_device_table_get_end( OTL_Bytes table ); - - /* return pixel adjustment for a given size */ - OTL_LOCALDEF( OTL_Int ) - otl_device_table_get_delta( OTL_Bytes table, - OTL_UInt size ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** LOOKUPS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* validate lookup table */ - OTL_LOCALDEF( void ) - otl_lookup_validate( OTL_Bytes table, - OTL_Validator valid ); - - /* return number of sub-tables in a lookup */ - OTL_LOCALDEF( OTL_UInt ) - otl_lookup_get_count( OTL_Bytes table ); - - - /* return lookup sub-table */ - OTL_LOCALDEF( OTL_Bytes ) - otl_lookup_get_table( OTL_Bytes table, - OTL_UInt idx ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** LOOKUP LISTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* validate lookup list */ - OTL_LOCALDEF( void ) - otl_lookup_list_validate( OTL_Bytes table, - OTL_Validator valid ); - - /* return number of lookups in list */ - OTL_LOCALDEF( OTL_UInt ) - otl_lookup_list_get_count( OTL_Bytes table ); - - /* return a given lookup from a list */ - OTL_LOCALDEF( OTL_Bytes ) - otl_lookup_list_get_lookup( OTL_Bytes table, - OTL_UInt idx ); - - /* return lookup sub-table from a list */ - OTL_LOCALDEF( OTL_Bytes ) - otl_lookup_list_get_table( OTL_Bytes table, - OTL_UInt lookup_index, - OTL_UInt table_index ); - - /* iterate over lookup list */ - OTL_LOCALDEF( void ) - otl_lookup_list_foreach( OTL_Bytes table, - OTL_ForeachFunc func, - OTL_Pointer func_data ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FEATURES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* validate feature table */ - OTL_LOCALDEF( void ) - otl_feature_validate( OTL_Bytes table, - OTL_Validator valid ); - - /* return feature's lookup count */ - OTL_LOCALDEF( OTL_UInt ) - otl_feature_get_count( OTL_Bytes table ); - - /* get several lookups indices from a feature. returns the number of */ - /* lookups grabbed */ - OTL_LOCALDEF( OTL_UInt ) - otl_feature_get_lookups( OTL_Bytes table, - OTL_UInt start, - OTL_UInt count, - OTL_UInt *lookups ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FEATURE LIST *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* validate a feature list */ - OTL_LOCALDEF( void ) - otl_feature_list_validate( OTL_Bytes table, - OTL_Validator valid ); - - /* return number of features in list */ - OTL_LOCALDEF( OTL_UInt ) - otl_feature_list_get_count( OTL_Bytes table ); - - - /* return a given feature from a list */ - OTL_LOCALDEF( OTL_Bytes ) - otl_feature_list_get_feature( OTL_Bytes table, - OTL_UInt idx ); - - /* iterate over all features in a list */ - OTL_LOCALDEF( void ) - otl_feature_list_foreach( OTL_Bytes table, - OTL_ForeachFunc func, - OTL_Pointer func_data ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** LANGUAGE SYSTEM *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCAL( void ) - otl_lang_validate( OTL_Bytes table, - OTL_Validator valid ); - - - OTL_LOCAL( OTL_UInt ) - otl_lang_get_req_feature( OTL_Bytes table ); - - - OTL_LOCAL( OTL_UInt ) - otl_lang_get_count( OTL_Bytes table ); - - - OTL_LOCAL( OTL_UInt ) - otl_lang_get_features( OTL_Bytes table, - OTL_UInt start, - OTL_UInt count, - OTL_UInt *features ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** SCRIPTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCAL( void ) - otl_script_list_validate( OTL_Bytes list, - OTL_Validator valid ); - - OTL_LOCAL( OTL_Bytes ) - otl_script_list_get_script( OTL_Bytes table ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** LOOKUP LISTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - OTL_LOCAL( void ) - otl_lookup_list_validate( OTL_Bytes list, - OTL_UInt type_count, - OTL_ValidateFunc* type_funcs, - OTL_Validator valid ); - - /* */ - -OTL_END_HEADER - -#endif /* __OTLCOMMN_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otlconf.h b/nx-X11/extras/freetype2/src/otlayout/otlconf.h deleted file mode 100644 index 3ef17a079..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlconf.h +++ /dev/null @@ -1,78 +0,0 @@ -#ifndef __OT_LAYOUT_CONFIG_H__ -#define __OT_LAYOUT_CONFIG_H__ - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** CONFIGURATION MACROS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -#ifdef __cplusplus -# define OTL_BEGIN_HEADER extern "C" { -#else -# define OTL_BEGIN_HEADER /* nothing */ -#endif - -#ifdef __cplusplus -# define OTL_END_HEADER } -#else -# define OTL_END_HEADER /* nothing */ -#endif - -#ifndef OTL_API -# ifdef __cplusplus -# define OTL_API( x ) extern "C" -# else -# define OTL_API( x ) extern x -# endif -#endif - -#ifndef OTL_APIDEF -# define OTL_APIDEF( x ) x -#endif - -#ifndef OTL_LOCAL -# define OTL_LOCAL( x ) extern x -#endif - -#ifndef OTL_LOCALDEF -# define OTL_LOCALDEF( x ) x -#endif - -#define OTL_BEGIN_STMNT do { -#define OTL_END_STMNT } while (0) -#define OTL_DUMMY_STMNT OTL_BEGIN_STMNT OTL_END_STMNT - -#define OTL_UNUSED( x ) (x)=(x) -#define OTL_UNUSED_CONST(x) (void)(x) - - -#include <limits.h> -#if UINT_MAX == 0xFFFFU -# define OTL_SIZEOF_INT 2 -#elif UINT_MAX == 0xFFFFFFFFU -# define OTL_SIZEOF_INT 4 -#elif UINT_MAX > 0xFFFFFFFFU && UINT_MAX == 0xFFFFFFFFFFFFFFFFU -# define OTL_SIZEOF_INT 8 -#else -# error "unsupported number of bytes in 'int' type!" -#endif - -#if ULONG_MAX == 0xFFFFFFFFU -# define OTL_SIZEOF_LONG 4 -#elif ULONG_MAX > 0xFFFFFFFFU && ULONG_MAX == 0xFFFFFFFFFFFFFFFFU -# define OTL_SIZEOF_LONG 8 -#else -# error "unsupported number of bytes in 'long' type!" -#endif - -#include <setjmp.h> -#define OTL_jmp_buf jmp_buf -#define otl_setjmp setjmp -#define otl_longjmp longjmp - -/* */ - -#endif /* __OT_LAYOUT_CONFIG_H__ */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otlgdef.c b/nx-X11/extras/freetype2/src/otlayout/otlgdef.c deleted file mode 100644 index ff1c2a1e8..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlgdef.c +++ /dev/null @@ -1,175 +0,0 @@ -#include "otlgdef.h" -#include "otlcommn.h" - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** ATTACHMENTS LIST *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_attach_point_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - if ( p + 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - count = OTL_NEXT_USHORT( p ); - if ( table + count*2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - } - - - static void - otl_attach_list_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_Bytes coverage; - OTL_UInt count; - - if ( p + 4 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - coverage = table + OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( coverage, valid ); - if ( count != otl_coverage_get_count( coverage ) ) - OTL_INVALID_DATA; - - if ( p + count*2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( ; count > 0; count-- ) - otl_attach_point_validate( table + OTL_NEXT_USHORT( p ) ); - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** LIGATURE CARETS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_caret_value_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - - if ( p + 4 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - case 2: - break; - - case 3: - { - OTL_Bytes device; - - p += 2; - if ( p + 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - otl_device_table_validate( table + OTL_PEEK_USHORT( p ) ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - static void - otl_ligature_glyph_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - if ( p + 2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - count = OTL_NEXT_USHORT( p ); - - if ( p + count*2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( ; count > 0; count-- ) - otl_caret_value_validate( table + OTL_NEXT_USHORT( p ) ); - } - - - static void - otl_ligature_caret_list_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_Bytes coverage; - OTL_UInt count; - - if ( p + 4 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - coverage = table + OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( coverage, valid ); - if ( count != otl_coverage_get_count( coverage ) ) - OTL_INVALID_DATA; - - if ( p + count*2 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - for ( ; count > 0; count-- ) - otl_ligature_glyph_validate( table + OTL_NEXT_USHORT( p ) ); - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GDEF TABLE *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - OTL_APIDEF( void ) - otl_gdef_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - - if ( p + 12 > valid->limit ) - OTL_INVALID_TOO_SHORT; - - /* check format */ - if ( OTL_NEXT_ULONG( p ) != 0x00010000UL ) - OTL_INVALID_FORMAT; - - /* validate class definition table */ - otl_class_definition_validate( table + OTL_NEXT_USHORT( p ) ); - - /* validate attachment point list */ - otl_attach_list_validate( table + OTL_NEXT_USHORT( p ) ); - - /* validate ligature caret list */ - otl_ligature_caret_list_validate( table + OTL_NEXT_USHORT( p ) ); - - /* validate mark attach class */ - otl_class_definition_validate( table + OTL_NEXT_USHORT( p ) ); - } - diff --git a/nx-X11/extras/freetype2/src/otlayout/otlgdef.h b/nx-X11/extras/freetype2/src/otlayout/otlgdef.h deleted file mode 100644 index 5046cc436..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlgdef.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __OTL_GDEF_H__ -#define __OTL_GDEF_H__ - -#include "otltable.h" - -OTL_BEGIN_HEADER - - OTL_API( void ) - otl_gdef_validate( OTL_Bytes table, - OTL_Valid valid ); - -OTL_END_HEADER - -#endif /* __OTL_GDEF_H__ */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otlgpos.c b/nx-X11/extras/freetype2/src/otlayout/otlgpos.c deleted file mode 100644 index 01942d7f0..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlgpos.c +++ /dev/null @@ -1,980 +0,0 @@ -#include "otlgpos.h" -#include "otlcommn.h" - - /* forward declaration */ - static OTL_ValidateFunc otl_gpos_validate_funcs[]; - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** VALUE RECORDS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static OTL_UInt - otl_value_length( OTL_UInt format ) - { - FT_UInt count; - - count = (( format & 0xAA ) >> 1) + ( format & 0x55 ); - count = (( count & 0xCC ) >> 2) + ( count & 0x33 ); - count = (( count & 0xF0 ) >> 4) + ( count & 0x0F ); - - return count; - } - - - static void - otl_value_validate( OTL_Bytes table, - OTL_Bytes pos_table, - OTL_UInt format, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count, device; - - if ( format >= 0x100U ) - OTL_INVALID_DATA; - - for ( count = 4; count > 0; count-- ) - { - if ( format & 1 ) - { - OTL_CHECK( 2 ); - p += 2; - } - - format >>= 1; - } - - for ( count = 4; count > 0; count-- ) - { - if ( format & 1 ) - { - OTL_CHECK( 2 ); - device = OTL_NEXT_USHORT( p ); - if ( device ) - otl_device_table_validate( pos_table + device, valid ); - } - format >>= 1; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** ANCHORS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_anchor_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 6 ); - format = OTL_NEXT_USHORT( p ); - p += 4; - - switch ( format ) - { - case 1: - break; - - case 2: - OTL_CHECK( 2 ); /* anchor point */ - break; - - case 3: - { - OTL_UInt x_device, y_device; - - OTL_CHECK( 4 ); - x_device = OTL_NEXT_USHORT( p ); - y_device = OTL_NEXT_USHORT( p ); - - if ( x_device ) - otl_device_table_validate( table + x_device, valid ); - - if ( y_device ) - otl_device_table_validate( table + y_device, valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** MARK ARRAY *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_mark_array_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - - count = OTL_NEXT_USHORT( p ); - OTL_CHECK( count * 4 ); - for ( ; count > 0; count-- ) - { - p += 2; /* ignore class index */ - otl_anchor_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 1 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_gpos_lookup1_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - FT_UInt coverage, value_format; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - value_format = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - otl_value_validate( p, table, value_format, valid ); - } - break; - - case 2: - { - FT_UInt coverage, value_format, count, len; - - OTL_CHECK( 6 ); - coverage = OTL_NEXT_USHORT( p ); - value_format = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - len = otl_value_length( value_format ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( count * len ); - for ( ; count > 0; count-- ) - { - otl_value_validate( p, table, value_format, valid ); - p += len; - } - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 2 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static otl_gpos_pairset_validate( OTL_Bytes table, - OTL_Bytes pos_table, - OTL_UInt format1, - OTL_UInt format2, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt len1, len2, count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - len1 = otl_value_length( format1 ); - len2 = otl_value_length( format2 ); - - OTL_CHECK( count * (len1+len2+2) ); - for ( ; count > 0; count-- ) - { - p += 2; /* ignore glyph id */ - otl_value_validate( p, pos_table, format1, valid ); - p += len1; - - otl_value_validate( p, pos_table, format2, valid ); - p += len2; - } - } - - static void - otl_gpos_lookup2_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch (format) - { - case 1: - { - OTL_UInt coverage, value1, value2, count; - - OTL_CHECK( 8 ); - coverage = OTL_NEXT_USHORT( p ); - value1 = OTL_NEXT_USHORT( p ); - value2 = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - { - otl_gpos_pairset_validate( table + OTL_NEXT_USHORT( p ), - table, value1, value2, valid ); - } - } - break; - - case 2: - { - OTL_UInt coverage, value1, value2, class1, class2, count1, count2; - OTL_UInt len1, len2; - - OTL_CHECK( 14 ); - coverage = OTL_NEXT_USHORT( p ); - value1 = OTL_NEXT_USHORT( p ); - value2 = OTL_NEXT_USHORT( p ); - class1 = OTL_NEXT_USHORT( p ); - class2 = OTL_NEXT_USHORT( p ); - count1 = OTL_NEXT_USHORT( p ); - count2 = OTL_NEXT_USHORT( p ); - - len1 = otl_value_length( value1 ); - len2 = otl_value_length( value2 ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( count1*count2*(len1+len2) ); - for ( ; count1 > 0; count1-- ) - { - for ( ; count2 > 0; count2-- ) - { - otl_value_validate( p, table, value1, valid ); - p += len1; - - otl_value_validate( p, table, value2, valid ); - p += len2; - } - } - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 3 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_gpos_lookup3_validate( OTL_Bytes table, - OTL_Valid valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch (format) - { - case 1: - { - OTL_UInt coverage, count, anchor1, anchor2; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( count*4 ); - for ( ; count > 0; count-- ) - { - anchor1 = OTL_NEXT_USHORT( p ); - anchor2 = OTL_NEXT_USHORT( p ); - - if ( anchor1 ) - otl_anchor_validate( table + anchor1, valid ); - - if ( anchor2 ) - otl_anchor_validate( table + anchor2, valid ); - } - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 4 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_base_array_validate( OTL_Bytes table, - OTL_UInt class_count, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count, count2; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*class_count*2 ); - for ( ; count > 0; count-- ) - for ( count2 = class_count; count2 > 0; count2-- ) - otl_anchor_validate( table + OTL_NEXT_USHORT( p ) ); - } - - - static void - otl_gpos_lookup4_validate( OTL_Bytes table, - OTL_Valid valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch (format) - { - case 1: - { - OTL_UInt mark_coverage, base_coverage, class_count; - OTL_UInt mark_array, base_array; - - OTL_CHECK( 10 ); - mark_coverage = OTL_NEXT_USHORT( p ); - base_coverage = OTL_NEXT_USHORT( p ); - class_count = OTL_NEXT_USHORT( p ); - mark_array = OTL_NEXT_USHORT( p ); - base_array = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + mark_coverage, valid ); - otl_coverage_validate( table + base_coverage, valid ); - - otl_mark_array_validate( table + mark_array, valid ); - otl_base_array_validate( table, class_count, valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 5 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_liga_attach_validate( OTL_Bytes table, - OTL_UInt class_count, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count, count2; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*class_count*2 ); - for ( ; count > 0; count-- ) - for ( count2 = class_count; class_count > 0; class_count-- ) - otl_anchor_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_liga_array_validate( OTL_Bytes table, - OTL_UInt class_count, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count, count2; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_liga_attach_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_gpos_lookup5_validate( OTL_Bytes table, - OTL_Valid valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch (format) - { - case 1: - { - OTL_UInt mark_coverage, lig_coverage, class_count; - OTL_UInt mar_array, lig_array; - - OTL_CHECK( 10 ); - mark_coverage = OTL_NEXT_USHORT( p ); - liga_coverage = OTL_NEXT_USHORT( p ); - class_count = OTL_NEXT_USHORT( p ); - mark_array = OTL_NEXT_USHORT( p ); - liga_array = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + mark_coverage, valid ); - otl_coverage_validate( table + liga_coverage, valid ); - - otl_mark_array_validate( table + mark_array, valid ); - otl_liga_array_validate( table + liga_array, class_count, valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 6 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - - static void - otl_mark2_array_validate( OTL_Bytes table, - OTL_UInt class_count, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count, count2; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*class_count*2 ); - for ( ; count > 0; count-- ) - for ( count2 = class_count; class_count > 0; class_count-- ) - otl_anchor_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_gpos_lookup6_validate( OTL_Bytes table, - OTL_Valid valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch (format) - { - case 1: - { - OTL_UInt coverage1, coverage2, class_count, array1, array2; - - OTL_CHECK( 10 ); - coverage1 = OTL_NEXT_USHORT( p ); - coverage2 = OTL_NEXT_USHORT( p ); - class_count = OTL_NEXT_USHORT( p ); - array1 = OTL_NEXT_USHORT( p ); - array2 = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage1, valid ); - otl_coverage_validate( table + coverage2, valid ); - - otl_mark_array_validate( table + array1, valid ); - otl_mark2_array_validate( table + array2, valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 7 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_pos_rule_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt glyph_count, pos_count; - - OTL_CHECK( 4 ); - glyph_count = OTL_NEXT_USHORT( p ); - pos_count = OTL_NEXT_USHORT( p ); - - if ( glyph_count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( (glyph_count-1)*2 + pos_count*4 ); - - /* XXX: check glyph indices and pos lookups */ - } - - - static void - otl_pos_rule_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_pos_rule_validate( table + OTL_NEXT_USHORT(p), valid ); - } - - - - static void - otl_pos_class_rule_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt glyph_count, pos_count; - - OTL_CHECK( 4 ); - glyph_count = OTL_NEXT_USHORT( p ); - pos_count = OTL_NEXT_USHORT( p ); - - if ( glyph_count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( (glyph_count-1)*2 + pos_count*4 ); - - /* XXX: check glyph indices and pos lookups */ - } - - - static void - otl_pos_class_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_pos_rule_validate( table + OTL_NEXT_USHORT(p), valid ); - } - - - static void - otl_gpos_lookup7_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch (format) - { - case 1: - { - OTL_UInt coverage, count; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_pos_rule_set_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - break; - - case 2: - { - OTL_UInt coverage, class_def, count; - - OTL_CHECK( 6 ); - coverage = OTL_NEXT_USHORT( p ); - class_def = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate ( table + coverage, valid ); - otl_class_definition_validate( table + class_def, valid ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_ - } - break; - - case 3: - { - OTL_UInt glyph_count, pos_count; - - OTL_CHECK( 4 ); - glyph_count = OTL_NEXT_USHORT( p ); - pos_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( glyph_count*2 + pos_count*4 ); - for ( ; glyph_count > 0; glyph_count ) - otl_coverage_validate( table + OTL_NEXT_USHORT( p ), valid ); - - /* XXX: check pos lookups */ - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 8 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_chain_pos_rule_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt back_count, input_count, ahead_count, pos_count; - - OTL_CHECK( 2 ); - back_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( back_count*2 + 2 ); - p += back_count*2; - - input_count = OTL_NEXT_USHORT( p ); - if ( input_count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( input_count*2 ); - p += (input_count-1)*2; - - ahead_count = OTL_NEXT_USHORT( p ); - OTL_CHECK( ahead_count*2 + 2 ); - p += ahead_count*2; - - pos_count = OTL_NEXT_USHORT( p ); - OTL_CHECK( pos_count*4 ); - } - - - static void - otl_chain_pos_rule_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_chain_pos_rule_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - - static void - otl_chain_pos_class_rule_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt back_count, input_count, ahead_count, pos_count; - - OTL_CHECK( 2 ); - back_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( back_count*2 + 2 ); - p += back_count*2; - - input_count = OTL_NEXT_USHORT( p ); - if ( input_count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( input_count*2 ); - p += (input_count-1)*2; - - ahead_count = OTL_NEXT_USHORT( p ); - OTL_CHECK( ahead_count*2 + 2 ); - p += ahead_count*2; - - pos_count = OTL_NEXT_USHORT( p ); - OTL_CHECK( pos_count*4 ); - } - - - static void - otl_chain_pos_class_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_chain_pos_class_rule_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_gpos_lookup8_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch (format) - { - case 1: - { - OTL_UInt coverage, count; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_chain_pos_rule_set_validate( table + OTL_NEXT_USHORT( p ), - valid ); - } - break; - - case 2: - { - OTL_UInt coverage, back_class, input_class, ahead_class, count; - - OTL_CHECK( 10 ); - coverage = OTL_NEXT_USHORT( p ); - back_class = OTL_NEXT_USHORT( p ); - input_class = OTL_NEXT_USHORT( p ); - ahead_class = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - otl_class_definition_validate( table + back_class, valid ); - otl_class_definition_validate( table + input_class, valid ); - otl_class_definition_validate( table + ahead_class, valid ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_chain_pos_class_set_validate( table + OTL_NEXT_USHORT( p ), - valid ); - } - break; - - case 3: - { - OTL_UInt back_count, input_count, ahead_count, pos_count, count; - - OTL_CHECK( 2 ); - back_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*back_count+2 ); - for ( count = back_count; count > 0; count-- ) - otl_coverage_validate( table + OTL_NEXT_USHORT( p ), valid ); - - input_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*input_count+2 ); - for ( count = input_count; count > 0; count-- ) - otl_coverage_validate( table + OTL_NEXT_USHORT( p ), valid ); - - ahead_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*ahead_count+2 ); - for ( count = ahead_count; count > 0; count-- ) - otl_coverage_validate( table + OTL_NEXT_USHORT( p ), valid ); - - pos_count = OTL_NEXT_USHORT( p ); - OTL_CHECK( pos_count*4 ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS LOOKUP TYPE 9 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_gpos_lookup9_validate( OTL_Bytes table, - OTL_Valid valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch (format) - { - case 1: - { - OTL_UInt lookup_type, lookup_offset; - OTL_ValidateFunc validate; - - OTL_CHECK( 6 ); - lookup_type = OTL_NEXT_USHORT( p ); - lookup_offset = OTL_NEXT_ULONG( p ); - - if ( lookup_type == 0 || lookup_type >= 9 ) - OTL_INVALID_DATA; - - validate = otl_gpos_validate_funcs[ lookup_type-1 ]; - validate( table + lookup_offset, valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - static OTL_ValidateFunc otl_gpos_validate_funcs[ 9 ] = - { - otl_gpos_lookup1_validate, - otl_gpos_lookup2_validate, - otl_gpos_lookup3_validate, - otl_gpos_lookup4_validate, - otl_gpos_lookup5_validate, - otl_gpos_lookup6_validate, - otl_gpos_lookup7_validate, - otl_gpos_lookup8_validate, - otl_gpos_lookup9_validate, - }; - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GPOS TABLE *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - - OTL_LOCALDEF( void ) - otl_gpos_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt scripts, features, lookups; - - OTL_CHECK( 10 ); - - if ( OTL_NEXT_USHORT( p ) != 0x10000UL ) - OTL_INVALID_DATA; - - scripts = OTL_NEXT_USHORT( p ); - features = OTL_NEXT_USHORT( p ); - lookups = OTL_NEXT_USHORT( p ); - - otl_script_list_validate ( table + scripts, valid ); - otl_feature_list_validate( table + features, valid ); - - otl_lookup_list_validate( table + lookups, 9, otl_gpos_validate_funcs, - valid ); - } - \ No newline at end of file diff --git a/nx-X11/extras/freetype2/src/otlayout/otlgpos.h b/nx-X11/extras/freetype2/src/otlayout/otlgpos.h deleted file mode 100644 index 1d10cab49..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlgpos.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __OTL_GPOS_H__ -#define __OTL_GPOS_H__ - -#include "otlayout.h" - -OTL_BEGIN_HEADER - - OTL_LOCAL( void ) - otl_gpos_validate( OTL_Bytes table, - OTL_Validator valid ); - -OTL_END_HEADER - -#endif /* __OTL_GPOS_H__ */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otlgsub.c b/nx-X11/extras/freetype2/src/otlayout/otlgsub.c deleted file mode 100644 index 13a8eae98..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlgsub.c +++ /dev/null @@ -1,867 +0,0 @@ -#include "otlgsub.h" -#include "otlcommn.h" - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GSUB LOOKUP TYPE 1 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - /* - * 1: Single Substitution - Table format(s) - * - * This table is used to substiture individual glyph indices - * with another one. There are only two sub-formats: - * - * Name Offset Size Description - * ------------------------------------------ - * format 0 2 sub-table format (1) - * offset 2 2 offset to coverage table - * delta 4 2 16-bit delta to apply on all - * covered glyph indices - * - * Name Offset Size Description - * ------------------------------------------ - * format 0 2 sub-table format (2) - * offset 2 2 offset to coverage table - * count 4 2 coverage table count - * substs[] 6 2*count substituted glyph indices, - * - */ - - static void - otl_gsub_lookup1_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt coverage; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - } - break; - - case 2: - { - OTL_UInt coverage, count; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( 2*count ); - - /* NB: we don't check that there are at most 'count' */ - /* elements in the coverage table. This is delayed */ - /* to the lookup function... */ - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - static OTL_Bool - otl_gsub_lookup1_apply( OTL_Bytes table, - OTL_Parser parser ) - { - OTL_Bytes p = table; - OTL_Bytes coverage; - OTL_UInt format, gindex, property; - OTL_Int index; - OTL_Bool subst = 0; - - if ( parser->context_len != 0xFFFFU && parser->context_len < 1 ) - goto Exit; - - gindex = otl_parser_get_gindex( parser ); - - if ( !otl_parser_check_property( parser, gindex, &property ) ) - goto Exit; - - format = OTL_NEXT_USHORT(p); - coverage = table + OTL_NEXT_USHORT(p); - index = otl_coverage_lookup( coverage, gindex ); - - if ( index >= 0 ) - { - switch ( format ) - { - case 1: - { - OTL_Int delta = OTL_NEXT_SHORT(p); - - gindex = ( gindex + delta ) & 0xFFFFU; - otl_parser_replace_1( parser, gindex ); - subst = 1; - } - break; - - case 2: - { - OTL_UInt count = OTL_NEXT_USHORT(p); - - if ( (OTL_UInt) index < count ) - { - p += index*2; - otl_parser_replace_1( parser, OTL_PEEK_USHORT(p) ); - subst = 1; - } - } - break; - - default: - ; - } - } - Exit: - return subst; - } - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GSUB LOOKUP TYPE 2 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - /* - * 2: Multiple Substitution - Table format(s) - * - * Replaces a single glyph with one or more glyphs. - * - * Name Offset Size Description - * ----------------------------------------------------------- - * format 0 2 sub-table format (1) - * offset 2 2 offset to coverage table - * count 4 2 coverage table count - * sequencess[] 6 2*count offsets to sequence items - * - * each sequence item has the following format: - * - * Name Offset Size Description - * ----------------------------------------------------------- - * count 0 2 number of replacement glyphs - * gindices[] 2 2*count string of glyph indices - */ - - static void - otl_seq_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - /* XXX: according to the spec, 'count' should be > 0 */ - /* we can deal with these cases pretty well however */ - - OTL_CHECK( 2*count ); - /* check glyph indices */ - } - - - static void - otl_gsub_lookup2_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format, coverage; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt coverage, seq_count; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - seq_count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( seq_count*2 ); - for ( ; seq_count > 0; seq_count-- ) - otl_seq_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - static OTL_Bool - otl_gsub_lookup2_apply( OTL_Bytes table, - OTL_Parser parser ) - { - OTL_Bytes p = table; - OTL_Bytes coverage, sequence; - OTL_UInt format, gindex, index, property; - OTL_Int index; - OTL_Bool subst = 0; - - if ( context_len != 0xFFFFU && context_len < 1 ) - goto Exit; - - gindex = otl_parser_get_gindex( parser ); - - if ( !otl_parser_check_property( parser, gindex, &property ) ) - goto Exit; - - p += 2; /* skip format */ - coverage = table + OTL_NEXT_USHORT(p); - seq_count = OTL_NEXT_USHORT(p); - index = otl_coverage_lookup( coverage, gindex ); - - if ( (OTL_UInt) index >= seq_count ) - goto Exit; - - p += index*2; - sequence = table + OTL_PEEK_USHORT(p); - p = sequence; - count = OTL_NEXT_USHORT(p); - - otl_parser_replace_n( parser, count, p ); - subst = 1; - - Exit: - return subst; - } - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GSUB LOOKUP TYPE 3 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - /* - * 3: Alternate Substitution - Table format(s) - * - * Replaces a single glyph by another one taken liberally - * in a list of alternatives - * - * Name Offset Size Description - * ----------------------------------------------------------- - * format 0 2 sub-table format (1) - * offset 2 2 offset to coverage table - * count 4 2 coverage table count - * alternates[] 6 2*count offsets to alternate items - * - * each alternate item has the following format: - * - * Name Offset Size Description - * ----------------------------------------------------------- - * count 0 2 number of replacement glyphs - * gindices[] 2 2*count string of glyph indices, each one - * is a valid alternative - */ - - static void - otl_alternate_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - /* XXX: check glyph indices */ - } - - - static void - otl_gsub_lookup3_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format, coverage; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt coverage, count; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_alternate_set_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - static OTL_Bool - otl_gsub_lookup3_apply( OTL_Bytes table, - OTL_Parser parser ) - { - OTL_Bytes p = table; - OTL_Bytes coverage, alternates; - OTL_UInt format, gindex, index, property; - OTL_Int index; - OTL_Bool subst = 0; - - OTL_GSUB_Alternate alternate = parser->alternate; - - if ( context_len != 0xFFFFU && context_len < 1 ) - goto Exit; - - if ( alternate == NULL ) - goto Exit; - - gindex = otl_parser_get_gindex( parser ); - - if ( !otl_parser_check_property( parser, gindex, &property ) ) - goto Exit; - - p += 2; /* skip format */ - coverage = table + OTL_NEXT_USHORT(p); - seq_count = OTL_NEXT_USHORT(p); - index = otl_coverage_lookup( coverage, gindex ); - - if ( (OTL_UInt) index >= seq_count ) - goto Exit; - - p += index*2; - alternates = table + OTL_PEEK_USHORT(p); - p = alternates; - count = OTL_NEXT_USHORT(p); - - gindex = alternate->handler_func( - gindex, count, p, alternate->handler_data ); - - otl_parser_replace_1( parser, gindex ); - subst = 1; - - Exit: - return subst; - } - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GSUB LOOKUP TYPE 4 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_ligature_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_UInt glyph_id, count; - - OTL_CHECK( 4 ); - glyph_id = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - if ( count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( 2*(count-1) ); - /* XXX: check glyph indices */ - } - - - static void - otl_ligature_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_ligature_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_gsub_lookup4_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format, coverage; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt coverage, count; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_ligature_set_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GSUB LOOKUP TYPE 5 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - - static void - otl_sub_rule_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt glyph_count, subst_count; - - OTL_CHECK( 4 ); - glyph_count = OTL_NEXT_USHORT( p ); - subst_count = OTL_NEXT_USHORT( p ); - - if ( glyph_count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( (glyph_count-1)*2 + substcount*4 ); - - /* XXX: check glyph indices and subst lookups */ - } - - - static void - otl_sub_rule_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_sub_rule_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_sub_class_rule_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_UInt glyph_count, subst_count; - - OTL_CHECK( 4 ); - glyph_count = OTL_NEXT_USHORT( p ); - subst_count = OTL_NEXT_USHORT( p ); - - if ( glyph_count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( (glyph_count-1)*2 + substcount*4 ); - - /* XXX: check glyph indices and subst lookups */ - } - - - static void - otl_sub_class_rule_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_sub_class_rule_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_gsub_lookup5_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format, coverage; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt coverage, count; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_sub_rule_set_validate( table + coverage, valid ); - } - break; - - case 2: - { - OTL_UInt coverage, class_def, count; - - OTL_CHECK( 6 ); - coverage = OTL_NEXT_USHORT( p ); - class_def = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate ( table + coverage, valid ); - otl_class_definition_validate( table + class_def, valid ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_sub_class_rule_set_validate( table + coveragen valid ); - } - break; - - case 3: - { - OTL_UInt glyph_count, subst_count, count; - - OTL_CHECK( 4 ); - glyph_count = OTL_NEXT_USHORT( p ); - subst_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*glyph_count + 4*subst_count ); - for ( count = glyph_count; count > 0; count-- ) - otl_coverage_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GSUB LOOKUP TYPE 6 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - - static void - otl_chain_sub_rule_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt back_count, input_count, ahead_count, subst_count, count; - - OTL_CHECK( 2 ); - back_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*back_count+2 ); - p += 2*back_count; - - input_count = OTL_NEXT_USHORT( p ); - if ( input_count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( 2*input_count ); - p += 2*(input_count-1); - - ahead_count = OTL_NEXT_USHORT( p ); - OTL_CHECK( 2*ahead_count + 2 ); - p += 2*ahead_count; - - count = OTL_NEXT_USHORT( p ); - OTL_CHECK( 4*count ); - - /* XXX: check glyph indices and subst lookups */ - } - - - static void - otl_chain_sub_rule_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_chain_sub_rule_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_chain_sub_class_rule_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt back_count, input_count, ahead_count, subst_count, count; - - OTL_CHECK( 2 ); - back_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*back_count+2 ); - p += 2*back_count; - - input_count = OTL_NEXT_USHORT( p ); - if ( input_count == 0 ) - OTL_INVALID_DATA; - - OTL_CHECK( 2*input_count ); - p += 2*(input_count-1); - - ahead_count = OTL_NEXT_USHORT( p ); - OTL_CHECK( 2*ahead_count + 2 ); - p += 2*ahead_count; - - count = OTL_NEXT_USHORT( p ); - OTL_CHECK( 4*count ); - - /* XXX: check class indices and subst lookups */ - } - - - - static void - otl_chain_sub_class_set_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_chain_sub_rule_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_gsub_lookup6_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format, coverage; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt coverage, count; - - OTL_CHECK( 4 ); - coverage = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_chain_sub_rule_set_validate( table + coverage, valid ); - } - break; - - case 2: - { - OTL_UInt coverage, back_class, input_class, ahead_class, count; - - OTL_CHECK( 10 ); - coverage = OTL_NEXT_USHORT( p ); - back_class = OTL_NEXT_USHORT( p ); - input_class = OTL_NEXT_USHORT( p ); - ahead_class = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - otl_coverage_validate( table + coverage, valid ); - - otl_class_definition_validate( table + back_class, valid ); - otl_class_definition_validate( table + input_class, valid ); - otl_class_definition_validate( table + ahead_class, valid ); - - OTL_CHECK( 2*count ); - for ( ; count > 0; count-- ) - otl_chain_sub_class_set( table + OTL_NEXT_USHORT( p ), valid ); - } - break; - - case 3: - { - OTL_UInt back_count, input_count, ahead_count, subst_count, count; - - OTL_CHECK( 2 ); - back_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*back_count+2 ); - for ( count = back_count; count > 0; count-- ) - otl_coverage_validate( table + OTL_NEXT_USHORT( p ), valid ); - - input_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*input_count+2 ); - for ( count = input_count; count > 0; count-- ) - otl_coverage_validate( table + OTL_NEXT_USHORT( p ), valid ); - - ahead_count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( 2*ahead_count+2 ); - for ( count = ahead_count; count > 0; count-- ) - otl_coverage_validate( table + OTL_NEXT_USHORT( p ), valid ); - - subst_count = OTL_NEXT_USHORT( p ); - OTL_CHECK( subst_count*4 ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GSUB LOOKUP TYPE 6 *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - static void - otl_gsub_lookup7_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt format, coverage; - - OTL_CHECK( 2 ); - format = OTL_NEXT_USHORT( p ); - switch ( format ) - { - case 1: - { - OTL_UInt lookup_type, lookup_offset; - OTL_ValidateFunc validate; - - OTL_CHECK( 6 ); - lookup_type = OTL_NEXT_USHORT( p ); - lookup_offset = OTL_NEXT_ULONG( p ); - - if ( lookup_type == 0 || lookup_type >= 7 ) - OTL_INVALID_DATA; - - validate = otl_gsub_validate_funcs[ lookup_type-1 ]; - validate( table + lookup_offset, valid ); - } - break; - - default: - OTL_INVALID_DATA; - } - } - - - static const OTL_ValidateFunc otl_gsub_validate_funcs[ 7 ] = - { - otl_gsub_lookup1_validate, - otl_gsub_lookup2_validate, - otl_gsub_lookup3_validate, - otl_gsub_lookup4_validate, - otl_gsub_lookup5_validate, - otl_gsub_lookup6_validate - }; - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** GSUB TABLE *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - - OTL_LOCALDEF( void ) - otl_gsub_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt scripts, features, lookups; - - OTL_CHECK( 10 ); - - if ( OTL_NEXT_USHORT( p ) != 0x10000UL ) - OTL_INVALID_DATA; - - scripts = OTL_NEXT_USHORT( p ); - features = OTL_NEXT_USHORT( p ); - lookups = OTL_NEXT_USHORT( p ); - - otl_script_list_validate ( table + scripts, valid ); - otl_feature_list_validate( table + features, valid ); - - otl_lookup_list_validate( table + lookups, 7, otl_gsub_validate_funcs, - valid ); - } diff --git a/nx-X11/extras/freetype2/src/otlayout/otlgsub.h b/nx-X11/extras/freetype2/src/otlayout/otlgsub.h deleted file mode 100644 index db5edecf1..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlgsub.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef __OTL_GSUB_H__ -#define __OTL_GSUB_H__ - -#include "otlayout.h" - -OTL_BEGIN_HEADER - - typedef OTL_UInt (*OTL_GSUB_AlternateFunc)( OTL_UInt gindex, - OTL_UInt count, - OTL_Bytes alternates, - OTL_Pointer data ); - - typedef struct OTL_GSUB_AlternateRec_ - { - OTL_GSUB_AlternateFunc handler_func; - OTL_Pointer handler_data; - - } OTL_GSUB_AlternateRec, *OTL_GSUB_Alternate; - - OTL_LOCAL( void ) - otl_gsub_validate( OTL_Bytes table, - OTL_Validator valid ); - -OTL_END_HEADER - -#endif /* __OTL_GSUB_H__ */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otljstf.c b/nx-X11/extras/freetype2/src/otlayout/otljstf.c deleted file mode 100644 index b0fa9f406..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otljstf.c +++ /dev/null @@ -1,189 +0,0 @@ -#include "otljstf.h" -#include "otlcommn.h" -#include "otlgpos.h" - - static void - otl_jstf_extender_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*2 ); - } - - - static void - otl_jstf_gsub_mods_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - OTL_CHECK( count*2 ); - - /* XXX: check GSUB lookup indices */ - } - - - static void - otl_jstf_gpos_mods_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - count = OTL_NEXT_USHORT( p ); - OTL_CHECK( count*2 ); - - /* XXX: check GPOS lookup indices */ - } - - - static void - otl_jstf_max_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_gpos_subtable_check( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_jstf_priority_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt offset; - - OTL_CHECK( 20 ); - - /* shrinkage GSUB enable/disable */ - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_gsub_mods_validate( table + val, valid ); - - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_gsub_mods_validate( table + val, valid ); - - /* shrinkage GPOS enable/disable */ - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_gpos_mods_validate( table + val, valid ); - - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_gpos_mods_validate( table + val, valid ); - - /* shrinkage JSTF max */ - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_max_validate( table + val, valid ); - - /* extension GSUB enable/disable */ - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_gsub_mods_validate( table + val, valid ); - - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_gsub_mods_validate( table + val, valid ); - - /* extension GPOS enable/disable */ - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_gpos_mods_validate( table + val, valid ); - - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_gpos_mods_validate( table + val, valid ); - - /* extension JSTF max */ - val = OTL_NEXT_USHORT( p ); - if ( val ) - otl_jstf_max_validate( table + val, valid ); - } - - static void - otl_jstf_lang_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 2 ); - - count = OTL_NEXT_USHORT( p ); - - OTL_CHECK( count*2 ); - for ( ; count > 0; count-- ) - otl_jstf_priority_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - - - static void - otl_jstf_script_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count, extender, default_lang; - - OTL_CHECK( 6 ); - extender = OTL_NEXT_USHORT( p ); - default_lang = OTL_NEXT_USHORT( p ); - count = OTL_NEXT_USHORT( p ); - - if ( extender ) - otl_jstf_extender_validate( table + extender, valid ); - - if ( default_lang ) - otl_jstf_lang_validate( table + default_lang, valid ); - - OTL_CHECK( 6*count ); - - for ( ; count > 0; count-- ) - { - p += 4; /* ignore tag */ - otl_jstf_lang_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - } - - - OTL_LOCALDEF( void ) - otl_jstf_validate( OTL_Bytes table, - OTL_Validator valid ) - { - OTL_Bytes p = table; - OTL_UInt count; - - OTL_CHECK( 4 ); - - if ( OTL_NEXT_ULONG( p ) != 0x10000UL ) - OTL_INVALID_DATA; - - count = OTL_NEXT_USHORT( p ); - OTL_CHECK( count*6 ); - - for ( ; count > 0; count++ ) - { - p += 4; /* ignore tag */ - otl_jstf_script_validate( table + OTL_NEXT_USHORT( p ), valid ); - } - } - \ No newline at end of file diff --git a/nx-X11/extras/freetype2/src/otlayout/otljstf.h b/nx-X11/extras/freetype2/src/otlayout/otljstf.h deleted file mode 100644 index c8a98a64a..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otljstf.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef __OTL_JSTF_H__ -#define __OTL_JSTF_H__ - -#include "otlayout.h" - -OTL_BEGIN_HEADER - - OTL_LOCAL( void ) - otl_jstf_validate( OTL_Bytes table, - OTL_Validator valid ); - -OTL_END_HEADER - -#endif /* __OTL_JSTF_H__ */ \ No newline at end of file diff --git a/nx-X11/extras/freetype2/src/otlayout/otlparse.c b/nx-X11/extras/freetype2/src/otlayout/otlparse.c deleted file mode 100644 index 705c0c60f..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlparse.c +++ /dev/null @@ -1,142 +0,0 @@ -#include "otlparse.h" -#include "otlutils.h" - - static void - otl_string_ensure( OTL_String string, - OTL_UInt count, - OTL_Parser parser ) - { - count += string->length; - - if ( count > string->capacity ) - { - OTL_UInt old_count = string->capacity; - OTL_UInt new_count = old_count; - OTL_Memory memory = parser->memory; - - while ( new_count < count ) - new_count += (new_count >> 1) + 16; - - if ( OTL_MEM_RENEW_ARRAY( string->glyphs, old_count, new_count ) ) - otl_parser_error( parser, OTL_Parse_Err_Memory ); - - string->capacity = new_count; - } - } - -#define OTL_STRING_ENSURE(str,count,parser) \ - OTL_BEGIN_STMNT \ - if ( (str)->length + (count) > (str)>capacity ) \ - otl_string_ensure( str, count, parser ); \ - OTL_END_STMNT - - - OTL_LOCALDEF( OTL_UInt ) - otl_parser_get_gindex( OTL_Parser parser ) - { - OTL_String in = parser->str_in; - - if ( in->cursor >= in->num_glyphs ) - otl_parser_error( parser, OTL_Err_Parser_Internal ); - - return in->str[ in->cursor ].gindex; - } - - - OTL_LOCALDEF( void ) - otl_parser_error( OTL_Parser parser, - OTL_ParseError error; ) - { - parser->error = error; - otl_longjmp( parser->jump_buffer, 1 ); - } - -#define OTL_PARSER_UNCOVERED(x) otl_parser_error( x, OTL_Parse_Err_UncoveredGlyph ); - - OTL_LOCAL( void ) - otl_parser_check_property( OTL_Parser parser, - OTL_UInt gindex, - OTL_UInt flags, - OTL_UInt *aproperty ); - - OTL_LOCALDEF( void ) - otl_parser_replace_1( OTL_Parser parser, - OTL_UInt gindex ) - { - OTL_String in = parser->str_in; - OTL_String out = parser->str_out; - OTL_StringGlyph glyph, in_glyph; - - /* sanity check */ - if ( in == NULL || - out == NULL || - in->length == 0 || - in->cursor >= in->length ) - { - /* report as internal error, since these should */ - /* never happen !! */ - otl_parser_error( parser, OTL_Err_Parse_Internal ); - } - - OTL_STRING_ENSURE( out, 1, parser ); - glyph = out->glyphs + out->length; - in_glyph = in->glyphs + in->cursor; - - glyph->gindex = gindex; - glyph->property = in_glyph->property; - glyph->lig_component = in_glyph->lig_component; - glyph->lig_id = in_glyph->lig_id; - - out->length += 1; - out->cursor = out->length; - in->cursor += 1; - } - - OTL_LOCALDEF( void ) - otl_parser_replace_n( OTL_Parser parser, - OTL_UInt count, - OTL_Bytes indices ) - { - OTL_UInt lig_component, lig_id, property; - OTL_String in = parser->str_in; - OTL_String out = parser->str_out; - OTL_StringGlyph glyph, in_glyph; - OTL_Bytes p = indices; - - /* sanity check */ - if ( in == NULL || - out == NULL || - in->length == 0 || - in->cursor >= in->length ) - { - /* report as internal error, since these should */ - /* never happen !! */ - otl_parser_error( parser, OTL_Err_Parse_Internal ); - } - - OTL_STRING_ENSURE( out, count, parser ); - glyph = out->glyphs + out->length; - in_glyph = in->glyphs + in->cursor; - - glyph->gindex = gindex; - - lig_component = in_glyph->lig_component; - lig_id = in_glyph->lid_id; - property = in_glyph->property; - - for ( ; count > 0; count-- ) - { - glyph->gindex = OTL_NEXT_USHORT(p); - glyph->property = property; - glyph->lig_component = lig_component; - glyph->lig_id = lig_id; - - out->length ++; - } - - out->cursor = out->length; - in->cursor += 1; - } - - - diff --git a/nx-X11/extras/freetype2/src/otlayout/otlparse.h b/nx-X11/extras/freetype2/src/otlayout/otlparse.h deleted file mode 100644 index 92f34bfdc..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlparse.h +++ /dev/null @@ -1,99 +0,0 @@ -#ifndef __OTL_PARSER_H__ -#define __OTL_PARSER_H__ - -#include "otlayout.h" -#include "otlgdef.h" -#include "otlgsub.h" -#include "otlgpos.h" - -OTL_BEGIN_HEADER - - typedef struct OTL_ParserRec_* OTL_Parser; - - typedef struct OTL_StringRec_* OTL_String; - - typedef struct OTL_StringGlyphRec_ - { - OTL_UInt gindex; - OTL_UInt properties; - OTL_UInt lig_component; - OTL_UInt lig_id; - - } OTL_StringGlyphRec, *OTL_StringGlyph; - - typedef struct OTL_StringRec_ - { - OTL_StringGlyph glyphs; - OTL_UInt cursor; - OTL_UInt length; - OTL_UInt capacity; - - } OTL_StringRec; - - typedef struct OTL_ParserRec_ - { - OTL_Bytes tab_gdef; - OTL_Bytes tab_gsub; - OTL_Bytes tab_gpos; - OTL_Bytes tab_base; - OTL_Bytes tab_jstf; - - OTL_Alternate alternate; /* external alternate handler */ - - OTL_UInt context_len; - OTL_UInt markup_flags; - - OTL_jmp_buf jump_buffer; - OTL_Memory memory; - OTL_Error error; - - OTL_StringRec strings[2]; - OTL_String str_in; - OTL_String str_out; - - } OTL_ParserRec; - - typedef enum - { - OTL_Err_Parser_Ok = 0, - OTL_Err_Parser_InvalidData, - OTL_Err_Parser_UncoveredGlyph - - } OTL_ParseError; - - OTL_LOCAL( OTL_UInt ) - otl_parser_get_gindex( OTL_Parser parser ); - - - OTL_LOCAL( void ) - otl_parser_error( OTL_Parser parser, OTL_ParserError error ); - -#define OTL_PARSER_UNCOVERED(x) \ - otl_parser_error( x, OTL_Err_Parser_UncoveredGlyph ) - - OTL_LOCAL( void ) - otl_parser_check_property( OTL_Parser parser, - OTL_UInt gindex, - OTL_UInt flags, - OTL_UInt *aproperty ); - - /* copy current input glyph to output */ - OTL_LOCAL( void ) - otl_parser_copy_1( OTL_Parser parser ); - - /* copy current input glyph to output, replacing its index */ - OTL_LOCAL( void ) - otl_parser_replace_1( OTL_Parser parser, - OTL_UInt gindex ); - - /* copy current input glyph to output, replacing it by several indices */ - /* read directly from the table */ - OTL_LOCAL( void ) - otl_parser_replace_n( OTL_Parser parser, - OTL_UInt count, - OTL_Bytes indices ); - -OTL_END_HEADER - -#endif /* __OTL_PARSER_H__ */ - diff --git a/nx-X11/extras/freetype2/src/otlayout/otltable.h b/nx-X11/extras/freetype2/src/otlayout/otltable.h deleted file mode 100644 index af7bd78a5..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otltable.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef __OTL_TABLE_H__ -#define __OTL_TABLE_H__ - -#include "otlayout.h" - -OTL_BEGIN_HEADER - - typedef struct OTL_TableRec_* OTL_Table; - - typedef enum - { - OTL_TABLE_TYPE_GDEF = 1, - OTL_TABLE_TYPE_GSUB, - OTL_TABLE_TYPE_GPOS, - OTL_TABLE_TYPE_BASE, - OTL_TABLE_TYPE_JSTF - - } OTL_TableType; - - - /* this may become a private structure later */ - typedef struct OTL_TableRec_ - { - OTL_TableType type; - OTL_Bytes base; - OTL_Bytes limit; - - OTL_Tag script_tag; - OTL_Tag lang_tag; - - OTL_UInt lookup_count; - OTL_Byte* lookup_flags; - - OTL_UInt feature_count; - OTL_Tag feature_tags; - OTL_Byte* feature_flags; - - } OTL_TableRec; - - - OTL_API( OTL_Error ) - otl_table_validate( OTL_Bytes table, - OTL_Size size, - OTL_TableType type, - OTL_Size *abyte_size ); - - OTL_API( void ) - otl_table_init( OTL_Table table, - OTL_TableType type, - OTL_Bytes base, - OTL_Size size ); - - OTL_API( void ) - otl_table_set_script( OTL_Table table, - OTL_ScriptTag script, - OTL_LangTag language ); - -OTL_END_HEADER - -#endif /* __OTL_TABLE_H__ */ diff --git a/nx-X11/extras/freetype2/src/otlayout/otltags.h b/nx-X11/extras/freetype2/src/otlayout/otltags.h deleted file mode 100644 index d954b5851..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otltags.h +++ /dev/null @@ -1,88 +0,0 @@ -/* this file may be included several times by other parts of */ -/* the OpenType Layout library.. don't add #ifdef .. #endif */ -/* delimiters to it... */ - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** SCRIPT TAGS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -#ifndef OTL_SCRIPT_TAG -#define OTL_SCRIPT_TAG(c1,c2,c3,c4,s,n) /* void */ -#endif - -OTL_SCRIPT_TAG( 'a','r','a','b', "Arabic", ARABIC ) -OTL_SCRIPT_TAG( 'a','r','m','n', "Armenian", ARMENIAN ) -OTL_SCRIPT_TAG( 'b','e','n','g', "Bengali", BENGALI ) -OTL_SCRIPT_TAG( 'b','o','p','o', "Bopomofo", BOPOMOFO ) -OTL_SCRIPT_TAG( 'b','r','a','i', "Braille", BRAILLE ) -OTL_SCRIPT_TAG( 'b','y','z','m', "Byzantine Music", BYZANTINE_MUSIC ) -OTL_SCRIPT_TAG( 'c','a','n','s', "Canadian Syllabic", CANADIAN ) -OTL_SCRIPT_TAG( 'c','h','e','r', "Cherokee", CHEROKEE ) -OTL_SCRIPT_TAG( 'h','a','n','i', "CJK Ideographic", CJK ) -OTL_SCRIPT_TAG( 'c','y','r','l', "Cyrillic", CYRILLIC ) -OTL_SCRIPT_TAG( 'd','f','l','t', "Default", DEFAULT ) -OTL_SCRIPT_TAG( 'd','e','v','a', "Devanagari", DEVANAGARI ) -OTL_SCRIPT_TAG( 'e','t','h','i', "Ethiopic", ETHIOPIC ) -OTL_SCRIPT_TAG( 'g','e','o','r', "Georgian", GEORGIAN ) -OTL_SCRIPT_TAG( 'g','r','e','k', "Greek", GREEK ) -OTL_SCRIPT_TAG( 'g','u','j','r', "Gujarati", GUJARATI ) -OTL_SCRIPT_TAG( 'g','u','r','u', "Gurmukhi", GURMUKHI ) -OTL_SCRIPT_TAG( 'j','a','m','o', "Hangul Jamo", JAMO ) -OTL_SCRIPT_TAG( 'h','a','n','g', "Hangul", HANGUL ) -OTL_SCRIPT_TAG( 'h','e','b','r', "Hebrew", HEBREW ) -OTL_SCRIPT_TAG( 'h','i','r','a', "Hiragana", HIRAGANA ) /* not in TAGS.txt */ -OTL_SCRIPT_TAG( 'k','n','d','a', "Kannada", KANNADA ) -OTL_SCRIPT_TAG( 'k','a','n','a', "Katakana", KATAKANA ) /* in TAGS.txt, means Hiragana _and_ Katakana */ -OTL_SCRIPT_TAG( 'k','h','m','r', "Khmer", KHMER ) -OTL_SCRIPT_TAG( 'l','a','o',' ', "Lao", LAO ) -OTL_SCRIPT_TAG( 'l','a','t','n', "Latin", LATIN ) -OTL_SCRIPT_TAG( 'm','l','y','m', "Malayalam", MALAYALAM ) -OTL_SCRIPT_TAG( 'm','o','n','g', "Mongolian", MONGOLIAN ) -OTL_SCRIPT_TAG( 'm','y','m','r', "Myanmar", MYANMAR ) -OTL_SCRIPT_TAG( 'o','g','a','m', "Ogham", OGHAM ) -OTL_SCRIPT_TAG( 'o','r','y','a', "Oriya", ORIYA ) -OTL_SCRIPT_TAG( 'r','u','n','r', "Runic", RUNIC ) -OTL_SCRIPT_TAG( 's','i','n','h', "Sinhala", SINHALA ) -OTL_SCRIPT_TAG( 's','y','r','c', "Syriac", SYRIAC ) -OTL_SCRIPT_TAG( 't','a','m','l', "Tamil", TAMIL ) -OTL_SCRIPT_TAG( 't','e','l','u', "Telugu", TELUGU ) -OTL_SCRIPT_TAG( 't','h','a','a', "Thaana", THAANA ) -OTL_SCRIPT_TAG( 't','h','a','i', "Thai", THAI ) -OTL_SCRIPT_TAG( 't','i','b','t', "Tibetan", TIBETAN ) -OTL_SCRIPT_TAG( 'y','i',' ',' ', "Yi", YI ) - -#undef OTL_SCRIPT_TAG - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** LANGUAGE TAGS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -#ifndef OTL_LANG_TAG -#define OTL_LANG_TAG(c1,c2,c3,c4,s,n) /* void */ -#endif - -#undef OTL_LANG_TAG - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** FEATURE TAGS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -#ifndef OTL_FEATURE_TAG -#define OTL_FEATURE_TAG(c1,c2,c3,c4,s,n) /* void */ -#endif - -#undef OTL_FEATURE_TAG - diff --git a/nx-X11/extras/freetype2/src/otlayout/otlutils.h b/nx-X11/extras/freetype2/src/otlayout/otlutils.h deleted file mode 100644 index de50f66f0..000000000 --- a/nx-X11/extras/freetype2/src/otlayout/otlutils.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef __OTLAYOUT_UTILS_H__ -#define __OTLAYOUT_UTILS_H__ - -#include "otlayout.h" - -OTL_BEGIN_HEADER - - OTL_LOCAL( OTL_Error ) - otl_mem_alloc( OTL_Pointer* pblock, - OTL_ULong size, - OTL_Memory memory ); - - OTL_LOCAL( void ) - otl_mem_free( OTL_Pointer* pblock, - OTL_Memory memory ); - - OTL_LOCAL( OTL_Error ) - otl_mem_realloc( OTL_Pointer *pblock, - OTL_ULong cur_size, - OTL_ULong new_size, - OTL_Memory memory ); - -#define OTL_MEM_ALLOC(p,s) otl_mem_alloc( (void**)&(p), (s), memory ) -#define OTL_MEM_FREE(p) otl_mem_free( (void**)&(p), memory ) -#define OTL_MEM_REALLOC(p,c,n) otl_mem_realloc( (void**)&(p), (c), (s), memory ) - -#define OTL_MEM_NEW(p) OTL_MEM_ALLOC(p,sizeof(*(p))) -#define OTL_MEM_NEW_ARRAY(p,c) OTL_MEM_ALLOC(p,(c)*sizeof(*(p))) -#define OTL_MEM_RENEW_ARRAY(p,c,n) OTL_MEM_REALLOC(p,(c)*sizeof(*(p)),(n)*sizeof(*(p))) - -OTL_END_HEADER - -#endif /* __OTLAYOUT_UTILS_H__ */ diff --git a/nx-X11/extras/freetype2/src/pcf/Jamfile b/nx-X11/extras/freetype2/src/pcf/Jamfile deleted file mode 100644 index 3a884f534..000000000 --- a/nx-X11/extras/freetype2/src/pcf/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/pcf Jamfile (c) 2001, 2003 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) pcf ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = pcfdrivr pcfread pcfutil ; - } - else - { - _sources = pcf ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/pcf Jamfile diff --git a/nx-X11/extras/freetype2/src/pcf/descrip.mms b/nx-X11/extras/freetype2/src/pcf/descrip.mms deleted file mode 100644 index a3fd23180..000000000 --- a/nx-X11/extras/freetype2/src/pcf/descrip.mms +++ /dev/null @@ -1,35 +0,0 @@ -# -# FreeType 2 pcf driver compilation rules for VMS -# - - -# Copyright (C) 2001, 2002 by -# Francesco Zappa Nardelli -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.pcf]) - -OBJS=pcf.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/pcf/module.mk b/nx-X11/extras/freetype2/src/pcf/module.mk deleted file mode 100644 index 614c31920..000000000 --- a/nx-X11/extras/freetype2/src/pcf/module.mk +++ /dev/null @@ -1,32 +0,0 @@ -# -# FreeType 2 PCF module definition -# - -# Copyright 2000 by -# Francesco Zappa Nardelli -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -make_module_list: add_pcf_driver - -add_pcf_driver: - $(OPEN_DRIVER)pcf_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)pcf $(ECHO_DRIVER_DESC)pcf bitmap fonts$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/pcf/pcf.c b/nx-X11/extras/freetype2/src/pcf/pcf.c deleted file mode 100644 index 11d5b7b2a..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcf.c +++ /dev/null @@ -1,36 +0,0 @@ -/* pcf.c - - FreeType font driver for pcf fonts - - Copyright 2000-2001, 2003 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - - -#include <ft2build.h> -#include "pcfutil.c" -#include "pcfread.c" -#include "pcfdrivr.c" - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/pcf.h b/nx-X11/extras/freetype2/src/pcf/pcf.h deleted file mode 100644 index 64acefc4e..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcf.h +++ /dev/null @@ -1,237 +0,0 @@ -/* pcf.h - - FreeType font driver for pcf fonts - - Copyright (C) 2000, 2001, 2002, 2003 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#ifndef __PCF_H__ -#define __PCF_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H -#include FT_INTERNAL_STREAM_H - - -FT_BEGIN_HEADER - - typedef struct PCF_TableRec_ - { - FT_ULong type; - FT_ULong format; - FT_ULong size; - FT_ULong offset; - - } PCF_TableRec, *PCF_Table; - - - typedef struct PCF_TocRec_ - { - FT_ULong version; - FT_ULong count; - PCF_Table tables; - - } PCF_TocRec, *PCF_Toc; - - - typedef struct PCF_ParsePropertyRec_ - { - FT_Long name; - FT_Byte isString; - FT_Long value; - - } PCF_ParsePropertyRec, *PCF_ParseProperty; - - - typedef struct PCF_PropertyRec_ - { - FT_String* name; - FT_Byte isString; - - union - { - FT_String* atom; - FT_Long integer; - FT_ULong cardinal; - - } value; - - } PCF_PropertyRec, *PCF_Property; - - - typedef struct PCF_Compressed_MetricRec_ - { - FT_Byte leftSideBearing; - FT_Byte rightSideBearing; - FT_Byte characterWidth; - FT_Byte ascent; - FT_Byte descent; - - } PCF_Compressed_MetricRec, *PCF_Compressed_Metric; - - - typedef struct PCF_MetricRec_ - { - FT_Short leftSideBearing; - FT_Short rightSideBearing; - FT_Short characterWidth; - FT_Short ascent; - FT_Short descent; - FT_Short attributes; - FT_ULong bits; - - } PCF_MetricRec, *PCF_Metric; - - - typedef struct PCF_AccelRec_ - { - FT_Byte noOverlap; - FT_Byte constantMetrics; - FT_Byte terminalFont; - FT_Byte constantWidth; - FT_Byte inkInside; - FT_Byte inkMetrics; - FT_Byte drawDirection; - FT_Long fontAscent; - FT_Long fontDescent; - FT_Long maxOverlap; - PCF_MetricRec minbounds; - PCF_MetricRec maxbounds; - PCF_MetricRec ink_minbounds; - PCF_MetricRec ink_maxbounds; - - } PCF_AccelRec, *PCF_Accel; - - - typedef struct PCF_EncodingRec_ - { - FT_Long enc; - FT_UShort glyph; - - } PCF_EncodingRec, *PCF_Encoding; - - - typedef struct PCF_FaceRec_ - { - FT_FaceRec root; - - FT_StreamRec gzip_stream; - FT_Stream gzip_source; - - char* charset_encoding; - char* charset_registry; - - PCF_TocRec toc; - PCF_AccelRec accel; - - int nprops; - PCF_Property properties; - - FT_Long nmetrics; - PCF_Metric metrics; - FT_Long nencodings; - PCF_Encoding encodings; - - FT_Short defaultChar; - - FT_ULong bitmapsFormat; - - FT_CharMap charmap_handle; - FT_CharMapRec charmap; /* a single charmap per face */ - - } PCF_FaceRec, *PCF_Face; - - - /* macros for pcf font format */ - -#define LSBFirst 0 -#define MSBFirst 1 - -#define PCF_FILE_VERSION ( ( 'p' << 24 ) | \ - ( 'c' << 16 ) | \ - ( 'f' << 8 ) | 1 ) -#define PCF_FORMAT_MASK 0xFFFFFF00L - -#define PCF_DEFAULT_FORMAT 0x00000000L -#define PCF_INKBOUNDS 0x00000200L -#define PCF_ACCEL_W_INKBOUNDS 0x00000100L -#define PCF_COMPRESSED_METRICS 0x00000100L - -#define PCF_FORMAT_MATCH( a, b ) \ - ( ( (a) & PCF_FORMAT_MASK ) == ( (b) & PCF_FORMAT_MASK ) ) - -#define PCF_GLYPH_PAD_MASK ( 3 << 0 ) -#define PCF_BYTE_MASK ( 1 << 2 ) -#define PCF_BIT_MASK ( 1 << 3 ) -#define PCF_SCAN_UNIT_MASK ( 3 << 4 ) - -#define PCF_BYTE_ORDER( f ) \ - ( ( (f) & PCF_BYTE_MASK ) ? MSBFirst : LSBFirst ) -#define PCF_BIT_ORDER( f ) \ - ( ( (f) & PCF_BIT_MASK ) ? MSBFirst : LSBFirst ) -#define PCF_GLYPH_PAD_INDEX( f ) \ - ( (f) & PCF_GLYPH_PAD_MASK ) -#define PCF_GLYPH_PAD( f ) \ - ( 1 << PCF_GLYPH_PAD_INDEX( f ) ) -#define PCF_SCAN_UNIT_INDEX( f ) \ - ( ( (f) & PCF_SCAN_UNIT_MASK ) >> 4 ) -#define PCF_SCAN_UNIT( f ) \ - ( 1 << PCF_SCAN_UNIT_INDEX( f ) ) -#define PCF_FORMAT_BITS( f ) \ - ( (f) & ( PCF_GLYPH_PAD_MASK | \ - PCF_BYTE_MASK | \ - PCF_BIT_MASK | \ - PCF_SCAN_UNIT_MASK ) ) - -#define PCF_SIZE_TO_INDEX( s ) ( (s) == 4 ? 2 : (s) == 2 ? 1 : 0 ) -#define PCF_INDEX_TO_SIZE( b ) ( 1 << b ) - -#define PCF_FORMAT( bit, byte, glyph, scan ) \ - ( ( PCF_SIZE_TO_INDEX( scan ) << 4 ) | \ - ( ( (bit) == MSBFirst ? 1 : 0 ) << 3 ) | \ - ( ( (byte) == MSBFirst ? 1 : 0 ) << 2 ) | \ - ( PCF_SIZE_TO_INDEX( glyph ) << 0 ) ) - -#define PCF_PROPERTIES ( 1 << 0 ) -#define PCF_ACCELERATORS ( 1 << 1 ) -#define PCF_METRICS ( 1 << 2 ) -#define PCF_BITMAPS ( 1 << 3 ) -#define PCF_INK_METRICS ( 1 << 4 ) -#define PCF_BDF_ENCODINGS ( 1 << 5 ) -#define PCF_SWIDTHS ( 1 << 6 ) -#define PCF_GLYPH_NAMES ( 1 << 7 ) -#define PCF_BDF_ACCELERATORS ( 1 << 8 ) - -#define GLYPHPADOPTIONS 4 /* I'm not sure about this */ - - FT_LOCAL( FT_Error ) - pcf_load_font( FT_Stream, - PCF_Face ); - -FT_END_HEADER - -#endif /* __PCF_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/pcfdrivr.c b/nx-X11/extras/freetype2/src/pcf/pcfdrivr.c deleted file mode 100644 index b6b04b98f..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcfdrivr.c +++ /dev/null @@ -1,651 +0,0 @@ -/* pcfdrivr.c - - FreeType font driver for pcf files - - Copyright (C) 2000, 2001, 2002, 2003, 2004 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#include <ft2build.h> - -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H -#include FT_GZIP_H -#include FT_LZW_H -#include FT_ERRORS_H -#include FT_BDF_H - -#include "pcf.h" -#include "pcfdrivr.h" -#include "pcfread.h" - -#include "pcferror.h" -#include "pcfutil.h" - -#undef FT_COMPONENT -#define FT_COMPONENT trace_pcfread - -#include FT_SERVICE_BDF_H -#include FT_SERVICE_XFREE86_NAME_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_pcfdriver - - - typedef struct PCF_CMapRec_ - { - FT_CMapRec root; - FT_UInt num_encodings; - PCF_Encoding encodings; - - } PCF_CMapRec, *PCF_CMap; - - - FT_CALLBACK_DEF( FT_Error ) - pcf_cmap_init( FT_CMap pcfcmap, /* PCF_CMap */ - FT_Pointer init_data ) - { - PCF_CMap cmap = (PCF_CMap)pcfcmap; - PCF_Face face = (PCF_Face)FT_CMAP_FACE( pcfcmap ); - - FT_UNUSED( init_data ); - - - cmap->num_encodings = (FT_UInt)face->nencodings; - cmap->encodings = face->encodings; - - return PCF_Err_Ok; - } - - - FT_CALLBACK_DEF( void ) - pcf_cmap_done( FT_CMap pcfcmap ) /* PCF_CMap */ - { - PCF_CMap cmap = (PCF_CMap)pcfcmap; - - - cmap->encodings = NULL; - cmap->num_encodings = 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - pcf_cmap_char_index( FT_CMap pcfcmap, /* PCF_CMap */ - FT_UInt32 charcode ) - { - PCF_CMap cmap = (PCF_CMap)pcfcmap; - PCF_Encoding encodings = cmap->encodings; - FT_UInt min, max, mid; - FT_UInt result = 0; - - - min = 0; - max = cmap->num_encodings; - - while ( min < max ) - { - FT_UInt32 code; - - - mid = ( min + max ) >> 1; - code = encodings[mid].enc; - - if ( charcode == code ) - { - result = encodings[mid].glyph + 1; - break; - } - - if ( charcode < code ) - max = mid; - else - min = mid + 1; - } - - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - pcf_cmap_char_next( FT_CMap pcfcmap, /* PCF_CMap */ - FT_UInt32 *acharcode ) - { - PCF_CMap cmap = (PCF_CMap)pcfcmap; - PCF_Encoding encodings = cmap->encodings; - FT_UInt min, max, mid; - FT_UInt32 charcode = *acharcode + 1; - FT_UInt result = 0; - - - min = 0; - max = cmap->num_encodings; - - while ( min < max ) - { - FT_UInt32 code; - - - mid = ( min + max ) >> 1; - code = encodings[mid].enc; - - if ( charcode == code ) - { - result = encodings[mid].glyph + 1; - goto Exit; - } - - if ( charcode < code ) - max = mid; - else - min = mid + 1; - } - - charcode = 0; - if ( min < cmap->num_encodings ) - { - charcode = encodings[min].enc; - result = encodings[min].glyph + 1; - } - - Exit: - *acharcode = charcode; - return result; - } - - - FT_CALLBACK_TABLE_DEF - const FT_CMap_ClassRec pcf_cmap_class = - { - sizeof ( PCF_CMapRec ), - pcf_cmap_init, - pcf_cmap_done, - pcf_cmap_char_index, - pcf_cmap_char_next - }; - - - FT_CALLBACK_DEF( void ) - PCF_Face_Done( FT_Face pcfface ) /* PCF_Face */ - { - PCF_Face face = (PCF_Face)pcfface; - FT_Memory memory = FT_FACE_MEMORY( face ); - - - FT_FREE( face->encodings ); - FT_FREE( face->metrics ); - - /* free properties */ - { - PCF_Property prop = face->properties; - FT_Int i; - - - for ( i = 0; i < face->nprops; i++ ) - { - prop = &face->properties[i]; - - FT_FREE( prop->name ); - if ( prop->isString ) - FT_FREE( prop->value ); - } - - FT_FREE( face->properties ); - } - - FT_FREE( face->toc.tables ); - FT_FREE( pcfface->family_name ); - FT_FREE( pcfface->available_sizes ); - FT_FREE( face->charset_encoding ); - FT_FREE( face->charset_registry ); - - FT_TRACE4(( "PCF_Face_Done: done face\n" )); - - /* close gzip/LZW stream if any */ - if ( pcfface->stream == &face->gzip_stream ) - { - FT_Stream_Close( &face->gzip_stream ); - pcfface->stream = face->gzip_source; - } - } - - - FT_CALLBACK_DEF( FT_Error ) - PCF_Face_Init( FT_Stream stream, - FT_Face pcfface, /* PCF_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - PCF_Face face = (PCF_Face)pcfface; - FT_Error error = PCF_Err_Ok; - - FT_UNUSED( num_params ); - FT_UNUSED( params ); - FT_UNUSED( face_index ); - - - error = pcf_load_font( stream, face ); - if ( error ) - { - FT_Error error2; - - - /* this didn't work, try gzip support! */ - error2 = FT_Stream_OpenGzip( &face->gzip_stream, stream ); - if ( FT_ERROR_BASE( error2 ) == FT_Err_Unimplemented_Feature ) - goto Fail; - - error = error2; - if ( error ) - { - FT_Error error3; - - - /* this didn't work, try LZW support! */ - error3 = FT_Stream_OpenLZW( &face->gzip_stream, stream ); - if ( FT_ERROR_BASE( error3 ) == FT_Err_Unimplemented_Feature ) - goto Fail; - - error = error3; - if ( error ) - goto Fail; - - face->gzip_source = stream; - pcfface->stream = &face->gzip_stream; - - stream = pcfface->stream; - - error = pcf_load_font( stream, face ); - if ( error ) - goto Fail; - } - else - { - face->gzip_source = stream; - pcfface->stream = &face->gzip_stream; - - stream = pcfface->stream; - - error = pcf_load_font( stream, face ); - if ( error ) - goto Fail; - } - } - - /* set up charmap */ - { - FT_String *charset_registry = face->charset_registry; - FT_String *charset_encoding = face->charset_encoding; - FT_Bool unicode_charmap = 0; - - - if ( charset_registry && charset_encoding ) - { - char* s = charset_registry; - - - /* Uh, oh, compare first letters manually to avoid dependency - on locales. */ - if ( ( s[0] == 'i' || s[0] == 'I' ) && - ( s[1] == 's' || s[1] == 'S' ) && - ( s[2] == 'o' || s[2] == 'O' ) ) - { - s += 3; - if ( !ft_strcmp( s, "10646" ) || - ( !ft_strcmp( s, "8859" ) && - !ft_strcmp( face->charset_encoding, "1" ) ) ) - unicode_charmap = 1; - } - } - - { - FT_CharMapRec charmap; - - - charmap.face = FT_FACE( face ); - charmap.encoding = FT_ENCODING_NONE; - charmap.platform_id = 0; - charmap.encoding_id = 0; - - if ( unicode_charmap ) - { - charmap.encoding = FT_ENCODING_UNICODE; - charmap.platform_id = 3; - charmap.encoding_id = 1; - } - - error = FT_CMap_New( &pcf_cmap_class, NULL, &charmap, NULL ); - -#if 0 - /* Select default charmap */ - if ( pcfface->num_charmaps ) - pcfface->charmap = pcfface->charmaps[0]; -#endif - } - } - - Exit: - return error; - - Fail: - FT_TRACE2(( "[not a valid PCF file]\n" )); - error = PCF_Err_Unknown_File_Format; /* error */ - goto Exit; - } - - - FT_CALLBACK_DEF( FT_Error ) - PCF_Set_Pixel_Size( FT_Size size, - FT_UInt pixel_width, - FT_UInt pixel_height ) - { - PCF_Face face = (PCF_Face)FT_SIZE_FACE( size ); - - FT_UNUSED( pixel_width ); - FT_UNUSED( pixel_height ); - - - FT_TRACE4(( "rec %d - pres %d\n", size->metrics.y_ppem, - face->root.available_sizes->y_ppem >> 6 )); - - if ( size->metrics.y_ppem == face->root.available_sizes->y_ppem >> 6 ) - { - size->metrics.ascender = face->accel.fontAscent << 6; - size->metrics.descender = face->accel.fontDescent * (-64); -#if 0 - size->metrics.height = face->accel.maxbounds.ascent << 6; -#endif - size->metrics.height = size->metrics.ascender - - size->metrics.descender; - - size->metrics.max_advance = face->accel.maxbounds.characterWidth << 6; - - return PCF_Err_Ok; - } - else - { - FT_TRACE4(( "size WRONG\n" )); - return PCF_Err_Invalid_Pixel_Size; - } - } - - - FT_CALLBACK_DEF( FT_Error ) - PCF_Set_Point_Size( FT_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) - { - FT_UNUSED( char_width ); - FT_UNUSED( char_height ); - FT_UNUSED( horz_resolution ); - FT_UNUSED( vert_resolution ); - - return PCF_Set_Pixel_Size( size, 0, 0 ); - } - - - FT_CALLBACK_DEF( FT_Error ) - PCF_Glyph_Load( FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - PCF_Face face = (PCF_Face)FT_SIZE_FACE( size ); - FT_Stream stream = face->root.stream; - FT_Error error = PCF_Err_Ok; - FT_Bitmap* bitmap = &slot->bitmap; - PCF_Metric metric; - int bytes; - - FT_UNUSED( load_flags ); - - - FT_TRACE4(( "load_glyph %d ---", glyph_index )); - - if ( !face ) - { - error = PCF_Err_Invalid_Argument; - goto Exit; - } - - if ( glyph_index > 0 ) - glyph_index--; - - metric = face->metrics + glyph_index; - - bitmap->rows = metric->ascent + metric->descent; - bitmap->width = metric->rightSideBearing - metric->leftSideBearing; - bitmap->num_grays = 1; - bitmap->pixel_mode = FT_PIXEL_MODE_MONO; - - FT_TRACE6(( "BIT_ORDER %d ; BYTE_ORDER %d ; GLYPH_PAD %d\n", - PCF_BIT_ORDER( face->bitmapsFormat ), - PCF_BYTE_ORDER( face->bitmapsFormat ), - PCF_GLYPH_PAD( face->bitmapsFormat ) )); - - switch ( PCF_GLYPH_PAD( face->bitmapsFormat ) ) - { - case 1: - bitmap->pitch = ( bitmap->width + 7 ) >> 3; - break; - - case 2: - bitmap->pitch = ( ( bitmap->width + 15 ) >> 4 ) << 1; - break; - - case 4: - bitmap->pitch = ( ( bitmap->width + 31 ) >> 5 ) << 2; - break; - - case 8: - bitmap->pitch = ( ( bitmap->width + 63 ) >> 6 ) << 3; - break; - - default: - return PCF_Err_Invalid_File_Format; - } - - /* XXX: to do: are there cases that need repadding the bitmap? */ - bytes = bitmap->pitch * bitmap->rows; - - error = ft_glyphslot_alloc_bitmap( slot, bytes ); - if ( error ) - goto Exit; - - if ( FT_STREAM_SEEK( metric->bits ) || - FT_STREAM_READ( bitmap->buffer, bytes ) ) - goto Exit; - - if ( PCF_BIT_ORDER( face->bitmapsFormat ) != MSBFirst ) - BitOrderInvert( bitmap->buffer, bytes ); - - if ( ( PCF_BYTE_ORDER( face->bitmapsFormat ) != - PCF_BIT_ORDER( face->bitmapsFormat ) ) ) - { - switch ( PCF_SCAN_UNIT( face->bitmapsFormat ) ) - { - case 1: - break; - - case 2: - TwoByteSwap( bitmap->buffer, bytes ); - break; - - case 4: - FourByteSwap( bitmap->buffer, bytes ); - break; - } - } - - slot->bitmap_left = metric->leftSideBearing; - slot->bitmap_top = metric->ascent; - - slot->metrics.horiAdvance = metric->characterWidth << 6; - slot->metrics.horiBearingX = metric->leftSideBearing << 6; - slot->metrics.horiBearingY = metric->ascent << 6; - slot->metrics.width = ( metric->rightSideBearing - - metric->leftSideBearing ) << 6; - slot->metrics.height = bitmap->rows << 6; - - slot->linearHoriAdvance = (FT_Fixed)bitmap->width << 16; - slot->format = FT_GLYPH_FORMAT_BITMAP; - - FT_TRACE4(( " --- ok\n" )); - - Exit: - return error; - } - - - /* - * - * BDF SERVICE - * - */ - - static FT_Error - pcf_get_bdf_property( PCF_Face face, - const char* prop_name, - BDF_PropertyRec *aproperty ) - { - PCF_Property prop; - - - prop = pcf_find_property( face, prop_name ); - if ( prop != NULL ) - { - if ( prop->isString ) - { - aproperty->type = BDF_PROPERTY_TYPE_ATOM; - aproperty->u.atom = prop->value.atom; - } - else - { - /* Apparently, the PCF driver loads all properties as signed integers! - * This really doesn't seem to be a problem, because this is - * sufficient for any meaningful values. - */ - aproperty->type = BDF_PROPERTY_TYPE_INTEGER; - aproperty->u.integer = prop->value.integer; - } - return 0; - } - - return PCF_Err_Invalid_Argument; - } - - - static FT_Error - pcf_get_charset_id( PCF_Face face, - const char* *acharset_encoding, - const char* *acharset_registry ) - { - *acharset_encoding = face->charset_encoding; - *acharset_registry = face->charset_registry; - - return 0; - } - - - static const FT_Service_BDFRec pcf_service_bdf = - { - (FT_BDF_GetCharsetIdFunc)pcf_get_charset_id, - (FT_BDF_GetPropertyFunc) pcf_get_bdf_property - }; - - - /* - * - * SERVICE LIST - * - */ - - static const FT_ServiceDescRec pcf_services[] = - { - { FT_SERVICE_ID_BDF, &pcf_service_bdf }, - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_PCF }, - { NULL, NULL } - }; - - - FT_CALLBACK_DEF( FT_Module_Interface ) - pcf_driver_requester( FT_Module module, - const char* name ) - { - FT_UNUSED( module ); - - return ft_service_list_lookup( pcf_services, name ); - } - - - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec pcf_driver_class = - { - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_NO_OUTLINES, - sizeof ( FT_DriverRec ), - - "pcf", - 0x10000L, - 0x20000L, - - 0, - - 0, - 0, - pcf_driver_requester - }, - - sizeof ( PCF_FaceRec ), - sizeof ( FT_SizeRec ), - sizeof ( FT_GlyphSlotRec ), - - PCF_Face_Init, - PCF_Face_Done, - 0, /* FT_Size_InitFunc */ - 0, /* FT_Size_DoneFunc */ - 0, /* FT_Slot_InitFunc */ - 0, /* FT_Slot_DoneFunc */ - - PCF_Set_Point_Size, - PCF_Set_Pixel_Size, - - PCF_Glyph_Load, - - 0, /* FT_Face_GetKerningFunc */ - 0, /* FT_Face_AttachFunc */ - 0 /* FT_Face_GetAdvancesFunc */ - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/pcfdrivr.h b/nx-X11/extras/freetype2/src/pcf/pcfdrivr.h deleted file mode 100644 index 7ddf697e1..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcfdrivr.h +++ /dev/null @@ -1,44 +0,0 @@ -/* pcfdrivr.h - - FreeType font driver for pcf fonts - - Copyright 2000-2001, 2002 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#ifndef __PCFDRIVR_H__ -#define __PCFDRIVR_H__ - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H - -FT_BEGIN_HEADER - - FT_EXPORT_VAR( const FT_Driver_ClassRec ) pcf_driver_class; - -FT_END_HEADER - - -#endif /* __PCFDRIVR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/pcferror.h b/nx-X11/extras/freetype2/src/pcf/pcferror.h deleted file mode 100644 index d75c067aa..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcferror.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* pcferror.h */ -/* */ -/* PCF error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the PCF error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __PCFERROR_H__ -#define __PCFERROR_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX PCF_Err_ -#define FT_ERR_BASE FT_Mod_Err_PCF - -#include FT_ERRORS_H - -#endif /* __PCFERROR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/pcfread.c b/nx-X11/extras/freetype2/src/pcf/pcfread.c deleted file mode 100644 index 383daaa1c..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcfread.c +++ /dev/null @@ -1,1175 +0,0 @@ -/* pcfread.c - - FreeType font driver for pcf fonts - - Copyright 2000, 2001, 2002, 2003, 2004 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#include <ft2build.h> - -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H - -#include "pcf.h" -#include "pcfdrivr.h" -#include "pcfread.h" - -#include "pcferror.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_pcfread - - -#if defined( FT_DEBUG_LEVEL_TRACE ) - static const char* const tableNames[] = - { - "prop", "accl", "mtrcs", "bmps", "imtrcs", - "enc", "swidth", "names", "accel" - }; -#endif - - - static - const FT_Frame_Field pcf_toc_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_TocRec - - FT_FRAME_START( 8 ), - FT_FRAME_ULONG_LE( version ), - FT_FRAME_ULONG_LE( count ), - FT_FRAME_END - }; - - - static - const FT_Frame_Field pcf_table_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_TableRec - - FT_FRAME_START( 16 ), - FT_FRAME_ULONG_LE( type ), - FT_FRAME_ULONG_LE( format ), - FT_FRAME_ULONG_LE( size ), - FT_FRAME_ULONG_LE( offset ), - FT_FRAME_END - }; - - - static FT_Error - pcf_read_TOC( FT_Stream stream, - PCF_Face face ) - { - FT_Error error; - PCF_Toc toc = &face->toc; - PCF_Table tables; - - FT_Memory memory = FT_FACE(face)->memory; - FT_UInt n; - - - if ( FT_STREAM_SEEK ( 0 ) || - FT_STREAM_READ_FIELDS ( pcf_toc_header, toc ) ) - return PCF_Err_Cannot_Open_Resource; - - if ( toc->version != PCF_FILE_VERSION ) - return PCF_Err_Invalid_File_Format; - - if ( FT_NEW_ARRAY( face->toc.tables, toc->count ) ) - return PCF_Err_Out_Of_Memory; - - tables = face->toc.tables; - for ( n = 0; n < toc->count; n++ ) - { - if ( FT_STREAM_READ_FIELDS( pcf_table_header, tables ) ) - goto Exit; - tables++; - } - -#if defined( FT_DEBUG_LEVEL_TRACE ) - - { - FT_UInt i, j; - const char* name = "?"; - - - FT_TRACE4(( "pcf_read_TOC:\n" )); - - FT_TRACE4(( " number of tables: %ld\n", face->toc.count )); - - tables = face->toc.tables; - for ( i = 0; i < toc->count; i++ ) - { - for( j = 0; j < sizeof ( tableNames ) / sizeof ( tableNames[0] ); j++ ) - if ( tables[i].type == (FT_UInt)( 1 << j ) ) - name = tableNames[j]; - - FT_TRACE4(( " %d: type=%s, format=0x%X, " - "size=%ld (0x%lX), offset=%ld (0x%lX)\n", - i, name, - tables[i].format, - tables[i].size, tables[i].size, - tables[i].offset, tables[i].offset )); - } - } - -#endif - - return PCF_Err_Ok; - - Exit: - FT_FREE( face->toc.tables ); - return error; - } - - - static - const FT_Frame_Field pcf_metric_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_MetricRec - - FT_FRAME_START( 12 ), - FT_FRAME_SHORT_LE( leftSideBearing ), - FT_FRAME_SHORT_LE( rightSideBearing ), - FT_FRAME_SHORT_LE( characterWidth ), - FT_FRAME_SHORT_LE( ascent ), - FT_FRAME_SHORT_LE( descent ), - FT_FRAME_SHORT_LE( attributes ), - FT_FRAME_END - }; - - - static - const FT_Frame_Field pcf_metric_msb_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_MetricRec - - FT_FRAME_START( 12 ), - FT_FRAME_SHORT( leftSideBearing ), - FT_FRAME_SHORT( rightSideBearing ), - FT_FRAME_SHORT( characterWidth ), - FT_FRAME_SHORT( ascent ), - FT_FRAME_SHORT( descent ), - FT_FRAME_SHORT( attributes ), - FT_FRAME_END - }; - - - static - const FT_Frame_Field pcf_compressed_metric_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_Compressed_MetricRec - - FT_FRAME_START( 5 ), - FT_FRAME_BYTE( leftSideBearing ), - FT_FRAME_BYTE( rightSideBearing ), - FT_FRAME_BYTE( characterWidth ), - FT_FRAME_BYTE( ascent ), - FT_FRAME_BYTE( descent ), - FT_FRAME_END - }; - - - static FT_Error - pcf_get_metric( FT_Stream stream, - FT_ULong format, - PCF_Metric metric ) - { - FT_Error error = PCF_Err_Ok; - - - if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) - { - const FT_Frame_Field* fields; - - - /* parsing normal metrics */ - fields = PCF_BYTE_ORDER( format ) == MSBFirst - ? pcf_metric_msb_header - : pcf_metric_header; - - /* the following sets 'error' but doesn't return in case of failure */ - (void)FT_STREAM_READ_FIELDS( fields, metric ); - } - else - { - PCF_Compressed_MetricRec compr; - - - /* parsing compressed metrics */ - if ( FT_STREAM_READ_FIELDS( pcf_compressed_metric_header, &compr ) ) - goto Exit; - - metric->leftSideBearing = (FT_Short)( compr.leftSideBearing - 0x80 ); - metric->rightSideBearing = (FT_Short)( compr.rightSideBearing - 0x80 ); - metric->characterWidth = (FT_Short)( compr.characterWidth - 0x80 ); - metric->ascent = (FT_Short)( compr.ascent - 0x80 ); - metric->descent = (FT_Short)( compr.descent - 0x80 ); - metric->attributes = 0; - } - - Exit: - return error; - } - - - static FT_Error - pcf_seek_to_table_type( FT_Stream stream, - PCF_Table tables, - FT_Int ntables, - FT_ULong type, - FT_ULong *aformat, - FT_ULong *asize ) - { - FT_Error error = PCF_Err_Invalid_File_Format; - FT_Int i; - - - for ( i = 0; i < ntables; i++ ) - if ( tables[i].type == type ) - { - if ( stream->pos > tables[i].offset ) { - error = PCF_Err_Invalid_Stream_Skip; - goto Fail; - } - - if ( FT_STREAM_SKIP( tables[i].offset - stream->pos ) ) { - error = PCF_Err_Invalid_Stream_Skip; - goto Fail; - } - - *asize = tables[i].size; /* unused - to be removed */ - *aformat = tables[i].format; - - return PCF_Err_Ok; - } - - Fail: - return error; - } - - - static FT_Bool - pcf_has_table_type( PCF_Table tables, - FT_Int ntables, - FT_ULong type ) - { - FT_Int i; - - - for ( i = 0; i < ntables; i++ ) - if ( tables[i].type == type ) - return TRUE; - - return FALSE; - } - - - static - const FT_Frame_Field pcf_property_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_ParsePropertyRec - - FT_FRAME_START( 9 ), - FT_FRAME_LONG_LE( name ), - FT_FRAME_BYTE ( isString ), - FT_FRAME_LONG_LE( value ), - FT_FRAME_END - }; - - - static - const FT_Frame_Field pcf_property_msb_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_ParsePropertyRec - - FT_FRAME_START( 9 ), - FT_FRAME_LONG( name ), - FT_FRAME_BYTE( isString ), - FT_FRAME_LONG( value ), - FT_FRAME_END - }; - - - FT_LOCAL_DEF( PCF_Property ) - pcf_find_property( PCF_Face face, - const FT_String* prop ) - { - PCF_Property properties = face->properties; - FT_Bool found = 0; - int i; - - - for ( i = 0 ; i < face->nprops && !found; i++ ) - { - if ( !ft_strcmp( properties[i].name, prop ) ) - found = 1; - } - - if ( found ) - return properties + i - 1; - else - return NULL; - } - - - static FT_Error - pcf_get_properties( FT_Stream stream, - PCF_Face face ) - { - PCF_ParseProperty props = 0; - PCF_Property properties = 0; - FT_Int nprops, i; - FT_ULong format, size; - FT_Error error; - FT_Memory memory = FT_FACE(face)->memory; - FT_ULong string_size; - FT_String* strings = 0; - - - error = pcf_seek_to_table_type( stream, - face->toc.tables, - face->toc.count, - PCF_PROPERTIES, - &format, - &size ); - if ( error ) - goto Bail; - - if ( FT_READ_ULONG_LE( format ) ) - goto Bail; - - FT_TRACE4(( "pcf_get_properties:\n" )); - - FT_TRACE4(( " format = %ld\n", format )); - - if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) - goto Bail; - - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - (void)FT_READ_ULONG( nprops ); - else - (void)FT_READ_ULONG_LE( nprops ); - if ( error ) - goto Bail; - - FT_TRACE4(( " nprop = %d\n", nprops )); - - if ( FT_NEW_ARRAY( props, nprops ) ) - goto Bail; - - for ( i = 0; i < nprops; i++ ) - { - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - { - if ( FT_STREAM_READ_FIELDS( pcf_property_msb_header, props + i ) ) - goto Bail; - } - else - { - if ( FT_STREAM_READ_FIELDS( pcf_property_header, props + i ) ) - goto Bail; - } - } - - /* pad the property array */ - /* */ - /* clever here - nprops is the same as the number of odd-units read, */ - /* as only isStringProp are odd length (Keith Packard) */ - /* */ - if ( nprops & 3 ) - { - i = 4 - ( nprops & 3 ); - FT_Stream_Skip( stream, i ); - } - - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - (void)FT_READ_ULONG( string_size ); - else - (void)FT_READ_ULONG_LE( string_size ); - if ( error ) - goto Bail; - - FT_TRACE4(( " string_size = %ld\n", string_size )); - - if ( FT_NEW_ARRAY( strings, string_size ) ) - goto Bail; - - error = FT_Stream_Read( stream, (FT_Byte*)strings, string_size ); - if ( error ) - goto Bail; - - if ( FT_NEW_ARRAY( properties, nprops ) ) - goto Bail; - - for ( i = 0; i < nprops; i++ ) - { - /* XXX: make atom */ - if ( FT_NEW_ARRAY( properties[i].name, - ft_strlen( strings + props[i].name ) + 1 ) ) - goto Bail; - ft_strcpy( properties[i].name, strings + props[i].name ); - - FT_TRACE4(( " %s:", properties[i].name )); - - properties[i].isString = props[i].isString; - - if ( props[i].isString ) - { - if ( FT_NEW_ARRAY( properties[i].value.atom, - ft_strlen( strings + props[i].value ) + 1 ) ) - goto Bail; - ft_strcpy( properties[i].value.atom, strings + props[i].value ); - - FT_TRACE4(( " `%s'\n", properties[i].value.atom )); - } - else - { - properties[i].value.integer = props[i].value; - - FT_TRACE4(( " %d\n", properties[i].value.integer )); - } - } - - face->properties = properties; - face->nprops = nprops; - - FT_FREE( props ); - FT_FREE( strings ); - - return PCF_Err_Ok; - - Bail: - FT_FREE( props ); - FT_FREE( strings ); - - return error; - } - - - static FT_Error - pcf_get_metrics( FT_Stream stream, - PCF_Face face ) - { - FT_Error error = PCF_Err_Ok; - FT_Memory memory = FT_FACE(face)->memory; - FT_ULong format = 0; - FT_ULong size = 0; - PCF_Metric metrics = 0; - int i; - int nmetrics = -1; - - - error = pcf_seek_to_table_type( stream, - face->toc.tables, - face->toc.count, - PCF_METRICS, - &format, - &size ); - if ( error ) - return error; - - error = FT_READ_ULONG_LE( format ); - - if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) && - !PCF_FORMAT_MATCH( format, PCF_COMPRESSED_METRICS ) ) - return PCF_Err_Invalid_File_Format; - - if ( PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) - { - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - (void)FT_READ_ULONG( nmetrics ); - else - (void)FT_READ_ULONG_LE( nmetrics ); - } - else - { - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - (void)FT_READ_USHORT( nmetrics ); - else - (void)FT_READ_USHORT_LE( nmetrics ); - } - if ( error || nmetrics == -1 ) - return PCF_Err_Invalid_File_Format; - - face->nmetrics = nmetrics; - - if ( FT_NEW_ARRAY( face->metrics, nmetrics ) ) - return PCF_Err_Out_Of_Memory; - - FT_TRACE4(( "pcf_get_metrics:\n" )); - - metrics = face->metrics; - for ( i = 0; i < nmetrics; i++ ) - { - pcf_get_metric( stream, format, metrics + i ); - - metrics[i].bits = 0; - - FT_TRACE4(( " idx %d: width=%d, " - "lsb=%d, rsb=%d, ascent=%d, descent=%d, swidth=%d\n", - i, - ( metrics + i )->characterWidth, - ( metrics + i )->leftSideBearing, - ( metrics + i )->rightSideBearing, - ( metrics + i )->ascent, - ( metrics + i )->descent, - ( metrics + i )->attributes )); - - if ( error ) - break; - } - - if ( error ) - FT_FREE( face->metrics ); - return error; - } - - - static FT_Error - pcf_get_bitmaps( FT_Stream stream, - PCF_Face face ) - { - FT_Error error = PCF_Err_Ok; - FT_Memory memory = FT_FACE(face)->memory; - FT_Long* offsets; - FT_Long bitmapSizes[GLYPHPADOPTIONS]; - FT_ULong format, size; - int nbitmaps, i, sizebitmaps = 0; - char* bitmaps; - - - error = pcf_seek_to_table_type( stream, - face->toc.tables, - face->toc.count, - PCF_BITMAPS, - &format, - &size ); - if ( error ) - return error; - - error = FT_Stream_EnterFrame( stream, 8 ); - if ( error ) - return error; - - format = FT_GET_ULONG_LE(); - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - nbitmaps = FT_GET_ULONG(); - else - nbitmaps = FT_GET_ULONG_LE(); - - FT_Stream_ExitFrame( stream ); - - if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) - return PCF_Err_Invalid_File_Format; - - if ( nbitmaps != face->nmetrics ) - return PCF_Err_Invalid_File_Format; - - if ( FT_NEW_ARRAY( offsets, nbitmaps ) ) - return error; - - FT_TRACE4(( "pcf_get_bitmaps:\n" )); - - for ( i = 0; i < nbitmaps; i++ ) - { - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - (void)FT_READ_LONG( offsets[i] ); - else - (void)FT_READ_LONG_LE( offsets[i] ); - - FT_TRACE4(( " bitmap %d: offset %ld (0x%lX)\n", - i, offsets[i], offsets[i] )); - } - if ( error ) - goto Bail; - - for ( i = 0; i < GLYPHPADOPTIONS; i++ ) - { - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - (void)FT_READ_LONG( bitmapSizes[i] ); - else - (void)FT_READ_LONG_LE( bitmapSizes[i] ); - if ( error ) - goto Bail; - - sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX( format )]; - - FT_TRACE4(( " padding %d implies a size of %ld\n", i, bitmapSizes[i] )); - } - - FT_TRACE4(( " %d bitmaps, padding index %ld\n", - nbitmaps, - PCF_GLYPH_PAD_INDEX( format ) )); - FT_TRACE4(( " bitmap size = %d\n", sizebitmaps )); - - FT_UNUSED( sizebitmaps ); /* only used for debugging */ - - for ( i = 0; i < nbitmaps; i++ ) - face->metrics[i].bits = stream->pos + offsets[i]; - - face->bitmapsFormat = format; - - FT_FREE ( offsets ); - return error; - - Bail: - FT_FREE ( offsets ); - FT_FREE ( bitmaps ); - return error; - } - - - static FT_Error - pcf_get_encodings( FT_Stream stream, - PCF_Face face ) - { - FT_Error error = PCF_Err_Ok; - FT_Memory memory = FT_FACE(face)->memory; - FT_ULong format, size; - int firstCol, lastCol; - int firstRow, lastRow; - int nencoding, encodingOffset; - int i, j; - PCF_Encoding tmpEncoding, encoding = 0; - - - error = pcf_seek_to_table_type( stream, - face->toc.tables, - face->toc.count, - PCF_BDF_ENCODINGS, - &format, - &size ); - if ( error ) - return error; - - error = FT_Stream_EnterFrame( stream, 14 ); - if ( error ) - return error; - - format = FT_GET_ULONG_LE(); - - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - { - firstCol = FT_GET_SHORT(); - lastCol = FT_GET_SHORT(); - firstRow = FT_GET_SHORT(); - lastRow = FT_GET_SHORT(); - face->defaultChar = FT_GET_SHORT(); - } - else - { - firstCol = FT_GET_SHORT_LE(); - lastCol = FT_GET_SHORT_LE(); - firstRow = FT_GET_SHORT_LE(); - lastRow = FT_GET_SHORT_LE(); - face->defaultChar = FT_GET_SHORT_LE(); - } - - FT_Stream_ExitFrame( stream ); - - if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) ) - return PCF_Err_Invalid_File_Format; - - FT_TRACE4(( "pdf_get_encodings:\n" )); - - FT_TRACE4(( " firstCol %d, lastCol %d, firstRow %d, lastRow %d\n", - firstCol, lastCol, firstRow, lastRow )); - - nencoding = ( lastCol - firstCol + 1 ) * ( lastRow - firstRow + 1 ); - - if ( FT_NEW_ARRAY( tmpEncoding, nencoding ) ) - return PCF_Err_Out_Of_Memory; - - error = FT_Stream_EnterFrame( stream, 2 * nencoding ); - if ( error ) - goto Bail; - - for ( i = 0, j = 0 ; i < nencoding; i++ ) - { - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - encodingOffset = FT_GET_SHORT(); - else - encodingOffset = FT_GET_SHORT_LE(); - - if ( encodingOffset != -1 ) - { - tmpEncoding[j].enc = ( ( ( i / ( lastCol - firstCol + 1 ) ) + - firstRow ) * 256 ) + - ( ( i % ( lastCol - firstCol + 1 ) ) + - firstCol ); - - tmpEncoding[j].glyph = (FT_Short)encodingOffset; - - FT_TRACE4(( " code %d (0x%04X): idx %d\n", - tmpEncoding[j].enc, tmpEncoding[j].enc, - tmpEncoding[j].glyph )); - - j++; - } - } - FT_Stream_ExitFrame( stream ); - - if ( FT_NEW_ARRAY( encoding, j ) ) - goto Bail; - - for ( i = 0; i < j; i++ ) - { - encoding[i].enc = tmpEncoding[i].enc; - encoding[i].glyph = tmpEncoding[i].glyph; - } - - face->nencodings = j; - face->encodings = encoding; - FT_FREE( tmpEncoding ); - - return error; - - Bail: - FT_FREE( encoding ); - FT_FREE( tmpEncoding ); - return error; - } - - - static - const FT_Frame_Field pcf_accel_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_AccelRec - - FT_FRAME_START( 20 ), - FT_FRAME_BYTE ( noOverlap ), - FT_FRAME_BYTE ( constantMetrics ), - FT_FRAME_BYTE ( terminalFont ), - FT_FRAME_BYTE ( constantWidth ), - FT_FRAME_BYTE ( inkInside ), - FT_FRAME_BYTE ( inkMetrics ), - FT_FRAME_BYTE ( drawDirection ), - FT_FRAME_SKIP_BYTES( 1 ), - FT_FRAME_LONG_LE ( fontAscent ), - FT_FRAME_LONG_LE ( fontDescent ), - FT_FRAME_LONG_LE ( maxOverlap ), - FT_FRAME_END - }; - - - static - const FT_Frame_Field pcf_accel_msb_header[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PCF_AccelRec - - FT_FRAME_START( 20 ), - FT_FRAME_BYTE ( noOverlap ), - FT_FRAME_BYTE ( constantMetrics ), - FT_FRAME_BYTE ( terminalFont ), - FT_FRAME_BYTE ( constantWidth ), - FT_FRAME_BYTE ( inkInside ), - FT_FRAME_BYTE ( inkMetrics ), - FT_FRAME_BYTE ( drawDirection ), - FT_FRAME_SKIP_BYTES( 1 ), - FT_FRAME_LONG ( fontAscent ), - FT_FRAME_LONG ( fontDescent ), - FT_FRAME_LONG ( maxOverlap ), - FT_FRAME_END - }; - - - static FT_Error - pcf_get_accel( FT_Stream stream, - PCF_Face face, - FT_ULong type ) - { - FT_ULong format, size; - FT_Error error = PCF_Err_Ok; - PCF_Accel accel = &face->accel; - - - error = pcf_seek_to_table_type( stream, - face->toc.tables, - face->toc.count, - type, - &format, - &size ); - if ( error ) - goto Bail; - - error = FT_READ_ULONG_LE( format ); - - if ( !PCF_FORMAT_MATCH( format, PCF_DEFAULT_FORMAT ) && - !PCF_FORMAT_MATCH( format, PCF_ACCEL_W_INKBOUNDS ) ) - goto Bail; - - if ( PCF_BYTE_ORDER( format ) == MSBFirst ) - { - if ( FT_STREAM_READ_FIELDS( pcf_accel_msb_header, accel ) ) - goto Bail; - } - else - { - if ( FT_STREAM_READ_FIELDS( pcf_accel_header, accel ) ) - goto Bail; - } - - error = pcf_get_metric( stream, - format & ( ~PCF_FORMAT_MASK ), - &(accel->minbounds) ); - if ( error ) - goto Bail; - - error = pcf_get_metric( stream, - format & ( ~PCF_FORMAT_MASK ), - &(accel->maxbounds) ); - if ( error ) - goto Bail; - - if ( PCF_FORMAT_MATCH( format, PCF_ACCEL_W_INKBOUNDS ) ) - { - error = pcf_get_metric( stream, - format & ( ~PCF_FORMAT_MASK ), - &(accel->ink_minbounds) ); - if ( error ) - goto Bail; - - error = pcf_get_metric( stream, - format & ( ~PCF_FORMAT_MASK ), - &(accel->ink_maxbounds) ); - if ( error ) - goto Bail; - } - else - { - accel->ink_minbounds = accel->minbounds; /* I'm not sure about this */ - accel->ink_maxbounds = accel->maxbounds; - } - return error; - - Bail: - return error; - } - - - static FT_Error - pcf_interpret_style( PCF_Face pcf ) - { - FT_Error error = PCF_Err_Ok; - FT_Face face = FT_FACE( pcf ); - FT_Memory memory = face->memory; - - PCF_Property prop; - - char *istr = NULL, *bstr = NULL; - char *sstr = NULL, *astr = NULL; - - int parts = 0, len = 0; - - - face->style_flags = 0; - - prop = pcf_find_property( pcf, "SLANT" ); - if ( prop && prop->isString && - ( *(prop->value.atom) == 'O' || *(prop->value.atom) == 'o' || - *(prop->value.atom) == 'I' || *(prop->value.atom) == 'i' ) ) - { - face->style_flags |= FT_STYLE_FLAG_ITALIC; - istr = ( *(prop->value.atom) == 'O' || *(prop->value.atom) == 'o' ) - ? (char *)"Oblique" - : (char *)"Italic"; - len += ft_strlen( istr ); - parts++; - } - - prop = pcf_find_property( pcf, "WEIGHT_NAME" ); - if ( prop && prop->isString && - ( *(prop->value.atom) == 'B' || *(prop->value.atom) == 'b' ) ) - { - face->style_flags |= FT_STYLE_FLAG_BOLD; - bstr = (char *)"Bold"; - len += ft_strlen( bstr ); - parts++; - } - - prop = pcf_find_property( pcf, "SETWIDTH_NAME" ); - if ( prop && prop->isString && - *(prop->value.atom) && - !( *(prop->value.atom) == 'N' || *(prop->value.atom) == 'n' ) ) - { - sstr = (char *)(prop->value.atom); - len += ft_strlen( sstr ); - parts++; - } - - prop = pcf_find_property( pcf, "ADD_STYLE_NAME" ); - if ( prop && prop->isString && - *(prop->value.atom) && - !( *(prop->value.atom) == 'N' || *(prop->value.atom) == 'n' ) ) - { - astr = (char *)(prop->value.atom); - len += ft_strlen( astr ); - parts++; - } - - if ( !parts || !len ) - face->style_name = (char *)"Regular"; - else - { - char *style, *s; - unsigned int i; - - - if ( FT_ALLOC( style, len + parts ) ) - return error; - - s = style; - - if ( astr ) - { - ft_strcpy( s, astr ); - for ( i = 0; i < ft_strlen( astr ); i++, s++ ) - if ( *s == ' ' ) - *s = '-'; /* replace spaces with dashes */ - *(s++) = ' '; - } - if ( bstr ) - { - ft_strcpy( s, bstr ); - s += ft_strlen( bstr ); - *(s++) = ' '; - } - if ( istr ) - { - ft_strcpy( s, istr ); - s += ft_strlen( istr ); - *(s++) = ' '; - } - if ( sstr ) - { - ft_strcpy( s, sstr ); - for ( i = 0; i < ft_strlen( sstr ); i++, s++ ) - if ( *s == ' ' ) - *s = '-'; /* replace spaces with dashes */ - *(s++) = ' '; - } - *(--s) = '\0'; /* overwrite last ' ', terminate the string */ - - face->style_name = style; /* allocated string */ - } - - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - pcf_load_font( FT_Stream stream, - PCF_Face face ) - { - FT_Error error = PCF_Err_Ok; - FT_Memory memory = FT_FACE(face)->memory; - FT_Bool hasBDFAccelerators; - - - error = pcf_read_TOC( stream, face ); - if ( error ) - goto Exit; - - error = pcf_get_properties( stream, face ); - if ( error ) - goto Exit; - - /* Use the old accelerators if no BDF accelerators are in the file. */ - hasBDFAccelerators = pcf_has_table_type( face->toc.tables, - face->toc.count, - PCF_BDF_ACCELERATORS ); - if ( !hasBDFAccelerators ) - { - error = pcf_get_accel( stream, face, PCF_ACCELERATORS ); - if ( error ) - goto Exit; - } - - /* metrics */ - error = pcf_get_metrics( stream, face ); - if ( error ) - goto Exit; - - /* bitmaps */ - error = pcf_get_bitmaps( stream, face ); - if ( error ) - goto Exit; - - /* encodings */ - error = pcf_get_encodings( stream, face ); - if ( error ) - goto Exit; - - /* BDF style accelerators (i.e. bounds based on encoded glyphs) */ - if ( hasBDFAccelerators ) - { - error = pcf_get_accel( stream, face, PCF_BDF_ACCELERATORS ); - if ( error ) - goto Exit; - } - - /* XXX: TO DO: inkmetrics and glyph_names are missing */ - - /* now construct the face object */ - { - FT_Face root = FT_FACE( face ); - PCF_Property prop; - - - root->num_faces = 1; - root->face_index = 0; - root->face_flags = FT_FACE_FLAG_FIXED_SIZES | - FT_FACE_FLAG_HORIZONTAL | - FT_FACE_FLAG_FAST_GLYPHS; - - if ( face->accel.constantWidth ) - root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; - - if ( ( error = pcf_interpret_style( face ) ) != 0 ) - goto Exit; - - prop = pcf_find_property( face, "FAMILY_NAME" ); - if ( prop && prop->isString ) - { - int l = ft_strlen( prop->value.atom ) + 1; - - - if ( FT_NEW_ARRAY( root->family_name, l ) ) - goto Exit; - ft_strcpy( root->family_name, prop->value.atom ); - } - else - root->family_name = NULL; - - /* Note: We shift all glyph indices by +1 since we must - * respect the convention that glyph 0 always corresponds - * to the "missing glyph". - * - * This implies bumping the number of "available" glyphs by 1. - */ - root->num_glyphs = face->nmetrics + 1; - - root->num_fixed_sizes = 1; - if ( FT_NEW_ARRAY( root->available_sizes, 1 ) ) - goto Exit; - - { - FT_Bitmap_Size* bsize = root->available_sizes; - FT_Short resolution_x = 0, resolution_y = 0; - - - FT_MEM_ZERO( bsize, sizeof ( FT_Bitmap_Size ) ); - - bsize->height = face->accel.fontAscent + face->accel.fontDescent; - - prop = pcf_find_property( face, "AVERAGE_WIDTH" ); - if ( prop ) - bsize->width = (FT_Short)( ( prop->value.integer + 5 ) / 10 ); - else - bsize->width = bsize->height * 2/3; - - prop = pcf_find_property( face, "POINT_SIZE" ); - if ( prop ) - /* convert from 722.7 decipoints to 72 points per inch */ - bsize->size = - (FT_Pos)( ( prop->value.integer * 64 * 7200 + 36135L ) / 72270L ); - - prop = pcf_find_property( face, "PIXEL_SIZE" ); - if ( prop ) - bsize->y_ppem = (FT_Short)prop->value.integer << 6; - - prop = pcf_find_property( face, "RESOLUTION_X" ); - if ( prop ) - resolution_x = (FT_Short)prop->value.integer; - - prop = pcf_find_property( face, "RESOLUTION_Y" ); - if ( prop ) - resolution_y = (FT_Short)prop->value.integer; - - if ( bsize->y_ppem == 0 ) - { - bsize->y_ppem = bsize->size; - if ( resolution_y ) - bsize->y_ppem = bsize->y_ppem * resolution_y / 72; - } - if ( resolution_x && resolution_y ) - bsize->x_ppem = bsize->y_ppem * resolution_x / resolution_y; - else - bsize->x_ppem = bsize->y_ppem; - } - - /* set up charset */ - { - PCF_Property charset_registry = 0, charset_encoding = 0; - - - charset_registry = pcf_find_property( face, "CHARSET_REGISTRY" ); - charset_encoding = pcf_find_property( face, "CHARSET_ENCODING" ); - - if ( charset_registry && charset_registry->isString && - charset_encoding && charset_encoding->isString ) - { - if ( FT_NEW_ARRAY( face->charset_encoding, - ft_strlen( charset_encoding->value.atom ) + 1 ) ) - goto Exit; - - if ( FT_NEW_ARRAY( face->charset_registry, - ft_strlen( charset_registry->value.atom ) + 1 ) ) - goto Exit; - - ft_strcpy( face->charset_registry, charset_registry->value.atom ); - ft_strcpy( face->charset_encoding, charset_encoding->value.atom ); - } - } - } - - Exit: - if ( error ) - { - /* this is done to respect the behaviour of the original */ - /* PCF font driver. */ - error = PCF_Err_Invalid_File_Format; - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/pcfread.h b/nx-X11/extras/freetype2/src/pcf/pcfread.h deleted file mode 100644 index c9524f134..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcfread.h +++ /dev/null @@ -1,45 +0,0 @@ -/* pcfread.h - - FreeType font driver for pcf fonts - - Copyright 2003 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#ifndef __PCFREAD_H__ -#define __PCFREAD_H__ - - -#include <ft2build.h> - -FT_BEGIN_HEADER - - FT_LOCAL( PCF_Property ) - pcf_find_property( PCF_Face face, - const FT_String* prop ); - -FT_END_HEADER - -#endif /* __PCFREAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/pcfutil.c b/nx-X11/extras/freetype2/src/pcf/pcfutil.c deleted file mode 100644 index 8fcf23df0..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcfutil.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - -Copyright 1990, 1994, 1998 The Open Group - -All Rights Reserved. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - -*/ -/* $XFree86: xc/lib/font/util/utilbitmap.c,v 1.3 1999/08/22 08:58:58 dawes Exp $ */ - -/* - * Author: Keith Packard, MIT X Consortium - */ - -/* Modified for use with FreeType */ - - -#include <ft2build.h> -#include "pcfutil.h" - - - /* Utility functions for reformatting font bitmaps */ - - static const unsigned char _reverse_byte[0x100] = - { - 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, - 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, - 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, - 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, - 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, - 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, - 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, - 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, - 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, - 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, - 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, - 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, - 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, - 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, - 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, - 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, - 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, - 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, - 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, - 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, - 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, - 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, - 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, - 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, - 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, - 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, - 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, - 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, - 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, - 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, - 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, - 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff - }; - - /* - * Invert bit order within each BYTE of an array. - */ - - FT_LOCAL_DEF( void ) - BitOrderInvert( unsigned char* buf, - int nbytes ) - { - const unsigned char* rev = _reverse_byte; - - - for ( ; --nbytes >= 0; buf++ ) - *buf = rev[*buf]; - } - - - /* - * Invert byte order within each 16-bits of an array. - */ - - FT_LOCAL_DEF( void ) - TwoByteSwap( unsigned char* buf, - int nbytes ) - { - unsigned char c; - - - for ( ; nbytes > 0; nbytes -= 2, buf += 2 ) - { - c = buf[0]; - buf[0] = buf[1]; - buf[1] = c; - } - } - - /* - * Invert byte order within each 32-bits of an array. - */ - - FT_LOCAL_DEF( void ) - FourByteSwap( unsigned char* buf, - int nbytes ) - { - unsigned char c; - - - for ( ; nbytes > 0; nbytes -= 4, buf += 4 ) - { - c = buf[0]; - buf[0] = buf[3]; - buf[3] = c; - - c = buf[1]; - buf[1] = buf[2]; - buf[2] = c; - } - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/pcfutil.h b/nx-X11/extras/freetype2/src/pcf/pcfutil.h deleted file mode 100644 index 1557be3e8..000000000 --- a/nx-X11/extras/freetype2/src/pcf/pcfutil.h +++ /dev/null @@ -1,55 +0,0 @@ -/* pcfutil.h - - FreeType font driver for pcf fonts - - Copyright 2000, 2001, 2004 by - Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -*/ - - -#ifndef __PCFUTIL_H__ -#define __PCFUTIL_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H - - -FT_BEGIN_HEADER - - FT_LOCAL( void ) - BitOrderInvert( unsigned char* buf, - int nbytes ); - - FT_LOCAL( void ) - TwoByteSwap( unsigned char* buf, - int nbytes ); - - FT_LOCAL( void ) - FourByteSwap( unsigned char* buf, - int nbytes ); - -FT_END_HEADER - -#endif /* __PCFUTIL_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pcf/readme b/nx-X11/extras/freetype2/src/pcf/readme deleted file mode 100644 index 75f49e142..000000000 --- a/nx-X11/extras/freetype2/src/pcf/readme +++ /dev/null @@ -1,114 +0,0 @@ - FreeType font driver for PCF fonts - - Francesco Zappa Nardelli - <francesco.zappa.nardelli@ens.fr> - - -Introduction -************ - -PCF (Portable Compiled Format) is a binary bitmap font format, largely used -in X world. This code implements a PCF driver for the FreeType library. -Glyph images are loaded into memory only on demand, thus leading to a small -memory footprint. - -Informations on the PCF font format can only be worked out from -``pcfread.c'', and ``pcfwrite.c'', to be found, for instance, in the XFree86 -(www.xfree86.org) source tree (xc/lib/font/bitmap/). - -Many good bitmap fonts in bdf format come with XFree86: they can be -compiled into the pcf format using the ``bdftopcf'' utility. - - -Supported hardware -****************** - -The driver has been tested on linux/x86 and sunos5.5/sparc. In both -cases the compiler was gcc. When back in Paris, I will test it also -on linux/alpha. - - -Encodings -********* - -The variety of encodings that accompanies pcf fonts appears to encompass the -small set defined in freetype.h. On the other hand, each pcf font defines -two properties that specify encoding and registry. - -I decided to make these two properties directly accessible, leaving to the -client application the work of interpreting them. For instance: - - #include "pcftypes.h" /* include/freetype/internal/pcftypes.h */ - - FT_Face face; - PCF_Public_Face pcfface; - - FT_New_Face( library,..., &face ); - - pcfface = (PCF_Public_Face)face; - - if ((pcfface->charset_registry == "ISO10646") && - (pcfface->charset_encoding) == "1")) [..] - -Thus the driver always export ``ft_encoding_none'' as -face->charmap.encoding. FT_Get_Char_Index() behavior is unmodified, that -is, it converts the ULong value given as argument into the corresponding -glyph number. - - -Known problems -************** - -- dealing explicitly with encodings breaks the uniformity of freetype2 - api. - -- except for encodings properties, client applications have no - visibility of the PCF_Face object. This means that applications - cannot directly access font tables and are obliged to trust - FreeType. - -- currently, glyph names and ink_metrics are ignored. - -I plan to give full visibility of the PCF_Face object in the next -release of the driver, thus implementing also glyph names and -ink_metrics. - -- height is defined as (ascent - descent). Is this correct? - -- if unable to read size informations from the font, PCF_Init_Face - sets available_size->width and available_size->height to 12. - -- too many english grammar errors in the readme file :-( - - -License -******* - -Copyright (C) 2000 by Francesco Zappa Nardelli - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -Credits -******* - -Keith Packard wrote the pcf driver found in XFree86. His work is at -the same time the specification and the sample implementation of the -PCF format. Undoubtedly, this driver is inspired from his work. diff --git a/nx-X11/extras/freetype2/src/pcf/rules.mk b/nx-X11/extras/freetype2/src/pcf/rules.mk deleted file mode 100644 index 1ad4ba897..000000000 --- a/nx-X11/extras/freetype2/src/pcf/rules.mk +++ /dev/null @@ -1,80 +0,0 @@ -# -# FreeType 2 pcf driver configuration rules -# - - -# Copyright (C) 2000, 2001, 2003 by -# Francesco Zappa Nardelli -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - - -# pcf driver directory -# -PCF_DIR := $(SRC_DIR)/pcf - - -PCF_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PCF_DIR)) - - -# pcf driver sources (i.e., C files) -# -PCF_DRV_SRC := $(PCF_DIR)/pcfread.c \ - $(PCF_DIR)/pcfdrivr.c \ - $(PCF_DIR)/pcfutil.c - -# pcf driver headers -# -PCF_DRV_H := $(PCF_DIR)/pcf.h \ - $(PCF_DIR)/pcfdrivr.h \ - $(PCF_DIR)/pcfutil.h \ - $(PCF_DIR)/pcferror.h - -# pcf driver object(s) -# -# PCF_DRV_OBJ_M is used during `multi' builds -# PCF_DRV_OBJ_S is used during `single' builds -# -PCF_DRV_OBJ_M := $(PCF_DRV_SRC:$(PCF_DIR)/%.c=$(OBJ_DIR)/%.$O) -PCF_DRV_OBJ_S := $(OBJ_DIR)/pcf.$O - -# pcf driver source file for single build -# -PCF_DRV_SRC_S := $(PCF_DIR)/pcf.c - - -# pcf driver - single object -# -$(PCF_DRV_OBJ_S): $(PCF_DRV_SRC_S) $(PCF_DRV_SRC) $(FREETYPE_H) $(PCF_DRV_H) - $(PCF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PCF_DRV_SRC_S)) - - -# pcf driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(PCF_DIR)/%.c $(FREETYPE_H) $(PCF_DRV_H) - $(PCF_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(PCF_DRV_OBJ_S) -DRV_OBJS_M += $(PCF_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/pfr/Jamfile b/nx-X11/extras/freetype2/src/pfr/Jamfile deleted file mode 100644 index 4c38a2de9..000000000 --- a/nx-X11/extras/freetype2/src/pfr/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/pfr Jamfile (c) 2002 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) pfr ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = pfrdrivr pfrgload pfrload pfrobjs pfrcmap pfrsbit ; - } - else - { - _sources = pfr ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/pfr Jamfile diff --git a/nx-X11/extras/freetype2/src/pfr/descrip.mms b/nx-X11/extras/freetype2/src/pfr/descrip.mms deleted file mode 100644 index 75178d0ef..000000000 --- a/nx-X11/extras/freetype2/src/pfr/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 PFR driver compilation rules for VMS -# - - -# Copyright 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.pfr]) - -OBJS=pfr.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/pfr/module.mk b/nx-X11/extras/freetype2/src/pfr/module.mk deleted file mode 100644 index 3da0d5a3c..000000000 --- a/nx-X11/extras/freetype2/src/pfr/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 PFR module definition -# - - -# Copyright 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_pfr_driver - -add_pfr_driver: - $(OPEN_DRIVER)pfr_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)pfr $(ECHO_DRIVER_DESC)PFR/TrueDoc font files with extension *.pfr$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/pfr/pfr.c b/nx-X11/extras/freetype2/src/pfr/pfr.c deleted file mode 100644 index eb2c4edb7..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfr.c +++ /dev/null @@ -1,29 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfr.c */ -/* */ -/* FreeType PFR driver component. */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> - -#include "pfrload.c" -#include "pfrgload.c" -#include "pfrcmap.c" -#include "pfrobjs.c" -#include "pfrdrivr.c" -#include "pfrsbit.c" - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrcmap.c b/nx-X11/extras/freetype2/src/pfr/pfrcmap.c deleted file mode 100644 index de6c5a07c..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrcmap.c +++ /dev/null @@ -1,158 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrcmap.c */ -/* */ -/* FreeType PFR cmap handling (body). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "pfrcmap.h" -#include "pfrobjs.h" -#include FT_INTERNAL_DEBUG_H - - - FT_CALLBACK_DEF( FT_Error ) - pfr_cmap_init( PFR_CMap cmap ) - { - PFR_Face face = (PFR_Face)FT_CMAP_FACE( cmap ); - - - cmap->num_chars = face->phy_font.num_chars; - cmap->chars = face->phy_font.chars; - - /* just for safety, check that the character entries are correctly */ - /* sorted in increasing character code order */ - { - FT_UInt n; - - - for ( n = 1; n < cmap->num_chars; n++ ) - { - if ( cmap->chars[n - 1].char_code >= cmap->chars[n].char_code ) - FT_ASSERT( 0 ); - } - } - - return 0; - } - - - FT_CALLBACK_DEF( void ) - pfr_cmap_done( PFR_CMap cmap ) - { - cmap->chars = NULL; - cmap->num_chars = 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - pfr_cmap_char_index( PFR_CMap cmap, - FT_UInt32 char_code ) - { - FT_UInt min = 0; - FT_UInt max = cmap->num_chars; - FT_UInt mid; - PFR_Char gchar; - - - while ( min < max ) - { - mid = min + ( max - min ) / 2; - gchar = cmap->chars + mid; - - if ( gchar->char_code == char_code ) - return mid + 1; - - if ( gchar->char_code < char_code ) - min = mid + 1; - else - max = mid; - } - return 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - pfr_cmap_char_next( PFR_CMap cmap, - FT_UInt32 *pchar_code ) - { - FT_UInt result = 0; - FT_UInt32 char_code = *pchar_code + 1; - - - Restart: - { - FT_UInt min = 0; - FT_UInt max = cmap->num_chars; - FT_UInt mid; - PFR_Char gchar; - - - while ( min < max ) - { - mid = min + ( ( max - min ) >> 1 ); - gchar = cmap->chars + mid; - - if ( gchar->char_code == char_code ) - { - result = mid; - if ( result != 0 ) - { - result++; - goto Exit; - } - - char_code++; - goto Restart; - } - - if ( gchar->char_code < char_code ) - min = mid+1; - else - max = mid; - } - - /* we didn't find it, but we have a pair just above it */ - char_code = 0; - - if ( min < cmap->num_chars ) - { - gchar = cmap->chars + min; - result = min; - if ( result != 0 ) - { - result++; - char_code = gchar->char_code; - } - } - } - - Exit: - *pchar_code = char_code; - return result; - } - - - FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec - pfr_cmap_class_rec = - { - sizeof ( PFR_CMapRec ), - - (FT_CMap_InitFunc) pfr_cmap_init, - (FT_CMap_DoneFunc) pfr_cmap_done, - (FT_CMap_CharIndexFunc)pfr_cmap_char_index, - (FT_CMap_CharNextFunc) pfr_cmap_char_next - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrcmap.h b/nx-X11/extras/freetype2/src/pfr/pfrcmap.h deleted file mode 100644 index d77813e3c..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrcmap.h +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrcmap.h */ -/* */ -/* FreeType PFR cmap handling (specification). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PFRCMAP_H__ -#define __PFRCMAP_H__ - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include "pfrtypes.h" - - -FT_BEGIN_HEADER - - typedef struct PFR_CMapRec_ - { - FT_CMapRec cmap; - FT_UInt num_chars; - PFR_Char chars; - - } PFR_CMapRec, *PFR_CMap; - - - FT_CALLBACK_TABLE const FT_CMap_ClassRec pfr_cmap_class_rec; - -FT_END_HEADER - - -#endif /* __PFRCMAP_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrdrivr.c b/nx-X11/extras/freetype2/src/pfr/pfrdrivr.c deleted file mode 100644 index 55752a5f4..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrdrivr.c +++ /dev/null @@ -1,203 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrdrivr.c */ -/* */ -/* FreeType PFR driver interface (body). */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_SERVICE_PFR_H -#include FT_SERVICE_XFREE86_NAME_H -#include "pfrdrivr.h" -#include "pfrobjs.h" - -#include "pfrerror.h" - - - FT_CALLBACK_DEF( FT_Error ) - pfr_get_kerning( FT_Face pfrface, /* PFR_Face */ - FT_UInt left, - FT_UInt right, - FT_Vector *avector ) - { - PFR_Face face = (PFR_Face)pfrface; - PFR_PhyFont phys = &face->phy_font; - - - pfr_face_get_kerning( pfrface, left, right, avector ); - - /* convert from metrics to outline units when necessary */ - if ( phys->outline_resolution != phys->metrics_resolution ) - { - if ( avector->x != 0 ) - avector->x = FT_MulDiv( avector->x, phys->outline_resolution, - phys->metrics_resolution ); - - if ( avector->y != 0 ) - avector->y = FT_MulDiv( avector->x, phys->outline_resolution, - phys->metrics_resolution ); - } - - return PFR_Err_Ok; - } - - - /* - * PFR METRICS SERVICE - * - */ - - FT_CALLBACK_DEF( FT_Error ) - pfr_get_advance( FT_Face pfrface, /* PFR_Face */ - FT_UInt gindex, - FT_Pos *anadvance ) - { - PFR_Face face = (PFR_Face)pfrface; - FT_Error error = PFR_Err_Bad_Argument; - - - *anadvance = 0; - if ( face ) - { - PFR_PhyFont phys = &face->phy_font; - - - if ( gindex < phys->num_chars ) - { - *anadvance = phys->chars[gindex].advance; - error = 0; - } - } - - return error; - } - - - FT_CALLBACK_DEF( FT_Error ) - pfr_get_metrics( FT_Face pfrface, /* PFR_Face */ - FT_UInt *anoutline_resolution, - FT_UInt *ametrics_resolution, - FT_Fixed *ametrics_x_scale, - FT_Fixed *ametrics_y_scale ) - { - PFR_Face face = (PFR_Face)pfrface; - PFR_PhyFont phys = &face->phy_font; - FT_Fixed x_scale, y_scale; - FT_Size size = face->root.size; - - - if ( anoutline_resolution ) - *anoutline_resolution = phys->outline_resolution; - - if ( ametrics_resolution ) - *ametrics_resolution = phys->metrics_resolution; - - x_scale = 0x10000L; - y_scale = 0x10000L; - - if ( size ) - { - x_scale = FT_DivFix( size->metrics.x_ppem << 6, - phys->metrics_resolution ); - - y_scale = FT_DivFix( size->metrics.y_ppem << 6, - phys->metrics_resolution ); - } - - if ( ametrics_x_scale ) - *ametrics_x_scale = x_scale; - - if ( ametrics_y_scale ) - *ametrics_y_scale = y_scale; - - return PFR_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const FT_Service_PfrMetricsRec pfr_metrics_service_rec = - { - pfr_get_metrics, - pfr_face_get_kerning, - pfr_get_advance - }; - - - /* - * SERVICE LIST - * - */ - - static const FT_ServiceDescRec pfr_services[] = - { - { FT_SERVICE_ID_PFR_METRICS, &pfr_metrics_service_rec }, - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_PFR }, - { NULL, NULL } - }; - - - FT_CALLBACK_DEF( FT_Module_Interface ) - pfr_get_service( FT_Module module, - const FT_String* service_id ) - { - FT_UNUSED( module ); - - return ft_service_list_lookup( pfr_services, service_id ); - } - - - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec pfr_driver_class = - { - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_SCALABLE, - - sizeof( FT_DriverRec ), - - "pfr", - 0x10000L, - 0x20000L, - - NULL, - - 0, - 0, - pfr_get_service - }, - - sizeof( PFR_FaceRec ), - sizeof( PFR_SizeRec ), - sizeof( PFR_SlotRec ), - - pfr_face_init, - pfr_face_done, - 0, /* FT_Size_InitFunc */ - 0, /* FT_Size_DoneFunc */ - pfr_slot_init, - pfr_slot_done, - - 0, /* FT_Size_ResetPointsFunc */ - 0, /* FT_Size_ResetPixelsFunc */ - pfr_slot_load, - - pfr_get_kerning, - 0, /* FT_Face_AttachFunc */ - 0 /* FT_Face_GetAdvancesFunc */ - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrdrivr.h b/nx-X11/extras/freetype2/src/pfr/pfrdrivr.h deleted file mode 100644 index 36f1205b7..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrdrivr.h +++ /dev/null @@ -1,39 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrdrivr.h */ -/* */ -/* High-level Type PFR driver interface (specification). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PFRDRIVR_H__ -#define __PFRDRIVR_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Driver_ClassRec ) pfr_driver_class; - - -FT_END_HEADER - - -#endif /* __PFRDRIVR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrerror.h b/nx-X11/extras/freetype2/src/pfr/pfrerror.h deleted file mode 100644 index 2e1c401dd..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrerror.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrerror.h */ -/* */ -/* PFR error codes (specification only). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the PFR error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __PFRERROR_H__ -#define __PFRERROR_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX PFR_Err_ -#define FT_ERR_BASE FT_Mod_Err_PFR - -#include FT_ERRORS_H - -#endif /* __PFRERROR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrgload.c b/nx-X11/extras/freetype2/src/pfr/pfrgload.c deleted file mode 100644 index 87ba6846e..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrgload.c +++ /dev/null @@ -1,801 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrgload.c */ -/* */ -/* FreeType PFR glyph loader (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "pfrgload.h" -#include "pfrsbit.h" -#include "pfrload.h" /* for macro definitions */ -#include FT_INTERNAL_DEBUG_H - -#include "pfrerror.h" - -#undef FT_COMPONENT -#define FT_COMPONENT trace_pfr - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PFR GLYPH BUILDER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( void ) - pfr_glyph_init( PFR_Glyph glyph, - FT_GlyphLoader loader ) - { - FT_ZERO( glyph ); - - glyph->loader = loader; - glyph->path_begun = 0; - - FT_GlyphLoader_Rewind( loader ); - } - - - FT_LOCAL_DEF( void ) - pfr_glyph_done( PFR_Glyph glyph ) - { - FT_Memory memory = glyph->loader->memory; - - - FT_FREE( glyph->x_control ); - glyph->y_control = NULL; - - glyph->max_xy_control = 0; - glyph->num_x_control = 0; - glyph->num_y_control = 0; - - FT_FREE( glyph->subs ); - - glyph->max_subs = 0; - glyph->num_subs = 0; - - glyph->loader = NULL; - glyph->path_begun = 0; - } - - - /* close current contour, if any */ - static void - pfr_glyph_close_contour( PFR_Glyph glyph ) - { - FT_GlyphLoader loader = glyph->loader; - FT_Outline* outline = &loader->current.outline; - FT_Int last, first; - - - if ( !glyph->path_begun ) - return; - - /* compute first and last point indices in current glyph outline */ - last = outline->n_points - 1; - first = 0; - if ( outline->n_contours > 0 ) - first = outline->contours[outline->n_contours - 1]; - - /* if the last point falls on the same location than the first one */ - /* we need to delete it */ - if ( last > first ) - { - FT_Vector* p1 = outline->points + first; - FT_Vector* p2 = outline->points + last; - - - if ( p1->x == p2->x && p1->y == p2->y ) - { - outline->n_points--; - last--; - } - } - - /* don't add empty contours */ - if ( last >= first ) - outline->contours[outline->n_contours++] = (short)last; - - glyph->path_begun = 0; - } - - - /* reset glyph to start the loading of a new glyph */ - static void - pfr_glyph_start( PFR_Glyph glyph ) - { - glyph->path_begun = 0; - } - - - static FT_Error - pfr_glyph_line_to( PFR_Glyph glyph, - FT_Vector* to ) - { - FT_GlyphLoader loader = glyph->loader; - FT_Outline* outline = &loader->current.outline; - FT_Error error; - - - /* check that we have begun a new path */ - FT_ASSERT( glyph->path_begun != 0 ); - - error = FT_GlyphLoader_CheckPoints( loader, 1, 0 ); - if ( !error ) - { - FT_UInt n = outline->n_points; - - - outline->points[n] = *to; - outline->tags [n] = FT_CURVE_TAG_ON; - - outline->n_points++; - } - - return error; - } - - - static FT_Error - pfr_glyph_curve_to( PFR_Glyph glyph, - FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to ) - { - FT_GlyphLoader loader = glyph->loader; - FT_Outline* outline = &loader->current.outline; - FT_Error error; - - - /* check that we have begun a new path */ - FT_ASSERT( glyph->path_begun != 0 ); - - error = FT_GlyphLoader_CheckPoints( loader, 3, 0 ); - if ( !error ) - { - FT_Vector* vec = outline->points + outline->n_points; - FT_Byte* tag = (FT_Byte*)outline->tags + outline->n_points; - - - vec[0] = *control1; - vec[1] = *control2; - vec[2] = *to; - tag[0] = FT_CURVE_TAG_CUBIC; - tag[1] = FT_CURVE_TAG_CUBIC; - tag[2] = FT_CURVE_TAG_ON; - - outline->n_points = (FT_Short)( outline->n_points + 3 ); - } - - return error; - } - - - static FT_Error - pfr_glyph_move_to( PFR_Glyph glyph, - FT_Vector* to ) - { - FT_GlyphLoader loader = glyph->loader; - FT_Error error; - - - /* close current contour if any */ - pfr_glyph_close_contour( glyph ); - - /* indicate that a new contour has started */ - glyph->path_begun = 1; - - /* check that there is space for a new contour and a new point */ - error = FT_GlyphLoader_CheckPoints( loader, 1, 1 ); - if ( !error ) - /* add new start point */ - error = pfr_glyph_line_to( glyph, to ); - - return error; - } - - - static void - pfr_glyph_end( PFR_Glyph glyph ) - { - /* close current contour if any */ - pfr_glyph_close_contour( glyph ); - - /* merge the current glyph into the stack */ - FT_GlyphLoader_Add( glyph->loader ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PFR GLYPH LOADER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* load a simple glyph */ - static FT_Error - pfr_glyph_load_simple( PFR_Glyph glyph, - FT_Byte* p, - FT_Byte* limit ) - { - FT_Error error = 0; - FT_Memory memory = glyph->loader->memory; - FT_UInt flags, x_count, y_count, i, count, mask; - FT_Int x; - - - PFR_CHECK( 1 ); - flags = PFR_NEXT_BYTE( p ); - - /* test for composite glyphs */ - FT_ASSERT( ( flags & PFR_GLYPH_IS_COMPOUND ) == 0 ); - - x_count = 0; - y_count = 0; - - if ( flags & PFR_GLYPH_1BYTE_XYCOUNT ) - { - PFR_CHECK( 1 ); - count = PFR_NEXT_BYTE( p ); - x_count = ( count & 15 ); - y_count = ( count >> 4 ); - } - else - { - if ( flags & PFR_GLYPH_XCOUNT ) - { - PFR_CHECK( 1 ); - x_count = PFR_NEXT_BYTE( p ); - } - - if ( flags & PFR_GLYPH_YCOUNT ) - { - PFR_CHECK( 1 ); - y_count = PFR_NEXT_BYTE( p ); - } - } - - count = x_count + y_count; - - /* re-allocate array when necessary */ - if ( count > glyph->max_xy_control ) - { - FT_UInt new_max = FT_PAD_CEIL( count, 8 ); - - - if ( FT_RENEW_ARRAY( glyph->x_control, - glyph->max_xy_control, - new_max ) ) - goto Exit; - - glyph->max_xy_control = new_max; - } - - glyph->y_control = glyph->x_control + x_count; - - mask = 0; - x = 0; - - for ( i = 0; i < count; i++ ) - { - if ( ( i & 7 ) == 0 ) - { - PFR_CHECK( 1 ); - mask = PFR_NEXT_BYTE( p ); - } - - if ( mask & 1 ) - { - PFR_CHECK( 2 ); - x = PFR_NEXT_SHORT( p ); - } - else - { - PFR_CHECK( 1 ); - x += PFR_NEXT_BYTE( p ); - } - - glyph->x_control[i] = x; - - mask >>= 1; - } - - /* XXX: for now we ignore the secondary stroke and edge definitions */ - /* since we don't want to support native PFR hinting */ - /* */ - if ( flags & PFR_GLYPH_EXTRA_ITEMS ) - { - error = pfr_extra_items_skip( &p, limit ); - if ( error ) - goto Exit; - } - - pfr_glyph_start( glyph ); - - /* now load a simple glyph */ - { - FT_Vector pos[4]; - FT_Vector* cur; - - - pos[0].x = pos[0].y = 0; - pos[3] = pos[0]; - - for (;;) - { - FT_Int format, args_format = 0, args_count, n; - - - /***************************************************************/ - /* read instruction */ - /* */ - PFR_CHECK( 1 ); - format = PFR_NEXT_BYTE( p ); - - switch ( format >> 4 ) - { - case 0: /* end glyph */ - FT_TRACE6(( "- end glyph" )); - args_count = 0; - break; - - case 1: /* general line operation */ - FT_TRACE6(( "- general line" )); - goto Line1; - - case 4: /* move to inside contour */ - FT_TRACE6(( "- move to inside" )); - goto Line1; - - case 5: /* move to outside contour */ - FT_TRACE6(( "- move to outside" )); - Line1: - args_format = format & 15; - args_count = 1; - break; - - case 2: /* horizontal line to */ - FT_TRACE6(( "- horizontal line to cx.%d", format & 15 )); - pos[0].y = pos[3].y; - pos[0].x = glyph->x_control[format & 15]; - pos[3] = pos[0]; - args_count = 0; - break; - - case 3: /* vertical line to */ - FT_TRACE6(( "- vertical line to cy.%d", format & 15 )); - pos[0].x = pos[3].x; - pos[0].y = glyph->y_control[format & 15]; - pos[3] = pos[0]; - args_count = 0; - break; - - case 6: /* horizontal to vertical curve */ - FT_TRACE6(( "- hv curve " )); - args_format = 0xB8E; - args_count = 3; - break; - - case 7: /* vertical to horizontal curve */ - FT_TRACE6(( "- vh curve" )); - args_format = 0xE2B; - args_count = 3; - break; - - default: /* general curve to */ - FT_TRACE6(( "- general curve" )); - args_count = 4; - args_format = format & 15; - } - - /***********************************************************/ - /* now read arguments */ - /* */ - cur = pos; - for ( n = 0; n < args_count; n++ ) - { - FT_Int idx, delta; - - - /* read the X argument */ - switch ( args_format & 3 ) - { - case 0: /* 8-bit index */ - PFR_CHECK( 1 ); - idx = PFR_NEXT_BYTE( p ); - cur->x = glyph->x_control[idx]; - FT_TRACE7(( " cx#%d", idx )); - break; - - case 1: /* 16-bit value */ - PFR_CHECK( 2 ); - cur->x = PFR_NEXT_SHORT( p ); - FT_TRACE7(( " x.%d", cur->x )); - break; - - case 2: /* 8-bit delta */ - PFR_CHECK( 1 ); - delta = PFR_NEXT_INT8( p ); - cur->x = pos[3].x + delta; - FT_TRACE7(( " dx.%d", delta )); - break; - - default: - FT_TRACE7(( " |" )); - cur->x = pos[3].x; - } - - /* read the Y argument */ - switch ( ( args_format >> 2 ) & 3 ) - { - case 0: /* 8-bit index */ - PFR_CHECK( 1 ); - idx = PFR_NEXT_BYTE( p ); - cur->y = glyph->y_control[idx]; - FT_TRACE7(( " cy#%d", idx )); - break; - - case 1: /* 16-bit absolute value */ - PFR_CHECK( 2 ); - cur->y = PFR_NEXT_SHORT( p ); - FT_TRACE7(( " y.%d", cur->y )); - break; - - case 2: /* 8-bit delta */ - PFR_CHECK( 1 ); - delta = PFR_NEXT_INT8( p ); - cur->y = pos[3].y + delta; - FT_TRACE7(( " dy.%d", delta )); - break; - - default: - FT_TRACE7(( " -" )); - cur->y = pos[3].y; - } - - /* read the additional format flag for the general curve */ - if ( n == 0 && args_count == 4 ) - { - PFR_CHECK( 1 ); - args_format = PFR_NEXT_BYTE( p ); - args_count--; - } - else - args_format >>= 4; - - /* save the previous point */ - pos[3] = cur[0]; - cur++; - } - - FT_TRACE7(( "\n" )); - - /***********************************************************/ - /* finally, execute instruction */ - /* */ - switch ( format >> 4 ) - { - case 0: /* end glyph => EXIT */ - pfr_glyph_end( glyph ); - goto Exit; - - case 1: /* line operations */ - case 2: - case 3: - error = pfr_glyph_line_to( glyph, pos ); - goto Test_Error; - - case 4: /* move to inside contour */ - case 5: /* move to outside contour */ - error = pfr_glyph_move_to( glyph, pos ); - goto Test_Error; - - default: /* curve operations */ - error = pfr_glyph_curve_to( glyph, pos, pos + 1, pos + 2 ); - - Test_Error: /* test error condition */ - if ( error ) - goto Exit; - } - } /* for (;;) */ - } - - Exit: - return error; - - Too_Short: - error = PFR_Err_Invalid_Table; - FT_ERROR(( "pfr_glyph_load_simple: invalid glyph data\n" )); - goto Exit; - } - - - /* load a composite/compound glyph */ - static FT_Error - pfr_glyph_load_compound( PFR_Glyph glyph, - FT_Byte* p, - FT_Byte* limit ) - { - FT_Error error = 0; - FT_GlyphLoader loader = glyph->loader; - FT_Memory memory = loader->memory; - PFR_SubGlyph subglyph; - FT_UInt flags, i, count, org_count; - FT_Int x_pos, y_pos; - - - PFR_CHECK( 1 ); - flags = PFR_NEXT_BYTE( p ); - - /* test for composite glyphs */ - FT_ASSERT( ( flags & PFR_GLYPH_IS_COMPOUND ) != 0 ); - - count = flags & 0x3F; - - /* ignore extra items when present */ - /* */ - if ( flags & PFR_GLYPH_EXTRA_ITEMS ) - { - error = pfr_extra_items_skip( &p, limit ); - if (error) goto Exit; - } - - /* we can't rely on the FT_GlyphLoader to load sub-glyphs, because */ - /* the PFR format is dumb, using direct file offsets to point to the */ - /* sub-glyphs (instead of glyph indices). Sigh. */ - /* */ - /* For now, we load the list of sub-glyphs into a different array */ - /* but this will prevent us from using the auto-hinter at its best */ - /* quality. */ - /* */ - org_count = glyph->num_subs; - - if ( org_count + count > glyph->max_subs ) - { - FT_UInt new_max = ( org_count + count + 3 ) & -4; - - - if ( FT_RENEW_ARRAY( glyph->subs, glyph->max_subs, new_max ) ) - goto Exit; - - glyph->max_subs = new_max; - } - - subglyph = glyph->subs + org_count; - - for ( i = 0; i < count; i++, subglyph++ ) - { - FT_UInt format; - - - x_pos = 0; - y_pos = 0; - - PFR_CHECK( 1 ); - format = PFR_NEXT_BYTE( p ); - - /* read scale when available */ - subglyph->x_scale = 0x10000L; - if ( format & PFR_SUBGLYPH_XSCALE ) - { - PFR_CHECK( 2 ); - subglyph->x_scale = PFR_NEXT_SHORT( p ) << 4; - } - - subglyph->y_scale = 0x10000L; - if ( format & PFR_SUBGLYPH_YSCALE ) - { - PFR_CHECK( 2 ); - subglyph->y_scale = PFR_NEXT_SHORT( p ) << 4; - } - - /* read offset */ - switch ( format & 3 ) - { - case 1: - PFR_CHECK( 2 ); - x_pos = PFR_NEXT_SHORT( p ); - break; - - case 2: - PFR_CHECK( 1 ); - x_pos += PFR_NEXT_INT8( p ); - break; - - default: - ; - } - - switch ( ( format >> 2 ) & 3 ) - { - case 1: - PFR_CHECK( 2 ); - y_pos = PFR_NEXT_SHORT( p ); - break; - - case 2: - PFR_CHECK( 1 ); - y_pos += PFR_NEXT_INT8( p ); - break; - - default: - ; - } - - subglyph->x_delta = x_pos; - subglyph->y_delta = y_pos; - - /* read glyph position and size now */ - if ( format & PFR_SUBGLYPH_2BYTE_SIZE ) - { - PFR_CHECK( 2 ); - subglyph->gps_size = PFR_NEXT_USHORT( p ); - } - else - { - PFR_CHECK( 1 ); - subglyph->gps_size = PFR_NEXT_BYTE( p ); - } - - if ( format & PFR_SUBGLYPH_3BYTE_OFFSET ) - { - PFR_CHECK( 3 ); - subglyph->gps_offset = PFR_NEXT_LONG( p ); - } - else - { - PFR_CHECK( 2 ); - subglyph->gps_offset = PFR_NEXT_USHORT( p ); - } - - glyph->num_subs++; - } - - Exit: - return error; - - Too_Short: - error = PFR_Err_Invalid_Table; - FT_ERROR(( "pfr_glyph_load_compound: invalid glyph data\n" )); - goto Exit; - } - - - - - - static FT_Error - pfr_glyph_load_rec( PFR_Glyph glyph, - FT_Stream stream, - FT_ULong gps_offset, - FT_ULong offset, - FT_ULong size ) - { - FT_Error error; - FT_Byte* p; - FT_Byte* limit; - - - if ( FT_STREAM_SEEK( gps_offset + offset ) || - FT_FRAME_ENTER( size ) ) - goto Exit; - - p = (FT_Byte*)stream->cursor; - limit = p + size; - - if ( size > 0 && *p & PFR_GLYPH_IS_COMPOUND ) - { - FT_Int n, old_count, count; - FT_GlyphLoader loader = glyph->loader; - FT_Outline* base = &loader->base.outline; - - - old_count = glyph->num_subs; - - /* this is a compound glyph - load it */ - error = pfr_glyph_load_compound( glyph, p, limit ); - - FT_FRAME_EXIT(); - - if ( error ) - goto Exit; - - count = glyph->num_subs - old_count; - - /* now, load each individual glyph */ - for ( n = 0; n < count; n++ ) - { - FT_Int i, old_points, num_points; - PFR_SubGlyph subglyph; - - - subglyph = glyph->subs + old_count + n; - old_points = base->n_points; - - error = pfr_glyph_load_rec( glyph, stream, gps_offset, - subglyph->gps_offset, - subglyph->gps_size ); - if ( error ) - goto Exit; - - /* note that `glyph->subs' might have been re-allocated */ - subglyph = glyph->subs + old_count + n; - num_points = base->n_points - old_points; - - /* translate and eventually scale the new glyph points */ - if ( subglyph->x_scale != 0x10000L || subglyph->y_scale != 0x10000L ) - { - FT_Vector* vec = base->points + old_points; - - - for ( i = 0; i < num_points; i++, vec++ ) - { - vec->x = FT_MulFix( vec->x, subglyph->x_scale ) + - subglyph->x_delta; - vec->y = FT_MulFix( vec->y, subglyph->y_scale ) + - subglyph->y_delta; - } - } - else - { - FT_Vector* vec = loader->base.outline.points + old_points; - - - for ( i = 0; i < num_points; i++, vec++ ) - { - vec->x += subglyph->x_delta; - vec->y += subglyph->y_delta; - } - } - - /* proceed to next sub-glyph */ - } - } - else - { - /* load a simple glyph */ - error = pfr_glyph_load_simple( glyph, p, limit ); - - FT_FRAME_EXIT(); - } - - Exit: - return error; - } - - - - - - FT_LOCAL_DEF( FT_Error ) - pfr_glyph_load( PFR_Glyph glyph, - FT_Stream stream, - FT_ULong gps_offset, - FT_ULong offset, - FT_ULong size ) - { - /* initialize glyph loader */ - FT_GlyphLoader_Rewind( glyph->loader ); - - /* load the glyph, recursively when needed */ - return pfr_glyph_load_rec( glyph, stream, gps_offset, offset, size ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrgload.h b/nx-X11/extras/freetype2/src/pfr/pfrgload.h deleted file mode 100644 index 7cc7a8702..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrgload.h +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrgload.h */ -/* */ -/* FreeType PFR glyph loader (specification). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PFRGLOAD_H__ -#define __PFRGLOAD_H__ - -#include "pfrtypes.h" - -FT_BEGIN_HEADER - - - FT_LOCAL( void ) - pfr_glyph_init( PFR_Glyph glyph, - FT_GlyphLoader loader ); - - FT_LOCAL( void ) - pfr_glyph_done( PFR_Glyph glyph ); - - - FT_LOCAL( FT_Error ) - pfr_glyph_load( PFR_Glyph glyph, - FT_Stream stream, - FT_ULong gps_offset, - FT_ULong offset, - FT_ULong size ); - - -FT_END_HEADER - - -#endif /* __PFRGLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrload.c b/nx-X11/extras/freetype2/src/pfr/pfrload.c deleted file mode 100644 index 19ced45d1..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrload.c +++ /dev/null @@ -1,1081 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrload.c */ -/* */ -/* FreeType PFR loader (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "pfrload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H - -#include "pfrerror.h" - -#undef FT_COMPONENT -#define FT_COMPONENT trace_pfr - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** EXTRA ITEMS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - pfr_extra_items_skip( FT_Byte* *pp, - FT_Byte* limit ) - { - return pfr_extra_items_parse( pp, limit, NULL, NULL ); - } - - - FT_LOCAL_DEF( FT_Error ) - pfr_extra_items_parse( FT_Byte* *pp, - FT_Byte* limit, - PFR_ExtraItem item_list, - FT_Pointer item_data ) - { - FT_Error error = 0; - FT_Byte* p = *pp; - FT_UInt num_items, item_type, item_size; - - - PFR_CHECK( 1 ); - num_items = PFR_NEXT_BYTE( p ); - - for ( ; num_items > 0; num_items-- ) - { - PFR_CHECK( 2 ); - item_size = PFR_NEXT_BYTE( p ); - item_type = PFR_NEXT_BYTE( p ); - - PFR_CHECK( item_size ); - - if ( item_list ) - { - PFR_ExtraItem extra = item_list; - - - for ( extra = item_list; extra->parser != NULL; extra++ ) - { - if ( extra->type == item_type ) - { - error = extra->parser( p, p + item_size, item_data ); - if ( error ) goto Exit; - - break; - } - } - } - - p += item_size; - } - - Exit: - *pp = p; - return error; - - Too_Short: - FT_ERROR(( "pfr_extra_items_parse: invalid extra items table\n" )); - error = PFR_Err_Invalid_Table; - goto Exit; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PFR HEADER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static const FT_Frame_Field pfr_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE PFR_HeaderRec - - FT_FRAME_START( 58 ), - FT_FRAME_ULONG ( signature ), - FT_FRAME_USHORT( version ), - FT_FRAME_USHORT( signature2 ), - FT_FRAME_USHORT( header_size ), - - FT_FRAME_USHORT( log_dir_size ), - FT_FRAME_USHORT( log_dir_offset ), - - FT_FRAME_USHORT( log_font_max_size ), - FT_FRAME_UOFF3 ( log_font_section_size ), - FT_FRAME_UOFF3 ( log_font_section_offset ), - - FT_FRAME_USHORT( phy_font_max_size ), - FT_FRAME_UOFF3 ( phy_font_section_size ), - FT_FRAME_UOFF3 ( phy_font_section_offset ), - - FT_FRAME_USHORT( gps_max_size ), - FT_FRAME_UOFF3 ( gps_section_size ), - FT_FRAME_UOFF3 ( gps_section_offset ), - - FT_FRAME_BYTE ( max_blue_values ), - FT_FRAME_BYTE ( max_x_orus ), - FT_FRAME_BYTE ( max_y_orus ), - - FT_FRAME_BYTE ( phy_font_max_size_high ), - FT_FRAME_BYTE ( color_flags ), - - FT_FRAME_UOFF3 ( bct_max_size ), - FT_FRAME_UOFF3 ( bct_set_max_size ), - FT_FRAME_UOFF3 ( phy_bct_set_max_size ), - - FT_FRAME_USHORT( num_phy_fonts ), - FT_FRAME_BYTE ( max_vert_stem_snap ), - FT_FRAME_BYTE ( max_horz_stem_snap ), - FT_FRAME_USHORT( max_chars ), - FT_FRAME_END - }; - - - FT_LOCAL_DEF( FT_Error ) - pfr_header_load( PFR_Header header, - FT_Stream stream ) - { - FT_Error error; - - - /* read header directly */ - if ( !FT_STREAM_SEEK( 0 ) && - !FT_STREAM_READ_FIELDS( pfr_header_fields, header ) ) - { - /* make a few adjustments to the header */ - header->phy_font_max_size += - (FT_UInt32)header->phy_font_max_size_high << 16; - } - - return error; - } - - - FT_LOCAL_DEF( FT_Bool ) - pfr_header_check( PFR_Header header ) - { - FT_Bool result = 1; - - - /* check signature and header size */ - if ( header->signature != 0x50465230L || /* "PFR0" */ - header->version > 4 || - header->header_size < 58 || - header->signature2 != 0x0d0a ) /* CR/LF */ - { - result = 0; - } - return result; - } - - - /***********************************************************************/ - /***********************************************************************/ - /***** *****/ - /***** PFR LOGICAL FONTS *****/ - /***** *****/ - /***********************************************************************/ - /***********************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - pfr_log_font_count( FT_Stream stream, - FT_UInt32 section_offset, - FT_UInt *acount ) - { - FT_Error error; - FT_UInt count; - FT_UInt result = 0; - - - if ( FT_STREAM_SEEK( section_offset ) || FT_READ_USHORT( count ) ) - goto Exit; - - result = count; - - Exit: - *acount = result; - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - pfr_log_font_load( PFR_LogFont log_font, - FT_Stream stream, - FT_UInt idx, - FT_UInt32 section_offset, - FT_Bool size_increment ) - { - FT_UInt num_log_fonts; - FT_UInt flags; - FT_UInt32 offset; - FT_UInt32 size; - FT_Error error; - - - if ( FT_STREAM_SEEK( section_offset ) || - FT_READ_USHORT( num_log_fonts ) ) - goto Exit; - - if ( idx >= num_log_fonts ) - return PFR_Err_Invalid_Argument; - - if ( FT_STREAM_SKIP( idx * 5 ) || - FT_READ_USHORT( size ) || - FT_READ_UOFF3 ( offset ) ) - goto Exit; - - /* save logical font size and offset */ - log_font->size = size; - log_font->offset = offset; - - /* now, check the rest of the table before loading it */ - { - FT_Byte* p; - FT_Byte* limit; - FT_UInt local; - - - if ( FT_STREAM_SEEK( offset ) || FT_FRAME_ENTER( size ) ) - goto Exit; - - p = stream->cursor; - limit = p + size; - - PFR_CHECK(13); - - log_font->matrix[0] = PFR_NEXT_LONG( p ); - log_font->matrix[1] = PFR_NEXT_LONG( p ); - log_font->matrix[2] = PFR_NEXT_LONG( p ); - log_font->matrix[3] = PFR_NEXT_LONG( p ); - - flags = PFR_NEXT_BYTE( p ); - - local = 0; - if ( flags & PFR_LOG_STROKE ) - { - local++; - if ( flags & PFR_LOG_2BYTE_STROKE ) - local++; - - if ( (flags & PFR_LINE_JOIN_MASK) == PFR_LINE_JOIN_MITER ) - local += 3; - } - if ( flags & PFR_LOG_BOLD ) - { - local++; - if ( flags & PFR_LOG_2BYTE_BOLD ) - local++; - } - - PFR_CHECK( local ); - - if ( flags & PFR_LOG_STROKE ) - { - log_font->stroke_thickness = ( flags & PFR_LOG_2BYTE_STROKE ) - ? PFR_NEXT_SHORT( p ) - : PFR_NEXT_BYTE( p ); - - if ( ( flags & PFR_LINE_JOIN_MASK ) == PFR_LINE_JOIN_MITER ) - log_font->miter_limit = PFR_NEXT_LONG( p ); - } - - if ( flags & PFR_LOG_BOLD ) - { - log_font->bold_thickness = ( flags & PFR_LOG_2BYTE_BOLD ) - ? PFR_NEXT_SHORT( p ) - : PFR_NEXT_BYTE( p ); - } - - if ( flags & PFR_LOG_EXTRA_ITEMS ) - { - error = pfr_extra_items_skip( &p, limit ); - if (error) goto Fail; - } - - PFR_CHECK(5); - log_font->phys_size = PFR_NEXT_USHORT( p ); - log_font->phys_offset = PFR_NEXT_ULONG( p ); - if ( size_increment ) - { - PFR_CHECK( 1 ); - log_font->phys_size += (FT_UInt32)PFR_NEXT_BYTE( p ) << 16; - } - } - - Fail: - FT_FRAME_EXIT(); - - Exit: - return error; - - Too_Short: - FT_ERROR(( "pfr_log_font_load: invalid logical font table\n" )); - error = PFR_Err_Invalid_Table; - goto Fail; - } - - - /***********************************************************************/ - /***********************************************************************/ - /***** *****/ - /***** PFR PHYSICAL FONTS *****/ - /***** *****/ - /***********************************************************************/ - /***********************************************************************/ - - - /* load bitmap strikes lists */ - FT_CALLBACK_DEF( FT_Error ) - pfr_extra_item_load_bitmap_info( FT_Byte* p, - FT_Byte* limit, - PFR_PhyFont phy_font ) - { - FT_Memory memory = phy_font->memory; - PFR_Strike strike; - FT_UInt flags0; - FT_UInt n, count, size1; - FT_Error error = 0; - - - PFR_CHECK( 5 ); - - p += 3; /* skip bctSize */ - flags0 = PFR_NEXT_BYTE( p ); - count = PFR_NEXT_BYTE( p ); - - /* re-allocate when needed */ - if ( phy_font->num_strikes + count > phy_font->max_strikes ) - { - FT_UInt new_max = FT_PAD_CEIL( phy_font->num_strikes + count, 4 ); - - - if ( FT_RENEW_ARRAY( phy_font->strikes, - phy_font->num_strikes, - new_max ) ) - goto Exit; - - phy_font->max_strikes = new_max; - } - - size1 = 1 + 1 + 1 + 2 + 2 + 1; - if ( flags0 & PFR_STRIKE_2BYTE_XPPM ) - size1++; - - if ( flags0 & PFR_STRIKE_2BYTE_YPPM ) - size1++; - - if ( flags0 & PFR_STRIKE_3BYTE_SIZE ) - size1++; - - if ( flags0 & PFR_STRIKE_3BYTE_OFFSET ) - size1++; - - if ( flags0 & PFR_STRIKE_2BYTE_COUNT ) - size1++; - - strike = phy_font->strikes + phy_font->num_strikes; - - PFR_CHECK( count * size1 ); - - for ( n = 0; n < count; n++, strike++ ) - { - strike->x_ppm = ( flags0 & PFR_STRIKE_2BYTE_XPPM ) - ? PFR_NEXT_USHORT( p ) - : PFR_NEXT_BYTE( p ); - - strike->y_ppm = ( flags0 & PFR_STRIKE_2BYTE_YPPM ) - ? PFR_NEXT_USHORT( p ) - : PFR_NEXT_BYTE( p ); - - strike->flags = PFR_NEXT_BYTE( p ); - - strike->bct_size = ( flags0 & PFR_STRIKE_3BYTE_SIZE ) - ? PFR_NEXT_ULONG( p ) - : PFR_NEXT_USHORT( p ); - - strike->bct_offset = ( flags0 & PFR_STRIKE_3BYTE_OFFSET ) - ? PFR_NEXT_ULONG( p ) - : PFR_NEXT_USHORT( p ); - - strike->num_bitmaps = ( flags0 & PFR_STRIKE_2BYTE_COUNT ) - ? PFR_NEXT_USHORT( p ) - : PFR_NEXT_BYTE( p ); - } - - phy_font->num_strikes += count; - - Exit: - return error; - - Too_Short: - error = PFR_Err_Invalid_Table; - FT_ERROR(( "pfr_extra_item_load_bitmap_info: invalid bitmap info table\n" )); - goto Exit; - } - - - /* Load font ID. This is a so-called "unique" name that is rather - * long and descriptive (like "Tiresias ScreenFont v7.51"). - * - * Note that a PFR font's family name is contained in an *undocumented* - * string of the "auxiliary data" portion of a physical font record. This - * may also contain the "real" style name! - * - * If no family name is present, the font ID is used instead for the - * family. - */ - FT_CALLBACK_DEF( FT_Error ) - pfr_extra_item_load_font_id( FT_Byte* p, - FT_Byte* limit, - PFR_PhyFont phy_font ) - { - FT_Error error = 0; - FT_Memory memory = phy_font->memory; - FT_PtrDist len = limit - p; - - - if ( phy_font->font_id != NULL ) - goto Exit; - - if ( FT_ALLOC( phy_font->font_id, len + 1 ) ) - goto Exit; - - /* copy font ID name, and terminate it for safety */ - FT_MEM_COPY( phy_font->font_id, p, len ); - phy_font->font_id[len] = 0; - - Exit: - return error; - } - - - /* load stem snap tables */ - FT_CALLBACK_DEF( FT_Error ) - pfr_extra_item_load_stem_snaps( FT_Byte* p, - FT_Byte* limit, - PFR_PhyFont phy_font ) - { - FT_UInt count, num_vert, num_horz; - FT_Int* snaps; - FT_Error error = 0; - FT_Memory memory = phy_font->memory; - - - if ( phy_font->vertical.stem_snaps != NULL ) - goto Exit; - - PFR_CHECK( 1 ); - count = PFR_NEXT_BYTE( p ); - - num_vert = count & 15; - num_horz = count >> 4; - count = num_vert + num_horz; - - PFR_CHECK( count * 2 ); - - if ( FT_NEW_ARRAY( snaps, count ) ) - goto Exit; - - phy_font->vertical.stem_snaps = snaps; - phy_font->horizontal.stem_snaps = snaps + num_vert; - - for ( ; count > 0; count--, snaps++ ) - *snaps = FT_NEXT_SHORT( p ); - - Exit: - return error; - - Too_Short: - error = PFR_Err_Invalid_Table; - FT_ERROR(( "pfr_exta_item_load_stem_snaps: invalid stem snaps table\n" )); - goto Exit; - } - - - - /* load kerning pair data */ - FT_CALLBACK_DEF( FT_Error ) - pfr_extra_item_load_kerning_pairs( FT_Byte* p, - FT_Byte* limit, - PFR_PhyFont phy_font ) - { - PFR_KernItem item; - FT_Error error = 0; - FT_Memory memory = phy_font->memory; - - - FT_TRACE2(( "pfr_extra_item_load_kerning_pairs()\n" )); - - if ( FT_NEW( item ) ) - goto Exit; - - PFR_CHECK( 4 ); - - item->pair_count = PFR_NEXT_BYTE( p ); - item->base_adj = PFR_NEXT_SHORT( p ); - item->flags = PFR_NEXT_BYTE( p ); - item->offset = phy_font->offset + ( p - phy_font->cursor ); - -#ifndef PFR_CONFIG_NO_CHECKS - item->pair_size = 3; - - if ( item->flags & PFR_KERN_2BYTE_CHAR ) - item->pair_size += 2; - - if ( item->flags & PFR_KERN_2BYTE_ADJ ) - item->pair_size += 1; - - PFR_CHECK( item->pair_count * item->pair_size ); -#endif - - /* load first and last pairs into the item to speed up */ - /* lookup later... */ - if ( item->pair_count > 0 ) - { - FT_UInt char1, char2; - FT_Byte* q; - - - if ( item->flags & PFR_KERN_2BYTE_CHAR ) - { - q = p; - char1 = PFR_NEXT_USHORT( q ); - char2 = PFR_NEXT_USHORT( q ); - - item->pair1 = PFR_KERN_INDEX( char1, char2 ); - - q = p + item->pair_size * ( item->pair_count - 1 ); - char1 = PFR_NEXT_USHORT( q ); - char2 = PFR_NEXT_USHORT( q ); - - item->pair2 = PFR_KERN_INDEX( char1, char2 ); - } - else - { - q = p; - char1 = PFR_NEXT_BYTE( q ); - char2 = PFR_NEXT_BYTE( q ); - - item->pair1 = PFR_KERN_INDEX( char1, char2 ); - - q = p + item->pair_size * ( item->pair_count - 1 ); - char1 = PFR_NEXT_BYTE( q ); - char2 = PFR_NEXT_BYTE( q ); - - item->pair2 = PFR_KERN_INDEX( char1, char2 ); - } - - /* add new item to the current list */ - item->next = NULL; - *phy_font->kern_items_tail = item; - phy_font->kern_items_tail = &item->next; - phy_font->num_kern_pairs += item->pair_count; - } - else - { - /* empty item! */ - FT_FREE( item ); - } - - Exit: - return error; - - Too_Short: - FT_FREE( item ); - - error = PFR_Err_Invalid_Table; - FT_ERROR(( "pfr_extra_item_load_kerning_pairs: " - "invalid kerning pairs table\n" )); - goto Exit; - } - - - /* - * The kerning data embedded in a PFR font are (charcode,charcode) - * pairs; we need to translate them to (gindex,gindex) and sort - * the resulting array. - */ - static FT_UInt - pfr_get_gindex( PFR_Char chars, - FT_UInt count, - FT_UInt charcode ) - { - FT_UInt min = 0; - FT_UInt max = count; - - - while ( min < max ) - { - FT_UInt mid = ( min + max ) >> 1; - PFR_Char c = chars + mid; - - - if ( c->char_code == charcode ) - return mid + 1; - - if ( c->char_code < charcode ) - min = mid + 1; - else - max = mid; - } - return 0; - } - - - FT_CALLBACK_DEF( int ) - pfr_compare_kern_pairs( const void* pair1, - const void* pair2 ) - { - FT_UInt32 p1 = PFR_KERN_PAIR_INDEX( (PFR_KernPair)pair1 ); - FT_UInt32 p2 = PFR_KERN_PAIR_INDEX( (PFR_KernPair)pair2 ); - - - if ( p1 < p2 ) - return -1; - if ( p1 > p2 ) - return 1; - return 0; - } - - - static FT_Error - pfr_sort_kerning_pairs( FT_Stream stream, - PFR_PhyFont phy_font ) - { - FT_Error error; - FT_Memory memory = stream->memory; - PFR_KernPair pairs; - PFR_KernItem item; - PFR_Char chars = phy_font->chars; - FT_UInt num_chars = phy_font->num_chars; - FT_UInt count; - - - /* create kerning pairs array - */ - if ( FT_NEW_ARRAY( phy_font->kern_pairs, phy_font->num_kern_pairs ) ) - goto Exit; - - /* load all kerning items into the array, - * converting character codes into glyph indices - */ - pairs = phy_font->kern_pairs; - item = phy_font->kern_items; - count = 0; - - for ( ; item; item = item->next ) - { - FT_UInt limit = count + item->pair_count; - FT_Byte* p; - - - if ( limit > phy_font->num_kern_pairs ) - { - error = PFR_Err_Invalid_Table; - goto Exit; - } - - if ( FT_STREAM_SEEK( item->offset ) || - FT_FRAME_ENTER( item->pair_count * item->pair_size ) ) - goto Exit; - - p = stream->cursor; - - for ( ; count < limit; count++ ) - { - PFR_KernPair pair = pairs + count; - FT_UInt char1, char2; - FT_Int kerning; - - - if ( item->flags & PFR_KERN_2BYTE_CHAR ) - { - char1 = FT_NEXT_USHORT( p ); - char2 = FT_NEXT_USHORT( p ); - } - else - { - char1 = FT_NEXT_BYTE( p ); - char2 = FT_NEXT_BYTE( p ); - } - - if ( item->flags & PFR_KERN_2BYTE_ADJ ) - kerning = item->base_adj + FT_NEXT_SHORT( p ); - else - kerning = item->base_adj + FT_NEXT_CHAR( p ); - - pair->glyph1 = pfr_get_gindex( chars, num_chars, char1 ); - pair->glyph2 = pfr_get_gindex( chars, num_chars, char2 ); - pair->kerning = kerning; - } - - FT_FRAME_EXIT(); - } - - /* sort the resulting array - */ - ft_qsort( pairs, count, - sizeof ( PFR_KernPairRec ), - pfr_compare_kern_pairs ); - - Exit: - if ( error ) - { - /* disable kerning data in case of error - */ - phy_font->num_kern_pairs = 0; - } - - return error; - } - - - static const PFR_ExtraItemRec pfr_phy_font_extra_items[] = - { - { 1, (PFR_ExtraItem_ParseFunc)pfr_extra_item_load_bitmap_info }, - { 2, (PFR_ExtraItem_ParseFunc)pfr_extra_item_load_font_id }, - { 3, (PFR_ExtraItem_ParseFunc)pfr_extra_item_load_stem_snaps }, - { 4, (PFR_ExtraItem_ParseFunc)pfr_extra_item_load_kerning_pairs }, - { 0, NULL } - }; - - - /* Loads a name from the auxiliary data. Since this extracts undocumented - * strings from the font file, we need to be careful here. - */ - static FT_Error - pfr_aux_name_load( FT_Byte* p, - FT_UInt len, - FT_Memory memory, - FT_String* *astring ) - { - FT_Error error = 0; - FT_String* result = NULL; - FT_UInt n, ok; - - - if ( len > 0 && p[len - 1] == 0 ) - len--; - - /* check that each character is ASCII for making sure not to - load garbage - */ - ok = ( len > 0 ); - for ( n = 0; n < len; n++ ) - if ( p[n] < 32 || p[n] > 127 ) - { - ok = 0; - break; - } - - if ( ok ) - { - if ( FT_ALLOC( result, len + 1 ) ) - goto Exit; - - FT_MEM_COPY( result, p, len ); - result[len] = 0; - } - Exit: - *astring = result; - return error; - } - - - FT_LOCAL_DEF( void ) - pfr_phy_font_done( PFR_PhyFont phy_font, - FT_Memory memory ) - { - FT_FREE( phy_font->font_id ); - FT_FREE( phy_font->family_name ); - FT_FREE( phy_font->style_name ); - - FT_FREE( phy_font->vertical.stem_snaps ); - phy_font->vertical.num_stem_snaps = 0; - - phy_font->horizontal.stem_snaps = NULL; - phy_font->horizontal.num_stem_snaps = 0; - - FT_FREE( phy_font->strikes ); - phy_font->num_strikes = 0; - phy_font->max_strikes = 0; - - FT_FREE( phy_font->chars ); - phy_font->num_chars = 0; - phy_font->chars_offset = 0; - - FT_FREE( phy_font->blue_values ); - phy_font->num_blue_values = 0; - - FT_FREE( phy_font->kern_pairs ); - { - PFR_KernItem item, next; - - - item = phy_font->kern_items; - while ( item ) - { - next = item->next; - FT_FREE( item ); - item = next; - } - phy_font->kern_items = NULL; - phy_font->kern_items_tail = NULL; - } - - phy_font->num_kern_pairs = 0; - } - - - FT_LOCAL_DEF( FT_Error ) - pfr_phy_font_load( PFR_PhyFont phy_font, - FT_Stream stream, - FT_UInt32 offset, - FT_UInt32 size ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_UInt flags, num_aux; - FT_Byte* p; - FT_Byte* limit; - - - phy_font->memory = memory; - phy_font->offset = offset; - - phy_font->kern_items = NULL; - phy_font->kern_items_tail = &phy_font->kern_items; - - if ( FT_STREAM_SEEK( offset ) || FT_FRAME_ENTER( size ) ) - goto Exit; - - phy_font->cursor = stream->cursor; - - p = stream->cursor; - limit = p + size; - - PFR_CHECK( 15 ); - phy_font->font_ref_number = PFR_NEXT_USHORT( p ); - phy_font->outline_resolution = PFR_NEXT_USHORT( p ); - phy_font->metrics_resolution = PFR_NEXT_USHORT( p ); - phy_font->bbox.xMin = PFR_NEXT_SHORT( p ); - phy_font->bbox.yMin = PFR_NEXT_SHORT( p ); - phy_font->bbox.xMax = PFR_NEXT_SHORT( p ); - phy_font->bbox.yMax = PFR_NEXT_SHORT( p ); - phy_font->flags = flags = PFR_NEXT_BYTE( p ); - - /* get the standard advance for non-proprotional fonts */ - if ( !(flags & PFR_PHY_PROPORTIONAL) ) - { - PFR_CHECK( 2 ); - phy_font->standard_advance = PFR_NEXT_SHORT( p ); - } - - /* load the extra items when present */ - if ( flags & PFR_PHY_EXTRA_ITEMS ) - { - error = pfr_extra_items_parse( &p, limit, - pfr_phy_font_extra_items, phy_font ); - - if ( error ) - goto Fail; - } - - /* In certain fonts, the auxiliary bytes contain interesting */ - /* information. These are not in the specification but can be */ - /* guessed by looking at the content of a few PFR0 fonts. */ - PFR_CHECK( 3 ); - num_aux = PFR_NEXT_ULONG( p ); - - if ( num_aux > 0 ) - { - FT_Byte* q = p; - FT_Byte* q2; - - - PFR_CHECK( num_aux ); - p += num_aux; - - while ( num_aux > 0 ) - { - FT_UInt length, type; - - - if ( q + 4 > p ) - break; - - length = PFR_NEXT_USHORT( q ); - if ( length < 4 || length > num_aux ) - break; - - q2 = q + length - 2; - type = PFR_NEXT_USHORT( q ); - - switch ( type ) - { - case 1: - /* this seems to correspond to the font's family name, - * padded to 16-bits with one zero when necessary - */ - error = pfr_aux_name_load( q, length - 4U, memory, - &phy_font->family_name ); - if ( error ) - goto Exit; - break; - - case 2: - if ( q + 32 > q2 ) - break; - - q += 10; - phy_font->ascent = PFR_NEXT_SHORT( q ); - phy_font->descent = PFR_NEXT_SHORT( q ); - phy_font->leading = PFR_NEXT_SHORT( q ); - q += 16; - break; - - case 3: - /* this seems to correspond to the font's style name, - * padded to 16-bits with one zero when necessary - */ - error = pfr_aux_name_load( q, length - 4U, memory, - &phy_font->style_name ); - if ( error ) - goto Exit; - break; - - default: - ; - } - - q = q2; - num_aux -= length; - } - } - - /* read the blue values */ - { - FT_UInt n, count; - - - PFR_CHECK( 1 ); - phy_font->num_blue_values = count = PFR_NEXT_BYTE( p ); - - PFR_CHECK( count * 2 ); - - if ( FT_NEW_ARRAY( phy_font->blue_values, count ) ) - goto Fail; - - for ( n = 0; n < count; n++ ) - phy_font->blue_values[n] = PFR_NEXT_SHORT( p ); - } - - PFR_CHECK( 8 ); - phy_font->blue_fuzz = PFR_NEXT_BYTE( p ); - phy_font->blue_scale = PFR_NEXT_BYTE( p ); - - phy_font->vertical.standard = PFR_NEXT_USHORT( p ); - phy_font->horizontal.standard = PFR_NEXT_USHORT( p ); - - /* read the character descriptors */ - { - FT_UInt n, count, Size; - - - phy_font->num_chars = count = PFR_NEXT_USHORT( p ); - phy_font->chars_offset = offset + ( p - stream->cursor ); - - if ( FT_NEW_ARRAY( phy_font->chars, count ) ) - goto Fail; - - Size = 1 + 1 + 2; - if ( flags & PFR_PHY_2BYTE_CHARCODE ) - Size += 1; - - if ( flags & PFR_PHY_PROPORTIONAL ) - Size += 2; - - if ( flags & PFR_PHY_ASCII_CODE ) - Size += 1; - - if ( flags & PFR_PHY_2BYTE_GPS_SIZE ) - Size += 1; - - if ( flags & PFR_PHY_3BYTE_GPS_OFFSET ) - Size += 1; - - PFR_CHECK( count * Size ); - - for ( n = 0; n < count; n++ ) - { - PFR_Char cur = &phy_font->chars[n]; - - - cur->char_code = ( flags & PFR_PHY_2BYTE_CHARCODE ) - ? PFR_NEXT_USHORT( p ) - : PFR_NEXT_BYTE( p ); - - cur->advance = ( flags & PFR_PHY_PROPORTIONAL ) - ? PFR_NEXT_SHORT( p ) - : (FT_Int) phy_font->standard_advance; - -#if 0 - cur->ascii = ( flags & PFR_PHY_ASCII_CODE ) - ? PFR_NEXT_BYTE( p ) - : 0; -#else - if ( flags & PFR_PHY_ASCII_CODE ) - p += 1; -#endif - cur->gps_size = ( flags & PFR_PHY_2BYTE_GPS_SIZE ) - ? PFR_NEXT_USHORT( p ) - : PFR_NEXT_BYTE( p ); - - cur->gps_offset = ( flags & PFR_PHY_3BYTE_GPS_OFFSET ) - ? PFR_NEXT_ULONG( p ) - : PFR_NEXT_USHORT( p ); - } - } - - /* that's it! */ - - Fail: - FT_FRAME_EXIT(); - - /* save position of bitmap info */ - phy_font->bct_offset = FT_STREAM_POS(); - phy_font->cursor = NULL; - - /* now sort kerning pairs */ - error = pfr_sort_kerning_pairs( stream, phy_font ); - - Exit: - return error; - - Too_Short: - error = PFR_Err_Invalid_Table; - FT_ERROR(( "pfr_phy_font_load: invalid physical font table\n" )); - goto Fail; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrload.h b/nx-X11/extras/freetype2/src/pfr/pfrload.h deleted file mode 100644 index 9e54b7d3f..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrload.h +++ /dev/null @@ -1,118 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrload.h */ -/* */ -/* FreeType PFR loader (specification). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PFRLOAD_H__ -#define __PFRLOAD_H__ - -#include "pfrobjs.h" -#include FT_INTERNAL_STREAM_H - - -FT_BEGIN_HEADER - -#ifdef PFR_CONFIG_NO_CHECKS -#define PFR_CHECK( x ) do { } while ( 0 ) -#else -#define PFR_CHECK( x ) do \ - { \ - if ( p + (x) > limit ) \ - goto Too_Short; \ - } while ( 0 ) -#endif - -#define PFR_NEXT_BYTE( p ) FT_NEXT_BYTE( p ) -#define PFR_NEXT_INT8( p ) FT_NEXT_CHAR( p ) -#define PFR_NEXT_SHORT( p ) FT_NEXT_SHORT( p ) -#define PFR_NEXT_USHORT( p ) FT_NEXT_USHORT( p ) -#define PFR_NEXT_LONG( p ) FT_NEXT_OFF3( p ) -#define PFR_NEXT_ULONG( p ) FT_NEXT_UOFF3( p ) - - - /* handling extra items */ - - typedef FT_Error - (*PFR_ExtraItem_ParseFunc)( FT_Byte* p, - FT_Byte* limit, - FT_Pointer data ); - - typedef struct PFR_ExtraItemRec_ - { - FT_UInt type; - PFR_ExtraItem_ParseFunc parser; - - } PFR_ExtraItemRec; - - typedef const struct PFR_ExtraItemRec_* PFR_ExtraItem; - - - FT_LOCAL( FT_Error ) - pfr_extra_items_skip( FT_Byte* *pp, - FT_Byte* limit ); - - FT_LOCAL( FT_Error ) - pfr_extra_items_parse( FT_Byte* *pp, - FT_Byte* limit, - PFR_ExtraItem item_list, - FT_Pointer item_data ); - - - /* load a PFR header */ - FT_LOCAL( FT_Error ) - pfr_header_load( PFR_Header header, - FT_Stream stream ); - - /* check a PFR header */ - FT_LOCAL( FT_Bool ) - pfr_header_check( PFR_Header header ); - - - /* return number of logical fonts in this file */ - FT_LOCAL( FT_Error ) - pfr_log_font_count( FT_Stream stream, - FT_UInt32 log_section_offset, - FT_UInt *acount ); - - /* load a pfr logical font entry */ - FT_LOCAL( FT_Error ) - pfr_log_font_load( PFR_LogFont log_font, - FT_Stream stream, - FT_UInt face_index, - FT_UInt32 section_offset, - FT_Bool size_increment ); - - - /* load a physical font entry */ - FT_LOCAL( FT_Error ) - pfr_phy_font_load( PFR_PhyFont phy_font, - FT_Stream stream, - FT_UInt32 offset, - FT_UInt32 size ); - - /* finalize a physical font */ - FT_LOCAL( void ) - pfr_phy_font_done( PFR_PhyFont phy_font, - FT_Memory memory ); - - /* */ - -FT_END_HEADER - -#endif /* __PFRLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrobjs.c b/nx-X11/extras/freetype2/src/pfr/pfrobjs.c deleted file mode 100644 index 8b318e958..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrobjs.c +++ /dev/null @@ -1,465 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrobjs.c */ -/* */ -/* FreeType PFR object methods (body). */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "pfrobjs.h" -#include "pfrload.h" -#include "pfrgload.h" -#include "pfrcmap.h" -#include "pfrsbit.h" -#include FT_OUTLINE_H -#include FT_INTERNAL_DEBUG_H - -#include "pfrerror.h" - -#undef FT_COMPONENT -#define FT_COMPONENT trace_pfr - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FACE OBJECT METHODS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_LOCAL_DEF( void ) - pfr_face_done( FT_Face pfrface ) /* PFR_Face */ - { - PFR_Face face = (PFR_Face)pfrface; - FT_Memory memory = pfrface->driver->root.memory; - - - /* we don't want dangling pointers */ - pfrface->family_name = NULL; - pfrface->style_name = NULL; - - /* finalize the physical font record */ - pfr_phy_font_done( &face->phy_font, FT_FACE_MEMORY( face ) ); - - /* no need to finalize the logical font or the header */ - FT_FREE( pfrface->available_sizes ); - } - - - FT_LOCAL_DEF( FT_Error ) - pfr_face_init( FT_Stream stream, - FT_Face pfrface, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - PFR_Face face = (PFR_Face)pfrface; - FT_Error error; - - FT_UNUSED( num_params ); - FT_UNUSED( params ); - - - /* load the header and check it */ - error = pfr_header_load( &face->header, stream ); - if ( error ) - goto Exit; - - if ( !pfr_header_check( &face->header ) ) - { - FT_TRACE4(( "pfr_face_init: not a valid PFR font\n" )); - error = PFR_Err_Unknown_File_Format; - goto Exit; - } - - /* check face index */ - { - FT_UInt num_faces; - - - error = pfr_log_font_count( stream, - face->header.log_dir_offset, - &num_faces ); - if ( error ) - goto Exit; - - pfrface->num_faces = num_faces; - } - - if ( face_index < 0 ) - goto Exit; - - if ( face_index >= pfrface->num_faces ) - { - FT_ERROR(( "pfr_face_init: invalid face index\n" )); - error = PFR_Err_Invalid_Argument; - goto Exit; - } - - /* load the face */ - error = pfr_log_font_load( - &face->log_font, stream, face_index, - face->header.log_dir_offset, - FT_BOOL( face->header.phy_font_max_size_high != 0 ) ); - if ( error ) - goto Exit; - - /* now load the physical font descriptor */ - error = pfr_phy_font_load( &face->phy_font, stream, - face->log_font.phys_offset, - face->log_font.phys_size ); - if ( error ) - goto Exit; - - /* now, set-up all root face fields */ - { - PFR_PhyFont phy_font = &face->phy_font; - - - pfrface->face_index = face_index; - pfrface->num_glyphs = phy_font->num_chars; - pfrface->face_flags = FT_FACE_FLAG_SCALABLE; - - if ( (phy_font->flags & PFR_PHY_PROPORTIONAL) == 0 ) - pfrface->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; - - if ( phy_font->flags & PFR_PHY_VERTICAL ) - pfrface->face_flags |= FT_FACE_FLAG_VERTICAL; - else - pfrface->face_flags |= FT_FACE_FLAG_HORIZONTAL; - - if ( phy_font->num_strikes > 0 ) - pfrface->face_flags |= FT_FACE_FLAG_FIXED_SIZES; - - if ( phy_font->num_kern_pairs > 0 ) - pfrface->face_flags |= FT_FACE_FLAG_KERNING; - - /* If no family name was found in the "undocumented" auxiliary - * data, use the font ID instead. This sucks but is better than - * nothing. - */ - pfrface->family_name = phy_font->family_name; - if ( pfrface->family_name == NULL ) - pfrface->family_name = phy_font->font_id; - - /* note that the style name can be NULL in certain PFR fonts, - * probably meaning "Regular" - */ - pfrface->style_name = phy_font->style_name; - - pfrface->num_fixed_sizes = 0; - pfrface->available_sizes = 0; - - pfrface->bbox = phy_font->bbox; - pfrface->units_per_EM = (FT_UShort)phy_font->outline_resolution; - pfrface->ascender = (FT_Short) phy_font->bbox.yMax; - pfrface->descender = (FT_Short) phy_font->bbox.yMin; - pfrface->height = (FT_Short)( - ( ( pfrface->ascender - pfrface->descender ) * 12 ) / 10 ); - - if ( phy_font->num_strikes > 0 ) - { - FT_UInt n, count = phy_font->num_strikes; - FT_Bitmap_Size* size; - PFR_Strike strike; - FT_Memory memory = pfrface->stream->memory; - - - if ( FT_NEW_ARRAY( pfrface->available_sizes, count ) ) - goto Exit; - - size = pfrface->available_sizes; - strike = phy_font->strikes; - for ( n = 0; n < count; n++, size++, strike++ ) - { - size->height = (FT_UShort)strike->y_ppm; - size->width = (FT_UShort)strike->x_ppm; - } - pfrface->num_fixed_sizes = count; - } - - /* now compute maximum advance width */ - if ( ( phy_font->flags & PFR_PHY_PROPORTIONAL ) == 0 ) - pfrface->max_advance_width = (FT_Short)phy_font->standard_advance; - else - { - FT_Int max = 0; - FT_UInt count = phy_font->num_chars; - PFR_Char gchar = phy_font->chars; - - - for ( ; count > 0; count--, gchar++ ) - { - if ( max < gchar->advance ) - max = gchar->advance; - } - - pfrface->max_advance_width = (FT_Short)max; - } - - pfrface->max_advance_height = pfrface->height; - - pfrface->underline_position = (FT_Short)( -pfrface->units_per_EM / 10 ); - pfrface->underline_thickness = (FT_Short)( pfrface->units_per_EM / 30 ); - - /* create charmap */ - { - FT_CharMapRec charmap; - - - charmap.face = pfrface; - charmap.platform_id = 3; - charmap.encoding_id = 1; - charmap.encoding = FT_ENCODING_UNICODE; - - FT_CMap_New( &pfr_cmap_class_rec, NULL, &charmap, NULL ); - -#if 0 - /* Select default charmap */ - if ( pfrface->num_charmaps ) - pfrface->charmap = pfrface->charmaps[0]; -#endif - } - - /* check whether we've loaded any kerning pairs */ - if ( phy_font->num_kern_pairs ) - pfrface->face_flags |= FT_FACE_FLAG_KERNING; - } - - Exit: - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** SLOT OBJECT METHOD *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_LOCAL_DEF( FT_Error ) - pfr_slot_init( FT_GlyphSlot pfrslot ) /* PFR_Slot */ - { - PFR_Slot slot = (PFR_Slot)pfrslot; - FT_GlyphLoader loader = pfrslot->internal->loader; - - - pfr_glyph_init( &slot->glyph, loader ); - - return 0; - } - - - FT_LOCAL_DEF( void ) - pfr_slot_done( FT_GlyphSlot pfrslot ) /* PFR_Slot */ - { - PFR_Slot slot = (PFR_Slot)pfrslot; - - - pfr_glyph_done( &slot->glyph ); - } - - - FT_LOCAL_DEF( FT_Error ) - pfr_slot_load( FT_GlyphSlot pfrslot, /* PFR_Slot */ - FT_Size pfrsize, /* PFR_Size */ - FT_UInt gindex, - FT_Int32 load_flags ) - { - PFR_Slot slot = (PFR_Slot)pfrslot; - PFR_Size size = (PFR_Size)pfrsize; - FT_Error error; - PFR_Face face = (PFR_Face)pfrslot->face; - PFR_Char gchar; - FT_Outline* outline = &pfrslot->outline; - FT_ULong gps_offset; - - - if ( gindex > 0 ) - gindex--; - - /* check that the glyph index is correct */ - FT_ASSERT( gindex < face->phy_font.num_chars ); - - /* try to load an embedded bitmap */ - if ( ( load_flags & ( FT_LOAD_NO_SCALE | FT_LOAD_NO_BITMAP ) ) == 0 ) - { - error = pfr_slot_load_bitmap( slot, size, gindex ); - if ( error == 0 ) - goto Exit; - } - - if ( load_flags & FT_LOAD_SBITS_ONLY ) - { - error = PFR_Err_Invalid_Argument; - goto Exit; - } - - gchar = face->phy_font.chars + gindex; - pfrslot->format = FT_GLYPH_FORMAT_OUTLINE; - outline->n_points = 0; - outline->n_contours = 0; - gps_offset = face->header.gps_section_offset; - - /* load the glyph outline (FT_LOAD_NO_RECURSE isn't supported) */ - error = pfr_glyph_load( &slot->glyph, face->root.stream, - gps_offset, gchar->gps_offset, gchar->gps_size ); - - if ( !error ) - { - FT_BBox cbox; - FT_Glyph_Metrics* metrics = &pfrslot->metrics; - FT_Pos advance; - FT_Int em_metrics, em_outline; - FT_Bool scaling; - - - scaling = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 ); - - /* copy outline data */ - *outline = slot->glyph.loader->base.outline; - - outline->flags &= ~FT_OUTLINE_OWNER; - outline->flags |= FT_OUTLINE_REVERSE_FILL; - - if ( size && pfrsize->metrics.y_ppem < 24 ) - outline->flags |= FT_OUTLINE_HIGH_PRECISION; - - /* compute the advance vector */ - metrics->horiAdvance = 0; - metrics->vertAdvance = 0; - - advance = gchar->advance; - em_metrics = face->phy_font.metrics_resolution; - em_outline = face->phy_font.outline_resolution; - - if ( em_metrics != em_outline ) - advance = FT_MulDiv( advance, em_outline, em_metrics ); - - if ( face->phy_font.flags & PFR_PHY_VERTICAL ) - metrics->vertAdvance = advance; - else - metrics->horiAdvance = advance; - - pfrslot->linearHoriAdvance = metrics->horiAdvance; - pfrslot->linearVertAdvance = metrics->vertAdvance; - - /* make-up vertical metrics(?) */ - metrics->vertBearingX = 0; - metrics->vertBearingY = 0; - - /* Apply the font matrix, if any. */ - /* TODO: Test existing fonts with unusual matrix */ - /* whether we have to adjust Units per EM. */ - { - FT_Matrix font_matrix; - - - font_matrix.xx = face->log_font.matrix[0] << 8; - font_matrix.yx = face->log_font.matrix[1] << 8; - font_matrix.xy = face->log_font.matrix[2] << 8; - font_matrix.yy = face->log_font.matrix[3] << 8; - - FT_Outline_Transform( outline, &font_matrix ); - } - - /* scale when needed */ - if ( scaling ) - { - FT_Int n; - FT_Fixed x_scale = pfrsize->metrics.x_scale; - FT_Fixed y_scale = pfrsize->metrics.y_scale; - FT_Vector* vec = outline->points; - - - /* scale outline points */ - for ( n = 0; n < outline->n_points; n++, vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } - - /* scale the advance */ - metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); - metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); - } - - /* compute the rest of the metrics */ - FT_Outline_Get_CBox( outline, &cbox ); - - metrics->width = cbox.xMax - cbox.xMin; - metrics->height = cbox.yMax - cbox.yMin; - metrics->horiBearingX = cbox.xMin; - metrics->horiBearingY = cbox.yMax - metrics->height; - } - - Exit: - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** KERNING METHOD *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_LOCAL_DEF( FT_Error ) - pfr_face_get_kerning( FT_Face pfrface, /* PFR_Face */ - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ) - { - PFR_Face face = (PFR_Face)pfrface; - FT_Error error = PFR_Err_Ok; - PFR_PhyFont phy_font = &face->phy_font; - PFR_KernPair pairs = phy_font->kern_pairs; - FT_UInt32 idx = PFR_KERN_INDEX( glyph1, glyph2 ); - FT_UInt min, max; - - - kerning->x = 0; - kerning->y = 0; - - min = 0; - max = phy_font->num_kern_pairs; - - while ( min < max ) - { - FT_UInt mid = ( min + max ) >> 1; - PFR_KernPair pair = pairs + mid; - FT_UInt32 pidx = PFR_KERN_PAIR_INDEX( pair ); - - - if ( pidx == idx ) - { - kerning->x = pair->kerning; - break; - } - - if ( pidx < idx ) - min = mid + 1; - else - max = mid; - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrobjs.h b/nx-X11/extras/freetype2/src/pfr/pfrobjs.h deleted file mode 100644 index f6aa8b44c..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrobjs.h +++ /dev/null @@ -1,96 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrobjs.h */ -/* */ -/* FreeType PFR object methods (specification). */ -/* */ -/* Copyright 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PFROBJS_H__ -#define __PFROBJS_H__ - -#include "pfrtypes.h" - - -FT_BEGIN_HEADER - - typedef struct PFR_FaceRec_* PFR_Face; - - typedef struct PFR_SizeRec_* PFR_Size; - - typedef struct PFR_SlotRec_* PFR_Slot; - - - typedef struct PFR_FaceRec_ - { - FT_FaceRec root; - PFR_HeaderRec header; - PFR_LogFontRec log_font; - PFR_PhyFontRec phy_font; - - } PFR_FaceRec; - - - typedef struct PFR_SizeRec_ - { - FT_SizeRec root; - - } PFR_SizeRec; - - - typedef struct PFR_SlotRec_ - { - FT_GlyphSlotRec root; - PFR_GlyphRec glyph; - - } PFR_SlotRec; - - - FT_LOCAL( FT_Error ) - pfr_face_init( FT_Stream stream, - FT_Face face, /* PFR_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL( void ) - pfr_face_done( FT_Face face ); /* PFR_Face */ - - - FT_LOCAL( FT_Error ) - pfr_face_get_kerning( FT_Face face, /* PFR_Face */ - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ); - - - FT_LOCAL( FT_Error ) - pfr_slot_init( FT_GlyphSlot slot ); /* PFR_Slot */ - - FT_LOCAL( void ) - pfr_slot_done( FT_GlyphSlot slot ); /* PFR_Slot */ - - - FT_LOCAL( FT_Error ) - pfr_slot_load( FT_GlyphSlot slot, /* PFR_Slot */ - FT_Size size, /* PFR_Size */ - FT_UInt gindex, - FT_Int32 load_flags ); - - -FT_END_HEADER - -#endif /* __PFROBJS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrsbit.c b/nx-X11/extras/freetype2/src/pfr/pfrsbit.c deleted file mode 100644 index da8fdba33..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrsbit.c +++ /dev/null @@ -1,671 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrsbit.c */ -/* */ -/* FreeType PFR bitmap loader (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "pfrsbit.h" -#include "pfrload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H - -#include "pfrerror.h" - -#undef FT_COMPONENT -#define FT_COMPONENT trace_pfr - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PFR BIT WRITER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - typedef struct PFR_BitWriter_ - { - FT_Byte* line; /* current line start */ - FT_Int pitch; /* line size in bytes */ - FT_Int width; /* width in pixels/bits */ - FT_Int rows; /* number of remaining rows to scan */ - FT_Int total; /* total number of bits to draw */ - - } PFR_BitWriterRec, *PFR_BitWriter; - - - static void - pfr_bitwriter_init( PFR_BitWriter writer, - FT_Bitmap* target, - FT_Bool decreasing ) - { - writer->line = target->buffer; - writer->pitch = target->pitch; - writer->width = target->width; - writer->rows = target->rows; - writer->total = writer->width * writer->rows; - - if ( !decreasing ) - { - writer->line += writer->pitch * ( target->rows-1 ); - writer->pitch = -writer->pitch; - } - } - - - static void - pfr_bitwriter_decode_bytes( PFR_BitWriter writer, - FT_Byte* p, - FT_Byte* limit ) - { - FT_Int n, reload; - FT_Int left = writer->width; - FT_Byte* cur = writer->line; - FT_UInt mask = 0x80; - FT_UInt val = 0; - FT_UInt c = 0; - - - n = (FT_Int)( limit - p ) * 8; - if ( n > writer->total ) - n = writer->total; - - reload = n & 7; - - for ( ; n > 0; n-- ) - { - if ( ( n & 7 ) == reload ) - val = *p++; - - if ( val & 0x80 ) - c |= mask; - - val <<= 1; - mask >>= 1; - - if ( --left <= 0 ) - { - cur[0] = (FT_Byte)c; - left = writer->width; - mask = 0x80; - - writer->line += writer->pitch; - cur = writer->line; - c = 0; - } - else if ( mask == 0 ) - { - cur[0] = (FT_Byte)c; - mask = 0x80; - c = 0; - cur ++; - } - } - - if ( mask != 0x80 ) - cur[0] = (FT_Byte)c; - } - - - static void - pfr_bitwriter_decode_rle1( PFR_BitWriter writer, - FT_Byte* p, - FT_Byte* limit ) - { - FT_Int n, phase, count, counts[2], reload; - FT_Int left = writer->width; - FT_Byte* cur = writer->line; - FT_UInt mask = 0x80; - FT_UInt c = 0; - - - n = writer->total; - - phase = 1; - counts[0] = 0; - counts[1] = 0; - count = 0; - reload = 1; - - for ( ; n > 0; n-- ) - { - if ( reload ) - { - do - { - if ( phase ) - { - FT_Int v; - - - if ( p >= limit ) - break; - - v = *p++; - counts[0] = v >> 4; - counts[1] = v & 15; - phase = 0; - count = counts[0]; - } - else - { - phase = 1; - count = counts[1]; - } - - } while ( count == 0 ); - } - - if ( phase ) - c |= mask; - - mask >>= 1; - - if ( --left <= 0 ) - { - cur[0] = (FT_Byte) c; - left = writer->width; - mask = 0x80; - - writer->line += writer->pitch; - cur = writer->line; - c = 0; - } - else if ( mask == 0 ) - { - cur[0] = (FT_Byte)c; - mask = 0x80; - c = 0; - cur ++; - } - - reload = ( --count <= 0 ); - } - - if ( mask != 0x80 ) - cur[0] = (FT_Byte) c; - } - - - static void - pfr_bitwriter_decode_rle2( PFR_BitWriter writer, - FT_Byte* p, - FT_Byte* limit ) - { - FT_Int n, phase, count, reload; - FT_Int left = writer->width; - FT_Byte* cur = writer->line; - FT_UInt mask = 0x80; - FT_UInt c = 0; - - - n = writer->total; - - phase = 1; - count = 0; - reload = 1; - - for ( ; n > 0; n-- ) - { - if ( reload ) - { - do - { - if ( p >= limit ) - break; - - count = *p++; - phase = phase ^ 1; - - } while ( count == 0 ); - } - - if ( phase ) - c |= mask; - - mask >>= 1; - - if ( --left <= 0 ) - { - cur[0] = (FT_Byte) c; - c = 0; - mask = 0x80; - left = writer->width; - - writer->line += writer->pitch; - cur = writer->line; - } - else if ( mask == 0 ) - { - cur[0] = (FT_Byte)c; - c = 0; - mask = 0x80; - cur ++; - } - - reload = ( --count <= 0 ); - } - - if ( mask != 0x80 ) - cur[0] = (FT_Byte) c; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** BITMAP DATA DECODING *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static void - pfr_lookup_bitmap_data( FT_Byte* base, - FT_Byte* limit, - FT_UInt count, - FT_UInt flags, - FT_UInt char_code, - FT_ULong* found_offset, - FT_ULong* found_size ) - { - FT_UInt left, right, char_len; - FT_Bool two = FT_BOOL( flags & 1 ); - FT_Byte* buff; - - - char_len = 4; - if ( two ) char_len += 1; - if ( flags & 2 ) char_len += 1; - if ( flags & 4 ) char_len += 1; - - left = 0; - right = count; - - while ( left < right ) - { - FT_UInt middle, code; - - - middle = ( left + right ) >> 1; - buff = base + middle * char_len; - - /* check that we are not outside of the table -- */ - /* this is possible with broken fonts... */ - if ( buff + char_len > limit ) - goto Fail; - - if ( two ) - code = PFR_NEXT_USHORT( buff ); - else - code = PFR_NEXT_BYTE( buff ); - - if ( code == char_code ) - goto Found_It; - - if ( code < char_code ) - left = middle; - else - right = middle; - } - - Fail: - /* Not found */ - *found_size = 0; - *found_offset = 0; - return; - - Found_It: - if ( flags & 2 ) - *found_size = PFR_NEXT_USHORT( buff ); - else - *found_size = PFR_NEXT_BYTE( buff ); - - if ( flags & 4 ) - *found_offset = PFR_NEXT_ULONG( buff ); - else - *found_offset = PFR_NEXT_USHORT( buff ); - } - - - /* load bitmap metrics. "*padvance" must be set to the default value */ - /* before calling this function... */ - /* */ - static FT_Error - pfr_load_bitmap_metrics( FT_Byte** pdata, - FT_Byte* limit, - FT_Long scaled_advance, - FT_Long *axpos, - FT_Long *aypos, - FT_UInt *axsize, - FT_UInt *aysize, - FT_Long *aadvance, - FT_UInt *aformat ) - { - FT_Error error = 0; - FT_Byte flags; - FT_Char b; - FT_Byte* p = *pdata; - FT_Long xpos, ypos, advance; - FT_UInt xsize, ysize; - - - PFR_CHECK( 1 ); - flags = PFR_NEXT_BYTE( p ); - - xpos = 0; - ypos = 0; - xsize = 0; - ysize = 0; - advance = 0; - - switch ( flags & 3 ) - { - case 0: - PFR_CHECK( 1 ); - b = PFR_NEXT_INT8( p ); - xpos = b >> 4; - ypos = ( (FT_Char)( b << 4 ) ) >> 4; - break; - - case 1: - PFR_CHECK( 2 ); - xpos = PFR_NEXT_INT8( p ); - ypos = PFR_NEXT_INT8( p ); - break; - - case 2: - PFR_CHECK( 4 ); - xpos = PFR_NEXT_SHORT( p ); - ypos = PFR_NEXT_SHORT( p ); - break; - - case 3: - PFR_CHECK( 6 ); - xpos = PFR_NEXT_LONG( p ); - ypos = PFR_NEXT_LONG( p ); - break; - - default: - ; - } - - flags >>= 2; - switch ( flags & 3 ) - { - case 0: - /* blank image */ - xsize = 0; - ysize = 0; - break; - - case 1: - PFR_CHECK( 1 ); - b = PFR_NEXT_BYTE( p ); - xsize = ( b >> 4 ) & 0xF; - ysize = b & 0xF; - break; - - case 2: - PFR_CHECK( 2 ); - xsize = PFR_NEXT_BYTE( p ); - ysize = PFR_NEXT_BYTE( p ); - break; - - case 3: - PFR_CHECK( 4 ); - xsize = PFR_NEXT_USHORT( p ); - ysize = PFR_NEXT_USHORT( p ); - break; - - default: - ; - } - - flags >>= 2; - switch ( flags & 3 ) - { - case 0: - advance = scaled_advance; - break; - - case 1: - PFR_CHECK( 1 ); - advance = PFR_NEXT_INT8( p ) << 8; - break; - - case 2: - PFR_CHECK( 2 ); - advance = PFR_NEXT_SHORT( p ); - break; - - case 3: - PFR_CHECK( 3 ); - advance = PFR_NEXT_LONG( p ); - break; - - default: - ; - } - - *axpos = xpos; - *aypos = ypos; - *axsize = xsize; - *aysize = ysize; - *aadvance = advance; - *aformat = flags >> 2; - *pdata = p; - - Exit: - return error; - - Too_Short: - error = PFR_Err_Invalid_Table; - FT_ERROR(( "pfr_load_bitmap_metrics: invalid glyph data\n" )); - goto Exit; - } - - - static FT_Error - pfr_load_bitmap_bits( FT_Byte* p, - FT_Byte* limit, - FT_UInt format, - FT_Bool decreasing, - FT_Bitmap* target ) - { - FT_Error error = 0; - PFR_BitWriterRec writer; - - - if ( target->rows > 0 && target->width > 0 ) - { - pfr_bitwriter_init( &writer, target, decreasing ); - - switch ( format ) - { - case 0: /* packed bits */ - pfr_bitwriter_decode_bytes( &writer, p, limit ); - break; - - case 1: /* RLE1 */ - pfr_bitwriter_decode_rle1( &writer, p, limit ); - break; - - case 2: /* RLE2 */ - pfr_bitwriter_decode_rle2( &writer, p, limit ); - break; - - default: - FT_ERROR(( "pfr_read_bitmap_data: invalid image type\n" )); - error = PFR_Err_Invalid_File_Format; - } - } - - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** BITMAP LOADING *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_LOCAL( FT_Error ) - pfr_slot_load_bitmap( PFR_Slot glyph, - PFR_Size size, - FT_UInt glyph_index ) - { - FT_Error error; - PFR_Face face = (PFR_Face) glyph->root.face; - FT_Stream stream = face->root.stream; - PFR_PhyFont phys = &face->phy_font; - FT_ULong gps_offset; - FT_ULong gps_size; - PFR_Char character; - PFR_Strike strike; - - - character = &phys->chars[glyph_index]; - - /* Look-up a bitmap strike corresponding to the current */ - /* character dimensions */ - { - FT_UInt n; - - - strike = phys->strikes; - for ( n = 0; n < phys->num_strikes; n++ ) - { - if ( strike->x_ppm == (FT_UInt)size->root.metrics.x_ppem && - strike->y_ppm == (FT_UInt)size->root.metrics.y_ppem ) - { - goto Found_Strike; - } - - strike++; - } - - /* couldn't find it */ - return PFR_Err_Invalid_Argument; - } - - Found_Strike: - - /* Now lookup the glyph's position within the file */ - { - FT_UInt char_len; - - - char_len = 4; - if ( strike->flags & 1 ) char_len += 1; - if ( strike->flags & 2 ) char_len += 1; - if ( strike->flags & 4 ) char_len += 1; - - /* Access data directly in the frame to speed lookups */ - if ( FT_STREAM_SEEK( phys->bct_offset + strike->bct_offset ) || - FT_FRAME_ENTER( char_len * strike->num_bitmaps ) ) - goto Exit; - - pfr_lookup_bitmap_data( stream->cursor, - stream->limit, - strike->num_bitmaps, - strike->flags, - character->char_code, - &gps_offset, - &gps_size ); - - FT_FRAME_EXIT(); - - if ( gps_size == 0 ) - { - /* Could not find a bitmap program string for this glyph */ - error = PFR_Err_Invalid_Argument; - goto Exit; - } - } - - /* get the bitmap metrics */ - { - FT_Long xpos, ypos, advance; - FT_UInt xsize, ysize, format; - FT_Byte* p; - - - advance = FT_MulDiv( size->root.metrics.x_ppem << 8, - character->advance, - phys->metrics_resolution ); - - /* XXX: handle linearHoriAdvance correctly! */ - - if ( FT_STREAM_SEEK( face->header.gps_section_offset + gps_offset ) || - FT_FRAME_ENTER( gps_size ) ) - goto Exit; - - p = stream->cursor; - error = pfr_load_bitmap_metrics( &p, stream->limit, - advance, - &xpos, &ypos, - &xsize, &ysize, - &advance, &format ); - if ( !error ) - { - glyph->root.format = FT_GLYPH_FORMAT_BITMAP; - - /* Set up glyph bitmap and metrics */ - glyph->root.bitmap.width = (FT_Int)xsize; - glyph->root.bitmap.rows = (FT_Int)ysize; - glyph->root.bitmap.pitch = (FT_Long)( xsize + 7 ) >> 3; - glyph->root.bitmap.pixel_mode = FT_PIXEL_MODE_MONO; - - glyph->root.metrics.width = (FT_Long)xsize << 6; - glyph->root.metrics.height = (FT_Long)ysize << 6; - glyph->root.metrics.horiBearingX = xpos << 6; - glyph->root.metrics.horiBearingY = ypos << 6; - glyph->root.metrics.horiAdvance = FT_PIX_ROUND( ( advance >> 2 ) ); - glyph->root.metrics.vertBearingX = - glyph->root.metrics.width >> 1; - glyph->root.metrics.vertBearingY = 0; - glyph->root.metrics.vertAdvance = size->root.metrics.height; - - glyph->root.bitmap_left = xpos; - glyph->root.bitmap_top = ypos + ysize; - - /* Allocate and read bitmap data */ - { - FT_ULong len = glyph->root.bitmap.pitch * ysize; - - - error = ft_glyphslot_alloc_bitmap( &glyph->root, len ); - if ( !error ) - { - error = pfr_load_bitmap_bits( - p, - stream->limit, - format, - FT_BOOL(face->header.color_flags & 2), - &glyph->root.bitmap ); - } - } - } - - FT_FRAME_EXIT(); - } - - Exit: - return error; - } - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrsbit.h b/nx-X11/extras/freetype2/src/pfr/pfrsbit.h deleted file mode 100644 index 015e9e6da..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrsbit.h +++ /dev/null @@ -1,36 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrsbit.h */ -/* */ -/* FreeType PFR bitmap loader (specification). */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PFRSBIT_H__ -#define __PFRSBIT_H__ - -#include "pfrobjs.h" - -FT_BEGIN_HEADER - - FT_LOCAL( FT_Error ) - pfr_slot_load_bitmap( PFR_Slot glyph, - PFR_Size size, - FT_UInt glyph_index ); - -FT_END_HEADER - -#endif /* __PFR_SBIT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/pfrtypes.h b/nx-X11/extras/freetype2/src/pfr/pfrtypes.h deleted file mode 100644 index a10a2b26c..000000000 --- a/nx-X11/extras/freetype2/src/pfr/pfrtypes.h +++ /dev/null @@ -1,364 +0,0 @@ -/***************************************************************************/ -/* */ -/* pfrtypes.h */ -/* */ -/* FreeType PFR data structures (specification only). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PFRTYPES_H__ -#define __PFRTYPES_H__ - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H - -FT_BEGIN_HEADER - - /************************************************************************/ - - /* the PFR Header structure */ - typedef struct PFR_HeaderRec_ - { - FT_UInt32 signature; - FT_UInt version; - FT_UInt signature2; - FT_UInt header_size; - - FT_UInt log_dir_size; - FT_UInt log_dir_offset; - - FT_UInt log_font_max_size; - FT_UInt32 log_font_section_size; - FT_UInt32 log_font_section_offset; - - FT_UInt32 phy_font_max_size; - FT_UInt32 phy_font_section_size; - FT_UInt32 phy_font_section_offset; - - FT_UInt gps_max_size; - FT_UInt32 gps_section_size; - FT_UInt32 gps_section_offset; - - FT_UInt max_blue_values; - FT_UInt max_x_orus; - FT_UInt max_y_orus; - - FT_UInt phy_font_max_size_high; - FT_UInt color_flags; - - FT_UInt32 bct_max_size; - FT_UInt32 bct_set_max_size; - FT_UInt32 phy_bct_set_max_size; - - FT_UInt num_phy_fonts; - FT_UInt max_vert_stem_snap; - FT_UInt max_horz_stem_snap; - FT_UInt max_chars; - - } PFR_HeaderRec, *PFR_Header; - - - /* used in `color_flags' field of the PFR_Header */ - typedef enum PFR_HeaderFlags_ - { - PFR_FLAG_BLACK_PIXEL = 1, - PFR_FLAG_INVERT_BITMAP = 2 - - } PFR_HeaderFlags; - - - /************************************************************************/ - - typedef struct PFR_LogFontRec_ - { - FT_UInt32 size; - FT_UInt32 offset; - - FT_Int32 matrix[4]; - FT_UInt stroke_flags; - FT_Int stroke_thickness; - FT_Int bold_thickness; - FT_Int32 miter_limit; - - FT_UInt32 phys_size; - FT_UInt32 phys_offset; - - } PFR_LogFontRec, *PFR_LogFont; - - - typedef enum PFR_LogFlags_ - { - PFR_LOG_EXTRA_ITEMS = 0x40, - PFR_LOG_2BYTE_BOLD = 0x20, - PFR_LOG_BOLD = 0x10, - PFR_LOG_2BYTE_STROKE = 8, - PFR_LOG_STROKE = 4, - PFR_LINE_JOIN_MASK = 3 - - } PFR_LogFlags; - - - typedef enum PFR_LineJoinFlags_ - { - PFR_LINE_JOIN_MITER = 0, - PFR_LINE_JOIN_ROUND = 1, - PFR_LINE_JOIN_BEVEL = 2 - - } PFR_LineJoinFlags; - - - /************************************************************************/ - - typedef enum PFR_BitmapFlags_ - { - PFR_BITMAP_3BYTE_OFFSET = 4, - PFR_BITMAP_2BYTE_SIZE = 2, - PFR_BITMAP_2BYTE_CHARCODE = 1 - - } PFR_BitmapFlags; - - - typedef struct PFR_BitmapCharRec_ - { - FT_UInt char_code; - FT_UInt gps_size; - FT_UInt32 gps_offset; - - } PFR_BitmapCharRec, *PFR_BitmapChar; - - - typedef enum PFR_StrikeFlags_ - { - PFR_STRIKE_2BYTE_COUNT = 0x10, - PFR_STRIKE_3BYTE_OFFSET = 0x08, - PFR_STRIKE_3BYTE_SIZE = 0x04, - PFR_STRIKE_2BYTE_YPPM = 0x02, - PFR_STRIKE_2BYTE_XPPM = 0x01 - - } PFR_StrikeFlags; - - - typedef struct PFR_StrikeRec_ - { - FT_UInt x_ppm; - FT_UInt y_ppm; - FT_UInt flags; - - FT_UInt32 gps_size; - FT_UInt32 gps_offset; - - FT_UInt32 bct_size; - FT_UInt32 bct_offset; - - /* optional */ - FT_UInt num_bitmaps; - PFR_BitmapChar bitmaps; - - } PFR_StrikeRec, *PFR_Strike; - - - /************************************************************************/ - - typedef struct PFR_CharRec_ - { - FT_UInt char_code; - FT_Int advance; - FT_UInt gps_size; - FT_UInt32 gps_offset; - - } PFR_CharRec, *PFR_Char; - - - /************************************************************************/ - - typedef struct PFR_DimensionRec_ - { - FT_UInt standard; - FT_UInt num_stem_snaps; - FT_Int* stem_snaps; - - } PFR_DimensionRec, *PFR_Dimension; - - /************************************************************************/ - - typedef struct PFR_KernItemRec_* PFR_KernItem; - - typedef struct PFR_KernItemRec_ - { - PFR_KernItem next; - FT_UInt pair_count; - FT_UInt pair_size; - FT_Int base_adj; - FT_UInt flags; - FT_UInt32 offset; - FT_UInt32 pair1; - FT_UInt32 pair2; - - } PFR_KernItemRec; - -#define PFR_KERN_INDEX( g1, g2 ) \ - ( ( (FT_UInt32)(g1) << 16 ) | (FT_UInt16)(g2) ) - -#define PFR_KERN_PAIR_INDEX( pair ) \ - PFR_KERN_INDEX( (pair)->glyph1, (pair)->glyph2 ) - - typedef struct PFR_KernPairRec_ - { - FT_UInt glyph1; - FT_UInt glyph2; - FT_Int kerning; - - } PFR_KernPairRec, *PFR_KernPair; - - /************************************************************************/ - - typedef struct PFR_PhyFontRec_ - { - FT_Memory memory; - FT_UInt32 offset; - - FT_UInt font_ref_number; - FT_UInt outline_resolution; - FT_UInt metrics_resolution; - FT_BBox bbox; - FT_UInt flags; - FT_UInt standard_advance; - - FT_Int ascent; /* optional, bbox.yMax if not present */ - FT_Int descent; /* optional, bbox.yMin if not present */ - FT_Int leading; /* optional, 0 if not present */ - - PFR_DimensionRec horizontal; - PFR_DimensionRec vertical; - - FT_String* font_id; - FT_String* family_name; - FT_String* style_name; - - FT_UInt num_strikes; - FT_UInt max_strikes; - PFR_StrikeRec* strikes; - - FT_UInt num_blue_values; - FT_Int *blue_values; - FT_UInt blue_fuzz; - FT_UInt blue_scale; - - FT_UInt num_chars; - FT_UInt32 chars_offset; - PFR_Char chars; - - FT_UInt num_kern_pairs; - PFR_KernItem kern_items; - PFR_KernItem* kern_items_tail; - PFR_KernPair kern_pairs; - - /* not part of the spec, but used during load */ - FT_UInt32 bct_offset; - FT_Byte* cursor; - - } PFR_PhyFontRec, *PFR_PhyFont; - - - typedef enum PFR_PhyFlags_ - { - PFR_PHY_EXTRA_ITEMS = 0x80, - PFR_PHY_3BYTE_GPS_OFFSET = 0x20, - PFR_PHY_2BYTE_GPS_SIZE = 0x10, - PFR_PHY_ASCII_CODE = 0x08, - PFR_PHY_PROPORTIONAL = 0x04, - PFR_PHY_2BYTE_CHARCODE = 0x02, - PFR_PHY_VERTICAL = 0x01 - - } PFR_PhyFlags; - - - typedef enum PFR_KernFlags_ - { - PFR_KERN_2BYTE_CHAR = 0x01, - PFR_KERN_2BYTE_ADJ = 0x02 - - } PFR_KernFlags; - - - /************************************************************************/ - - typedef enum PFR_GlyphFlags_ - { - PFR_GLYPH_IS_COMPOUND = 0x80, - PFR_GLYPH_EXTRA_ITEMS = 0x08, - PFR_GLYPH_1BYTE_XYCOUNT = 0x04, - PFR_GLYPH_XCOUNT = 0x02, - PFR_GLYPH_YCOUNT = 0x01 - - } PFR_GlyphFlags; - - - /* controlled coordinate */ - typedef struct PFR_CoordRec_ - { - FT_UInt org; - FT_UInt cur; - - } PFR_CoordRec, *PFR_Coord; - - - typedef struct PFR_SubGlyphRec_ - { - FT_Fixed x_scale; - FT_Fixed y_scale; - FT_Int x_delta; - FT_Int y_delta; - FT_UInt32 gps_offset; - FT_UInt gps_size; - - } PFR_SubGlyphRec, *PFR_SubGlyph; - - - typedef enum PFR_SubgGlyphFlags_ - { - PFR_SUBGLYPH_3BYTE_OFFSET = 0x80, - PFR_SUBGLYPH_2BYTE_SIZE = 0x40, - PFR_SUBGLYPH_YSCALE = 0x20, - PFR_SUBGLYPH_XSCALE = 0x10 - - } PFR_SubGlyphFlags; - - - typedef struct PFR_GlyphRec_ - { - FT_Byte format; - - FT_UInt num_x_control; - FT_UInt num_y_control; - FT_UInt max_xy_control; - FT_Pos* x_control; - FT_Pos* y_control; - - - FT_UInt num_subs; - FT_UInt max_subs; - PFR_SubGlyphRec* subs; - - FT_GlyphLoader loader; - FT_Bool path_begun; - - } PFR_GlyphRec, *PFR_Glyph; - - -FT_END_HEADER - -#endif /* __PFRTYPES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pfr/rules.mk b/nx-X11/extras/freetype2/src/pfr/rules.mk deleted file mode 100644 index 60b96c741..000000000 --- a/nx-X11/extras/freetype2/src/pfr/rules.mk +++ /dev/null @@ -1,73 +0,0 @@ -# -# FreeType 2 PFR driver configuration rules -# - - -# Copyright 2002, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# pfr driver directory -# -PFR_DIR := $(SRC_DIR)/pfr - - -# compilation flags for the driver -# -PFR_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PFR_DIR)) - - -# pfr driver sources (i.e., C files) -# -PFR_DRV_SRC := $(PFR_DIR)/pfrload.c \ - $(PFR_DIR)/pfrgload.c \ - $(PFR_DIR)/pfrcmap.c \ - $(PFR_DIR)/pfrdrivr.c \ - $(PFR_DIR)/pfrsbit.c \ - $(PFR_DIR)/pfrobjs.c - -# pfr driver headers -# -PFR_DRV_H := $(PFR_DRV_SRC:%.c=%.h) \ - $(PFR_DIR)/pfrerror.h \ - $(PFR_DIR)/pfrtypes.h - - -# Pfr driver object(s) -# -# PFR_DRV_OBJ_M is used during `multi' builds -# PFR_DRV_OBJ_S is used during `single' builds -# -PFR_DRV_OBJ_M := $(PFR_DRV_SRC:$(PFR_DIR)/%.c=$(OBJ_DIR)/%.$O) -PFR_DRV_OBJ_S := $(OBJ_DIR)/pfr.$O - -# pfr driver source file for single build -# -PFR_DRV_SRC_S := $(PFR_DIR)/pfr.c - - -# pfr driver - single object -# -$(PFR_DRV_OBJ_S): $(PFR_DRV_SRC_S) $(PFR_DRV_SRC) $(FREETYPE_H) $(PFR_DRV_H) - $(PFR_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PFR_DRV_SRC_S)) - - -# pfr driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(PFR_DIR)/%.c $(FREETYPE_H) $(PFR_DRV_H) - $(PFR_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(PFR_DRV_OBJ_S) -DRV_OBJS_M += $(PFR_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/psaux/Jamfile b/nx-X11/extras/freetype2/src/psaux/Jamfile deleted file mode 100644 index fc834b32c..000000000 --- a/nx-X11/extras/freetype2/src/psaux/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/psaux Jamfile (c) 2001, 2002 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) psaux ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = psauxmod psobjs t1decode t1cmap ; - } - else - { - _sources = psaux ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/psaux Jamfile diff --git a/nx-X11/extras/freetype2/src/psaux/descrip.mms b/nx-X11/extras/freetype2/src/psaux/descrip.mms deleted file mode 100644 index bff019243..000000000 --- a/nx-X11/extras/freetype2/src/psaux/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 PSaux driver compilation rules for VMS -# - - -# Copyright 2001, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.psaux]) - -OBJS=psaux.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/psaux/module.mk b/nx-X11/extras/freetype2/src/psaux/module.mk deleted file mode 100644 index 29c3e28a9..000000000 --- a/nx-X11/extras/freetype2/src/psaux/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 PSaux module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_psaux_module - -add_psaux_module: - $(OPEN_DRIVER)psaux_module_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)psaux $(ECHO_DRIVER_DESC)Postscript Type 1 & Type 2 helper module$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/psaux/psaux.c b/nx-X11/extras/freetype2/src/psaux/psaux.c deleted file mode 100644 index 992818414..000000000 --- a/nx-X11/extras/freetype2/src/psaux/psaux.c +++ /dev/null @@ -1,28 +0,0 @@ -/***************************************************************************/ -/* */ -/* psaux.c */ -/* */ -/* FreeType auxiliary PostScript driver component (body only). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "psobjs.c" -#include "psauxmod.c" -#include "t1decode.c" -#include "t1cmap.c" - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/psauxerr.h b/nx-X11/extras/freetype2/src/psaux/psauxerr.h deleted file mode 100644 index d0baa3cbb..000000000 --- a/nx-X11/extras/freetype2/src/psaux/psauxerr.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************/ -/* */ -/* psauxerr.h */ -/* */ -/* PS auxiliary module error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the PS auxiliary module error enumeration */ - /* constants. */ - /* */ - /*************************************************************************/ - -#ifndef __PSAUXERR_H__ -#define __PSAUXERR_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX PSaux_Err_ -#define FT_ERR_BASE FT_Mod_Err_PSaux - -#include FT_ERRORS_H - -#endif /* __PSAUXERR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/psauxmod.c b/nx-X11/extras/freetype2/src/psaux/psauxmod.c deleted file mode 100644 index 756ec1c56..000000000 --- a/nx-X11/extras/freetype2/src/psaux/psauxmod.c +++ /dev/null @@ -1,119 +0,0 @@ -/***************************************************************************/ -/* */ -/* psauxmod.c */ -/* */ -/* FreeType auxiliary PostScript module implementation (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "psauxmod.h" -#include "psobjs.h" -#include "t1decode.h" -#include "t1cmap.h" - - - FT_CALLBACK_TABLE_DEF - const PS_Table_FuncsRec ps_table_funcs = - { - ps_table_new, - ps_table_done, - ps_table_add, - ps_table_release - }; - - - FT_CALLBACK_TABLE_DEF - const PS_Parser_FuncsRec ps_parser_funcs = - { - ps_parser_init, - ps_parser_done, - ps_parser_skip_spaces, - ps_parser_skip_PS_token, - ps_parser_to_int, - ps_parser_to_fixed, - ps_parser_to_bytes, - ps_parser_to_coord_array, - ps_parser_to_fixed_array, - ps_parser_to_token, - ps_parser_to_token_array, - ps_parser_load_field, - ps_parser_load_field_table - }; - - - FT_CALLBACK_TABLE_DEF - const T1_Builder_FuncsRec t1_builder_funcs = - { - t1_builder_init, - t1_builder_done, - t1_builder_check_points, - t1_builder_add_point, - t1_builder_add_point1, - t1_builder_add_contour, - t1_builder_start_point, - t1_builder_close_contour - }; - - - FT_CALLBACK_TABLE_DEF - const T1_Decoder_FuncsRec t1_decoder_funcs = - { - t1_decoder_init, - t1_decoder_done, - t1_decoder_parse_charstrings - }; - - - FT_CALLBACK_TABLE_DEF - const T1_CMap_ClassesRec t1_cmap_classes = - { - &t1_cmap_standard_class_rec, - &t1_cmap_expert_class_rec, - &t1_cmap_custom_class_rec, - &t1_cmap_unicode_class_rec - }; - - - static - const PSAux_Interface psaux_interface = - { - &ps_table_funcs, - &ps_parser_funcs, - &t1_builder_funcs, - &t1_decoder_funcs, - - t1_decrypt, - - (const T1_CMap_ClassesRec*) &t1_cmap_classes, - }; - - - FT_CALLBACK_TABLE_DEF - const FT_Module_Class psaux_module_class = - { - 0, - sizeof( FT_ModuleRec ), - "psaux", - 0x20000L, - 0x20000L, - - &psaux_interface, /* module-specific interface */ - - (FT_Module_Constructor)0, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/psauxmod.h b/nx-X11/extras/freetype2/src/psaux/psauxmod.h deleted file mode 100644 index 92ac05604..000000000 --- a/nx-X11/extras/freetype2/src/psaux/psauxmod.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************/ -/* */ -/* psauxmod.h */ -/* */ -/* FreeType auxiliary PostScript module implementation (specification). */ -/* */ -/* Copyright 2000-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PSAUXMOD_H__ -#define __PSAUXMOD_H__ - - -#include <ft2build.h> -#include FT_MODULE_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Module_Class ) psaux_driver_class; - - -FT_END_HEADER - -#endif /* __PSAUXMOD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/psobjs.c b/nx-X11/extras/freetype2/src/psaux/psobjs.c deleted file mode 100644 index d02986cee..000000000 --- a/nx-X11/extras/freetype2/src/psaux/psobjs.c +++ /dev/null @@ -1,1784 +0,0 @@ -/***************************************************************************/ -/* */ -/* psobjs.c */ -/* */ -/* Auxiliary functions for PostScript fonts (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_DEBUG_H - -#include "psobjs.h" - -#include "psauxerr.h" - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PS_TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ps_table_new */ - /* */ - /* <Description> */ - /* Initializes a PS_Table. */ - /* */ - /* <InOut> */ - /* table :: The address of the target table. */ - /* */ - /* <Input> */ - /* count :: The table size = the maximum number of elements. */ - /* */ - /* memory :: The memory object to use for all subsequent */ - /* reallocations. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - ps_table_new( PS_Table table, - FT_Int count, - FT_Memory memory ) - { - FT_Error error; - - - table->memory = memory; - if ( FT_NEW_ARRAY( table->elements, count ) || - FT_NEW_ARRAY( table->lengths, count ) ) - goto Exit; - - table->max_elems = count; - table->init = 0xDEADBEEFUL; - table->num_elems = 0; - table->block = 0; - table->capacity = 0; - table->cursor = 0; - - *(PS_Table_FuncsRec*)&table->funcs = ps_table_funcs; - - Exit: - if ( error ) - FT_FREE( table->elements ); - - return error; - } - - - static void - shift_elements( PS_Table table, - FT_Byte* old_base ) - { - FT_Long delta = (FT_Long)( table->block - old_base ); - FT_Byte** offset = table->elements; - FT_Byte** limit = offset + table->max_elems; - - - for ( ; offset < limit; offset++ ) - { - if ( offset[0] ) - offset[0] += delta; - } - } - - - static FT_Error - reallocate_t1_table( PS_Table table, - FT_Long new_size ) - { - FT_Memory memory = table->memory; - FT_Byte* old_base = table->block; - FT_Error error; - - - /* allocate new base block */ - if ( FT_ALLOC( table->block, new_size ) ) - { - table->block = old_base; - return error; - } - - /* copy elements and shift offsets */ - if (old_base ) - { - FT_MEM_COPY( table->block, old_base, table->capacity ); - shift_elements( table, old_base ); - FT_FREE( old_base ); - } - - table->capacity = new_size; - - return PSaux_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ps_table_add */ - /* */ - /* <Description> */ - /* Adds an object to a PS_Table, possibly growing its memory block. */ - /* */ - /* <InOut> */ - /* table :: The target table. */ - /* */ - /* <Input> */ - /* idx :: The index of the object in the table. */ - /* */ - /* object :: The address of the object to copy in memory. */ - /* */ - /* length :: The length in bytes of the source object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. An error is returned if a */ - /* reallocation fails. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - ps_table_add( PS_Table table, - FT_Int idx, - void* object, - FT_PtrDist length ) - { - if ( idx < 0 || idx > table->max_elems ) - { - FT_ERROR(( "ps_table_add: invalid index\n" )); - return PSaux_Err_Invalid_Argument; - } - - /* grow the base block if needed */ - if ( table->cursor + length > table->capacity ) - { - FT_Error error; - FT_Offset new_size = table->capacity; - FT_Long in_offset; - - - in_offset = (FT_Long)((FT_Byte*)object - table->block); - if ( (FT_ULong)in_offset >= table->capacity ) - in_offset = -1; - - while ( new_size < table->cursor + length ) - { - /* increase size by 25% and round up to the nearest multiple - of 1024 */ - new_size += ( new_size >> 2 ) + 1; - new_size = FT_PAD_CEIL( new_size, 1024 ); - } - - error = reallocate_t1_table( table, new_size ); - if ( error ) - return error; - - if ( in_offset >= 0 ) - object = table->block + in_offset; - } - - /* add the object to the base block and adjust offset */ - table->elements[idx] = table->block + table->cursor; - table->lengths [idx] = length; - FT_MEM_COPY( table->block + table->cursor, object, length ); - - table->cursor += length; - return PSaux_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ps_table_done */ - /* */ - /* <Description> */ - /* Finalizes a PS_TableRec (i.e., reallocate it to its current */ - /* cursor). */ - /* */ - /* <InOut> */ - /* table :: The target table. */ - /* */ - /* <Note> */ - /* This function does NOT release the heap's memory block. It is up */ - /* to the caller to clean it, or reference it in its own structures. */ - /* */ - FT_LOCAL_DEF( void ) - ps_table_done( PS_Table table ) - { - FT_Memory memory = table->memory; - FT_Error error; - FT_Byte* old_base = table->block; - - - /* should never fail, because rec.cursor <= rec.size */ - if ( !old_base ) - return; - - if ( FT_ALLOC( table->block, table->cursor ) ) - return; - FT_MEM_COPY( table->block, old_base, table->cursor ); - shift_elements( table, old_base ); - - table->capacity = table->cursor; - FT_FREE( old_base ); - - FT_UNUSED( error ); - } - - - FT_LOCAL_DEF( void ) - ps_table_release( PS_Table table ) - { - FT_Memory memory = table->memory; - - - if ( (FT_ULong)table->init == 0xDEADBEEFUL ) - { - FT_FREE( table->block ); - FT_FREE( table->elements ); - FT_FREE( table->lengths ); - table->init = 0; - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1 PARSER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* In the PostScript Language Reference Manual (PLRM) the following */ - /* characters are called `whitespace characters'. */ -#define IS_T1_WHITESPACE( c ) ( (c) == ' ' || (c) == '\t' ) -#define IS_T1_LINESPACE( c ) ( (c) == '\r' || (c) == '\n' || (c) == '\f' ) -#define IS_T1_NULLSPACE( c ) ( (c) == '\0' ) - - /* According to the PLRM all whitespace characters are equivalent, */ - /* except in comments and strings. */ -#define IS_T1_SPACE( c ) ( IS_T1_WHITESPACE( c ) || \ - IS_T1_LINESPACE( c ) || \ - IS_T1_NULLSPACE( c ) ) - - - /* The following array is used by various functions to quickly convert */ - /* digits (both decimal and non-decimal) into numbers. */ - -#if 'A' == 65 - /* ASCII */ - - static const char ft_char_table[128] = - { - /* 0x00 */ - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, - }; - - /* no character >= 0x80 can represent a valid number */ -#define OP >= - -#endif /* 'A' == 65 */ - -#if 'A' == 193 - /* EBCDIC */ - - static const char ft_char_table[128] = - { - /* 0x80 */ - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, - -1, -1, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, -1, -1, -1, -1, -1, -1, - -1, 19, 20, 21, 22, 23, 24, 25, 26, 27, -1, -1, -1, -1, -1, -1, - -1, -1, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, - } - - /* no character < 0x80 can represent a valid number */ -#define OP < - -#endif /* 'A' == 193 */ - - - /* first character must be already part of the comment */ - - static void - skip_comment( FT_Byte* *acur, - FT_Byte* limit ) - { - FT_Byte* cur = *acur; - - - while ( cur < limit ) - { - if ( IS_T1_LINESPACE( *cur ) ) - break; - cur++; - } - - *acur = cur; - } - - - static void - skip_spaces( FT_Byte* *acur, - FT_Byte* limit ) - { - FT_Byte* cur = *acur; - - - while ( cur < limit ) - { - if ( !IS_T1_SPACE( *cur ) ) - { - if ( *cur == '%' ) - /* According to the PLRM, a comment is equal to a space. */ - skip_comment( &cur, limit ); - else - break; - } - cur++; - } - - *acur = cur; - } - - - /* first character must be `(' */ - - static void - skip_literal_string( FT_Byte* *acur, - FT_Byte* limit ) - { - FT_Byte* cur = *acur; - FT_Int embed = 0; - - - while ( cur < limit ) - { - if ( *cur == '\\' ) - cur++; - else if ( *cur == '(' ) - embed++; - else if ( *cur == ')' ) - { - embed--; - if ( embed == 0 ) - { - cur++; - break; - } - } - cur++; - } - - *acur = cur; - } - - - /* first character must be `<' */ - - static void - skip_string( PS_Parser parser ) - { - FT_Byte* cur = parser->cursor; - FT_Byte* limit = parser->limit; - - - while ( ++cur < limit ) - { - int d; - - - /* All whitespace characters are ignored. */ - skip_spaces( &cur, limit ); - if ( cur >= limit ) - break; - - if ( *cur OP 0x80 ) - break; - - d = ft_char_table[*cur & 0x7F]; - if ( d < 0 || d >= 16 ) - break; - } - - if ( cur < limit && *cur != '>' ) - parser->error = PSaux_Err_Invalid_File_Format; - else - cur++; - - parser->cursor = cur; - } - - - /***********************************************************************/ - /* */ - /* All exported parsing routines handle leading whitespace and stop at */ - /* the first character which isn't part of the just handled token. */ - /* */ - /***********************************************************************/ - - - FT_LOCAL_DEF( void ) - ps_parser_skip_PS_token( PS_Parser parser ) - { - /* Note: PostScript allows any non-delimiting, non-whitespace */ - /* character in a name (PS Ref Manual, 3rd ed, p31). */ - /* PostScript delimiters are (, ), <, >, [, ], {, }, /, and %. */ - - FT_Byte* cur = parser->cursor; - FT_Byte* limit = parser->limit; - - - skip_spaces( &cur, limit ); /* this also skips comments */ - if ( cur >= limit ) - goto Exit; - - /* self-delimiting, single-character tokens */ - if ( *cur == '[' || *cur == ']' || - *cur == '{' || *cur == '}' ) - { - cur++; - goto Exit; - } - - if ( *cur == '(' ) /* (...) */ - { - skip_literal_string( &cur, limit ); - goto Exit; - } - - if ( *cur == '<' ) /* <...> */ - { - if ( cur + 1 < limit && *(cur + 1) == '<' ) /* << */ - { - cur++; - cur++; - goto Exit; - } - parser->cursor = cur; - skip_string( parser ); - return; - } - - if ( *cur == '>' ) - { - cur++; - if ( cur >= limit || *cur != '>' ) /* >> */ - { - parser->error = PSaux_Err_Invalid_File_Format; - goto Exit; - } - cur++; - goto Exit; - } - - if ( *cur == '/' ) - cur++; - - /* anything else */ - while ( cur < limit ) - { - if ( IS_T1_SPACE( *cur ) || - *cur == '(' || - *cur == '/' || - *cur == '%' || - *cur == '[' || *cur == ']' || - *cur == '{' || *cur == '}' || - *cur == '<' || *cur == '>' ) - break; - - if ( *cur == ')' ) - { - parser->error = PSaux_Err_Invalid_File_Format; - goto Exit; - } - - cur++; - } - - Exit: - parser->cursor = cur; - } - - - FT_LOCAL_DEF( void ) - ps_parser_skip_spaces( PS_Parser parser ) - { - skip_spaces( &parser->cursor, parser->limit ); - } - - - /* `token' here means either something between balanced delimiters */ - /* or the next token; the delimiters are not removed. */ - - FT_LOCAL_DEF( void ) - ps_parser_to_token( PS_Parser parser, - T1_Token token ) - { - FT_Byte* cur; - FT_Byte* limit; - FT_Byte starter, ender; - FT_Int embed; - - - token->type = T1_TOKEN_TYPE_NONE; - token->start = 0; - token->limit = 0; - - /* first of all, skip leading whitespace */ - ps_parser_skip_spaces( parser ); - - cur = parser->cursor; - limit = parser->limit; - - if ( cur >= limit ) - return; - - switch ( *cur ) - { - /************* check for literal string *****************/ - case '(': - token->type = T1_TOKEN_TYPE_STRING; - token->start = cur; - skip_literal_string( &cur, limit ); - if ( cur < limit ) - token->limit = cur; - break; - - /************* check for programs/array *****************/ - case '{': - token->type = T1_TOKEN_TYPE_ARRAY; - ender = '}'; - goto Lookup_Ender; - - /************* check for table/array ********************/ - case '[': - token->type = T1_TOKEN_TYPE_ARRAY; - ender = ']'; - /* fall through */ - - Lookup_Ender: - embed = 1; - starter = *cur; - token->start = cur++; - - /* we need this to catch `[ ]' */ - parser->cursor = cur; - ps_parser_skip_spaces( parser ); - cur = parser->cursor; - - while ( cur < limit && !parser->error ) - { - if ( *cur == starter ) - embed++; - else if ( *cur == ender ) - { - embed--; - if ( embed <= 0 ) - { - token->limit = ++cur; - break; - } - } - - parser->cursor = cur; - ps_parser_skip_PS_token( parser ); - /* we need this to catch `[XXX ]' */ - ps_parser_skip_spaces ( parser ); - cur = parser->cursor; - } - break; - - /* ************ otherwise, it is any token **************/ - default: - token->start = cur; - token->type = T1_TOKEN_TYPE_ANY; - ps_parser_skip_PS_token( parser ); - cur = parser->cursor; - if ( !parser->error ) - token->limit = cur; - } - - if ( !token->limit ) - { - token->start = 0; - token->type = T1_TOKEN_TYPE_NONE; - } - - parser->cursor = cur; - } - - - FT_LOCAL_DEF( void ) - ps_parser_to_token_array( PS_Parser parser, - T1_Token tokens, - FT_UInt max_tokens, - FT_Int* pnum_tokens ) - { - T1_TokenRec master; - - - *pnum_tokens = -1; - - /* this also handles leading whitespace */ - ps_parser_to_token( parser, &master ); - - if ( master.type == T1_TOKEN_TYPE_ARRAY ) - { - FT_Byte* old_cursor = parser->cursor; - FT_Byte* old_limit = parser->limit; - T1_Token cur = tokens; - T1_Token limit = cur + max_tokens; - - - /* don't include outermost delimiters */ - parser->cursor = master.start + 1; - parser->limit = master.limit - 1; - - while ( parser->cursor < parser->limit ) - { - T1_TokenRec token; - - - ps_parser_to_token( parser, &token ); - if ( !token.type ) - break; - - if ( cur < limit ) - *cur = token; - - cur++; - } - - *pnum_tokens = (FT_Int)( cur - tokens ); - - parser->cursor = old_cursor; - parser->limit = old_limit; - } - } - - - /* first character must be already part of the number */ - - static FT_Long - ps_radix( FT_Long radixBase, - FT_Byte* *acur, - FT_Byte* limit ) - { - FT_Long result = 0; - FT_Byte* cur = *acur; - - - if ( radixBase < 2 || radixBase > 36 ) - return 0; - - while ( cur < limit ) - { - int d; - - - if ( *cur OP 0x80 ) - break; - - d = ft_char_table[*cur & 0x7F]; - if ( d < 0 || d >= radixBase ) - break; - - result = result * radixBase + d; - - cur++; - } - - *acur = cur; - - return result; - } - - - /* first character must be already part of the number */ - - static FT_Long - ps_toint( FT_Byte* *acur, - FT_Byte* limit ) - { - FT_Long result = 0; - FT_Byte* cur = *acur; - FT_Byte c; - - - if ( cur >= limit ) - goto Exit; - - c = *cur; - if ( c == '-' ) - cur++; - - while ( cur < limit ) - { - int d; - - - if ( *cur == '#' ) - { - cur++; - result = ps_radix( result, &cur, limit ); - break; - } - - if ( *cur OP 0x80 ) - break; - - d = ft_char_table[*cur & 0x7F]; - if ( d < 0 || d >= 10 ) - break; - result = result * 10 + d; - - cur++; - }; - - if ( c == '-' ) - result = -result; - - Exit: - *acur = cur; - return result; - } - - - /* first character must be `<' if `delimiters' is non-zero */ - - static FT_Error - ps_tobytes( FT_Byte* *acur, - FT_Byte* limit, - FT_Long max_bytes, - FT_Byte* bytes, - FT_Long* pnum_bytes, - FT_Bool delimiters ) - { - FT_Error error = PSaux_Err_Ok; - - FT_Byte* cur = *acur; - FT_Long n = 0; - - - if ( cur >= limit ) - goto Exit; - - if ( delimiters ) - { - if ( *cur != '<' ) - { - error = PSaux_Err_Invalid_File_Format; - goto Exit; - } - - cur++; - } - - max_bytes = max_bytes * 2; - - for ( n = 0; cur < limit; n++, cur++ ) - { - int d; - - - if ( n >= max_bytes ) - /* buffer is full */ - goto Exit; - - /* All whitespace characters are ignored. */ - skip_spaces( &cur, limit ); - if ( cur >= limit ) - break; - - if ( *cur OP 0x80 ) - break; - - d = ft_char_table[*cur & 0x7F]; - if ( d < 0 || d >= 16 ) - break; - - /* <f> == <f0> != <0f> */ - bytes[n / 2] = (FT_Byte)( ( n % 2 ) ? bytes[n / 2] + d - : d * 16 ); - } - - if ( delimiters ) - { - if ( cur < limit && *cur != '>' ) - { - error = PSaux_Err_Invalid_File_Format; - goto Exit; - } - - cur++; - } - - *acur = cur; - - Exit: - *pnum_bytes = ( n + 1 ) / 2; - - return error; - } - - - /* first character must be already part of the number */ - - static FT_Long - ps_tofixed( FT_Byte* *acur, - FT_Byte* limit, - FT_Long power_ten ) - { - FT_Byte* cur = *acur; - FT_Long num, divider, result; - FT_Int sign = 0; - - - if ( cur >= limit ) - return 0; - - /* first of all, check the sign */ - if ( *cur == '-' && cur + 1 < limit ) - { - sign = 1; - cur++; - } - - /* then, read the integer part, if any */ - if ( *cur != '.' ) - result = ps_toint( &cur, limit ) << 16; - else - result = 0; - - num = 0; - divider = 1; - - if ( cur >= limit ) - goto Exit; - - /* read decimal part, if any */ - if ( *cur == '.' && cur + 1 < limit ) - { - cur++; - - for (;;) - { - int d; - - - if ( *cur OP 0x80 ) - break; - - d = ft_char_table[*cur & 0x7F]; - if ( d < 0 || d >= 10 ) - break; - - if ( divider < 10000000L ) - { - num = num * 10 + d; - divider *= 10; - } - - cur++; - if ( cur >= limit ) - break; - } - } - - /* read exponent, if any */ - if ( cur + 1 < limit && ( *cur == 'e' || *cur == 'E' ) ) - { - cur++; - power_ten += ps_toint( &cur, limit ); - } - - Exit: - /* raise to power of ten if needed */ - while ( power_ten > 0 ) - { - result = result * 10; - num = num * 10; - power_ten--; - } - - while ( power_ten < 0 ) - { - result = result / 10; - divider = divider * 10; - power_ten++; - } - - if ( num ) - result += FT_DivFix( num, divider ); - - if ( sign ) - result = -result; - - *acur = cur; - return result; - } - - - /* first character must be a delimiter or a part of a number */ - - static FT_Int - ps_tocoordarray( FT_Byte* *acur, - FT_Byte* limit, - FT_Int max_coords, - FT_Short* coords ) - { - FT_Byte* cur = *acur; - FT_Int count = 0; - FT_Byte c, ender; - - - if ( cur >= limit ) - goto Exit; - - /* check for the beginning of an array; otherwise, only one number */ - /* will be read */ - c = *cur; - ender = 0; - - if ( c == '[' ) - ender = ']'; - - if ( c == '{' ) - ender = '}'; - - if ( ender ) - cur++; - - /* now, read the coordinates */ - while ( cur < limit ) - { - /* skip whitespace in front of data */ - skip_spaces( &cur, limit ); - if ( cur >= limit ) - goto Exit; - - if ( count >= max_coords ) - break; - - if ( c == ender ) - { - cur++; - break; - } - - coords[count] = (FT_Short)( ps_tofixed( &cur, limit, 0 ) >> 16 ); - count++; - - if ( !ender ) - break; - } - - Exit: - *acur = cur; - return count; - } - - - /* first character must be a delimiter or a part of a number */ - - static FT_Int - ps_tofixedarray( FT_Byte* *acur, - FT_Byte* limit, - FT_Int max_values, - FT_Fixed* values, - FT_Int power_ten ) - { - FT_Byte* cur = *acur; - FT_Int count = 0; - FT_Byte c, ender; - - - if ( cur >= limit ) - goto Exit; - - /* Check for the beginning of an array. Otherwise, only one number */ - /* will be read. */ - c = *cur; - ender = 0; - - if ( c == '[' ) - ender = ']'; - - if ( c == '{' ) - ender = '}'; - - if ( ender ) - cur++; - - /* now, read the values */ - while ( cur < limit ) - { - /* skip whitespace in front of data */ - skip_spaces( &cur, limit ); - if ( cur >= limit ) - goto Exit; - - if ( count >= max_values ) - break; - - if ( c == ender ) - { - cur++; - break; - } - - values[count] = ps_tofixed( &cur, limit, power_ten ); - count++; - - if ( !ender ) - break; - } - - Exit: - *acur = cur; - return count; - } - - -#if 0 - - static FT_String* - ps_tostring( FT_Byte** cursor, - FT_Byte* limit, - FT_Memory memory ) - { - FT_Byte* cur = *cursor; - FT_PtrDist len = 0; - FT_Int count; - FT_String* result; - FT_Error error; - - - /* XXX: some stupid fonts have a `Notice' or `Copyright' string */ - /* that simply doesn't begin with an opening parenthesis, even */ - /* though they have a closing one! E.g. "amuncial.pfb" */ - /* */ - /* We must deal with these ill-fated cases there. Note that */ - /* these fonts didn't work with the old Type 1 driver as the */ - /* notice/copyright was not recognized as a valid string token */ - /* and made the old token parser commit errors. */ - - while ( cur < limit && ( *cur == ' ' || *cur == '\t' ) ) - cur++; - if ( cur + 1 >= limit ) - return 0; - - if ( *cur == '(' ) - cur++; /* skip the opening parenthesis, if there is one */ - - *cursor = cur; - count = 0; - - /* then, count its length */ - for ( ; cur < limit; cur++ ) - { - if ( *cur == '(' ) - count++; - - else if ( *cur == ')' ) - { - count--; - if ( count < 0 ) - break; - } - } - - len = cur - *cursor; - if ( cur >= limit || FT_ALLOC( result, len + 1 ) ) - return 0; - - /* now copy the string */ - FT_MEM_COPY( result, *cursor, len ); - result[len] = '\0'; - *cursor = cur; - return result; - } - -#endif /* 0 */ - - - static int - ps_tobool( FT_Byte* *acur, - FT_Byte* limit ) - { - FT_Byte* cur = *acur; - FT_Bool result = 0; - - - /* return 1 if we find `true', 0 otherwise */ - if ( cur + 3 < limit && - cur[0] == 't' && - cur[1] == 'r' && - cur[2] == 'u' && - cur[3] == 'e' ) - { - result = 1; - cur += 5; - } - else if ( cur + 4 < limit && - cur[0] == 'f' && - cur[1] == 'a' && - cur[2] == 'l' && - cur[3] == 's' && - cur[4] == 'e' ) - { - result = 0; - cur += 6; - } - - *acur = cur; - return result; - } - - - /* load a simple field (i.e. non-table) into the current list of objects */ - - FT_LOCAL_DEF( FT_Error ) - ps_parser_load_field( PS_Parser parser, - const T1_Field field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ) - { - T1_TokenRec token; - FT_Byte* cur; - FT_Byte* limit; - FT_UInt count; - FT_UInt idx; - FT_Error error; - - - /* this also skips leading whitespace */ - ps_parser_to_token( parser, &token ); - if ( !token.type ) - goto Fail; - - count = 1; - idx = 0; - cur = token.start; - limit = token.limit; - - /* we must detect arrays in /FontBBox */ - if ( field->type == T1_FIELD_TYPE_BBOX ) - { - T1_TokenRec token2; - FT_Byte* old_cur = parser->cursor; - FT_Byte* old_limit = parser->limit; - - - /* don't include delimiters */ - parser->cursor = token.start + 1; - parser->limit = token.limit - 1; - - ps_parser_to_token( parser, &token2 ); - parser->cursor = old_cur; - parser->limit = old_limit; - - if ( token2.type == T1_TOKEN_TYPE_ARRAY ) - goto FieldArray; - } - else if ( token.type == T1_TOKEN_TYPE_ARRAY ) - { - FieldArray: - /* if this is an array and we have no blend, an error occurs */ - if ( max_objects == 0 ) - goto Fail; - - count = max_objects; - idx = 1; - - /* don't include delimiters */ - cur++; - limit--; - } - - for ( ; count > 0; count--, idx++ ) - { - FT_Byte* q = (FT_Byte*)objects[idx] + field->offset; - FT_Long val; - FT_String* string; - - - skip_spaces( &cur, limit ); - - switch ( field->type ) - { - case T1_FIELD_TYPE_BOOL: - val = ps_tobool( &cur, limit ); - goto Store_Integer; - - case T1_FIELD_TYPE_FIXED: - val = ps_tofixed( &cur, limit, 0 ); - goto Store_Integer; - - case T1_FIELD_TYPE_FIXED_1000: - val = ps_tofixed( &cur, limit, 3 ); - goto Store_Integer; - - case T1_FIELD_TYPE_INTEGER: - val = ps_toint( &cur, limit ); - /* fall through */ - - Store_Integer: - switch ( field->size ) - { - case (8 / FT_CHAR_BIT): - *(FT_Byte*)q = (FT_Byte)val; - break; - - case (16 / FT_CHAR_BIT): - *(FT_UShort*)q = (FT_UShort)val; - break; - - case (32 / FT_CHAR_BIT): - *(FT_UInt32*)q = (FT_UInt32)val; - break; - - default: /* for 64-bit systems */ - *(FT_Long*)q = val; - } - break; - - case T1_FIELD_TYPE_STRING: - case T1_FIELD_TYPE_KEY: - { - FT_Memory memory = parser->memory; - FT_UInt len = (FT_UInt)( limit - cur ); - - - if ( cur >= limit ) - break; - - if ( field->type == T1_FIELD_TYPE_KEY ) - { - /* don't include leading `/' */ - len--; - cur++; - } - else - { - /* don't include delimiting parentheses */ - cur++; - len -= 2; - } - - if ( FT_ALLOC( string, len + 1 ) ) - goto Exit; - - FT_MEM_COPY( string, cur, len ); - string[len] = 0; - - *(FT_String**)q = string; - } - break; - - case T1_FIELD_TYPE_BBOX: - { - FT_Fixed temp[4]; - FT_BBox* bbox = (FT_BBox*)q; - - - (void)ps_tofixedarray( &token.start, token.limit, 4, temp, 0 ); - - bbox->xMin = FT_RoundFix( temp[0] ); - bbox->yMin = FT_RoundFix( temp[1] ); - bbox->xMax = FT_RoundFix( temp[2] ); - bbox->yMax = FT_RoundFix( temp[3] ); - } - break; - - default: - /* an error occured */ - goto Fail; - } - } - -#if 0 /* obsolete -- keep for reference */ - if ( pflags ) - *pflags |= 1L << field->flag_bit; -#else - FT_UNUSED( pflags ); -#endif - - error = PSaux_Err_Ok; - - Exit: - return error; - - Fail: - error = PSaux_Err_Invalid_File_Format; - goto Exit; - } - - -#define T1_MAX_TABLE_ELEMENTS 32 - - - FT_LOCAL_DEF( FT_Error ) - ps_parser_load_field_table( PS_Parser parser, - const T1_Field field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ) - { - T1_TokenRec elements[T1_MAX_TABLE_ELEMENTS]; - T1_Token token; - FT_Int num_elements; - FT_Error error = PSaux_Err_Ok; - FT_Byte* old_cursor; - FT_Byte* old_limit; - T1_FieldRec fieldrec = *(T1_Field)field; - - -#if 1 - fieldrec.type = T1_FIELD_TYPE_INTEGER; - if ( field->type == T1_FIELD_TYPE_FIXED_ARRAY ) - fieldrec.type = T1_FIELD_TYPE_FIXED; -#endif - - ps_parser_to_token_array( parser, elements, - T1_MAX_TABLE_ELEMENTS, &num_elements ); - if ( num_elements < 0 ) - { - error = PSaux_Err_Ignore; - goto Exit; - } - if ( num_elements > T1_MAX_TABLE_ELEMENTS ) - num_elements = T1_MAX_TABLE_ELEMENTS; - - old_cursor = parser->cursor; - old_limit = parser->limit; - - /* we store the elements count */ - *(FT_Byte*)( (FT_Byte*)objects[0] + field->count_offset ) = - (FT_Byte)num_elements; - - /* we now load each element, adjusting the field.offset on each one */ - token = elements; - for ( ; num_elements > 0; num_elements--, token++ ) - { - parser->cursor = token->start; - parser->limit = token->limit; - ps_parser_load_field( parser, &fieldrec, objects, max_objects, 0 ); - fieldrec.offset += fieldrec.size; - } - -#if 0 /* obsolete -- keep for reference */ - if ( pflags ) - *pflags |= 1L << field->flag_bit; -#else - FT_UNUSED( pflags ); -#endif - - parser->cursor = old_cursor; - parser->limit = old_limit; - - Exit: - return error; - } - - - FT_LOCAL_DEF( FT_Long ) - ps_parser_to_int( PS_Parser parser ) - { - ps_parser_skip_spaces( parser ); - return ps_toint( &parser->cursor, parser->limit ); - } - - - FT_LOCAL_DEF( FT_Error ) - ps_parser_to_bytes( PS_Parser parser, - FT_Byte* bytes, - FT_Long max_bytes, - FT_Long* pnum_bytes, - FT_Bool delimiters ) - { - ps_parser_skip_spaces( parser ); - return ps_tobytes( &parser->cursor, - parser->limit, - max_bytes, - bytes, - pnum_bytes, - delimiters ); - } - - - FT_LOCAL_DEF( FT_Fixed ) - ps_parser_to_fixed( PS_Parser parser, - FT_Int power_ten ) - { - ps_parser_skip_spaces( parser ); - return ps_tofixed( &parser->cursor, parser->limit, power_ten ); - } - - - FT_LOCAL_DEF( FT_Int ) - ps_parser_to_coord_array( PS_Parser parser, - FT_Int max_coords, - FT_Short* coords ) - { - ps_parser_skip_spaces( parser ); - return ps_tocoordarray( &parser->cursor, parser->limit, - max_coords, coords ); - } - - - FT_LOCAL_DEF( FT_Int ) - ps_parser_to_fixed_array( PS_Parser parser, - FT_Int max_values, - FT_Fixed* values, - FT_Int power_ten ) - { - ps_parser_skip_spaces( parser ); - return ps_tofixedarray( &parser->cursor, parser->limit, - max_values, values, power_ten ); - } - - -#if 0 - - FT_LOCAL_DEF( FT_String* ) - T1_ToString( PS_Parser parser ) - { - return ps_tostring( &parser->cursor, parser->limit, parser->memory ); - } - - - FT_LOCAL_DEF( FT_Bool ) - T1_ToBool( PS_Parser parser ) - { - return ps_tobool( &parser->cursor, parser->limit ); - } - -#endif /* 0 */ - - - FT_LOCAL_DEF( void ) - ps_parser_init( PS_Parser parser, - FT_Byte* base, - FT_Byte* limit, - FT_Memory memory ) - { - parser->error = PSaux_Err_Ok; - parser->base = base; - parser->limit = limit; - parser->cursor = base; - parser->memory = memory; - parser->funcs = ps_parser_funcs; - } - - - FT_LOCAL_DEF( void ) - ps_parser_done( PS_Parser parser ) - { - FT_UNUSED( parser ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1 BUILDER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Function> */ - /* t1_builder_init */ - /* */ - /* <Description> */ - /* Initializes a given glyph builder. */ - /* */ - /* <InOut> */ - /* builder :: A pointer to the glyph builder to initialize. */ - /* */ - /* <Input> */ - /* face :: The current face object. */ - /* */ - /* size :: The current size object. */ - /* */ - /* glyph :: The current glyph object. */ - /* */ - /* hinting :: Whether hinting should be applied. */ - /* */ - FT_LOCAL_DEF( void ) - t1_builder_init( T1_Builder builder, - FT_Face face, - FT_Size size, - FT_GlyphSlot glyph, - FT_Bool hinting ) - { - builder->parse_state = T1_Parse_Start; - builder->load_points = 1; - - builder->face = face; - builder->glyph = glyph; - builder->memory = face->memory; - - if ( glyph ) - { - FT_GlyphLoader loader = glyph->internal->loader; - - - builder->loader = loader; - builder->base = &loader->base.outline; - builder->current = &loader->current.outline; - FT_GlyphLoader_Rewind( loader ); - - builder->hints_globals = size->internal; - builder->hints_funcs = 0; - - if ( hinting ) - builder->hints_funcs = glyph->internal->glyph_hints; - } - - if ( size ) - { - builder->scale_x = size->metrics.x_scale; - builder->scale_y = size->metrics.y_scale; - } - - builder->pos_x = 0; - builder->pos_y = 0; - - builder->left_bearing.x = 0; - builder->left_bearing.y = 0; - builder->advance.x = 0; - builder->advance.y = 0; - - builder->funcs = t1_builder_funcs; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* t1_builder_done */ - /* */ - /* <Description> */ - /* Finalizes a given glyph builder. Its contents can still be used */ - /* after the call, but the function saves important information */ - /* within the corresponding glyph slot. */ - /* */ - /* <Input> */ - /* builder :: A pointer to the glyph builder to finalize. */ - /* */ - FT_LOCAL_DEF( void ) - t1_builder_done( T1_Builder builder ) - { - FT_GlyphSlot glyph = builder->glyph; - - - if ( glyph ) - glyph->outline = *builder->base; - } - - - /* check that there is enough space for `count' more points */ - FT_LOCAL_DEF( FT_Error ) - t1_builder_check_points( T1_Builder builder, - FT_Int count ) - { - return FT_GlyphLoader_CheckPoints( builder->loader, count, 0 ); - } - - - /* add a new point, do not check space */ - FT_LOCAL_DEF( void ) - t1_builder_add_point( T1_Builder builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ) - { - FT_Outline* outline = builder->current; - - - if ( builder->load_points ) - { - FT_Vector* point = outline->points + outline->n_points; - FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points; - - - if ( builder->shift ) - { - x >>= 16; - y >>= 16; - } - point->x = x; - point->y = y; - *control = (FT_Byte)( flag ? FT_CURVE_TAG_ON : FT_CURVE_TAG_CUBIC ); - - builder->last = *point; - } - outline->n_points++; - } - - - /* check space for a new on-curve point, then add it */ - FT_LOCAL_DEF( FT_Error ) - t1_builder_add_point1( T1_Builder builder, - FT_Pos x, - FT_Pos y ) - { - FT_Error error; - - - error = t1_builder_check_points( builder, 1 ); - if ( !error ) - t1_builder_add_point( builder, x, y, 1 ); - - return error; - } - - - /* check space for a new contour, then add it */ - FT_LOCAL_DEF( FT_Error ) - t1_builder_add_contour( T1_Builder builder ) - { - FT_Outline* outline = builder->current; - FT_Error error; - - - if ( !builder->load_points ) - { - outline->n_contours++; - return PSaux_Err_Ok; - } - - error = FT_GlyphLoader_CheckPoints( builder->loader, 0, 1 ); - if ( !error ) - { - if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = - (short)( outline->n_points - 1 ); - - outline->n_contours++; - } - - return error; - } - - - /* if a path was begun, add its first on-curve point */ - FT_LOCAL_DEF( FT_Error ) - t1_builder_start_point( T1_Builder builder, - FT_Pos x, - FT_Pos y ) - { - FT_Error error = PSaux_Err_Invalid_File_Format; - - - /* test whether we are building a new contour */ - - if ( builder->parse_state == T1_Parse_Have_Path ) - error = PSaux_Err_Ok; - else if ( builder->parse_state == T1_Parse_Have_Moveto ) - { - builder->parse_state = T1_Parse_Have_Path; - error = t1_builder_add_contour( builder ); - if ( !error ) - error = t1_builder_add_point1( builder, x, y ); - } - - return error; - } - - - /* close the current contour */ - FT_LOCAL_DEF( void ) - t1_builder_close_contour( T1_Builder builder ) - { - FT_Outline* outline = builder->current; - - - /* XXXX: We must not include the last point in the path if it */ - /* is located on the first point. */ - if ( outline->n_points > 1 ) - { - FT_Int first = 0; - FT_Vector* p1 = outline->points + first; - FT_Vector* p2 = outline->points + outline->n_points - 1; - FT_Byte* control = (FT_Byte*)outline->tags + outline->n_points - 1; - - - if ( outline->n_contours > 1 ) - { - first = outline->contours[outline->n_contours - 2] + 1; - p1 = outline->points + first; - } - - /* `delete' last point only if it coincides with the first */ - /* point and it is not a control point (which can happen). */ - if ( p1->x == p2->x && p1->y == p2->y ) - if ( *control == FT_CURVE_TAG_ON ) - outline->n_points--; - } - - if ( outline->n_contours > 0 ) - outline->contours[outline->n_contours - 1] = - (short)( outline->n_points - 1 ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** OTHER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_LOCAL_DEF( void ) - t1_decrypt( FT_Byte* buffer, - FT_Offset length, - FT_UShort seed ) - { - while ( length > 0 ) - { - FT_Byte plain; - - - plain = (FT_Byte)( *buffer ^ ( seed >> 8 ) ); - seed = (FT_UShort)( ( *buffer + seed ) * 52845U + 22719 ); - *buffer++ = plain; - length--; - } - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/psobjs.h b/nx-X11/extras/freetype2/src/psaux/psobjs.h deleted file mode 100644 index c2cbf2c79..000000000 --- a/nx-X11/extras/freetype2/src/psaux/psobjs.h +++ /dev/null @@ -1,212 +0,0 @@ -/***************************************************************************/ -/* */ -/* psobjs.h */ -/* */ -/* Auxiliary functions for PostScript fonts (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PSOBJS_H__ -#define __PSOBJS_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1_TABLE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_CALLBACK_TABLE - const PS_Table_FuncsRec ps_table_funcs; - - FT_CALLBACK_TABLE - const PS_Parser_FuncsRec ps_parser_funcs; - - FT_CALLBACK_TABLE - const T1_Builder_FuncsRec t1_builder_funcs; - - - FT_LOCAL( FT_Error ) - ps_table_new( PS_Table table, - FT_Int count, - FT_Memory memory ); - - FT_LOCAL( FT_Error ) - ps_table_add( PS_Table table, - FT_Int idx, - void* object, - FT_PtrDist length ); - - FT_LOCAL( void ) - ps_table_done( PS_Table table ); - - - FT_LOCAL( void ) - ps_table_release( PS_Table table ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1 PARSER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL( void ) - ps_parser_skip_spaces( PS_Parser parser ); - - FT_LOCAL( void ) - ps_parser_skip_PS_token( PS_Parser parser ); - - FT_LOCAL( void ) - ps_parser_to_token( PS_Parser parser, - T1_Token token ); - - FT_LOCAL( void ) - ps_parser_to_token_array( PS_Parser parser, - T1_Token tokens, - FT_UInt max_tokens, - FT_Int* pnum_tokens ); - - FT_LOCAL( FT_Error ) - ps_parser_load_field( PS_Parser parser, - const T1_Field field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ); - - FT_LOCAL( FT_Error ) - ps_parser_load_field_table( PS_Parser parser, - const T1_Field field, - void** objects, - FT_UInt max_objects, - FT_ULong* pflags ); - - FT_LOCAL( FT_Long ) - ps_parser_to_int( PS_Parser parser ); - - - FT_LOCAL( FT_Error ) - ps_parser_to_bytes( PS_Parser parser, - FT_Byte* bytes, - FT_Long max_bytes, - FT_Long* pnum_bytes, - FT_Bool delimiters ); - - - FT_LOCAL( FT_Fixed ) - ps_parser_to_fixed( PS_Parser parser, - FT_Int power_ten ); - - - FT_LOCAL( FT_Int ) - ps_parser_to_coord_array( PS_Parser parser, - FT_Int max_coords, - FT_Short* coords ); - - FT_LOCAL( FT_Int ) - ps_parser_to_fixed_array( PS_Parser parser, - FT_Int max_values, - FT_Fixed* values, - FT_Int power_ten ); - - - FT_LOCAL( void ) - ps_parser_init( PS_Parser parser, - FT_Byte* base, - FT_Byte* limit, - FT_Memory memory ); - - FT_LOCAL( void ) - ps_parser_done( PS_Parser parser ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** T1 BUILDER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_LOCAL( void ) - t1_builder_init( T1_Builder builder, - FT_Face face, - FT_Size size, - FT_GlyphSlot glyph, - FT_Bool hinting ); - - FT_LOCAL( void ) - t1_builder_done( T1_Builder builder ); - - FT_LOCAL( FT_Error ) - t1_builder_check_points( T1_Builder builder, - FT_Int count ); - - FT_LOCAL( void ) - t1_builder_add_point( T1_Builder builder, - FT_Pos x, - FT_Pos y, - FT_Byte flag ); - - FT_LOCAL( FT_Error ) - t1_builder_add_point1( T1_Builder builder, - FT_Pos x, - FT_Pos y ); - - FT_LOCAL( FT_Error ) - t1_builder_add_contour( T1_Builder builder ); - - - FT_LOCAL( FT_Error ) - t1_builder_start_point( T1_Builder builder, - FT_Pos x, - FT_Pos y ); - - - FT_LOCAL( void ) - t1_builder_close_contour( T1_Builder builder ); - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** OTHER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_LOCAL( void ) - t1_decrypt( FT_Byte* buffer, - FT_Offset length, - FT_UShort seed ); - - -FT_END_HEADER - -#endif /* __PSOBJS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/rules.mk b/nx-X11/extras/freetype2/src/psaux/rules.mk deleted file mode 100644 index 7338d3657..000000000 --- a/nx-X11/extras/freetype2/src/psaux/rules.mk +++ /dev/null @@ -1,71 +0,0 @@ -# -# FreeType 2 PSaux driver configuration rules -# - - -# Copyright 1996-2000, 2002, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# PSAUX driver directory -# -PSAUX_DIR := $(SRC_DIR)/psaux - - -# compilation flags for the driver -# -PSAUX_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSAUX_DIR)) - - -# PSAUX driver sources (i.e., C files) -# -PSAUX_DRV_SRC := $(PSAUX_DIR)/psobjs.c \ - $(PSAUX_DIR)/t1decode.c \ - $(PSAUX_DIR)/t1cmap.c \ - $(PSAUX_DIR)/psauxmod.c - -# PSAUX driver headers -# -PSAUX_DRV_H := $(PSAUX_DRV_SRC:%c=%h) \ - $(PSAUX_DIR)/psauxerr.h - - -# PSAUX driver object(s) -# -# PSAUX_DRV_OBJ_M is used during `multi' builds. -# PSAUX_DRV_OBJ_S is used during `single' builds. -# -PSAUX_DRV_OBJ_M := $(PSAUX_DRV_SRC:$(PSAUX_DIR)/%.c=$(OBJ_DIR)/%.$O) -PSAUX_DRV_OBJ_S := $(OBJ_DIR)/psaux.$O - -# PSAUX driver source file for single build -# -PSAUX_DRV_SRC_S := $(PSAUX_DIR)/psaux.c - - -# PSAUX driver - single object -# -$(PSAUX_DRV_OBJ_S): $(PSAUX_DRV_SRC_S) $(PSAUX_DRV_SRC) \ - $(FREETYPE_H) $(PSAUX_DRV_H) - $(PSAUX_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSAUX_DRV_SRC_S)) - - -# PSAUX driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(PSAUX_DIR)/%.c $(FREETYPE_H) $(PSAUX_DRV_H) - $(PSAUX_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(PSAUX_DRV_OBJ_S) -DRV_OBJS_M += $(PSAUX_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/psaux/t1cmap.c b/nx-X11/extras/freetype2/src/psaux/t1cmap.c deleted file mode 100644 index dcd99be49..000000000 --- a/nx-X11/extras/freetype2/src/psaux/t1cmap.c +++ /dev/null @@ -1,456 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1cmap.c */ -/* */ -/* Type 1 character map support (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "t1cmap.h" - -#include FT_INTERNAL_DEBUG_H - -#include "psauxerr.h" - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE1 STANDARD (AND EXPERT) ENCODING CMAPS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static void - t1_cmap_std_init( T1_CMapStd cmap, - FT_Int is_expert ) - { - T1_Face face = (T1_Face)FT_CMAP_FACE( cmap ); - FT_Service_PsCMaps psnames = (FT_Service_PsCMaps)face->psnames; - - - cmap->num_glyphs = face->type1.num_glyphs; - cmap->glyph_names = (const char* const*)face->type1.glyph_names; - cmap->sid_to_string = psnames->adobe_std_strings; - cmap->code_to_sid = is_expert ? psnames->adobe_expert_encoding - : psnames->adobe_std_encoding; - - FT_ASSERT( cmap->code_to_sid != NULL ); - } - - - FT_CALLBACK_DEF( void ) - t1_cmap_std_done( T1_CMapStd cmap ) - { - cmap->num_glyphs = 0; - cmap->glyph_names = NULL; - cmap->sid_to_string = NULL; - cmap->code_to_sid = NULL; - } - - - FT_CALLBACK_DEF( FT_UInt ) - t1_cmap_std_char_index( T1_CMapStd cmap, - FT_UInt32 char_code ) - { - FT_UInt result = 0; - - - if ( char_code < 256 ) - { - FT_UInt code, n; - const char* glyph_name; - - - /* convert character code to Adobe SID string */ - code = cmap->code_to_sid[char_code]; - glyph_name = cmap->sid_to_string( code ); - - /* look for the corresponding glyph name */ - for ( n = 0; n < cmap->num_glyphs; n++ ) - { - const char* gname = cmap->glyph_names[n]; - - - if ( gname && gname[0] == glyph_name[0] && - ft_strcmp( gname, glyph_name ) == 0 ) - { - result = n; - break; - } - } - } - - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - t1_cmap_std_char_next( T1_CMapStd cmap, - FT_UInt32 *pchar_code ) - { - FT_UInt result = 0; - FT_UInt32 char_code = *pchar_code + 1; - - - while ( char_code < 256 ) - { - result = t1_cmap_std_char_index( cmap, char_code ); - if ( result != 0 ) - goto Exit; - - char_code++; - } - char_code = 0; - - Exit: - *pchar_code = char_code; - return result; - } - - - FT_CALLBACK_DEF( FT_Error ) - t1_cmap_standard_init( T1_CMapStd cmap ) - { - t1_cmap_std_init( cmap, 0 ); - return 0; - } - - - FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec - t1_cmap_standard_class_rec = - { - sizeof ( T1_CMapStdRec ), - - (FT_CMap_InitFunc) t1_cmap_standard_init, - (FT_CMap_DoneFunc) t1_cmap_std_done, - (FT_CMap_CharIndexFunc)t1_cmap_std_char_index, - (FT_CMap_CharNextFunc) t1_cmap_std_char_next - }; - - - FT_CALLBACK_DEF( FT_Error ) - t1_cmap_expert_init( T1_CMapStd cmap ) - { - t1_cmap_std_init( cmap, 1 ); - return 0; - } - - FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec - t1_cmap_expert_class_rec = - { - sizeof ( T1_CMapStdRec ), - - (FT_CMap_InitFunc) t1_cmap_expert_init, - (FT_CMap_DoneFunc) t1_cmap_std_done, - (FT_CMap_CharIndexFunc)t1_cmap_std_char_index, - (FT_CMap_CharNextFunc) t1_cmap_std_char_next - }; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE1 CUSTOM ENCODING CMAP *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_CALLBACK_DEF( FT_Error ) - t1_cmap_custom_init( T1_CMapCustom cmap ) - { - T1_Face face = (T1_Face)FT_CMAP_FACE( cmap ); - T1_Encoding encoding = &face->type1.encoding; - - - cmap->first = encoding->code_first; - cmap->count = (FT_UInt)( encoding->code_last - cmap->first + 1 ); - cmap->indices = encoding->char_index; - - FT_ASSERT( cmap->indices != NULL ); - FT_ASSERT( encoding->code_first <= encoding->code_last ); - - return 0; - } - - - FT_CALLBACK_DEF( void ) - t1_cmap_custom_done( T1_CMapCustom cmap ) - { - cmap->indices = NULL; - cmap->first = 0; - cmap->count = 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - t1_cmap_custom_char_index( T1_CMapCustom cmap, - FT_UInt32 char_code ) - { - FT_UInt result = 0; - - - if ( ( char_code >= cmap->first ) && - ( char_code < ( cmap->first + cmap->count ) ) ) - result = cmap->indices[char_code]; - - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - t1_cmap_custom_char_next( T1_CMapCustom cmap, - FT_UInt32 *pchar_code ) - { - FT_UInt result = 0; - FT_UInt32 char_code = *pchar_code; - - - ++char_code; - - if ( char_code < cmap->first ) - char_code = cmap->first; - - for ( ; char_code < ( cmap->first + cmap->count ); char_code++ ) - { - result = cmap->indices[char_code]; - if ( result != 0 ) - goto Exit; - } - - char_code = 0; - - Exit: - *pchar_code = char_code; - return result; - } - - - FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec - t1_cmap_custom_class_rec = - { - sizeof ( T1_CMapCustomRec ), - - (FT_CMap_InitFunc) t1_cmap_custom_init, - (FT_CMap_DoneFunc) t1_cmap_custom_done, - (FT_CMap_CharIndexFunc)t1_cmap_custom_char_index, - (FT_CMap_CharNextFunc) t1_cmap_custom_char_next - }; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE1 SYNTHETIC UNICODE ENCODING CMAP *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_CALLBACK_DEF( FT_Int ) - t1_cmap_uni_pair_compare( const void* pair1, - const void* pair2 ) - { - FT_UInt32 u1 = ((T1_CMapUniPair)pair1)->unicode; - FT_UInt32 u2 = ((T1_CMapUniPair)pair2)->unicode; - - - if ( u1 < u2 ) - return -1; - - if ( u1 > u2 ) - return +1; - - return 0; - } - - - FT_CALLBACK_DEF( FT_Error ) - t1_cmap_unicode_init( T1_CMapUnicode cmap ) - { - FT_Error error; - FT_UInt count; - T1_Face face = (T1_Face)FT_CMAP_FACE( cmap ); - FT_Memory memory = FT_FACE_MEMORY( face ); - FT_Service_PsCMaps psnames = (FT_Service_PsCMaps)face->psnames; - - - cmap->num_pairs = 0; - cmap->pairs = NULL; - - count = face->type1.num_glyphs; - - if ( !FT_NEW_ARRAY( cmap->pairs, count ) ) - { - FT_UInt n, new_count; - T1_CMapUniPair pair; - FT_UInt32 uni_code; - - - pair = cmap->pairs; - for ( n = 0; n < count; n++ ) - { - const char* gname = face->type1.glyph_names[n]; - - - /* build unsorted pair table by matching glyph names */ - if ( gname ) - { - uni_code = psnames->unicode_value( gname ); - - if ( uni_code != 0 ) - { - pair->unicode = uni_code; - pair->gindex = n; - pair++; - } - } - } - - new_count = (FT_UInt)( pair - cmap->pairs ); - if ( new_count == 0 ) - { - /* there are no unicode characters in here! */ - FT_FREE( cmap->pairs ); - error = PSaux_Err_Invalid_Argument; - } - else - { - /* re-allocate if the new array is much smaller than the original */ - /* one */ - if ( new_count != count && new_count < count / 2 ) - { - (void)FT_RENEW_ARRAY( cmap->pairs, count, new_count ); - error = 0; - } - - /* sort the pairs table to allow efficient binary searches */ - ft_qsort( cmap->pairs, - new_count, - sizeof ( T1_CMapUniPairRec ), - t1_cmap_uni_pair_compare ); - - cmap->num_pairs = new_count; - } - } - - return error; - } - - - FT_CALLBACK_DEF( void ) - t1_cmap_unicode_done( T1_CMapUnicode cmap ) - { - FT_Face face = FT_CMAP_FACE(cmap); - FT_Memory memory = FT_FACE_MEMORY(face); - - FT_FREE( cmap->pairs ); - cmap->num_pairs = 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - t1_cmap_unicode_char_index( T1_CMapUnicode cmap, - FT_UInt32 char_code ) - { - FT_UInt min = 0; - FT_UInt max = cmap->num_pairs; - FT_UInt mid; - T1_CMapUniPair pair; - - - while ( min < max ) - { - mid = min + ( max - min ) / 2; - pair = cmap->pairs + mid; - - if ( pair->unicode == char_code ) - return pair->gindex; - - if ( pair->unicode < char_code ) - min = mid + 1; - else - max = mid; - } - return 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - t1_cmap_unicode_char_next( T1_CMapUnicode cmap, - FT_UInt32 *pchar_code ) - { - FT_UInt result = 0; - FT_UInt32 char_code = *pchar_code + 1; - - - Restart: - { - FT_UInt min = 0; - FT_UInt max = cmap->num_pairs; - FT_UInt mid; - T1_CMapUniPair pair; - - - while ( min < max ) - { - mid = min + ( ( max - min ) >> 1 ); - pair = cmap->pairs + mid; - - if ( pair->unicode == char_code ) - { - result = pair->gindex; - if ( result != 0 ) - goto Exit; - - char_code++; - goto Restart; - } - - if ( pair->unicode < char_code ) - min = mid+1; - else - max = mid; - } - - /* we didn't find it, but we have a pair just above it */ - char_code = 0; - - if ( min < cmap->num_pairs ) - { - pair = cmap->pairs + min; - result = pair->gindex; - if ( result != 0 ) - char_code = pair->unicode; - } - } - - Exit: - *pchar_code = char_code; - return result; - } - - - FT_CALLBACK_TABLE_DEF const FT_CMap_ClassRec - t1_cmap_unicode_class_rec = - { - sizeof ( T1_CMapUnicodeRec ), - - (FT_CMap_InitFunc) t1_cmap_unicode_init, - (FT_CMap_DoneFunc) t1_cmap_unicode_done, - (FT_CMap_CharIndexFunc)t1_cmap_unicode_char_index, - (FT_CMap_CharNextFunc) t1_cmap_unicode_char_next - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/t1cmap.h b/nx-X11/extras/freetype2/src/psaux/t1cmap.h deleted file mode 100644 index aa93d746c..000000000 --- a/nx-X11/extras/freetype2/src/psaux/t1cmap.h +++ /dev/null @@ -1,123 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1cmap.h */ -/* */ -/* Type 1 character map support (specification). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1CMAP_H__ -#define __T1CMAP_H__ - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_TYPE1_TYPES_H - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE1 STANDARD (AND EXPERT) ENCODING CMAPS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* standard (and expert) encoding cmaps */ - typedef struct T1_CMapStdRec_* T1_CMapStd; - - typedef struct T1_CMapStdRec_ - { - FT_CMapRec cmap; - - const FT_UShort* code_to_sid; - PS_Adobe_Std_Strings_Func sid_to_string; - - FT_UInt num_glyphs; - const char* const* glyph_names; - - } T1_CMapStdRec; - - - FT_CALLBACK_TABLE const FT_CMap_ClassRec - t1_cmap_standard_class_rec; - - FT_CALLBACK_TABLE const FT_CMap_ClassRec - t1_cmap_expert_class_rec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE1 CUSTOM ENCODING CMAP *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - typedef struct T1_CMapCustomRec_* T1_CMapCustom; - - typedef struct T1_CMapCustomRec_ - { - FT_CMapRec cmap; - FT_UInt first; - FT_UInt count; - FT_UShort* indices; - - } T1_CMapCustomRec; - - - FT_CALLBACK_TABLE const FT_CMap_ClassRec - t1_cmap_custom_class_rec; - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE1 SYNTHETIC UNICODE ENCODING CMAP *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* unicode (syntehtic) cmaps */ - typedef struct T1_CMapUnicodeRec_* T1_CMapUnicode; - - typedef struct T1_CMapUniPairRec_ - { - FT_UInt32 unicode; - FT_UInt gindex; - - } T1_CMapUniPairRec, *T1_CMapUniPair; - - - typedef struct T1_CMapUnicodeRec_ - { - FT_CMapRec cmap; - FT_UInt num_pairs; - T1_CMapUniPair pairs; - - } T1_CMapUnicodeRec; - - - FT_CALLBACK_TABLE const FT_CMap_ClassRec - t1_cmap_unicode_class_rec; - - /* */ - - -FT_END_HEADER - -#endif /* __T1CMAP_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/t1decode.c b/nx-X11/extras/freetype2/src/psaux/t1decode.c deleted file mode 100644 index c2adf480c..000000000 --- a/nx-X11/extras/freetype2/src/psaux/t1decode.c +++ /dev/null @@ -1,1165 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1decode.c */ -/* */ -/* PostScript Type 1 decoding routines (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H -#include FT_OUTLINE_H - -#include "t1decode.h" -#include "psobjs.h" - -#include "psauxerr.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t1decode - - - typedef enum T1_Operator_ - { - op_none = 0, - op_endchar, - op_hsbw, - op_seac, - op_sbw, - op_closepath, - op_hlineto, - op_hmoveto, - op_hvcurveto, - op_rlineto, - op_rmoveto, - op_rrcurveto, - op_vhcurveto, - op_vlineto, - op_vmoveto, - op_dotsection, - op_hstem, - op_hstem3, - op_vstem, - op_vstem3, - op_div, - op_callothersubr, - op_callsubr, - op_pop, - op_return, - op_setcurrentpoint, - - op_max /* never remove this one */ - - } T1_Operator; - - - static - const FT_Int t1_args_count[op_max] = - { - 0, /* none */ - 0, /* endchar */ - 2, /* hsbw */ - 5, /* seac */ - 4, /* sbw */ - 0, /* closepath */ - 1, /* hlineto */ - 1, /* hmoveto */ - 4, /* hvcurveto */ - 2, /* rlineto */ - 2, /* rmoveto */ - 6, /* rrcurveto */ - 4, /* vhcurveto */ - 1, /* vlineto */ - 1, /* vmoveto */ - 0, /* dotsection */ - 2, /* hstem */ - 6, /* hstem3 */ - 2, /* vstem */ - 6, /* vstem3 */ - 2, /* div */ - -1, /* callothersubr */ - 1, /* callsubr */ - 0, /* pop */ - 0, /* return */ - 2 /* setcurrentpoint */ - }; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* t1_lookup_glyph_by_stdcharcode */ - /* */ - /* <Description> */ - /* Looks up a given glyph by its StandardEncoding charcode. Used to */ - /* implement the SEAC Type 1 operator. */ - /* */ - /* <Input> */ - /* face :: The current face object. */ - /* */ - /* charcode :: The character code to look for. */ - /* */ - /* <Return> */ - /* A glyph index in the font face. Returns -1 if the corresponding */ - /* glyph wasn't found. */ - /* */ - static FT_Int - t1_lookup_glyph_by_stdcharcode( T1_Decoder decoder, - FT_Int charcode ) - { - FT_UInt n; - const FT_String* glyph_name; - FT_Service_PsCMaps psnames = decoder->psnames; - - - /* check range of standard char code */ - if ( charcode < 0 || charcode > 255 ) - return -1; - - glyph_name = psnames->adobe_std_strings( - psnames->adobe_std_encoding[charcode]); - - for ( n = 0; n < decoder->num_glyphs; n++ ) - { - FT_String* name = (FT_String*)decoder->glyph_names[n]; - - - if ( name && name[0] == glyph_name[0] && - ft_strcmp( name, glyph_name ) == 0 ) - return n; - } - - return -1; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* t1operator_seac */ - /* */ - /* <Description> */ - /* Implements the `seac' Type 1 operator for a Type 1 decoder. */ - /* */ - /* <Input> */ - /* decoder :: The current CID decoder. */ - /* */ - /* asb :: The accent's side bearing. */ - /* */ - /* adx :: The horizontal offset of the accent. */ - /* */ - /* ady :: The vertical offset of the accent. */ - /* */ - /* bchar :: The base character's StandardEncoding charcode. */ - /* */ - /* achar :: The accent character's StandardEncoding charcode. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - t1operator_seac( T1_Decoder decoder, - FT_Pos asb, - FT_Pos adx, - FT_Pos ady, - FT_Int bchar, - FT_Int achar ) - { - FT_Error error; - FT_Int bchar_index, achar_index; -#if 0 - FT_Int n_base_points; - FT_Outline* base = decoder->builder.base; -#endif - FT_Vector left_bearing, advance; - - - /* seac weirdness */ - adx += decoder->builder.left_bearing.x; - - /* `glyph_names' is set to 0 for CID fonts which do not */ - /* include an encoding. How can we deal with these? */ - if ( decoder->glyph_names == 0 ) - { - FT_ERROR(( "t1operator_seac:" )); - FT_ERROR(( " glyph names table not available in this font!\n" )); - return PSaux_Err_Syntax_Error; - } - - bchar_index = t1_lookup_glyph_by_stdcharcode( decoder, bchar ); - achar_index = t1_lookup_glyph_by_stdcharcode( decoder, achar ); - - if ( bchar_index < 0 || achar_index < 0 ) - { - FT_ERROR(( "t1operator_seac:" )); - FT_ERROR(( " invalid seac character code arguments\n" )); - return PSaux_Err_Syntax_Error; - } - - /* if we are trying to load a composite glyph, do not load the */ - /* accent character and return the array of subglyphs. */ - if ( decoder->builder.no_recurse ) - { - FT_GlyphSlot glyph = (FT_GlyphSlot)decoder->builder.glyph; - FT_GlyphLoader loader = glyph->internal->loader; - FT_SubGlyph subg; - - - /* reallocate subglyph array if necessary */ - error = FT_GlyphLoader_CheckSubGlyphs( loader, 2 ); - if ( error ) - goto Exit; - - subg = loader->current.subglyphs; - - /* subglyph 0 = base character */ - subg->index = bchar_index; - subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES | - FT_SUBGLYPH_FLAG_USE_MY_METRICS; - subg->arg1 = 0; - subg->arg2 = 0; - subg++; - - /* subglyph 1 = accent character */ - subg->index = achar_index; - subg->flags = FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES; - subg->arg1 = (FT_Int)( adx - asb ); - subg->arg2 = (FT_Int)ady; - - /* set up remaining glyph fields */ - glyph->num_subglyphs = 2; - glyph->subglyphs = loader->base.subglyphs; - glyph->format = FT_GLYPH_FORMAT_COMPOSITE; - - loader->current.num_subglyphs = 2; - goto Exit; - } - - /* First load `bchar' in builder */ - /* now load the unscaled outline */ - - FT_GlyphLoader_Prepare( decoder->builder.loader ); /* prepare loader */ - - error = t1_decoder_parse_glyph( decoder, bchar_index ); - if ( error ) - goto Exit; - - /* save the left bearing and width of the base character */ - /* as they will be erased by the next load. */ - - left_bearing = decoder->builder.left_bearing; - advance = decoder->builder.advance; - - decoder->builder.left_bearing.x = 0; - decoder->builder.left_bearing.y = 0; - - decoder->builder.pos_x = adx - asb; - decoder->builder.pos_y = ady; - - /* Now load `achar' on top of */ - /* the base outline */ - error = t1_decoder_parse_glyph( decoder, achar_index ); - if ( error ) - goto Exit; - - /* restore the left side bearing and */ - /* advance width of the base character */ - - decoder->builder.left_bearing = left_bearing; - decoder->builder.advance = advance; - - decoder->builder.pos_x = 0; - decoder->builder.pos_y = 0; - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* t1_decoder_parse_charstrings */ - /* */ - /* <Description> */ - /* Parses a given Type 1 charstrings program. */ - /* */ - /* <Input> */ - /* decoder :: The current Type 1 decoder. */ - /* */ - /* charstring_base :: The base address of the charstring stream. */ - /* */ - /* charstring_len :: The length in bytes of the charstring stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - t1_decoder_parse_charstrings( T1_Decoder decoder, - FT_Byte* charstring_base, - FT_UInt charstring_len ) - { - FT_Error error; - T1_Decoder_Zone zone; - FT_Byte* ip; - FT_Byte* limit; - T1_Builder builder = &decoder->builder; - FT_Pos x, y, orig_x, orig_y; - - T1_Hints_Funcs hinter; - - - /* we don't want to touch the source code -- use macro trick */ -#define start_point t1_builder_start_point -#define check_points t1_builder_check_points -#define add_point t1_builder_add_point -#define add_point1 t1_builder_add_point1 -#define add_contour t1_builder_add_contour -#define close_contour t1_builder_close_contour - - /* First of all, initialize the decoder */ - decoder->top = decoder->stack; - decoder->zone = decoder->zones; - zone = decoder->zones; - - builder->parse_state = T1_Parse_Start; - - hinter = (T1_Hints_Funcs)builder->hints_funcs; - - zone->base = charstring_base; - limit = zone->limit = charstring_base + charstring_len; - ip = zone->cursor = zone->base; - - error = PSaux_Err_Ok; - - x = orig_x = builder->pos_x; - y = orig_y = builder->pos_y; - - /* begin hints recording session, if any */ - if ( hinter ) - hinter->open( hinter->hints ); - - /* now, execute loop */ - while ( ip < limit ) - { - FT_Long* top = decoder->top; - T1_Operator op = op_none; - FT_Long value = 0; - - - /*********************************************************************/ - /* */ - /* Decode operator or operand */ - /* */ - /* */ - - /* first of all, decompress operator or value */ - switch ( *ip++ ) - { - case 1: - op = op_hstem; - break; - - case 3: - op = op_vstem; - break; - case 4: - op = op_vmoveto; - break; - case 5: - op = op_rlineto; - break; - case 6: - op = op_hlineto; - break; - case 7: - op = op_vlineto; - break; - case 8: - op = op_rrcurveto; - break; - case 9: - op = op_closepath; - break; - case 10: - op = op_callsubr; - break; - case 11: - op = op_return; - break; - - case 13: - op = op_hsbw; - break; - case 14: - op = op_endchar; - break; - - case 15: /* undocumented, obsolete operator */ - op = op_none; - break; - - case 21: - op = op_rmoveto; - break; - case 22: - op = op_hmoveto; - break; - - case 30: - op = op_vhcurveto; - break; - case 31: - op = op_hvcurveto; - break; - - case 12: - if ( ip > limit ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "invalid escape (12+EOF)\n" )); - goto Syntax_Error; - } - - switch ( *ip++ ) - { - case 0: - op = op_dotsection; - break; - case 1: - op = op_vstem3; - break; - case 2: - op = op_hstem3; - break; - case 6: - op = op_seac; - break; - case 7: - op = op_sbw; - break; - case 12: - op = op_div; - break; - case 16: - op = op_callothersubr; - break; - case 17: - op = op_pop; - break; - case 33: - op = op_setcurrentpoint; - break; - - default: - FT_ERROR(( "t1_decoder_parse_charstrings: " - "invalid escape (12+%d)\n", - ip[-1] )); - goto Syntax_Error; - } - break; - - case 255: /* four bytes integer */ - if ( ip + 4 > limit ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "unexpected EOF in integer\n" )); - goto Syntax_Error; - } - - value = (FT_Int32)( ((FT_Long)ip[0] << 24) | - ((FT_Long)ip[1] << 16) | - ((FT_Long)ip[2] << 8 ) | - ip[3] ); - ip += 4; - break; - - default: - if ( ip[-1] >= 32 ) - { - if ( ip[-1] < 247 ) - value = (FT_Long)ip[-1] - 139; - else - { - if ( ++ip > limit ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " )); - FT_ERROR(( "unexpected EOF in integer\n" )); - goto Syntax_Error; - } - - if ( ip[-2] < 251 ) - value = ( ( (FT_Long)ip[-2] - 247 ) << 8 ) + ip[-1] + 108; - else - value = -( ( ( (FT_Long)ip[-2] - 251 ) << 8 ) + ip[-1] + 108 ); - } - } - else - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "invalid byte (%d)\n", ip[-1] )); - goto Syntax_Error; - } - } - - /*********************************************************************/ - /* */ - /* Push value on stack, or process operator */ - /* */ - /* */ - if ( op == op_none ) - { - if ( top - decoder->stack >= T1_MAX_CHARSTRINGS_OPERANDS ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: stack overflow!\n" )); - goto Syntax_Error; - } - - FT_TRACE4(( " %ld", value )); - - *top++ = value; - decoder->top = top; - } - else if ( op == op_callothersubr ) /* callothersubr */ - { - FT_TRACE4(( " callothersubr" )); - - if ( top - decoder->stack < 2 ) - goto Stack_Underflow; - - top -= 2; - switch ( (FT_Int)top[1] ) - { - case 1: /* start flex feature */ - if ( top[0] != 0 ) - goto Unexpected_OtherSubr; - - decoder->flex_state = 1; - decoder->num_flex_vectors = 0; - if ( start_point( builder, x, y ) || - check_points( builder, 6 ) ) - goto Fail; - break; - - case 2: /* add flex vectors */ - { - FT_Int idx; - - - if ( top[0] != 0 ) - goto Unexpected_OtherSubr; - - /* note that we should not add a point for index 0; */ - /* this will move our current position to the flex */ - /* point without adding any point to the outline */ - idx = decoder->num_flex_vectors++; - if ( idx > 0 && idx < 7 ) - add_point( builder, - x, - y, - (FT_Byte)( idx == 3 || idx == 6 ) ); - } - break; - - case 0: /* end flex feature */ - if ( top[0] != 3 ) - goto Unexpected_OtherSubr; - - if ( decoder->flex_state == 0 || - decoder->num_flex_vectors != 7 ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "unexpected flex end\n" )); - goto Syntax_Error; - } - - /* now consume the remaining `pop pop setcurpoint' */ - if ( ip + 6 > limit || - ip[0] != 12 || ip[1] != 17 || /* pop */ - ip[2] != 12 || ip[3] != 17 || /* pop */ - ip[4] != 12 || ip[5] != 33 ) /* setcurpoint */ - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "invalid flex charstring\n" )); - goto Syntax_Error; - } - - ip += 6; - decoder->flex_state = 0; - break; - - case 3: /* change hints */ - if ( top[0] != 1 ) - goto Unexpected_OtherSubr; - - /* eat the following `pop' */ - if ( ip + 2 > limit ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "invalid escape (12+%d)\n", ip[-1] )); - goto Syntax_Error; - } - - if ( ip[0] != 12 || ip[1] != 17 ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " )); - FT_ERROR(( "`pop' expected, found (%d %d)\n", ip[0], ip[1] )); - goto Syntax_Error; - } - ip += 2; - - if ( hinter ) - hinter->reset( hinter->hints, builder->current->n_points ); - - break; - - case 12: - case 13: - /* counter control hints, clear stack */ - top = decoder->stack; - break; - - case 14: - case 15: - case 16: - case 17: - case 18: /* multiple masters */ - { - PS_Blend blend = decoder->blend; - FT_UInt num_points, nn, mm; - FT_Long* delta; - FT_Long* values; - - - if ( !blend ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " )); - FT_ERROR(( "unexpected multiple masters operator!\n" )); - goto Syntax_Error; - } - - num_points = (FT_UInt)top[1] - 13 + ( top[1] == 18 ); - if ( top[0] != (FT_Int)( num_points * blend->num_designs ) ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " )); - FT_ERROR(( "incorrect number of mm arguments\n" )); - goto Syntax_Error; - } - - top -= blend->num_designs * num_points; - if ( top < decoder->stack ) - goto Stack_Underflow; - - /* we want to compute: */ - /* */ - /* a0*w0 + a1*w1 + ... + ak*wk */ - /* */ - /* but we only have the a0, a1-a0, a2-a0, .. ak-a0 */ - /* however, given that w0 + w1 + ... + wk == 1, we can */ - /* rewrite it easily as: */ - /* */ - /* a0 + (a1-a0)*w1 + (a2-a0)*w2 + .. + (ak-a0)*wk */ - /* */ - /* where k == num_designs-1 */ - /* */ - /* I guess that's why it's written in this `compact' */ - /* form. */ - /* */ - delta = top + num_points; - values = top; - for ( nn = 0; nn < num_points; nn++ ) - { - FT_Long tmp = values[0]; - - - for ( mm = 1; mm < blend->num_designs; mm++ ) - tmp += FT_MulFix( *delta++, blend->weight_vector[mm] ); - - *values++ = tmp; - } - /* note that `top' will be incremented later by calls to `pop' */ - break; - } - - default: - Unexpected_OtherSubr: - FT_ERROR(( "t1_decoder_parse_charstrings: " - "invalid othersubr [%d %d]!\n", top[0], top[1] )); - goto Syntax_Error; - } - decoder->top = top; - } - else /* general operator */ - { - FT_Int num_args = t1_args_count[op]; - - - if ( top - decoder->stack < num_args ) - goto Stack_Underflow; - - top -= num_args; - - switch ( op ) - { - case op_endchar: - FT_TRACE4(( " endchar" )); - - close_contour( builder ); - - /* close hints recording session */ - if ( hinter ) - { - if (hinter->close( hinter->hints, builder->current->n_points )) - goto Syntax_Error; - - /* apply hints to the loaded glyph outline now */ - hinter->apply( hinter->hints, - builder->current, - (PSH_Globals) builder->hints_globals, - decoder->hint_mode ); - } - - /* add current outline to the glyph slot */ - FT_GlyphLoader_Add( builder->loader ); - - /* return now! */ - FT_TRACE4(( "\n\n" )); - return PSaux_Err_Ok; - - case op_hsbw: - FT_TRACE4(( " hsbw" )); - - builder->parse_state = T1_Parse_Have_Width; - - builder->left_bearing.x += top[0]; - builder->advance.x = top[1]; - builder->advance.y = 0; - - orig_x = builder->last.x = x = builder->pos_x + top[0]; - orig_y = builder->last.y = y = builder->pos_y; - - FT_UNUSED( orig_y ); - - /* the `metrics_only' indicates that we only want to compute */ - /* the glyph's metrics (lsb + advance width), not load the */ - /* rest of it; so exit immediately */ - if ( builder->metrics_only ) - return PSaux_Err_Ok; - - break; - - case op_seac: - /* return immediately after the processing */ - return t1operator_seac( decoder, top[0], top[1], top[2], - (FT_Int)top[3], (FT_Int)top[4] ); - - case op_sbw: - FT_TRACE4(( " sbw" )); - - builder->parse_state = T1_Parse_Have_Width; - - builder->left_bearing.x += top[0]; - builder->left_bearing.y += top[1]; - builder->advance.x = top[2]; - builder->advance.y = top[3]; - - builder->last.x = x = builder->pos_x + top[0]; - builder->last.y = y = builder->pos_y + top[1]; - - /* the `metrics_only' indicates that we only want to compute */ - /* the glyph's metrics (lsb + advance width), not load the */ - /* rest of it; so exit immediately */ - if ( builder->metrics_only ) - return PSaux_Err_Ok; - - break; - - case op_closepath: - FT_TRACE4(( " closepath" )); - - close_contour( builder ); - if ( builder->parse_state != T1_Parse_Have_Path ) - goto Syntax_Error; - builder->parse_state = T1_Parse_Have_Width; - break; - - case op_hlineto: - FT_TRACE4(( " hlineto" )); - - if ( start_point( builder, x, y ) ) - goto Fail; - - x += top[0]; - goto Add_Line; - - case op_hmoveto: - FT_TRACE4(( " hmoveto" )); - - x += top[0]; - if ( !decoder->flex_state ) - { - if ( builder->parse_state == T1_Parse_Start ) - goto Syntax_Error; - builder->parse_state = T1_Parse_Have_Moveto; - } - break; - - case op_hvcurveto: - FT_TRACE4(( " hvcurveto" )); - - if ( start_point( builder, x, y ) || - check_points( builder, 3 ) ) - goto Fail; - - x += top[0]; - add_point( builder, x, y, 0 ); - x += top[1]; - y += top[2]; - add_point( builder, x, y, 0 ); - y += top[3]; - add_point( builder, x, y, 1 ); - break; - - case op_rlineto: - FT_TRACE4(( " rlineto" )); - - if ( start_point( builder, x, y ) ) - goto Fail; - - x += top[0]; - y += top[1]; - - Add_Line: - if ( add_point1( builder, x, y ) ) - goto Fail; - break; - - case op_rmoveto: - FT_TRACE4(( " rmoveto" )); - - x += top[0]; - y += top[1]; - if ( !decoder->flex_state ) - { - if ( builder->parse_state == T1_Parse_Start ) - goto Syntax_Error; - builder->parse_state = T1_Parse_Have_Moveto; - } - break; - - case op_rrcurveto: - FT_TRACE4(( " rcurveto" )); - - if ( start_point( builder, x, y ) || - check_points( builder, 3 ) ) - goto Fail; - - x += top[0]; - y += top[1]; - add_point( builder, x, y, 0 ); - - x += top[2]; - y += top[3]; - add_point( builder, x, y, 0 ); - - x += top[4]; - y += top[5]; - add_point( builder, x, y, 1 ); - break; - - case op_vhcurveto: - FT_TRACE4(( " vhcurveto" )); - - if ( start_point( builder, x, y ) || - check_points( builder, 3 ) ) - goto Fail; - - y += top[0]; - add_point( builder, x, y, 0 ); - x += top[1]; - y += top[2]; - add_point( builder, x, y, 0 ); - x += top[3]; - add_point( builder, x, y, 1 ); - break; - - case op_vlineto: - FT_TRACE4(( " vlineto" )); - - if ( start_point( builder, x, y ) ) - goto Fail; - - y += top[0]; - goto Add_Line; - - case op_vmoveto: - FT_TRACE4(( " vmoveto" )); - - y += top[0]; - if ( !decoder->flex_state ) - { - if ( builder->parse_state == T1_Parse_Start ) - goto Syntax_Error; - builder->parse_state = T1_Parse_Have_Moveto; - } - break; - - case op_div: - FT_TRACE4(( " div" )); - - if ( top[1] ) - { - *top = top[0] / top[1]; - ++top; - } - else - { - FT_ERROR(( "t1_decoder_parse_charstrings: division by 0\n" )); - goto Syntax_Error; - } - break; - - case op_callsubr: - { - FT_Int idx; - - - FT_TRACE4(( " callsubr" )); - - idx = (FT_Int)top[0]; - if ( idx < 0 || idx >= (FT_Int)decoder->num_subrs ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "invalid subrs index\n" )); - goto Syntax_Error; - } - - if ( zone - decoder->zones >= T1_MAX_SUBRS_CALLS ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "too many nested subrs\n" )); - goto Syntax_Error; - } - - zone->cursor = ip; /* save current instruction pointer */ - - zone++; - - /* The Type 1 driver stores subroutines without the seed bytes. */ - /* The CID driver stores subroutines with seed bytes. This */ - /* case is taken care of when decoder->subrs_len == 0. */ - zone->base = decoder->subrs[idx]; - - if ( decoder->subrs_len ) - zone->limit = zone->base + decoder->subrs_len[idx]; - else - { - /* We are using subroutines from a CID font. We must adjust */ - /* for the seed bytes. */ - zone->base += ( decoder->lenIV >= 0 ? decoder->lenIV : 0 ); - zone->limit = decoder->subrs[idx + 1]; - } - - zone->cursor = zone->base; - - if ( !zone->base ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: " - "invoking empty subrs!\n" )); - goto Syntax_Error; - } - - decoder->zone = zone; - ip = zone->base; - limit = zone->limit; - break; - } - - case op_pop: - FT_TRACE4(( " pop" )); - - /* theoretically, the arguments are already on the stack */ - top++; - break; - - case op_return: - FT_TRACE4(( " return" )); - - if ( zone <= decoder->zones ) - { - FT_ERROR(( "t1_decoder_parse_charstrings: unexpected return\n" )); - goto Syntax_Error; - } - - zone--; - ip = zone->cursor; - limit = zone->limit; - decoder->zone = zone; - break; - - case op_dotsection: - FT_TRACE4(( " dotsection" )); - - break; - - case op_hstem: - FT_TRACE4(( " hstem" )); - - /* record horizontal hint */ - if ( hinter ) - { - /* top[0] += builder->left_bearing.y; */ - hinter->stem( hinter->hints, 1, top ); - } - - break; - - case op_hstem3: - FT_TRACE4(( " hstem3" )); - - /* record horizontal counter-controlled hints */ - if ( hinter ) - hinter->stem3( hinter->hints, 1, top ); - - break; - - case op_vstem: - FT_TRACE4(( " vstem" )); - - /* record vertical hint */ - if ( hinter ) - { - top[0] += orig_x; - hinter->stem( hinter->hints, 0, top ); - } - - break; - - case op_vstem3: - FT_TRACE4(( " vstem3" )); - - /* record vertical counter-controlled hints */ - if ( hinter ) - { - FT_Pos dx = orig_x; - - - top[0] += dx; - top[2] += dx; - top[4] += dx; - hinter->stem3( hinter->hints, 0, top ); - } - break; - - case op_setcurrentpoint: - FT_TRACE4(( " setcurrentpoint" )); - - FT_ERROR(( "t1_decoder_parse_charstrings: " )); - FT_ERROR(( "unexpected `setcurrentpoint'\n" )); - goto Syntax_Error; - - default: - FT_ERROR(( "t1_decoder_parse_charstrings: " - "unhandled opcode %d\n", op )); - goto Syntax_Error; - } - - decoder->top = top; - - } /* general operator processing */ - - } /* while ip < limit */ - - FT_TRACE4(( "..end..\n\n" )); - - Fail: - return error; - - Syntax_Error: - return PSaux_Err_Syntax_Error; - - Stack_Underflow: - return PSaux_Err_Stack_Underflow; - } - - - /* parse a single Type 1 glyph */ - FT_LOCAL_DEF( FT_Error ) - t1_decoder_parse_glyph( T1_Decoder decoder, - FT_UInt glyph ) - { - return decoder->parse_callback( decoder, glyph ); - } - - - /* initialize T1 decoder */ - FT_LOCAL_DEF( FT_Error ) - t1_decoder_init( T1_Decoder decoder, - FT_Face face, - FT_Size size, - FT_GlyphSlot slot, - FT_Byte** glyph_names, - PS_Blend blend, - FT_Bool hinting, - FT_Render_Mode hint_mode, - T1_Decoder_Callback parse_callback ) - { - FT_MEM_ZERO( decoder, sizeof ( *decoder ) ); - - /* retrieve PSNames interface from list of current modules */ - { - FT_Service_PsCMaps psnames = 0; - - - FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); - if ( !psnames ) - { - FT_ERROR(( "t1_decoder_init: " )); - FT_ERROR(( "the `psnames' module is not available\n" )); - return PSaux_Err_Unimplemented_Feature; - } - - decoder->psnames = psnames; - } - - t1_builder_init( &decoder->builder, face, size, slot, hinting ); - - decoder->num_glyphs = (FT_UInt)face->num_glyphs; - decoder->glyph_names = glyph_names; - decoder->hint_mode = hint_mode; - decoder->blend = blend; - decoder->parse_callback = parse_callback; - - decoder->funcs = t1_decoder_funcs; - - return 0; - } - - - /* finalize T1 decoder */ - FT_LOCAL_DEF( void ) - t1_decoder_done( T1_Decoder decoder ) - { - t1_builder_done( &decoder->builder ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psaux/t1decode.h b/nx-X11/extras/freetype2/src/psaux/t1decode.h deleted file mode 100644 index 00728db50..000000000 --- a/nx-X11/extras/freetype2/src/psaux/t1decode.h +++ /dev/null @@ -1,64 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1decode.h */ -/* */ -/* PostScript Type 1 decoding routines (specification). */ -/* */ -/* Copyright 2000-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1DECODE_H__ -#define __T1DECODE_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_INTERNAL_TYPE1_TYPES_H - - -FT_BEGIN_HEADER - - - FT_CALLBACK_TABLE - const T1_Decoder_FuncsRec t1_decoder_funcs; - - - FT_LOCAL( FT_Error ) - t1_decoder_parse_glyph( T1_Decoder decoder, - FT_UInt glyph_index ); - - FT_LOCAL( FT_Error ) - t1_decoder_parse_charstrings( T1_Decoder decoder, - FT_Byte* base, - FT_UInt len ); - - FT_LOCAL( FT_Error ) - t1_decoder_init( T1_Decoder decoder, - FT_Face face, - FT_Size size, - FT_GlyphSlot slot, - FT_Byte** glyph_names, - PS_Blend blend, - FT_Bool hinting, - FT_Render_Mode hint_mode, - T1_Decoder_Callback parse_glyph ); - - FT_LOCAL( void ) - t1_decoder_done( T1_Decoder decoder ); - - -FT_END_HEADER - -#endif /* __T1DECODE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/Jamfile b/nx-X11/extras/freetype2/src/pshinter/Jamfile deleted file mode 100644 index ee02a144b..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/pshinter Jamfile (c) 2001, 2003 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) pshinter ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = pshrec pshglob pshalgo pshmod ; - } - else - { - _sources = pshinter ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/pshinter Jamfile diff --git a/nx-X11/extras/freetype2/src/pshinter/descrip.mms b/nx-X11/extras/freetype2/src/pshinter/descrip.mms deleted file mode 100644 index 205d6cfcc..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 PSHinter driver compilation rules for OpenVMS -# - - -# Copyright 2001, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.psnames]) - -OBJS=pshinter.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/pshinter/module.mk b/nx-X11/extras/freetype2/src/pshinter/module.mk deleted file mode 100644 index 63c7e217f..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 PSHinter module definition -# - - -# Copyright 1996-2001 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_pshinter_module - -add_pshinter_module: - $(OPEN_DRIVER)pshinter_module_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)pshinter $(ECHO_DRIVER_DESC)Postscript hinter module$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/pshinter/pshalgo.c b/nx-X11/extras/freetype2/src/pshinter/pshalgo.c deleted file mode 100644 index 5f077d54d..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshalgo.c +++ /dev/null @@ -1,2091 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshalgo.c */ -/* */ -/* PostScript hinting algorithm (body). */ -/* */ -/* Copyright 2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used */ -/* modified and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include "pshalgo.h" - -#include "pshnterr.h" - - -#undef FT_COMPONENT -#define FT_COMPONENT trace_pshalgo2 - - -#ifdef DEBUG_HINTER - PSH_Hint_Table ps_debug_hint_table = 0; - PSH_HintFunc ps_debug_hint_func = 0; - PSH_Glyph ps_debug_glyph = 0; -#endif - - -#define COMPUTE_INFLEXS /* compute inflection points to optimize `S' */ - /* and similar glyphs */ -#define STRONGER /* slightly increase the contrast of smooth */ - /* hinting */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** BASIC HINTS RECORDINGS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* return true if two stem hints overlap */ - static FT_Int - psh_hint_overlap( PSH_Hint hint1, - PSH_Hint hint2 ) - { - return hint1->org_pos + hint1->org_len >= hint2->org_pos && - hint2->org_pos + hint2->org_len >= hint1->org_pos; - } - - - /* destroy hints table */ - static void - psh_hint_table_done( PSH_Hint_Table table, - FT_Memory memory ) - { - FT_FREE( table->zones ); - table->num_zones = 0; - table->zone = 0; - - FT_FREE( table->sort ); - FT_FREE( table->hints ); - table->num_hints = 0; - table->max_hints = 0; - table->sort_global = 0; - } - - - /* deactivate all hints in a table */ - static void - psh_hint_table_deactivate( PSH_Hint_Table table ) - { - FT_UInt count = table->max_hints; - PSH_Hint hint = table->hints; - - - for ( ; count > 0; count--, hint++ ) - { - psh_hint_deactivate( hint ); - hint->order = -1; - } - } - - - /* internal function to record a new hint */ - static void - psh_hint_table_record( PSH_Hint_Table table, - FT_UInt idx ) - { - PSH_Hint hint = table->hints + idx; - - - if ( idx >= table->max_hints ) - { - FT_ERROR(( "psh_hint_table_record: invalid hint index %d\n", idx )); - return; - } - - /* ignore active hints */ - if ( psh_hint_is_active( hint ) ) - return; - - psh_hint_activate( hint ); - - /* now scan the current active hint set to check */ - /* whether `hint' overlaps with another hint */ - { - PSH_Hint* sorted = table->sort_global; - FT_UInt count = table->num_hints; - PSH_Hint hint2; - - - hint->parent = 0; - for ( ; count > 0; count--, sorted++ ) - { - hint2 = sorted[0]; - - if ( psh_hint_overlap( hint, hint2 ) ) - { - hint->parent = hint2; - break; - } - } - } - - if ( table->num_hints < table->max_hints ) - table->sort_global[table->num_hints++] = hint; - else - FT_ERROR(( "psh_hint_table_record: too many sorted hints! BUG!\n" )); - } - - - static void - psh_hint_table_record_mask( PSH_Hint_Table table, - PS_Mask hint_mask ) - { - FT_Int mask = 0, val = 0; - FT_Byte* cursor = hint_mask->bytes; - FT_UInt idx, limit; - - - limit = hint_mask->num_bits; - - for ( idx = 0; idx < limit; idx++ ) - { - if ( mask == 0 ) - { - val = *cursor++; - mask = 0x80; - } - - if ( val & mask ) - psh_hint_table_record( table, idx ); - - mask >>= 1; - } - } - - - /* create hints table */ - static FT_Error - psh_hint_table_init( PSH_Hint_Table table, - PS_Hint_Table hints, - PS_Mask_Table hint_masks, - PS_Mask_Table counter_masks, - FT_Memory memory ) - { - FT_UInt count; - FT_Error error; - - FT_UNUSED( counter_masks ); - - - count = hints->num_hints; - - /* allocate our tables */ - if ( FT_NEW_ARRAY( table->sort, 2 * count ) || - FT_NEW_ARRAY( table->hints, count ) || - FT_NEW_ARRAY( table->zones, 2 * count + 1 ) ) - goto Exit; - - table->max_hints = count; - table->sort_global = table->sort + count; - table->num_hints = 0; - table->num_zones = 0; - table->zone = 0; - - /* initialize the `table->hints' array */ - { - PSH_Hint write = table->hints; - PS_Hint read = hints->hints; - - - for ( ; count > 0; count--, write++, read++ ) - { - write->org_pos = read->pos; - write->org_len = read->len; - write->flags = read->flags; - } - } - - /* we now need to determine the initial `parent' stems; first */ - /* activate the hints that are given by the initial hint masks */ - if ( hint_masks ) - { - PS_Mask mask = hint_masks->masks; - - - count = hint_masks->num_masks; - table->hint_masks = hint_masks; - - for ( ; count > 0; count--, mask++ ) - psh_hint_table_record_mask( table, mask ); - } - - /* finally, do a linear parse in case some hints were left alone */ - if ( table->num_hints != table->max_hints ) - { - FT_UInt idx; - - - FT_ERROR(( "psh_hint_table_init: missing/incorrect hint masks!\n" )); - - count = table->max_hints; - for ( idx = 0; idx < count; idx++ ) - psh_hint_table_record( table, idx ); - } - - Exit: - return error; - } - - - static void - psh_hint_table_activate_mask( PSH_Hint_Table table, - PS_Mask hint_mask ) - { - FT_Int mask = 0, val = 0; - FT_Byte* cursor = hint_mask->bytes; - FT_UInt idx, limit, count; - - - limit = hint_mask->num_bits; - count = 0; - - psh_hint_table_deactivate( table ); - - for ( idx = 0; idx < limit; idx++ ) - { - if ( mask == 0 ) - { - val = *cursor++; - mask = 0x80; - } - - if ( val & mask ) - { - PSH_Hint hint = &table->hints[idx]; - - - if ( !psh_hint_is_active( hint ) ) - { - FT_UInt count2; - -#if 0 - PSH_Hint* sort = table->sort; - PSH_Hint hint2; - - - for ( count2 = count; count2 > 0; count2--, sort++ ) - { - hint2 = sort[0]; - if ( psh_hint_overlap( hint, hint2 ) ) - FT_ERROR(( "psh_hint_table_activate_mask:" - " found overlapping hints\n" )) - } -#else - count2 = 0; -#endif - - if ( count2 == 0 ) - { - psh_hint_activate( hint ); - if ( count < table->max_hints ) - table->sort[count++] = hint; - else - FT_ERROR(( "psh_hint_tableactivate_mask:" - " too many active hints\n" )); - } - } - } - - mask >>= 1; - } - table->num_hints = count; - - /* now, sort the hints; they are guaranteed to not overlap */ - /* so we can compare their "org_pos" field directly */ - { - FT_Int i1, i2; - PSH_Hint hint1, hint2; - PSH_Hint* sort = table->sort; - - - /* a simple bubble sort will do, since in 99% of cases, the hints */ - /* will be already sorted -- and the sort will be linear */ - for ( i1 = 1; i1 < (FT_Int)count; i1++ ) - { - hint1 = sort[i1]; - for ( i2 = i1 - 1; i2 >= 0; i2-- ) - { - hint2 = sort[i2]; - - if ( hint2->org_pos < hint1->org_pos ) - break; - - sort[i2 + 1] = hint2; - sort[i2] = hint1; - } - } - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** HINTS GRID-FITTING AND OPTIMIZATION *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - -#if 1 - static FT_Pos - psh_dimension_quantize_len( PSH_Dimension dim, - FT_Pos len, - FT_Bool do_snapping ) - { - if ( len <= 64 ) - len = 64; - else - { - FT_Pos delta = len - dim->stdw.widths[0].cur; - - - if ( delta < 0 ) - delta = -delta; - - if ( delta < 40 ) - { - len = dim->stdw.widths[0].cur; - if ( len < 48 ) - len = 48; - } - - if ( len < 3 * 64 ) - { - delta = ( len & 63 ); - len &= -64; - - if ( delta < 10 ) - len += delta; - - else if ( delta < 32 ) - len += 10; - - else if ( delta < 54 ) - len += 54; - - else - len += delta; - } - else - len = FT_PIX_ROUND( len ); - } - - if ( do_snapping ) - len = FT_PIX_ROUND( len ); - - return len; - } -#endif /* 0 */ - - -#ifdef DEBUG_HINTER - - static void - ps_simple_scale( PSH_Hint_Table table, - FT_Fixed scale, - FT_Fixed delta, - FT_Int dimension ) - { - PSH_Hint hint; - FT_UInt count; - - - for ( count = 0; count < table->max_hints; count++ ) - { - hint = table->hints + count; - - hint->cur_pos = FT_MulFix( hint->org_pos, scale ) + delta; - hint->cur_len = FT_MulFix( hint->org_len, scale ); - - if ( ps_debug_hint_func ) - ps_debug_hint_func( hint, dimension ); - } - } - -#endif /* DEBUG_HINTER */ - - - static FT_Fixed - psh_hint_snap_stem_side_delta( FT_Fixed pos, - FT_Fixed len ) - { - FT_Fixed delta1 = FT_PIX_ROUND( pos ) - pos; - FT_Fixed delta2 = FT_PIX_ROUND( pos + len ) - pos - len; - - - if ( FT_ABS( delta1 ) <= FT_ABS( delta2 ) ) - return delta1; - else - return delta2; - } - - - static void - psh_hint_align( PSH_Hint hint, - PSH_Globals globals, - FT_Int dimension, - PSH_Glyph glyph ) - { - PSH_Dimension dim = &globals->dimension[dimension]; - FT_Fixed scale = dim->scale_mult; - FT_Fixed delta = dim->scale_delta; - - - if ( !psh_hint_is_fitted( hint ) ) - { - FT_Pos pos = FT_MulFix( hint->org_pos, scale ) + delta; - FT_Pos len = FT_MulFix( hint->org_len, scale ); - - FT_Int do_snapping; - FT_Pos fit_len; - PSH_AlignmentRec align; - - - /* ignore stem alignments when requested through the hint flags */ - if ( ( dimension == 0 && !glyph->do_horz_hints ) || - ( dimension == 1 && !glyph->do_vert_hints ) ) - { - hint->cur_pos = pos; - hint->cur_len = len; - - psh_hint_set_fitted( hint ); - return; - } - - /* perform stem snapping when requested - this is necessary - * for monochrome and LCD hinting modes only - */ - do_snapping = ( dimension == 0 && glyph->do_horz_snapping ) || - ( dimension == 1 && glyph->do_vert_snapping ); - - hint->cur_len = fit_len = len; - - /* check blue zones for horizontal stems */ - align.align = PSH_BLUE_ALIGN_NONE; - align.align_bot = align.align_top = 0; - - if ( dimension == 1 ) - psh_blues_snap_stem( &globals->blues, - hint->org_pos + hint->org_len, - hint->org_pos, - &align ); - - switch ( align.align ) - { - case PSH_BLUE_ALIGN_TOP: - /* the top of the stem is aligned against a blue zone */ - hint->cur_pos = align.align_top - fit_len; - break; - - case PSH_BLUE_ALIGN_BOT: - /* the bottom of the stem is aligned against a blue zone */ - hint->cur_pos = align.align_bot; - break; - - case PSH_BLUE_ALIGN_TOP | PSH_BLUE_ALIGN_BOT: - /* both edges of the stem are aligned against blue zones */ - hint->cur_pos = align.align_bot; - hint->cur_len = align.align_top - align.align_bot; - break; - - default: - { - PSH_Hint parent = hint->parent; - - - if ( parent ) - { - FT_Pos par_org_center, par_cur_center; - FT_Pos cur_org_center, cur_delta; - - - /* ensure that parent is already fitted */ - if ( !psh_hint_is_fitted( parent ) ) - psh_hint_align( parent, globals, dimension, glyph ); - - /* keep original relation between hints, this is, use the */ - /* scaled distance between the centers of the hints to */ - /* compute the new position */ - par_org_center = parent->org_pos + ( parent->org_len >> 1 ); - par_cur_center = parent->cur_pos + ( parent->cur_len >> 1 ); - cur_org_center = hint->org_pos + ( hint->org_len >> 1 ); - - cur_delta = FT_MulFix( cur_org_center - par_org_center, scale ); - pos = par_cur_center + cur_delta - ( len >> 1 ); - } - - hint->cur_pos = pos; - hint->cur_len = fit_len; - - /* Stem adjustment tries to snap stem widths to standard - * ones. This is important to prevent unpleasant rounding - * artefacts. - */ - if ( glyph->do_stem_adjust ) - { - if ( len <= 64 ) - { - /* the stem is less than one pixel; we will center it - * around the nearest pixel center - */ -#if 1 - pos = FT_PIX_FLOOR( pos + ( len >> 1 ) ); -#else - /* this seems to be a bug! */ - pos = pos + FT_PIX_FLOOR( len >> 1 ); -#endif - len = 64; - } - else - { - len = psh_dimension_quantize_len( dim, len, 0 ); - } - } - - /* now that we have a good hinted stem width, try to position */ - /* the stem along a pixel grid integer coordinate */ - hint->cur_pos = pos + psh_hint_snap_stem_side_delta( pos, len ); - hint->cur_len = len; - } - } - - if ( do_snapping ) - { - pos = hint->cur_pos; - len = hint->cur_len; - - if ( len < 64 ) - len = 64; - else - len = FT_PIX_ROUND( len ); - - switch ( align.align ) - { - case PSH_BLUE_ALIGN_TOP: - hint->cur_pos = align.align_top - len; - hint->cur_len = len; - break; - - case PSH_BLUE_ALIGN_BOT: - hint->cur_len = len; - break; - - case PSH_BLUE_ALIGN_BOT | PSH_BLUE_ALIGN_TOP: - /* don't touch */ - break; - - - default: - hint->cur_len = len; - if ( len & 64 ) - pos = FT_PIX_FLOOR( pos + ( len >> 1 ) ) + 32; - else - pos = FT_PIX_ROUND( pos + ( len >> 1 ) ); - - hint->cur_pos = pos - ( len >> 1 ); - hint->cur_len = len; - } - } - - psh_hint_set_fitted( hint ); - -#ifdef DEBUG_HINTER - if ( ps_debug_hint_func ) - ps_debug_hint_func( hint, dimension ); -#endif - } - } - - -#if 0 /* not used for now, experimental */ - - /* - * A variant to perform "light" hinting (i.e. FT_RENDER_MODE_LIGHT) - * of stems - */ - static void - psh_hint_align_light( PSH_Hint hint, - PSH_Globals globals, - FT_Int dimension, - PSH_Glyph glyph ) - { - PSH_Dimension dim = &globals->dimension[dimension]; - FT_Fixed scale = dim->scale_mult; - FT_Fixed delta = dim->scale_delta; - - - if ( !psh_hint_is_fitted( hint ) ) - { - FT_Pos pos = FT_MulFix( hint->org_pos, scale ) + delta; - FT_Pos len = FT_MulFix( hint->org_len, scale ); - - FT_Pos fit_len; - - PSH_AlignmentRec align; - - - /* ignore stem alignments when requested through the hint flags */ - if ( ( dimension == 0 && !glyph->do_horz_hints ) || - ( dimension == 1 && !glyph->do_vert_hints ) ) - { - hint->cur_pos = pos; - hint->cur_len = len; - - psh_hint_set_fitted( hint ); - return; - } - - fit_len = len; - - hint->cur_len = fit_len; - - /* check blue zones for horizontal stems */ - align.align = PSH_BLUE_ALIGN_NONE; - align.align_bot = align.align_top = 0; - - if ( dimension == 1 ) - psh_blues_snap_stem( &globals->blues, - hint->org_pos + hint->org_len, - hint->org_pos, - &align ); - - switch ( align.align ) - { - case PSH_BLUE_ALIGN_TOP: - /* the top of the stem is aligned against a blue zone */ - hint->cur_pos = align.align_top - fit_len; - break; - - case PSH_BLUE_ALIGN_BOT: - /* the bottom of the stem is aligned against a blue zone */ - hint->cur_pos = align.align_bot; - break; - - case PSH_BLUE_ALIGN_TOP | PSH_BLUE_ALIGN_BOT: - /* both edges of the stem are aligned against blue zones */ - hint->cur_pos = align.align_bot; - hint->cur_len = align.align_top - align.align_bot; - break; - - default: - { - PSH_Hint parent = hint->parent; - - - if ( parent ) - { - FT_Pos par_org_center, par_cur_center; - FT_Pos cur_org_center, cur_delta; - - - /* ensure that parent is already fitted */ - if ( !psh_hint_is_fitted( parent ) ) - psh_hint_align_light( parent, globals, dimension, glyph ); - - par_org_center = parent->org_pos + ( parent->org_len / 2 ); - par_cur_center = parent->cur_pos + ( parent->cur_len / 2 ); - cur_org_center = hint->org_pos + ( hint->org_len / 2 ); - - cur_delta = FT_MulFix( cur_org_center - par_org_center, scale ); - pos = par_cur_center + cur_delta - ( len >> 1 ); - } - - /* Stems less than one pixel wide are easy -- we want to - * make them as dark as possible, so they must fall within - * one pixel. If the stem is split between two pixels - * then snap the edge that is nearer to the pixel boundary - * to the pixel boundary. - */ - if ( len <= 64 ) - { - if ( ( pos + len + 63 ) / 64 != pos / 64 + 1 ) - pos += psh_hint_snap_stem_side_delta ( pos, len ); - } - - /* Position stems other to minimize the amount of mid-grays. - * There are, in general, two positions that do this, - * illustrated as A) and B) below. - * - * + + + + - * - * A) |--------------------------------| - * B) |--------------------------------| - * C) |--------------------------------| - * - * Position A) (split the excess stem equally) should be better - * for stems of width N + f where f < 0.5. - * - * Position B) (split the deficiency equally) should be better - * for stems of width N + f where f > 0.5. - * - * It turns out though that minimizing the total number of lit - * pixels is also important, so position C), with one edge - * aligned with a pixel boundary is actually preferable - * to A). There are also more possibile positions for C) than - * for A) or B), so it involves less distortion of the overall - * character shape. - */ - else /* len > 64 */ - { - FT_Fixed frac_len = len & 63; - FT_Fixed center = pos + ( len >> 1 ); - FT_Fixed delta_a, delta_b; - - - if ( ( len / 64 ) & 1 ) - { - delta_a = FT_PIX_FLOOR( center ) + 32 - center; - delta_b = FT_PIX_ROUND( center ) - center; - } - else - { - delta_a = FT_PIX_ROUND( center ) - center; - delta_b = FT_PIX_FLOOR( center ) + 32 - center; - } - - /* We choose between B) and C) above based on the amount - * of fractinal stem width; for small amounts, choose - * C) always, for large amounts, B) always, and inbetween, - * pick whichever one involves less stem movement. - */ - if ( frac_len < 32 ) - { - pos += psh_hint_snap_stem_side_delta ( pos, len ); - } - else if ( frac_len < 48 ) - { - FT_Fixed side_delta = psh_hint_snap_stem_side_delta ( pos, - len ); - - if ( FT_ABS( side_delta ) < FT_ABS( delta_b ) ) - pos += side_delta; - else - pos += delta_b; - } - else - { - pos += delta_b; - } - } - - hint->cur_pos = pos; - } - } /* switch */ - - psh_hint_set_fitted( hint ); - -#ifdef DEBUG_HINTER - if ( ps_debug_hint_func ) - ps_debug_hint_func( hint, dimension ); -#endif - } - } - -#endif /* 0 */ - - - static void - psh_hint_table_align_hints( PSH_Hint_Table table, - PSH_Globals globals, - FT_Int dimension, - PSH_Glyph glyph ) - { - PSH_Hint hint; - FT_UInt count; - -#ifdef DEBUG_HINTER - - PSH_Dimension dim = &globals->dimension[dimension]; - FT_Fixed scale = dim->scale_mult; - FT_Fixed delta = dim->scale_delta; - - - if ( ps_debug_no_vert_hints && dimension == 0 ) - { - ps_simple_scale( table, scale, delta, dimension ); - return; - } - - if ( ps_debug_no_horz_hints && dimension == 1 ) - { - ps_simple_scale( table, scale, delta, dimension ); - return; - } - -#endif /* DEBUG_HINTER*/ - - hint = table->hints; - count = table->max_hints; - - for ( ; count > 0; count--, hint++ ) - psh_hint_align( hint, globals, dimension, glyph ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** POINTS INTERPOLATION ROUTINES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - -#define PSH_ZONE_MIN -3200000L -#define PSH_ZONE_MAX +3200000L - -#define xxDEBUG_ZONES - - -#ifdef DEBUG_ZONES - -#include <stdio.h> - - static void - psh_print_zone( PSH_Zone zone ) - { - printf( "zone [scale,delta,min,max] = [%.3f,%.3f,%d,%d]\n", - zone->scale / 65536.0, - zone->delta / 64.0, - zone->min, - zone->max ); - } - -#else - -#define psh_print_zone( x ) do { } while ( 0 ) - -#endif /* DEBUG_ZONES */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** HINTER GLYPH MANAGEMENT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - -#ifdef COMPUTE_INFLEXS - - /* compute all inflex points in a given glyph */ - static void - psh_glyph_compute_inflections( PSH_Glyph glyph ) - { - FT_UInt n; - - - for ( n = 0; n < glyph->num_contours; n++ ) - { - PSH_Point first, start, end, before, after; - FT_Angle angle_in, angle_seg, angle_out; - FT_Angle diff_in, diff_out; - FT_Int finished = 0; - - - /* we need at least 4 points to create an inflection point */ - if ( glyph->contours[n].count < 4 ) - continue; - - /* compute first segment in contour */ - first = glyph->contours[n].start; - - start = end = first; - do - { - end = end->next; - if ( end == first ) - goto Skip; - - } while ( PSH_POINT_EQUAL_ORG( end, first ) ); - - angle_seg = PSH_POINT_ANGLE( start, end ); - - /* extend the segment start whenever possible */ - before = start; - do - { - do - { - start = before; - before = before->prev; - if ( before == first ) - goto Skip; - - } while ( PSH_POINT_EQUAL_ORG( before, start ) ); - - angle_in = PSH_POINT_ANGLE( before, start ); - - } while ( angle_in == angle_seg ); - - first = start; - diff_in = FT_Angle_Diff( angle_in, angle_seg ); - - /* now, process all segments in the contour */ - do - { - /* first, extend current segment's end whenever possible */ - after = end; - do - { - do - { - end = after; - after = after->next; - if ( after == first ) - finished = 1; - - } while ( PSH_POINT_EQUAL_ORG( end, after ) ); - - angle_out = PSH_POINT_ANGLE( end, after ); - - } while ( angle_out == angle_seg ); - - diff_out = FT_Angle_Diff( angle_seg, angle_out ); - - if ( ( diff_in ^ diff_out ) < 0 ) - { - /* diff_in and diff_out have different signs, we have */ - /* inflection points here... */ - - do - { - psh_point_set_inflex( start ); - start = start->next; - } - while ( start != end ); - - psh_point_set_inflex( start ); - } - - start = end; - end = after; - angle_seg = angle_out; - diff_in = diff_out; - - } while ( !finished ); - - Skip: - ; - } - } - -#endif /* COMPUTE_INFLEXS */ - - - static void - psh_glyph_done( PSH_Glyph glyph ) - { - FT_Memory memory = glyph->memory; - - - psh_hint_table_done( &glyph->hint_tables[1], memory ); - psh_hint_table_done( &glyph->hint_tables[0], memory ); - - FT_FREE( glyph->points ); - FT_FREE( glyph->contours ); - - glyph->num_points = 0; - glyph->num_contours = 0; - - glyph->memory = 0; - } - - - static int - psh_compute_dir( FT_Pos dx, - FT_Pos dy ) - { - FT_Pos ax, ay; - int result = PSH_DIR_NONE; - - - ax = ( dx >= 0 ) ? dx : -dx; - ay = ( dy >= 0 ) ? dy : -dy; - - if ( ay * 12 < ax ) - { - /* |dy| <<< |dx| means a near-horizontal segment */ - result = ( dx >= 0 ) ? PSH_DIR_RIGHT : PSH_DIR_LEFT; - } - else if ( ax * 12 < ay ) - { - /* |dx| <<< |dy| means a near-vertical segment */ - result = ( dy >= 0 ) ? PSH_DIR_UP : PSH_DIR_DOWN; - } - - return result; - } - - - /* load outline point coordinates into hinter glyph */ - static void - psh_glyph_load_points( PSH_Glyph glyph, - FT_Int dimension ) - { - FT_Vector* vec = glyph->outline->points; - PSH_Point point = glyph->points; - FT_UInt count = glyph->num_points; - - - for ( ; count > 0; count--, point++, vec++ ) - { - point->flags2 = 0; - point->hint = NULL; - if ( dimension == 0 ) - { - point->org_u = vec->x; - point->org_v = vec->y; - } - else - { - point->org_u = vec->y; - point->org_v = vec->x; - } - -#ifdef DEBUG_HINTER - point->org_x = vec->x; - point->org_y = vec->y; -#endif - - } - } - - - /* save hinted point coordinates back to outline */ - static void - psh_glyph_save_points( PSH_Glyph glyph, - FT_Int dimension ) - { - FT_UInt n; - PSH_Point point = glyph->points; - FT_Vector* vec = glyph->outline->points; - char* tags = glyph->outline->tags; - - - for ( n = 0; n < glyph->num_points; n++ ) - { - if ( dimension == 0 ) - vec[n].x = point->cur_u; - else - vec[n].y = point->cur_u; - - if ( psh_point_is_strong( point ) ) - tags[n] |= (char)( ( dimension == 0 ) ? 32 : 64 ); - -#ifdef DEBUG_HINTER - - if ( dimension == 0 ) - { - point->cur_x = point->cur_u; - point->flags_x = point->flags2 | point->flags; - } - else - { - point->cur_y = point->cur_u; - point->flags_y = point->flags2 | point->flags; - } - -#endif - - point++; - } - } - - - static FT_Error - psh_glyph_init( PSH_Glyph glyph, - FT_Outline* outline, - PS_Hints ps_hints, - PSH_Globals globals ) - { - FT_Error error; - FT_Memory memory; - - - /* clear all fields */ - FT_MEM_ZERO( glyph, sizeof ( *glyph ) ); - - memory = glyph->memory = globals->memory; - - /* allocate and setup points + contours arrays */ - if ( FT_NEW_ARRAY( glyph->points, outline->n_points ) || - FT_NEW_ARRAY( glyph->contours, outline->n_contours ) ) - goto Exit; - - glyph->num_points = outline->n_points; - glyph->num_contours = outline->n_contours; - - { - FT_UInt first = 0, next, n; - PSH_Point points = glyph->points; - PSH_Contour contour = glyph->contours; - - - for ( n = 0; n < glyph->num_contours; n++ ) - { - FT_Int count; - PSH_Point point; - - - next = outline->contours[n] + 1; - count = next - first; - - contour->start = points + first; - contour->count = (FT_UInt)count; - - if ( count > 0 ) - { - point = points + first; - - point->prev = points + next - 1; - point->contour = contour; - - for ( ; count > 1; count-- ) - { - point[0].next = point + 1; - point[1].prev = point; - point++; - point->contour = contour; - } - point->next = points + first; - } - - contour++; - first = next; - } - } - - { - PSH_Point points = glyph->points; - PSH_Point point = points; - FT_Vector* vec = outline->points; - FT_UInt n; - - - for ( n = 0; n < glyph->num_points; n++, point++ ) - { - FT_Int n_prev = (FT_Int)( point->prev - points ); - FT_Int n_next = (FT_Int)( point->next - points ); - FT_Pos dxi, dyi, dxo, dyo; - - - if ( !( outline->tags[n] & FT_CURVE_TAG_ON ) ) - point->flags = PSH_POINT_OFF; - - dxi = vec[n].x - vec[n_prev].x; - dyi = vec[n].y - vec[n_prev].y; - - point->dir_in = (FT_Char)psh_compute_dir( dxi, dyi ); - - dxo = vec[n_next].x - vec[n].x; - dyo = vec[n_next].y - vec[n].y; - - point->dir_out = (FT_Char)psh_compute_dir( dxo, dyo ); - - /* detect smooth points */ - if ( point->flags & PSH_POINT_OFF ) - point->flags |= PSH_POINT_SMOOTH; - else if ( point->dir_in != PSH_DIR_NONE || - point->dir_out != PSH_DIR_NONE ) - { - if ( point->dir_in == point->dir_out ) - point->flags |= PSH_POINT_SMOOTH; - } - else - { - FT_Angle angle_in, angle_out, diff; - - - angle_in = FT_Atan2( dxi, dyi ); - angle_out = FT_Atan2( dxo, dyo ); - - diff = angle_in - angle_out; - if ( diff < 0 ) - diff = -diff; - - if ( diff > FT_ANGLE_PI ) - diff = FT_ANGLE_2PI - diff; - - if ( diff < FT_ANGLE_PI / 16 ) - point->flags |= PSH_POINT_SMOOTH; - } - } - } - - glyph->outline = outline; - glyph->globals = globals; - -#ifdef COMPUTE_INFLEXS - psh_glyph_load_points( glyph, 0 ); - psh_glyph_compute_inflections( glyph ); -#endif /* COMPUTE_INFLEXS */ - - /* now deal with hints tables */ - error = psh_hint_table_init( &glyph->hint_tables [0], - &ps_hints->dimension[0].hints, - &ps_hints->dimension[0].masks, - &ps_hints->dimension[0].counters, - memory ); - if ( error ) - goto Exit; - - error = psh_hint_table_init( &glyph->hint_tables [1], - &ps_hints->dimension[1].hints, - &ps_hints->dimension[1].masks, - &ps_hints->dimension[1].counters, - memory ); - if ( error ) - goto Exit; - - Exit: - return error; - } - - - /* compute all extrema in a glyph for a given dimension */ - static void - psh_glyph_compute_extrema( PSH_Glyph glyph ) - { - FT_UInt n; - - - /* first of all, compute all local extrema */ - for ( n = 0; n < glyph->num_contours; n++ ) - { - PSH_Point first = glyph->contours[n].start; - PSH_Point point, before, after; - - - if ( glyph->contours[n].count == 0 ) - continue; - - point = first; - before = point; - after = point; - - do - { - before = before->prev; - if ( before == first ) - goto Skip; - - } while ( before->org_u == point->org_u ); - - first = point = before->next; - - for (;;) - { - after = point; - do - { - after = after->next; - if ( after == first ) - goto Next; - - } while ( after->org_u == point->org_u ); - - if ( before->org_u < point->org_u ) - { - if ( after->org_u < point->org_u ) - { - /* local maximum */ - goto Extremum; - } - } - else /* before->org_u > point->org_u */ - { - if ( after->org_u > point->org_u ) - { - /* local minimum */ - Extremum: - do - { - psh_point_set_extremum( point ); - point = point->next; - - } while ( point != after ); - } - } - - before = after->prev; - point = after; - - } /* for */ - - Next: - ; - } - - /* for each extremum, determine its direction along the */ - /* orthogonal axis */ - for ( n = 0; n < glyph->num_points; n++ ) - { - PSH_Point point, before, after; - - - point = &glyph->points[n]; - before = point; - after = point; - - if ( psh_point_is_extremum( point ) ) - { - do - { - before = before->prev; - if ( before == point ) - goto Skip; - - } while ( before->org_v == point->org_v ); - - do - { - after = after->next; - if ( after == point ) - goto Skip; - - } while ( after->org_v == point->org_v ); - } - - if ( before->org_v < point->org_v && - after->org_v > point->org_v ) - { - psh_point_set_positive( point ); - } - else if ( before->org_v > point->org_v && - after->org_v < point->org_v ) - { - psh_point_set_negative( point ); - } - - Skip: - ; - } - } - - - /* major_dir is the direction for points on the bottom/left of the stem; */ - /* Points on the top/right of the stem will have a direction of */ - /* -major_dir. */ - - static void - psh_hint_table_find_strong_point( PSH_Hint_Table table, - PSH_Point point, - FT_Int threshold, - FT_Int major_dir ) - { - PSH_Hint* sort = table->sort; - FT_UInt num_hints = table->num_hints; - FT_Int point_dir = 0; - - - if ( PSH_DIR_COMPARE( point->dir_in, major_dir ) ) - point_dir = point->dir_in; - - else if ( PSH_DIR_COMPARE( point->dir_out, major_dir ) ) - point_dir = point->dir_out; - - if ( point_dir ) - { - FT_UInt flag; - - - for ( ; num_hints > 0; num_hints--, sort++ ) - { - PSH_Hint hint = sort[0]; - FT_Pos d; - - - if ( point_dir == major_dir ) - { - flag = PSH_POINT_EDGE_MIN; - d = point->org_u - hint->org_pos; - - if ( FT_ABS( d ) < threshold ) - { - Is_Strong: - psh_point_set_strong( point ); - point->flags2 |= flag; - point->hint = hint; - break; - } - } - else if ( point_dir == -major_dir ) - { - flag = PSH_POINT_EDGE_MAX; - d = point->org_u - hint->org_pos - hint->org_len; - - if ( FT_ABS( d ) < threshold ) - goto Is_Strong; - } - } - } - -#if 1 - else if ( psh_point_is_extremum( point ) ) - { - /* treat extrema as special cases for stem edge alignment */ - FT_UInt min_flag, max_flag; - - - if ( major_dir == PSH_DIR_HORIZONTAL ) - { - min_flag = PSH_POINT_POSITIVE; - max_flag = PSH_POINT_NEGATIVE; - } - else - { - min_flag = PSH_POINT_NEGATIVE; - max_flag = PSH_POINT_POSITIVE; - } - - for ( ; num_hints > 0; num_hints--, sort++ ) - { - PSH_Hint hint = sort[0]; - FT_Pos d; - FT_Int flag; - - - if ( point->flags2 & min_flag ) - { - flag = PSH_POINT_EDGE_MIN; - d = point->org_u - hint->org_pos; - - if ( FT_ABS( d ) < threshold ) - { - Is_Strong2: - point->flags2 |= flag; - point->hint = hint; - psh_point_set_strong( point ); - break; - } - } - else if ( point->flags2 & max_flag ) - { - flag = PSH_POINT_EDGE_MAX; - d = point->org_u - hint->org_pos - hint->org_len; - - if ( FT_ABS( d ) < threshold ) - goto Is_Strong2; - } - - if ( point->org_u >= hint->org_pos && - point->org_u <= hint->org_pos + hint->org_len ) - { - point->hint = hint; - } - } - } - -#endif /* 1 */ - } - - - /* the accepted shift for strong points in fractional pixels */ -#define PSH_STRONG_THRESHOLD 32 - - /* the maximum shift value in font units */ -#define PSH_STRONG_THRESHOLD_MAXIMUM 30 - - - /* find strong points in a glyph */ - static void - psh_glyph_find_strong_points( PSH_Glyph glyph, - FT_Int dimension ) - { - /* a point is `strong' if it is located on a stem edge and */ - /* has an `in' or `out' tangent parallel to the hint's direction */ - - PSH_Hint_Table table = &glyph->hint_tables[dimension]; - PS_Mask mask = table->hint_masks->masks; - FT_UInt num_masks = table->hint_masks->num_masks; - FT_UInt first = 0; - FT_Int major_dir = dimension == 0 ? PSH_DIR_VERTICAL - : PSH_DIR_HORIZONTAL; - PSH_Dimension dim = &glyph->globals->dimension[dimension]; - FT_Fixed scale = dim->scale_mult; - FT_Int threshold; - - - threshold = (FT_Int)FT_DivFix( PSH_STRONG_THRESHOLD, scale ); - if ( threshold > PSH_STRONG_THRESHOLD_MAXIMUM ) - threshold = PSH_STRONG_THRESHOLD_MAXIMUM; - - /* process secondary hints to `selected' points */ - if ( num_masks > 1 && glyph->num_points > 0 ) - { - first = mask->end_point; - mask++; - for ( ; num_masks > 1; num_masks--, mask++ ) - { - FT_UInt next; - FT_Int count; - - - next = mask->end_point; - count = next - first; - if ( count > 0 ) - { - PSH_Point point = glyph->points + first; - - - psh_hint_table_activate_mask( table, mask ); - - for ( ; count > 0; count--, point++ ) - psh_hint_table_find_strong_point( table, point, - threshold, major_dir ); - } - first = next; - } - } - - /* process primary hints for all points */ - if ( num_masks == 1 ) - { - FT_UInt count = glyph->num_points; - PSH_Point point = glyph->points; - - - psh_hint_table_activate_mask( table, table->hint_masks->masks ); - for ( ; count > 0; count--, point++ ) - { - if ( !psh_point_is_strong( point ) ) - psh_hint_table_find_strong_point( table, point, - threshold, major_dir ); - } - } - - /* now, certain points may have been attached to a hint and */ - /* not marked as strong; update their flags then */ - { - FT_UInt count = glyph->num_points; - PSH_Point point = glyph->points; - - - for ( ; count > 0; count--, point++ ) - if ( point->hint && !psh_point_is_strong( point ) ) - psh_point_set_strong( point ); - } - } - - - /* find points in a glyph which are in a blue zone and have `in' or */ - /* `out' tangents parallel to the horizontal axis */ - static void - psh_glyph_find_blue_points( PSH_Blues blues, - PSH_Glyph glyph ) - { - PSH_Blue_Table table; - PSH_Blue_Zone zone; - FT_UInt glyph_count = glyph->num_points; - FT_UInt blue_count; - PSH_Point point = glyph->points; - - - for ( ; glyph_count > 0; glyph_count--, point++ ) - { - FT_Pos y; - - - /* check tangents */ - if ( !PSH_DIR_COMPARE( point->dir_in, PSH_DIR_HORIZONTAL ) && - !PSH_DIR_COMPARE( point->dir_out, PSH_DIR_HORIZONTAL ) ) - continue; - - /* skip strong points */ - if ( psh_point_is_strong( point ) ) - continue; - - y = point->org_u; - - /* look up top zones */ - table = &blues->normal_top; - blue_count = table->count; - zone = table->zones; - - for ( ; blue_count > 0; blue_count--, zone++ ) - { - FT_Pos delta = y - zone->org_bottom; - - - if ( delta < -blues->blue_fuzz ) - break; - - if ( y <= zone->org_top + blues->blue_fuzz ) - if ( blues->no_overshoots || delta <= blues->blue_threshold ) - { - point->cur_u = zone->cur_bottom; - psh_point_set_strong( point ); - psh_point_set_fitted( point ); - } - } - - /* look up bottom zones */ - table = &blues->normal_bottom; - blue_count = table->count; - zone = table->zones + blue_count - 1; - - for ( ; blue_count > 0; blue_count--, zone-- ) - { - FT_Pos delta = zone->org_top - y; - - - if ( delta < -blues->blue_fuzz ) - break; - - if ( y >= zone->org_bottom - blues->blue_fuzz ) - if ( blues->no_overshoots || delta < blues->blue_threshold ) - { - point->cur_u = zone->cur_top; - psh_point_set_strong( point ); - psh_point_set_fitted( point ); - } - } - } - } - - - /* interpolate strong points with the help of hinted coordinates */ - static void - psh_glyph_interpolate_strong_points( PSH_Glyph glyph, - FT_Int dimension ) - { - PSH_Dimension dim = &glyph->globals->dimension[dimension]; - FT_Fixed scale = dim->scale_mult; - - FT_UInt count = glyph->num_points; - PSH_Point point = glyph->points; - - - for ( ; count > 0; count--, point++ ) - { - PSH_Hint hint = point->hint; - - - if ( hint ) - { - FT_Pos delta; - - - if ( psh_point_is_edge_min( point ) ) - point->cur_u = hint->cur_pos; - - else if ( psh_point_is_edge_max( point ) ) - point->cur_u = hint->cur_pos + hint->cur_len; - - else - { - delta = point->org_u - hint->org_pos; - - if ( delta <= 0 ) - point->cur_u = hint->cur_pos + FT_MulFix( delta, scale ); - - else if ( delta >= hint->org_len ) - point->cur_u = hint->cur_pos + hint->cur_len + - FT_MulFix( delta - hint->org_len, scale ); - - else if ( hint->org_len > 0 ) - point->cur_u = hint->cur_pos + - FT_MulDiv( delta, hint->cur_len, - hint->org_len ); - else - point->cur_u = hint->cur_pos; - } - psh_point_set_fitted( point ); - } - } - } - - - static void - psh_glyph_interpolate_normal_points( PSH_Glyph glyph, - FT_Int dimension ) - { - -#if 1 - /* first technique: a point is strong if it is a local extremum */ - - PSH_Dimension dim = &glyph->globals->dimension[dimension]; - FT_Fixed scale = dim->scale_mult; - - FT_UInt count = glyph->num_points; - PSH_Point point = glyph->points; - - - for ( ; count > 0; count--, point++ ) - { - if ( psh_point_is_strong( point ) ) - continue; - - /* sometimes, some local extrema are smooth points */ - if ( psh_point_is_smooth( point ) ) - { - if ( point->dir_in == PSH_DIR_NONE || - point->dir_in != point->dir_out ) - continue; - - if ( !psh_point_is_extremum( point ) && - !psh_point_is_inflex( point ) ) - continue; - - point->flags &= ~PSH_POINT_SMOOTH; - } - - /* find best enclosing point coordinates */ - { - PSH_Point before = 0; - PSH_Point after = 0; - - FT_Pos diff_before = -32000; - FT_Pos diff_after = 32000; - FT_Pos u = point->org_u; - - FT_Int count2 = glyph->num_points; - PSH_Point cur = glyph->points; - - - for ( ; count2 > 0; count2--, cur++ ) - { - if ( psh_point_is_strong( cur ) ) - { - FT_Pos diff = cur->org_u - u; - - - if ( diff <= 0 ) - { - if ( diff > diff_before ) - { - diff_before = diff; - before = cur; - } - } - - else if ( diff >= 0 ) - { - if ( diff < diff_after ) - { - diff_after = diff; - after = cur; - } - } - } - } - - if ( !before ) - { - if ( !after ) - continue; - - /* we are before the first strong point coordinate; */ - /* simply translate the point */ - point->cur_u = after->cur_u + - FT_MulFix( point->org_u - after->org_u, scale ); - } - else if ( !after ) - { - /* we are after the last strong point coordinate; */ - /* simply translate the point */ - point->cur_u = before->cur_u + - FT_MulFix( point->org_u - before->org_u, scale ); - } - else - { - if ( diff_before == 0 ) - point->cur_u = before->cur_u; - - else if ( diff_after == 0 ) - point->cur_u = after->cur_u; - - else - point->cur_u = before->cur_u + - FT_MulDiv( u - before->org_u, - after->cur_u - before->cur_u, - after->org_u - before->org_u ); - } - - psh_point_set_fitted( point ); - } - } - -#endif /* 1 */ - - } - - - /* interpolate other points */ - static void - psh_glyph_interpolate_other_points( PSH_Glyph glyph, - FT_Int dimension ) - { - PSH_Dimension dim = &glyph->globals->dimension[dimension]; - FT_Fixed scale = dim->scale_mult; - FT_Fixed delta = dim->scale_delta; - PSH_Contour contour = glyph->contours; - FT_UInt num_contours = glyph->num_contours; - - - for ( ; num_contours > 0; num_contours--, contour++ ) - { - PSH_Point start = contour->start; - PSH_Point first, next, point; - FT_UInt fit_count; - - - /* count the number of strong points in this contour */ - next = start + contour->count; - fit_count = 0; - first = 0; - - for ( point = start; point < next; point++ ) - if ( psh_point_is_fitted( point ) ) - { - if ( !first ) - first = point; - - fit_count++; - } - - /* if there are less than 2 fitted points in the contour, we */ - /* simply scale and eventually translate the contour points */ - if ( fit_count < 2 ) - { - if ( fit_count == 1 ) - delta = first->cur_u - FT_MulFix( first->org_u, scale ); - - for ( point = start; point < next; point++ ) - if ( point != first ) - point->cur_u = FT_MulFix( point->org_u, scale ) + delta; - - goto Next_Contour; - } - - /* there are more than 2 strong points in this contour; we */ - /* need to interpolate weak points between them */ - start = first; - do - { - point = first; - - /* skip consecutive fitted points */ - for (;;) - { - next = first->next; - if ( next == start ) - goto Next_Contour; - - if ( !psh_point_is_fitted( next ) ) - break; - - first = next; - } - - /* find next fitted point after unfitted one */ - for (;;) - { - next = next->next; - if ( psh_point_is_fitted( next ) ) - break; - } - - /* now interpolate between them */ - { - FT_Pos org_a, org_ab, cur_a, cur_ab; - FT_Pos org_c, org_ac, cur_c; - FT_Fixed scale_ab; - - - if ( first->org_u <= next->org_u ) - { - org_a = first->org_u; - cur_a = first->cur_u; - org_ab = next->org_u - org_a; - cur_ab = next->cur_u - cur_a; - } - else - { - org_a = next->org_u; - cur_a = next->cur_u; - org_ab = first->org_u - org_a; - cur_ab = first->cur_u - cur_a; - } - - scale_ab = 0x10000L; - if ( org_ab > 0 ) - scale_ab = FT_DivFix( cur_ab, org_ab ); - - point = first->next; - do - { - org_c = point->org_u; - org_ac = org_c - org_a; - - if ( org_ac <= 0 ) - { - /* on the left of the interpolation zone */ - cur_c = cur_a + FT_MulFix( org_ac, scale ); - } - else if ( org_ac >= org_ab ) - { - /* on the right on the interpolation zone */ - cur_c = cur_a + cur_ab + FT_MulFix( org_ac - org_ab, scale ); - } - else - { - /* within the interpolation zone */ - cur_c = cur_a + FT_MulFix( org_ac, scale_ab ); - } - - point->cur_u = cur_c; - - point = point->next; - - } while ( point != next ); - } - - /* keep going until all points in the contours have been processed */ - first = next; - - } while ( first != start ); - - Next_Contour: - ; - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** HIGH-LEVEL INTERFACE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - FT_Error - ps_hints_apply( PS_Hints ps_hints, - FT_Outline* outline, - PSH_Globals globals, - FT_Render_Mode hint_mode ) - { - PSH_GlyphRec glyphrec; - PSH_Glyph glyph = &glyphrec; - FT_Error error; -#ifdef DEBUG_HINTER - FT_Memory memory; -#endif - FT_Int dimension; - - - /* something to do? */ - if ( outline->n_points == 0 || outline->n_contours == 0 ) - return PSH_Err_Ok; - -#ifdef DEBUG_HINTER - - memory = globals->memory; - - if ( ps_debug_glyph ) - { - psh_glyph_done( ps_debug_glyph ); - FT_FREE( ps_debug_glyph ); - } - - if ( FT_NEW( glyph ) ) - return error; - - ps_debug_glyph = glyph; - -#endif /* DEBUG_HINTER */ - - error = psh_glyph_init( glyph, outline, ps_hints, globals ); - if ( error ) - goto Exit; - - /* try to optimize the y_scale so that the top of non-capital letters - * is aligned on a pixel boundary whenever possible - */ - { - PSH_Dimension dim_x = &glyph->globals->dimension[0]; - PSH_Dimension dim_y = &glyph->globals->dimension[1]; - - FT_Fixed x_scale = dim_x->scale_mult; - FT_Fixed y_scale = dim_y->scale_mult; - - FT_Fixed scaled; - FT_Fixed fitted; - - - scaled = FT_MulFix( globals->blues.normal_top.zones->org_ref, y_scale ); - fitted = FT_PIX_ROUND( scaled ); - - if (scaled != fitted ) { - y_scale = FT_MulDiv( y_scale, fitted, scaled ); - - if ( fitted < scaled ) - x_scale -= x_scale / 50; - - psh_globals_set_scale( glyph->globals, x_scale, y_scale, 0, 0 ); - } - } - - glyph->do_horz_hints = 1; - glyph->do_vert_hints = 1; - - glyph->do_horz_snapping = FT_BOOL( hint_mode == FT_RENDER_MODE_MONO || - hint_mode == FT_RENDER_MODE_LCD ); - - glyph->do_vert_snapping = FT_BOOL( hint_mode == FT_RENDER_MODE_MONO || - hint_mode == FT_RENDER_MODE_LCD_V ); - - glyph->do_stem_adjust = FT_BOOL( hint_mode != FT_RENDER_MODE_LIGHT ); - - for ( dimension = 0; dimension < 2; dimension++ ) - { - /* load outline coordinates into glyph */ - psh_glyph_load_points( glyph, dimension ); - - /* compute local extrema */ - psh_glyph_compute_extrema( glyph ); - - /* compute aligned stem/hints positions */ - psh_hint_table_align_hints( &glyph->hint_tables[dimension], - glyph->globals, - dimension, - glyph ); - - /* find strong points, align them, then interpolate others */ - psh_glyph_find_strong_points( glyph, dimension ); - if ( dimension == 1 ) - psh_glyph_find_blue_points( &globals->blues, glyph ); - psh_glyph_interpolate_strong_points( glyph, dimension ); - psh_glyph_interpolate_normal_points( glyph, dimension ); - psh_glyph_interpolate_other_points( glyph, dimension ); - - /* save hinted coordinates back to outline */ - psh_glyph_save_points( glyph, dimension ); - } - - Exit: - -#ifndef DEBUG_HINTER - psh_glyph_done( glyph ); -#endif - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshalgo.h b/nx-X11/extras/freetype2/src/pshinter/pshalgo.h deleted file mode 100644 index f68de7120..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshalgo.h +++ /dev/null @@ -1,255 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshalgo.h */ -/* */ -/* PostScript hinting algorithm (specification). */ -/* */ -/* Copyright 2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PSHALGO_H__ -#define __PSHALGO_H__ - - -#include "pshrec.h" -#include "pshglob.h" -#include FT_TRIGONOMETRY_H - - -FT_BEGIN_HEADER - - - /* handle to Hint structure */ - typedef struct PSH_HintRec_* PSH_Hint; - - /* hint bit-flags */ - typedef enum - { - PSH_HINT_GHOST = PS_HINT_FLAG_GHOST, - PSH_HINT_BOTTOM = PS_HINT_FLAG_BOTTOM, - PSH_HINT_ACTIVE = 4, - PSH_HINT_FITTED = 8 - - } PSH_Hint_Flags; - - -#define psh_hint_is_active( x ) ( ( (x)->flags & PSH_HINT_ACTIVE ) != 0 ) -#define psh_hint_is_ghost( x ) ( ( (x)->flags & PSH_HINT_GHOST ) != 0 ) -#define psh_hint_is_fitted( x ) ( ( (x)->flags & PSH_HINT_FITTED ) != 0 ) - -#define psh_hint_activate( x ) (x)->flags |= PSH_HINT_ACTIVE -#define psh_hint_deactivate( x ) (x)->flags &= ~PSH_HINT_ACTIVE -#define psh_hint_set_fitted( x ) (x)->flags |= PSH_HINT_FITTED - - /* hint structure */ - typedef struct PSH_HintRec_ - { - FT_Int org_pos; - FT_Int org_len; - FT_Pos cur_pos; - FT_Pos cur_len; - FT_UInt flags; - PSH_Hint parent; - FT_Int order; - - } PSH_HintRec; - - - /* this is an interpolation zone used for strong points; */ - /* weak points are interpolated according to their strong */ - /* neighbours */ - typedef struct PSH_ZoneRec_ - { - FT_Fixed scale; - FT_Fixed delta; - FT_Pos min; - FT_Pos max; - - } PSH_ZoneRec, *PSH_Zone; - - - typedef struct PSH_Hint_TableRec_ - { - FT_UInt max_hints; - FT_UInt num_hints; - PSH_Hint hints; - PSH_Hint* sort; - PSH_Hint* sort_global; - FT_UInt num_zones; - PSH_ZoneRec* zones; - PSH_Zone zone; - PS_Mask_Table hint_masks; - PS_Mask_Table counter_masks; - - } PSH_Hint_TableRec, *PSH_Hint_Table; - - - typedef struct PSH_PointRec_* PSH_Point; - typedef struct PSH_ContourRec_* PSH_Contour; - - enum - { - PSH_DIR_NONE = 4, - PSH_DIR_UP = -1, - PSH_DIR_DOWN = 1, - PSH_DIR_LEFT = -2, - PSH_DIR_RIGHT = 2 - }; - -#define PSH_DIR_HORIZONTAL 2 -#define PSH_DIR_VERTICAL 1 - -#define PSH_DIR_COMPARE( d1, d2 ) ( (d1) == (d2) || (d1) == -(d2) ) -#define PSH_DIR_IS_HORIZONTAL( d ) PSH_DIR_COMPARE( d, PSH_DIR_HORIZONTAL ) -#define PSH_DIR_IS_VERTICAL( d ) PSH_DIR_COMPARE( d, PSH_DIR_VERTICAL ) - - - /* the following bit-flags are computed once by the glyph */ - /* analyzer, for both dimensions */ - enum - { - PSH_POINT_OFF = 1, /* point is off the curve */ - PSH_POINT_SMOOTH = 2, /* point is smooth */ - PSH_POINT_INFLEX = 4 /* point is inflection */ - }; - -#define psh_point_is_smooth( p ) ( (p)->flags & PSH_POINT_SMOOTH ) -#define psh_point_is_off( p ) ( (p)->flags & PSH_POINT_OFF ) -#define psh_point_is_inflex( p ) ( (p)->flags & PSH_POINT_INFLEX ) - -#define psh_point_set_smooth( p ) (p)->flags |= PSH_POINT_SMOOTH -#define psh_point_set_off( p ) (p)->flags |= PSH_POINT_OFF -#define psh_point_set_inflex( p ) (p)->flags |= PSH_POINT_INFLEX - - /* the following bit-flags are re-computed for each dimension */ - enum - { - PSH_POINT_STRONG = 16, /* point is strong */ - PSH_POINT_FITTED = 32, /* point is already fitted */ - PSH_POINT_EXTREMUM = 64, /* point is local extremum */ - PSH_POINT_POSITIVE = 128, /* extremum has positive contour flow */ - PSH_POINT_NEGATIVE = 256, /* extremum has negative contour flow */ - PSH_POINT_EDGE_MIN = 512, /* point is aligned to left/bottom stem edge */ - PSH_POINT_EDGE_MAX = 1024 /* point is aligned to top/right stem edge */ - }; - -#define psh_point_is_strong( p ) ( (p)->flags2 & PSH_POINT_STRONG ) -#define psh_point_is_fitted( p ) ( (p)->flags2 & PSH_POINT_FITTED ) -#define psh_point_is_extremum( p ) ( (p)->flags2 & PSH_POINT_EXTREMUM ) -#define psh_point_is_positive( p ) ( (p)->flags2 & PSH_POINT_POSITIVE ) -#define psh_point_is_negative( p ) ( (p)->flags2 & PSH_POINT_NEGATIVE ) -#define psh_point_is_edge_min( p ) ( (p)->flags2 & PSH_POINT_EDGE_MIN ) -#define psh_point_is_edge_max( p ) ( (p)->flags2 & PSH_POINT_EDGE_MAX ) - -#define psh_point_set_strong( p ) (p)->flags2 |= PSH_POINT_STRONG -#define psh_point_set_fitted( p ) (p)->flags2 |= PSH_POINT_FITTED -#define psh_point_set_extremum( p ) (p)->flags2 |= PSH_POINT_EXTREMUM -#define psh_point_set_positive( p ) (p)->flags2 |= PSH_POINT_POSITIVE -#define psh_point_set_negative( p ) (p)->flags2 |= PSH_POINT_NEGATIVE -#define psh_point_set_edge_min( p ) (p)->flags2 |= PSH_POINT_EDGE_MIN -#define psh_point_set_edge_max( p ) (p)->flags2 |= PSH_POINT_EDGE_MAX - - - typedef struct PSH_PointRec_ - { - PSH_Point prev; - PSH_Point next; - PSH_Contour contour; - FT_UInt flags; - FT_UInt flags2; - FT_Char dir_in; - FT_Char dir_out; - FT_Angle angle_in; - FT_Angle angle_out; - PSH_Hint hint; - FT_Pos org_u; - FT_Pos org_v; - FT_Pos cur_u; -#ifdef DEBUG_HINTER - FT_Pos org_x; - FT_Pos cur_x; - FT_Pos org_y; - FT_Pos cur_y; - FT_UInt flags_x; - FT_UInt flags_y; -#endif - - } PSH_PointRec; - - -#define PSH_POINT_EQUAL_ORG( a, b ) ( (a)->org_u == (b)->org_u && \ - (a)->org_v == (b)->org_v ) - -#define PSH_POINT_ANGLE( a, b ) FT_Atan2( (b)->org_u - (a)->org_u, \ - (b)->org_v - (a)->org_v ) - - typedef struct PSH_ContourRec_ - { - PSH_Point start; - FT_UInt count; - - } PSH_ContourRec; - - - typedef struct PSH_GlyphRec_ - { - FT_UInt num_points; - FT_UInt num_contours; - - PSH_Point points; - PSH_Contour contours; - - FT_Memory memory; - FT_Outline* outline; - PSH_Globals globals; - PSH_Hint_TableRec hint_tables[2]; - - FT_Bool vertical; - FT_Int major_dir; - FT_Int minor_dir; - - FT_Bool do_horz_hints; - FT_Bool do_vert_hints; - FT_Bool do_horz_snapping; - FT_Bool do_vert_snapping; - FT_Bool do_stem_adjust; - - } PSH_GlyphRec, *PSH_Glyph; - - -#ifdef DEBUG_HINTER - extern PSH_Hint_Table ps_debug_hint_table; - - typedef void - (*PSH_HintFunc)( PSH_Hint hint, - FT_Bool vertical ); - - extern PSH_HintFunc ps_debug_hint_func; - - extern PSH_Glyph ps_debug_glyph; -#endif - - - extern FT_Error - ps_hints_apply( PS_Hints ps_hints, - FT_Outline* outline, - PSH_Globals globals, - FT_Render_Mode hint_mode ); - - -FT_END_HEADER - - -#endif /* __PSHALGO_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshglob.c b/nx-X11/extras/freetype2/src/pshinter/pshglob.c deleted file mode 100644 index 21d45e92f..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshglob.c +++ /dev/null @@ -1,750 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshglob.c */ -/* */ -/* PostScript hinter global hinting management (body). */ -/* Inspired by the new auto-hinter module. */ -/* */ -/* Copyright 2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used */ -/* modified and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include "pshglob.h" - -#ifdef DEBUG_HINTER - PSH_Globals ps_debug_globals = 0; -#endif - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** STANDARD WIDTHS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* scale the widths/heights table */ - static void - psh_globals_scale_widths( PSH_Globals globals, - FT_UInt direction ) - { - PSH_Dimension dim = &globals->dimension[direction]; - PSH_Widths stdw = &dim->stdw; - FT_UInt count = stdw->count; - PSH_Width width = stdw->widths; - PSH_Width stand = width; /* standard width/height */ - FT_Fixed scale = dim->scale_mult; - - - if ( count > 0 ) - { - width->cur = FT_MulFix( width->org, scale ); - width->fit = FT_PIX_ROUND( width->cur ); - - width++; - count--; - - for ( ; count > 0; count--, width++ ) - { - FT_Pos w, dist; - - - w = FT_MulFix( width->org, scale ); - dist = w - stand->cur; - - if ( dist < 0 ) - dist = -dist; - - if ( dist < 128 ) - w = stand->cur; - - width->cur = w; - width->fit = FT_PIX_ROUND( w ); - } - } - } - - -#if 0 - - /* org_width is is font units, result in device pixels, 26.6 format */ - FT_LOCAL_DEF( FT_Pos ) - psh_dimension_snap_width( PSH_Dimension dimension, - FT_Int org_width ) - { - FT_UInt n; - FT_Pos width = FT_MulFix( org_width, dimension->scale_mult ); - FT_Pos best = 64 + 32 + 2; - FT_Pos reference = width; - - - for ( n = 0; n < dimension->stdw.count; n++ ) - { - FT_Pos w; - FT_Pos dist; - - - w = dimension->stdw.widths[n].cur; - dist = width - w; - if ( dist < 0 ) - dist = -dist; - if ( dist < best ) - { - best = dist; - reference = w; - } - } - - if ( width >= reference ) - { - width -= 0x21; - if ( width < reference ) - width = reference; - } - else - { - width += 0x21; - if ( width > reference ) - width = reference; - } - - return width; - } - -#endif /* 0 */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** BLUE ZONES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static void - psh_blues_set_zones_0( PSH_Blues target, - FT_Bool is_others, - FT_UInt read_count, - FT_Short* read, - PSH_Blue_Table top_table, - PSH_Blue_Table bot_table ) - { - FT_UInt count_top = top_table->count; - FT_UInt count_bot = bot_table->count; - FT_Bool first = 1; - - FT_UNUSED( target ); - - - for ( ; read_count > 0; read_count -= 2 ) - { - FT_Int reference, delta; - FT_UInt count; - PSH_Blue_Zone zones, zone; - FT_Bool top; - - - /* read blue zone entry, and select target top/bottom zone */ - top = 0; - if ( first || is_others ) - { - reference = read[1]; - delta = read[0] - reference; - - zones = bot_table->zones; - count = count_bot; - first = 0; - } - else - { - reference = read[0]; - delta = read[1] - reference; - - zones = top_table->zones; - count = count_top; - top = 1; - } - - /* insert into sorted table */ - zone = zones; - for ( ; count > 0; count--, zone++ ) - { - if ( reference < zone->org_ref ) - break; - - if ( reference == zone->org_ref ) - { - FT_Int delta0 = zone->org_delta; - - - /* we have two zones on the same reference position -- */ - /* only keep the largest one */ - if ( delta < 0 ) - { - if ( delta < delta0 ) - zone->org_delta = delta; - } - else - { - if ( delta > delta0 ) - zone->org_delta = delta; - } - goto Skip; - } - } - - for ( ; count > 0; count-- ) - zone[count] = zone[count-1]; - - zone->org_ref = reference; - zone->org_delta = delta; - - if ( top ) - count_top++; - else - count_bot++; - - Skip: - read += 2; - } - - top_table->count = count_top; - bot_table->count = count_bot; - } - - - /* Re-read blue zones from the original fonts and store them into out */ - /* private structure. This function re-orders, sanitizes and */ - /* fuzz-expands the zones as well. */ - static void - psh_blues_set_zones( PSH_Blues target, - FT_UInt count, - FT_Short* blues, - FT_UInt count_others, - FT_Short* other_blues, - FT_Int fuzz, - FT_Int family ) - { - PSH_Blue_Table top_table, bot_table; - FT_Int count_top, count_bot; - - - if ( family ) - { - top_table = &target->family_top; - bot_table = &target->family_bottom; - } - else - { - top_table = &target->normal_top; - bot_table = &target->normal_bottom; - } - - /* read the input blue zones, and build two sorted tables */ - /* (one for the top zones, the other for the bottom zones) */ - top_table->count = 0; - bot_table->count = 0; - - /* first, the blues */ - psh_blues_set_zones_0( target, 0, - count, blues, top_table, bot_table ); - psh_blues_set_zones_0( target, 1, - count_others, other_blues, top_table, bot_table ); - - count_top = top_table->count; - count_bot = bot_table->count; - - /* sanitize top table */ - if ( count_top > 0 ) - { - PSH_Blue_Zone zone = top_table->zones; - - - for ( count = count_top; count > 0; count--, zone++ ) - { - FT_Int delta; - - - if ( count > 1 ) - { - delta = zone[1].org_ref - zone[0].org_ref; - if ( zone->org_delta > delta ) - zone->org_delta = delta; - } - - zone->org_bottom = zone->org_ref; - zone->org_top = zone->org_delta + zone->org_ref; - } - } - - /* sanitize bottom table */ - if ( count_bot > 0 ) - { - PSH_Blue_Zone zone = bot_table->zones; - - - for ( count = count_bot; count > 0; count--, zone++ ) - { - FT_Int delta; - - - if ( count > 1 ) - { - delta = zone[0].org_ref - zone[1].org_ref; - if ( zone->org_delta < delta ) - zone->org_delta = delta; - } - - zone->org_top = zone->org_ref; - zone->org_bottom = zone->org_delta + zone->org_ref; - } - } - - /* expand top and bottom tables with blue fuzz */ - { - FT_Int dim, top, bot, delta; - PSH_Blue_Zone zone; - - - zone = top_table->zones; - count = count_top; - - for ( dim = 1; dim >= 0; dim-- ) - { - if ( count > 0 ) - { - /* expand the bottom of the lowest zone normally */ - zone->org_bottom -= fuzz; - - /* expand the top and bottom of intermediate zones; */ - /* checking that the interval is smaller than the fuzz */ - top = zone->org_top; - - for ( count--; count > 0; count-- ) - { - bot = zone[1].org_bottom; - delta = bot - top; - - if ( delta < 2 * fuzz ) - zone[0].org_top = zone[1].org_bottom = top + delta / 2; - else - { - zone[0].org_top = top + fuzz; - zone[1].org_bottom = bot - fuzz; - } - - zone++; - top = zone->org_top; - } - - /* expand the top of the highest zone normally */ - zone->org_top = top + fuzz; - } - zone = bot_table->zones; - count = count_bot; - } - } - } - - - /* reset the blues table when the device transform changes */ - static void - psh_blues_scale_zones( PSH_Blues blues, - FT_Fixed scale, - FT_Pos delta ) - { - FT_UInt count; - FT_UInt num; - PSH_Blue_Table table = 0; - - /* */ - /* Determine whether we need to suppress overshoots or */ - /* not. We simply need to compare the vertical scale */ - /* parameter to the raw bluescale value. Here is why: */ - /* */ - /* We need to suppress overshoots for all pointsizes. */ - /* At 300dpi that satisfies: */ - /* */ - /* pointsize < 240*bluescale + 0.49 */ - /* */ - /* This corresponds to: */ - /* */ - /* pixelsize < 1000*bluescale + 49/24 */ - /* */ - /* scale*EM_Size < 1000*bluescale + 49/24 */ - /* */ - /* However, for normal Type 1 fonts, EM_Size is 1000! */ - /* We thus only check: */ - /* */ - /* scale < bluescale + 49/24000 */ - /* */ - /* which we shorten to */ - /* */ - /* "scale < bluescale" */ - /* */ - /* Note that `blue_scale' is stored 1000 times its real */ - /* value, and that `scale' converts from font units to */ - /* fractional pixels. */ - /* */ - - /* 1000 / 64 = 125 / 8 */ - if ( scale >= 0x20C49BAL ) - blues->no_overshoots = FT_BOOL( scale < blues->blue_scale * 8 / 125 ); - else - blues->no_overshoots = FT_BOOL( scale * 125 < blues->blue_scale * 8 ); - - /* */ - /* The blue threshold is the font units distance under */ - /* which overshoots are suppressed due to the BlueShift */ - /* even if the scale is greater than BlueScale. */ - /* */ - /* It is the smallest distance such that */ - /* */ - /* dist <= BlueShift && dist*scale <= 0.5 pixels */ - /* */ - { - FT_Int threshold = blues->blue_shift; - - - while ( threshold > 0 && FT_MulFix( threshold, scale ) > 32 ) - threshold--; - - blues->blue_threshold = threshold; - } - - for ( num = 0; num < 4; num++ ) - { - PSH_Blue_Zone zone; - - - switch ( num ) - { - case 0: - table = &blues->normal_top; - break; - case 1: - table = &blues->normal_bottom; - break; - case 2: - table = &blues->family_top; - break; - default: - table = &blues->family_bottom; - break; - } - - zone = table->zones; - count = table->count; - for ( ; count > 0; count--, zone++ ) - { - zone->cur_top = FT_MulFix( zone->org_top, scale ) + delta; - zone->cur_bottom = FT_MulFix( zone->org_bottom, scale ) + delta; - zone->cur_ref = FT_MulFix( zone->org_ref, scale ) + delta; - zone->cur_delta = FT_MulFix( zone->org_delta, scale ); - - /* round scaled reference position */ - zone->cur_ref = FT_PIX_ROUND( zone->cur_ref ); - -#if 0 - if ( zone->cur_ref > zone->cur_top ) - zone->cur_ref -= 64; - else if ( zone->cur_ref < zone->cur_bottom ) - zone->cur_ref += 64; -#endif - } - } - - /* process the families now */ - - for ( num = 0; num < 2; num++ ) - { - PSH_Blue_Zone zone1, zone2; - FT_UInt count1, count2; - PSH_Blue_Table normal, family; - - - switch ( num ) - { - case 0: - normal = &blues->normal_top; - family = &blues->family_top; - break; - - default: - normal = &blues->normal_bottom; - family = &blues->family_bottom; - } - - zone1 = normal->zones; - count1 = normal->count; - - for ( ; count1 > 0; count1--, zone1++ ) - { - /* try to find a family zone whose reference position is less */ - /* than 1 pixel far from the current zone */ - zone2 = family->zones; - count2 = family->count; - - for ( ; count2 > 0; count2--, zone2++ ) - { - FT_Pos Delta; - - - Delta = zone1->org_ref - zone2->org_ref; - if ( Delta < 0 ) - Delta = -Delta; - - if ( FT_MulFix( Delta, scale ) < 64 ) - { - zone1->cur_top = zone2->cur_top; - zone1->cur_bottom = zone2->cur_bottom; - zone1->cur_ref = zone2->cur_ref; - zone1->cur_delta = zone2->cur_delta; - break; - } - } - } - } - } - - - FT_LOCAL_DEF( void ) - psh_blues_snap_stem( PSH_Blues blues, - FT_Int stem_top, - FT_Int stem_bot, - PSH_Alignment alignment ) - { - PSH_Blue_Table table; - FT_UInt count; - FT_Pos delta; - PSH_Blue_Zone zone; - FT_Int no_shoots; - - - alignment->align = PSH_BLUE_ALIGN_NONE; - - no_shoots = blues->no_overshoots; - - /* look up stem top in top zones table */ - table = &blues->normal_top; - count = table->count; - zone = table->zones; - - for ( ; count > 0; count--, zone++ ) - { - delta = stem_top - zone->org_bottom; - if ( delta < -blues->blue_fuzz ) - break; - - if ( stem_top <= zone->org_top + blues->blue_fuzz ) - { - if ( no_shoots || delta <= blues->blue_threshold ) - { - alignment->align |= PSH_BLUE_ALIGN_TOP; - alignment->align_top = zone->cur_ref; - } - break; - } - } - - /* look up stem bottom in bottom zones table */ - table = &blues->normal_bottom; - count = table->count; - zone = table->zones + count-1; - - for ( ; count > 0; count--, zone-- ) - { - delta = zone->org_top - stem_bot; - if ( delta < -blues->blue_fuzz ) - break; - - if ( stem_bot >= zone->org_bottom - blues->blue_fuzz ) - { - if ( no_shoots || delta < blues->blue_threshold ) - { - alignment->align |= PSH_BLUE_ALIGN_BOT; - alignment->align_bot = zone->cur_ref; - } - break; - } - } - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GLOBAL HINTS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static void - psh_globals_destroy( PSH_Globals globals ) - { - if ( globals ) - { - FT_Memory memory; - - - memory = globals->memory; - globals->dimension[0].stdw.count = 0; - globals->dimension[1].stdw.count = 0; - - globals->blues.normal_top.count = 0; - globals->blues.normal_bottom.count = 0; - globals->blues.family_top.count = 0; - globals->blues.family_bottom.count = 0; - - FT_FREE( globals ); - -#ifdef DEBUG_HINTER - ps_debug_globals = 0; -#endif - } - } - - - static FT_Error - psh_globals_new( FT_Memory memory, - T1_Private* priv, - PSH_Globals *aglobals ) - { - PSH_Globals globals; - FT_Error error; - - - if ( !FT_NEW( globals ) ) - { - FT_UInt count; - FT_Short* read; - - - globals->memory = memory; - - /* copy standard widths */ - { - PSH_Dimension dim = &globals->dimension[1]; - PSH_Width write = dim->stdw.widths; - - - write->org = priv->standard_width[0]; - write++; - - read = priv->snap_widths; - for ( count = priv->num_snap_widths; count > 0; count-- ) - { - write->org = *read; - write++; - read++; - } - - dim->stdw.count = priv->num_snap_widths + 1; - } - - /* copy standard heights */ - { - PSH_Dimension dim = &globals->dimension[0]; - PSH_Width write = dim->stdw.widths; - - - write->org = priv->standard_height[0]; - write++; - read = priv->snap_heights; - for ( count = priv->num_snap_heights; count > 0; count-- ) - { - write->org = *read; - write++; - read++; - } - - dim->stdw.count = priv->num_snap_heights + 1; - } - - /* copy blue zones */ - psh_blues_set_zones( &globals->blues, priv->num_blue_values, - priv->blue_values, priv->num_other_blues, - priv->other_blues, priv->blue_fuzz, 0 ); - - psh_blues_set_zones( &globals->blues, priv->num_family_blues, - priv->family_blues, priv->num_family_other_blues, - priv->family_other_blues, priv->blue_fuzz, 1 ); - - globals->blues.blue_scale = priv->blue_scale; - globals->blues.blue_shift = priv->blue_shift; - globals->blues.blue_fuzz = priv->blue_fuzz; - - globals->dimension[0].scale_mult = 0; - globals->dimension[0].scale_delta = 0; - globals->dimension[1].scale_mult = 0; - globals->dimension[1].scale_delta = 0; - -#ifdef DEBUG_HINTER - ps_debug_globals = globals; -#endif - } - - *aglobals = globals; - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - psh_globals_set_scale( PSH_Globals globals, - FT_Fixed x_scale, - FT_Fixed y_scale, - FT_Fixed x_delta, - FT_Fixed y_delta ) - { - PSH_Dimension dim = &globals->dimension[0]; - - - dim = &globals->dimension[0]; - if ( x_scale != dim->scale_mult || - x_delta != dim->scale_delta ) - { - dim->scale_mult = x_scale; - dim->scale_delta = x_delta; - - psh_globals_scale_widths( globals, 0 ); - } - - dim = &globals->dimension[1]; - if ( y_scale != dim->scale_mult || - y_delta != dim->scale_delta ) - { - dim->scale_mult = y_scale; - dim->scale_delta = y_delta; - - psh_globals_scale_widths( globals, 1 ); - psh_blues_scale_zones( &globals->blues, y_scale, y_delta ); - } - - return 0; - } - - - FT_LOCAL_DEF( void ) - psh_globals_funcs_init( PSH_Globals_FuncsRec* funcs ) - { - funcs->create = psh_globals_new; - funcs->set_scale = psh_globals_set_scale; - funcs->destroy = psh_globals_destroy; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshglob.h b/nx-X11/extras/freetype2/src/pshinter/pshglob.h deleted file mode 100644 index c51162615..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshglob.h +++ /dev/null @@ -1,196 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshglob.h */ -/* */ -/* PostScript hinter global hinting management. */ -/* */ -/* Copyright 2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PSHGLOB_H__ -#define __PSHGLOB_H__ - - -#include FT_FREETYPE_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GLOBAL HINTS INTERNALS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* @constant: */ - /* PS_GLOBALS_MAX_BLUE_ZONES */ - /* */ - /* @description: */ - /* The maximum number of blue zones in a font global hints structure. */ - /* See @PS_Globals_BluesRec. */ - /* */ -#define PS_GLOBALS_MAX_BLUE_ZONES 16 - - - /*************************************************************************/ - /* */ - /* @constant: */ - /* PS_GLOBALS_MAX_STD_WIDTHS */ - /* */ - /* @description: */ - /* The maximum number of standard and snap widths in either the */ - /* horizontal or vertical direction. See @PS_Globals_WidthsRec. */ - /* */ -#define PS_GLOBALS_MAX_STD_WIDTHS 16 - - - /* standard and snap width */ - typedef struct PSH_WidthRec_ - { - FT_Int org; - FT_Pos cur; - FT_Pos fit; - - } PSH_WidthRec, *PSH_Width; - - - /* standard and snap widths table */ - typedef struct PSH_WidthsRec_ - { - FT_UInt count; - PSH_WidthRec widths[PS_GLOBALS_MAX_STD_WIDTHS]; - - } PSH_WidthsRec, *PSH_Widths; - - - typedef struct PSH_DimensionRec_ - { - PSH_WidthsRec stdw; - FT_Fixed scale_mult; - FT_Fixed scale_delta; - - } PSH_DimensionRec, *PSH_Dimension; - - - /* blue zone descriptor */ - typedef struct PSH_Blue_ZoneRec_ - { - FT_Int org_ref; - FT_Int org_delta; - FT_Int org_top; - FT_Int org_bottom; - - FT_Pos cur_ref; - FT_Pos cur_delta; - FT_Pos cur_bottom; - FT_Pos cur_top; - - } PSH_Blue_ZoneRec, *PSH_Blue_Zone; - - - typedef struct PSH_Blue_TableRec_ - { - FT_UInt count; - PSH_Blue_ZoneRec zones[PS_GLOBALS_MAX_BLUE_ZONES]; - - } PSH_Blue_TableRec, *PSH_Blue_Table; - - - /* blue zones table */ - typedef struct PSH_BluesRec_ - { - PSH_Blue_TableRec normal_top; - PSH_Blue_TableRec normal_bottom; - PSH_Blue_TableRec family_top; - PSH_Blue_TableRec family_bottom; - - FT_Fixed blue_scale; - FT_Int blue_shift; - FT_Int blue_threshold; - FT_Int blue_fuzz; - FT_Bool no_overshoots; - - } PSH_BluesRec, *PSH_Blues; - - - /* font globals. */ - /* dimension 0 => X coordinates + vertical hints/stems */ - /* dimension 1 => Y coordinates + horizontal hints/stems */ - typedef struct PSH_GlobalsRec_ - { - FT_Memory memory; - PSH_DimensionRec dimension[2]; - PSH_BluesRec blues; - - } PSH_GlobalsRec; - - -#define PSH_BLUE_ALIGN_NONE 0 -#define PSH_BLUE_ALIGN_TOP 1 -#define PSH_BLUE_ALIGN_BOT 2 - - - typedef struct PSH_AlignmentRec_ - { - int align; - FT_Pos align_top; - FT_Pos align_bot; - - } PSH_AlignmentRec, *PSH_Alignment; - - - FT_LOCAL( void ) - psh_globals_funcs_init( PSH_Globals_FuncsRec* funcs ); - - -#if 0 - /* snap a stem width to fitter coordinates. `org_width' is in font */ - /* units. The result is in device pixels (26.6 format). */ - FT_LOCAL( FT_Pos ) - psh_dimension_snap_width( PSH_Dimension dimension, - FT_Int org_width ); -#endif - - FT_LOCAL( FT_Error ) - psh_globals_set_scale( PSH_Globals globals, - FT_Fixed x_scale, - FT_Fixed y_scale, - FT_Fixed x_delta, - FT_Fixed y_delta ); - - /* snap a stem to one or two blue zones */ - FT_LOCAL( void ) - psh_blues_snap_stem( PSH_Blues blues, - FT_Int stem_top, - FT_Int stem_bot, - PSH_Alignment alignment ); - /* */ - -#ifdef DEBUG_HINTER - extern PSH_Globals ps_debug_globals; -#endif - - -FT_END_HEADER - - -#endif /* __PSHGLOB_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshinter.c b/nx-X11/extras/freetype2/src/pshinter/pshinter.c deleted file mode 100644 index 8e3f19309..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshinter.c +++ /dev/null @@ -1,28 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshinter.c */ -/* */ -/* FreeType PostScript Hinting module */ -/* */ -/* Copyright 2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "pshrec.c" -#include "pshglob.c" -#include "pshalgo.c" -#include "pshmod.c" - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshmod.c b/nx-X11/extras/freetype2/src/pshinter/pshmod.c deleted file mode 100644 index 5b18684c7..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshmod.c +++ /dev/null @@ -1,120 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshmod.c */ -/* */ -/* FreeType PostScript hinter module implementation (body). */ -/* */ -/* Copyright 2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include "pshrec.h" -#include "pshalgo.h" - - - /* the Postscript Hinter module structure */ - typedef struct PS_Hinter_Module_Rec_ - { - FT_ModuleRec root; - PS_HintsRec ps_hints; - - PSH_Globals_FuncsRec globals_funcs; - T1_Hints_FuncsRec t1_funcs; - T2_Hints_FuncsRec t2_funcs; - - } PS_Hinter_ModuleRec, *PS_Hinter_Module; - - - /* finalize module */ - FT_CALLBACK_DEF( void ) - ps_hinter_done( PS_Hinter_Module module ) - { - module->t1_funcs.hints = NULL; - module->t2_funcs.hints = NULL; - - ps_hints_done( &module->ps_hints ); - } - - - /* initialize module, create hints recorder and the interface */ - FT_CALLBACK_DEF( FT_Error ) - ps_hinter_init( PS_Hinter_Module module ) - { - FT_Memory memory = module->root.memory; - - - ps_hints_init( &module->ps_hints, memory ); - - psh_globals_funcs_init( &module->globals_funcs ); - - t1_hints_funcs_init( &module->t1_funcs ); - module->t1_funcs.hints = (T1_Hints)&module->ps_hints; - - t2_hints_funcs_init( &module->t2_funcs ); - module->t2_funcs.hints = (T2_Hints)&module->ps_hints; - - return 0; - } - - - /* returns global hints interface */ - FT_CALLBACK_DEF( PSH_Globals_Funcs ) - pshinter_get_globals_funcs( FT_Module module ) - { - return &((PS_Hinter_Module)module)->globals_funcs; - } - - - /* return Type 1 hints interface */ - FT_CALLBACK_DEF( T1_Hints_Funcs ) - pshinter_get_t1_funcs( FT_Module module ) - { - return &((PS_Hinter_Module)module)->t1_funcs; - } - - - /* return Type 2 hints interface */ - FT_CALLBACK_DEF( T2_Hints_Funcs ) - pshinter_get_t2_funcs( FT_Module module ) - { - return &((PS_Hinter_Module)module)->t2_funcs; - } - - - static - const PSHinter_Interface pshinter_interface = - { - pshinter_get_globals_funcs, - pshinter_get_t1_funcs, - pshinter_get_t2_funcs - }; - - - FT_CALLBACK_TABLE_DEF - const FT_Module_Class pshinter_module_class = - { - 0, - sizeof ( PS_Hinter_ModuleRec ), - "pshinter", - 0x10000L, - 0x20000L, - - &pshinter_interface, /* module-specific interface */ - - (FT_Module_Constructor)ps_hinter_init, - (FT_Module_Destructor) ps_hinter_done, - (FT_Module_Requester) 0 /* no additional interface for now */ - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshmod.h b/nx-X11/extras/freetype2/src/pshinter/pshmod.h deleted file mode 100644 index 1a91025b2..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshmod.h +++ /dev/null @@ -1,39 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshmod.h */ -/* */ -/* PostScript hinter module interface (specification). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PSHMOD_H__ -#define __PSHMOD_H__ - - -#include <ft2build.h> -#include FT_MODULE_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Module_Class ) pshinter_module_class; - - -FT_END_HEADER - - -#endif /* __PSHMOD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshnterr.h b/nx-X11/extras/freetype2/src/pshinter/pshnterr.h deleted file mode 100644 index 3c0029fbf..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshnterr.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshnterr.h */ -/* */ -/* PS Hinter error codes (specification only). */ -/* */ -/* Copyright 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the PSHinter error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __PSHNTERR_H__ -#define __PSHNTERR_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX PSH_Err_ -#define FT_ERR_BASE FT_Mod_Err_PShinter - -#include FT_ERRORS_H - -#endif /* __PSHNTERR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshrec.c b/nx-X11/extras/freetype2/src/pshinter/pshrec.c deleted file mode 100644 index 648de18bc..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshrec.c +++ /dev/null @@ -1,1215 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshrec.c */ -/* */ -/* FreeType PostScript hints recorder (body). */ -/* */ -/* Copyright 2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include "pshrec.h" -#include "pshalgo.h" - -#include "pshnterr.h" - -#undef FT_COMPONENT -#define FT_COMPONENT trace_pshrec - -#ifdef DEBUG_HINTER - PS_Hints ps_debug_hints = 0; - int ps_debug_no_horz_hints = 0; - int ps_debug_no_vert_hints = 0; -#endif - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PS_HINT MANAGEMENT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* destroy hints table */ - static void - ps_hint_table_done( PS_Hint_Table table, - FT_Memory memory ) - { - FT_FREE( table->hints ); - table->num_hints = 0; - table->max_hints = 0; - } - - - /* ensure that a table can contain "count" elements */ - static FT_Error - ps_hint_table_ensure( PS_Hint_Table table, - FT_UInt count, - FT_Memory memory ) - { - FT_UInt old_max = table->max_hints; - FT_UInt new_max = count; - FT_Error error = 0; - - - if ( new_max > old_max ) - { - /* try to grow the table */ - new_max = FT_PAD_CEIL( new_max, 8 ); - if ( !FT_RENEW_ARRAY( table->hints, old_max, new_max ) ) - table->max_hints = new_max; - } - return error; - } - - - static FT_Error - ps_hint_table_alloc( PS_Hint_Table table, - FT_Memory memory, - PS_Hint *ahint ) - { - FT_Error error = 0; - FT_UInt count; - PS_Hint hint = 0; - - - count = table->num_hints; - count++; - - if ( count >= table->max_hints ) - { - error = ps_hint_table_ensure( table, count, memory ); - if ( error ) - goto Exit; - } - - hint = table->hints + count - 1; - hint->pos = 0; - hint->len = 0; - hint->flags = 0; - - table->num_hints = count; - - Exit: - *ahint = hint; - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PS_MASK MANAGEMENT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* destroy mask */ - static void - ps_mask_done( PS_Mask mask, - FT_Memory memory ) - { - FT_FREE( mask->bytes ); - mask->num_bits = 0; - mask->max_bits = 0; - mask->end_point = 0; - } - - - /* ensure that a mask can contain "count" bits */ - static FT_Error - ps_mask_ensure( PS_Mask mask, - FT_UInt count, - FT_Memory memory ) - { - FT_UInt old_max = ( mask->max_bits + 7 ) >> 3; - FT_UInt new_max = ( count + 7 ) >> 3; - FT_Error error = 0; - - - if ( new_max > old_max ) - { - new_max = FT_PAD_CEIL( new_max, 8 ); - if ( !FT_RENEW_ARRAY( mask->bytes, old_max, new_max ) ) - mask->max_bits = new_max * 8; - } - return error; - } - - - /* test a bit value in a given mask */ - static FT_Int - ps_mask_test_bit( PS_Mask mask, - FT_Int idx ) - { - if ( (FT_UInt)idx >= mask->num_bits ) - return 0; - - return mask->bytes[idx >> 3] & ( 0x80 >> ( idx & 7 ) ); - } - - - /* clear a given bit */ - static void - ps_mask_clear_bit( PS_Mask mask, - FT_Int idx ) - { - FT_Byte* p; - - - if ( (FT_UInt)idx >= mask->num_bits ) - return; - - p = mask->bytes + ( idx >> 3 ); - p[0] = (FT_Byte)( p[0] & ~( 0x80 >> ( idx & 7 ) ) ); - } - - - /* set a given bit, possibly grow the mask */ - static FT_Error - ps_mask_set_bit( PS_Mask mask, - FT_Int idx, - FT_Memory memory ) - { - FT_Error error = 0; - FT_Byte* p; - - - if ( idx < 0 ) - goto Exit; - - if ( (FT_UInt)idx >= mask->num_bits ) - { - error = ps_mask_ensure( mask, idx + 1, memory ); - if ( error ) - goto Exit; - - mask->num_bits = idx + 1; - } - - p = mask->bytes + ( idx >> 3 ); - p[0] = (FT_Byte)( p[0] | ( 0x80 >> ( idx & 7 ) ) ); - - Exit: - return error; - } - - - /* destroy mask table */ - static void - ps_mask_table_done( PS_Mask_Table table, - FT_Memory memory ) - { - FT_UInt count = table->max_masks; - PS_Mask mask = table->masks; - - - for ( ; count > 0; count--, mask++ ) - ps_mask_done( mask, memory ); - - FT_FREE( table->masks ); - table->num_masks = 0; - table->max_masks = 0; - } - - - /* ensure that a mask table can contain "count" masks */ - static FT_Error - ps_mask_table_ensure( PS_Mask_Table table, - FT_UInt count, - FT_Memory memory ) - { - FT_UInt old_max = table->max_masks; - FT_UInt new_max = count; - FT_Error error = 0; - - - if ( new_max > old_max ) - { - new_max = FT_PAD_CEIL( new_max, 8 ); - if ( !FT_RENEW_ARRAY( table->masks, old_max, new_max ) ) - table->max_masks = new_max; - } - return error; - } - - - /* allocate a new mask in a table */ - static FT_Error - ps_mask_table_alloc( PS_Mask_Table table, - FT_Memory memory, - PS_Mask *amask ) - { - FT_UInt count; - FT_Error error = 0; - PS_Mask mask = 0; - - - count = table->num_masks; - count++; - - if ( count > table->max_masks ) - { - error = ps_mask_table_ensure( table, count, memory ); - if ( error ) - goto Exit; - } - - mask = table->masks + count - 1; - mask->num_bits = 0; - mask->end_point = 0; - table->num_masks = count; - - Exit: - *amask = mask; - return error; - } - - - /* return last hint mask in a table, create one if the table is empty */ - static FT_Error - ps_mask_table_last( PS_Mask_Table table, - FT_Memory memory, - PS_Mask *amask ) - { - FT_Error error = 0; - FT_UInt count; - PS_Mask mask; - - - count = table->num_masks; - if ( count == 0 ) - { - error = ps_mask_table_alloc( table, memory, &mask ); - if ( error ) - goto Exit; - } - else - mask = table->masks + count - 1; - - Exit: - *amask = mask; - return error; - } - - - /* set a new mask to a given bit range */ - static FT_Error - ps_mask_table_set_bits( PS_Mask_Table table, - FT_Byte* source, - FT_UInt bit_pos, - FT_UInt bit_count, - FT_Memory memory ) - { - FT_Error error = 0; - PS_Mask mask; - - - error = ps_mask_table_last( table, memory, &mask ); - if ( error ) - goto Exit; - - error = ps_mask_ensure( mask, bit_count, memory ); - if ( error ) - goto Exit; - - mask->num_bits = bit_count; - - /* now, copy bits */ - { - FT_Byte* read = source + ( bit_pos >> 3 ); - FT_Int rmask = 0x80 >> ( bit_pos & 7 ); - FT_Byte* write = mask->bytes; - FT_Int wmask = 0x80; - FT_Int val; - - - for ( ; bit_count > 0; bit_count-- ) - { - val = write[0] & ~wmask; - - if ( read[0] & rmask ) - val |= wmask; - - write[0] = (FT_Byte)val; - - rmask >>= 1; - if ( rmask == 0 ) - { - read++; - rmask = 0x80; - } - - wmask >>= 1; - if ( wmask == 0 ) - { - write++; - wmask = 0x80; - } - } - } - - Exit: - return error; - } - - - /* test whether two masks in a table intersect */ - static FT_Int - ps_mask_table_test_intersect( PS_Mask_Table table, - FT_Int index1, - FT_Int index2 ) - { - PS_Mask mask1 = table->masks + index1; - PS_Mask mask2 = table->masks + index2; - FT_Byte* p1 = mask1->bytes; - FT_Byte* p2 = mask2->bytes; - FT_UInt count1 = mask1->num_bits; - FT_UInt count2 = mask2->num_bits; - FT_UInt count; - - - count = ( count1 <= count2 ) ? count1 : count2; - for ( ; count >= 8; count -= 8 ) - { - if ( p1[0] & p2[0] ) - return 1; - - p1++; - p2++; - } - - if ( count == 0 ) - return 0; - - return ( p1[0] & p2[0] ) & ~( 0xFF >> count ); - } - - - /* merge two masks, used by ps_mask_table_merge_all */ - static FT_Error - ps_mask_table_merge( PS_Mask_Table table, - FT_Int index1, - FT_Int index2, - FT_Memory memory ) - { - FT_UInt temp; - FT_Error error = 0; - - - /* swap index1 and index2 so that index1 < index2 */ - if ( index1 > index2 ) - { - temp = index1; - index1 = index2; - index2 = temp; - } - - if ( index1 < index2 && index1 >= 0 && index2 < (FT_Int)table->num_masks ) - { - /* we need to merge the bitsets of index1 and index2 with a */ - /* simple union */ - PS_Mask mask1 = table->masks + index1; - PS_Mask mask2 = table->masks + index2; - FT_UInt count1 = mask1->num_bits; - FT_UInt count2 = mask2->num_bits; - FT_Int delta; - - - if ( count2 > 0 ) - { - FT_UInt pos; - FT_Byte* read; - FT_Byte* write; - - - /* if "count2" is greater than "count1", we need to grow the */ - /* first bitset, and clear the highest bits */ - if ( count2 > count1 ) - { - error = ps_mask_ensure( mask1, count2, memory ); - if ( error ) - goto Exit; - - for ( pos = count1; pos < count2; pos++ ) - ps_mask_clear_bit( mask1, pos ); - } - - /* merge (unite) the bitsets */ - read = mask2->bytes; - write = mask1->bytes; - pos = (FT_UInt)( ( count2 + 7 ) >> 3 ); - - for ( ; pos > 0; pos-- ) - { - write[0] = (FT_Byte)( write[0] | read[0] ); - write++; - read++; - } - } - - /* Now, remove "mask2" from the list. We need to keep the masks */ - /* sorted in order of importance, so move table elements. */ - mask2->num_bits = 0; - mask2->end_point = 0; - - delta = table->num_masks - 1 - index2; /* number of masks to move */ - if ( delta > 0 ) - { - /* move to end of table for reuse */ - PS_MaskRec dummy = *mask2; - - - ft_memmove( mask2, mask2 + 1, delta * sizeof ( PS_MaskRec ) ); - - mask2[delta] = dummy; - } - - table->num_masks--; - } - else - FT_ERROR(( "ps_mask_table_merge: ignoring invalid indices (%d,%d)\n", - index1, index2 )); - - Exit: - return error; - } - - - /* Try to merge all masks in a given table. This is used to merge */ - /* all counter masks into independent counter "paths". */ - /* */ - static FT_Error - ps_mask_table_merge_all( PS_Mask_Table table, - FT_Memory memory ) - { - FT_Int index1, index2; - FT_Error error = 0; - - - for ( index1 = table->num_masks - 1; index1 > 0; index1-- ) - { - for ( index2 = index1 - 1; index2 >= 0; index2-- ) - { - if ( ps_mask_table_test_intersect( table, index1, index2 ) ) - { - error = ps_mask_table_merge( table, index2, index1, memory ); - if ( error ) - goto Exit; - - break; - } - } - } - - Exit: - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PS_DIMENSION MANAGEMENT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* finalize a given dimension */ - static void - ps_dimension_done( PS_Dimension dimension, - FT_Memory memory ) - { - ps_mask_table_done( &dimension->counters, memory ); - ps_mask_table_done( &dimension->masks, memory ); - ps_hint_table_done( &dimension->hints, memory ); - } - - - /* initialize a given dimension */ - static void - ps_dimension_init( PS_Dimension dimension ) - { - dimension->hints.num_hints = 0; - dimension->masks.num_masks = 0; - dimension->counters.num_masks = 0; - } - - -#if 0 - - /* set a bit at a given index in the current hint mask */ - static FT_Error - ps_dimension_set_mask_bit( PS_Dimension dim, - FT_UInt idx, - FT_Memory memory ) - { - PS_Mask mask; - FT_Error error = 0; - - - /* get last hint mask */ - error = ps_mask_table_last( &dim->masks, memory, &mask ); - if ( error ) - goto Exit; - - error = ps_mask_set_bit( mask, idx, memory ); - - Exit: - return error; - } - -#endif - - /* set the end point in a mask, called from "End" & "Reset" methods */ - static void - ps_dimension_end_mask( PS_Dimension dim, - FT_UInt end_point ) - { - FT_UInt count = dim->masks.num_masks; - PS_Mask mask; - - - if ( count > 0 ) - { - mask = dim->masks.masks + count - 1; - mask->end_point = end_point; - } - } - - - /* set the end point in the current mask, then create a new empty one */ - /* (called by "Reset" method) */ - static FT_Error - ps_dimension_reset_mask( PS_Dimension dim, - FT_UInt end_point, - FT_Memory memory ) - { - PS_Mask mask; - - - /* end current mask */ - ps_dimension_end_mask( dim, end_point ); - - /* allocate new one */ - return ps_mask_table_alloc( &dim->masks, memory, &mask ); - } - - - /* set a new mask, called from the "T2Stem" method */ - static FT_Error - ps_dimension_set_mask_bits( PS_Dimension dim, - const FT_Byte* source, - FT_UInt source_pos, - FT_UInt source_bits, - FT_UInt end_point, - FT_Memory memory ) - { - FT_Error error = 0; - - - /* reset current mask, if any */ - error = ps_dimension_reset_mask( dim, end_point, memory ); - if ( error ) - goto Exit; - - /* set bits in new mask */ - error = ps_mask_table_set_bits( &dim->masks, (FT_Byte*)source, - source_pos, source_bits, memory ); - - Exit: - return error; - } - - - /* add a new single stem (called from "T1Stem" method) */ - static FT_Error - ps_dimension_add_t1stem( PS_Dimension dim, - FT_Int pos, - FT_Int len, - FT_Memory memory, - FT_Int *aindex ) - { - FT_Error error = 0; - FT_UInt flags = 0; - - - /* detect ghost stem */ - if ( len < 0 ) - { - flags |= PS_HINT_FLAG_GHOST; - if ( len == -21 ) - { - flags |= PS_HINT_FLAG_BOTTOM; - pos += len; - } - len = 0; - } - - if ( aindex ) - *aindex = -1; - - /* now, lookup stem in the current hints table */ - { - PS_Mask mask; - FT_UInt idx; - FT_UInt max = dim->hints.num_hints; - PS_Hint hint = dim->hints.hints; - - - for ( idx = 0; idx < max; idx++, hint++ ) - { - if ( hint->pos == pos && hint->len == len ) - break; - } - - /* we need to create a new hint in the table */ - if ( idx >= max ) - { - error = ps_hint_table_alloc( &dim->hints, memory, &hint ); - if ( error ) - goto Exit; - - hint->pos = pos; - hint->len = len; - hint->flags = flags; - } - - /* now, store the hint in the current mask */ - error = ps_mask_table_last( &dim->masks, memory, &mask ); - if ( error ) - goto Exit; - - error = ps_mask_set_bit( mask, idx, memory ); - if ( error ) - goto Exit; - - if ( aindex ) - *aindex = (FT_Int)idx; - } - - Exit: - return error; - } - - - /* add a "hstem3/vstem3" counter to our dimension table */ - static FT_Error - ps_dimension_add_counter( PS_Dimension dim, - FT_Int hint1, - FT_Int hint2, - FT_Int hint3, - FT_Memory memory ) - { - FT_Error error = 0; - FT_UInt count = dim->counters.num_masks; - PS_Mask counter = dim->counters.masks; - - - /* try to find an existing counter mask that already uses */ - /* one of these stems here */ - for ( ; count > 0; count--, counter++ ) - { - if ( ps_mask_test_bit( counter, hint1 ) || - ps_mask_test_bit( counter, hint2 ) || - ps_mask_test_bit( counter, hint3 ) ) - break; - } - - /* creat a new counter when needed */ - if ( count == 0 ) - { - error = ps_mask_table_alloc( &dim->counters, memory, &counter ); - if ( error ) - goto Exit; - } - - /* now, set the bits for our hints in the counter mask */ - error = ps_mask_set_bit( counter, hint1, memory ); - if ( error ) - goto Exit; - - error = ps_mask_set_bit( counter, hint2, memory ); - if ( error ) - goto Exit; - - error = ps_mask_set_bit( counter, hint3, memory ); - if ( error ) - goto Exit; - - Exit: - return error; - } - - - /* end of recording session for a given dimension */ - static FT_Error - ps_dimension_end( PS_Dimension dim, - FT_UInt end_point, - FT_Memory memory ) - { - /* end hint mask table */ - ps_dimension_end_mask( dim, end_point ); - - /* merge all counter masks into independent "paths" */ - return ps_mask_table_merge_all( &dim->counters, memory ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** PS_RECORDER MANAGEMENT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /* destroy hints */ - FT_LOCAL( void ) - ps_hints_done( PS_Hints hints ) - { - FT_Memory memory = hints->memory; - - - ps_dimension_done( &hints->dimension[0], memory ); - ps_dimension_done( &hints->dimension[1], memory ); - - hints->error = 0; - hints->memory = 0; - } - - - FT_LOCAL( FT_Error ) - ps_hints_init( PS_Hints hints, - FT_Memory memory ) - { - FT_MEM_ZERO( hints, sizeof ( *hints ) ); - hints->memory = memory; - return 0; - } - - - /* initialize a hints for a new session */ - static void - ps_hints_open( PS_Hints hints, - PS_Hint_Type hint_type ) - { - switch ( hint_type ) - { - case PS_HINT_TYPE_1: - case PS_HINT_TYPE_2: - hints->error = 0; - hints->hint_type = hint_type; - - ps_dimension_init( &hints->dimension[0] ); - ps_dimension_init( &hints->dimension[1] ); - break; - - default: - hints->error = PSH_Err_Invalid_Argument; - hints->hint_type = hint_type; - - FT_ERROR(( "ps_hints_open: invalid charstring type!\n" )); - break; - } - } - - - /* add one or more stems to the current hints table */ - static void - ps_hints_stem( PS_Hints hints, - FT_Int dimension, - FT_UInt count, - FT_Long* stems ) - { - if ( !hints->error ) - { - /* limit "dimension" to 0..1 */ - if ( dimension < 0 || dimension > 1 ) - { - FT_ERROR(( "ps_hints_stem: invalid dimension (%d) used\n", - dimension )); - dimension = ( dimension != 0 ); - } - - /* record the stems in the current hints/masks table */ - switch ( hints->hint_type ) - { - case PS_HINT_TYPE_1: /* Type 1 "hstem" or "vstem" operator */ - case PS_HINT_TYPE_2: /* Type 2 "hstem" or "vstem" operator */ - { - PS_Dimension dim = &hints->dimension[dimension]; - - - for ( ; count > 0; count--, stems += 2 ) - { - FT_Error error; - FT_Memory memory = hints->memory; - - - error = ps_dimension_add_t1stem( - dim, (FT_Int)stems[0], (FT_Int)stems[1], - memory, NULL ); - if ( error ) - { - FT_ERROR(( "ps_hints_stem: could not add stem" - " (%d,%d) to hints table\n", stems[0], stems[1] )); - - hints->error = error; - return; - } - } - break; - } - - default: - FT_ERROR(( "ps_hints_stem: called with invalid hint type (%d)\n", - hints->hint_type )); - break; - } - } - } - - - /* add one Type1 counter stem to the current hints table */ - static void - ps_hints_t1stem3( PS_Hints hints, - FT_Int dimension, - FT_Long* stems ) - { - FT_Error error = 0; - - - if ( !hints->error ) - { - PS_Dimension dim; - FT_Memory memory = hints->memory; - FT_Int count; - FT_Int idx[3]; - - - /* limit "dimension" to 0..1 */ - if ( dimension < 0 || dimension > 1 ) - { - FT_ERROR(( "ps_hints_t1stem3: invalid dimension (%d) used\n", - dimension )); - dimension = ( dimension != 0 ); - } - - dim = &hints->dimension[dimension]; - - /* there must be 6 elements in the 'stem' array */ - if ( hints->hint_type == PS_HINT_TYPE_1 ) - { - /* add the three stems to our hints/masks table */ - for ( count = 0; count < 3; count++, stems += 2 ) - { - error = ps_dimension_add_t1stem( - dim, (FT_Int)stems[0], (FT_Int)stems[1], - memory, &idx[count] ); - if ( error ) - goto Fail; - } - - /* now, add the hints to the counters table */ - error = ps_dimension_add_counter( dim, idx[0], idx[1], idx[2], - memory ); - if ( error ) - goto Fail; - } - else - { - FT_ERROR(( "ps_hints_t1stem3: called with invalid hint type!\n" )); - error = PSH_Err_Invalid_Argument; - goto Fail; - } - } - - return; - - Fail: - FT_ERROR(( "ps_hints_t1stem3: could not add counter stems to table\n" )); - hints->error = error; - } - - - /* reset hints (only with Type 1 hints) */ - static void - ps_hints_t1reset( PS_Hints hints, - FT_UInt end_point ) - { - FT_Error error = 0; - - - if ( !hints->error ) - { - FT_Memory memory = hints->memory; - - - if ( hints->hint_type == PS_HINT_TYPE_1 ) - { - error = ps_dimension_reset_mask( &hints->dimension[0], - end_point, memory ); - if ( error ) - goto Fail; - - error = ps_dimension_reset_mask( &hints->dimension[1], - end_point, memory ); - if ( error ) - goto Fail; - } - else - { - /* invalid hint type */ - error = PSH_Err_Invalid_Argument; - goto Fail; - } - } - return; - - Fail: - hints->error = error; - } - - - /* Type2 "hintmask" operator, add a new hintmask to each direction */ - static void - ps_hints_t2mask( PS_Hints hints, - FT_UInt end_point, - FT_UInt bit_count, - const FT_Byte* bytes ) - { - FT_Error error; - - - if ( !hints->error ) - { - PS_Dimension dim = hints->dimension; - FT_Memory memory = hints->memory; - FT_UInt count1 = dim[0].hints.num_hints; - FT_UInt count2 = dim[1].hints.num_hints; - - - /* check bit count; must be equal to current total hint count */ - if ( bit_count != count1 + count2 ) - { - FT_ERROR(( "ps_hints_t2mask: " - "called with invalid bitcount %d (instead of %d)\n", - bit_count, count1 + count2 )); - - /* simply ignore the operator */ - return; - } - - /* set-up new horizontal and vertical hint mask now */ - error = ps_dimension_set_mask_bits( &dim[0], bytes, count2, count1, - end_point, memory ); - if ( error ) - goto Fail; - - error = ps_dimension_set_mask_bits( &dim[1], bytes, 0, count2, - end_point, memory ); - if ( error ) - goto Fail; - } - return; - - Fail: - hints->error = error; - } - - - static void - ps_hints_t2counter( PS_Hints hints, - FT_UInt bit_count, - const FT_Byte* bytes ) - { - FT_Error error; - - - if ( !hints->error ) - { - PS_Dimension dim = hints->dimension; - FT_Memory memory = hints->memory; - FT_UInt count1 = dim[0].hints.num_hints; - FT_UInt count2 = dim[1].hints.num_hints; - - - /* check bit count, must be equal to current total hint count */ - if ( bit_count != count1 + count2 ) - { - FT_ERROR(( "ps_hints_t2counter: " - "called with invalid bitcount %d (instead of %d)\n", - bit_count, count1 + count2 )); - - /* simply ignore the operator */ - return; - } - - /* set-up new horizontal and vertical hint mask now */ - error = ps_dimension_set_mask_bits( &dim[0], bytes, 0, count1, - 0, memory ); - if ( error ) - goto Fail; - - error = ps_dimension_set_mask_bits( &dim[1], bytes, count1, count2, - 0, memory ); - if ( error ) - goto Fail; - } - return; - - Fail: - hints->error = error; - } - - - /* end recording session */ - static FT_Error - ps_hints_close( PS_Hints hints, - FT_UInt end_point ) - { - FT_Error error; - - - error = hints->error; - if ( !error ) - { - FT_Memory memory = hints->memory; - PS_Dimension dim = hints->dimension; - - - error = ps_dimension_end( &dim[0], end_point, memory ); - if ( !error ) - { - error = ps_dimension_end( &dim[1], end_point, memory ); - } - } - -#ifdef DEBUG_HINTER - if ( !error ) - ps_debug_hints = hints; -#endif - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE 1 HINTS RECORDING INTERFACE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static void - t1_hints_open( T1_Hints hints ) - { - ps_hints_open( (PS_Hints)hints, PS_HINT_TYPE_1 ); - } - - static void - t1_hints_stem( T1_Hints hints, - FT_Int dimension, - FT_Long* coords ) - { - ps_hints_stem( (PS_Hints)hints, dimension, 1, coords ); - } - - - FT_LOCAL_DEF( void ) - t1_hints_funcs_init( T1_Hints_FuncsRec* funcs ) - { - FT_MEM_ZERO( (char*)funcs, sizeof ( *funcs ) ); - - funcs->open = (T1_Hints_OpenFunc) t1_hints_open; - funcs->close = (T1_Hints_CloseFunc) ps_hints_close; - funcs->stem = (T1_Hints_SetStemFunc) t1_hints_stem; - funcs->stem3 = (T1_Hints_SetStem3Func)ps_hints_t1stem3; - funcs->reset = (T1_Hints_ResetFunc) ps_hints_t1reset; - funcs->apply = (T1_Hints_ApplyFunc) ps_hints_apply; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE 2 HINTS RECORDING INTERFACE *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static void - t2_hints_open( T2_Hints hints ) - { - ps_hints_open( (PS_Hints)hints, PS_HINT_TYPE_2 ); - } - - - static void - t2_hints_stems( T2_Hints hints, - FT_Int dimension, - FT_Int count, - FT_Fixed* coords ) - { - FT_Pos stems[32], y, n; - FT_Int total = count; - - - y = 0; - while ( total > 0 ) - { - /* determine number of stems to write */ - count = total; - if ( count > 16 ) - count = 16; - - /* compute integer stem positions in font units */ - for ( n = 0; n < count * 2; n++ ) - { - y += coords[n]; - stems[n] = ( y + 0x8000L ) >> 16; - } - - /* compute lengths */ - for ( n = 0; n < count * 2; n += 2 ) - stems[n + 1] = stems[n + 1] - stems[n]; - - /* add them to the current dimension */ - ps_hints_stem( (PS_Hints)hints, dimension, count, stems ); - - total -= count; - } - } - - - FT_LOCAL_DEF( void ) - t2_hints_funcs_init( T2_Hints_FuncsRec* funcs ) - { - FT_MEM_ZERO( funcs, sizeof ( *funcs ) ); - - funcs->open = (T2_Hints_OpenFunc) t2_hints_open; - funcs->close = (T2_Hints_CloseFunc) ps_hints_close; - funcs->stems = (T2_Hints_StemsFunc) t2_hints_stems; - funcs->hintmask= (T2_Hints_MaskFunc) ps_hints_t2mask; - funcs->counter = (T2_Hints_CounterFunc)ps_hints_t2counter; - funcs->apply = (T2_Hints_ApplyFunc) ps_hints_apply; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/pshrec.h b/nx-X11/extras/freetype2/src/pshinter/pshrec.h deleted file mode 100644 index 0159e9cd5..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/pshrec.h +++ /dev/null @@ -1,176 +0,0 @@ -/***************************************************************************/ -/* */ -/* pshrec.h */ -/* */ -/* Postscript (Type1/Type2) hints recorder (specification). */ -/* */ -/* Copyright 2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /**************************************************************************/ - /* */ - /* The functions defined here are called from the Type 1, CID and CFF */ - /* font drivers to record the hints of a given character/glyph. */ - /* */ - /* The hints are recorded in a unified format, and are later processed */ - /* by the "optimizer" and "fitter" to adjust the outlines to the pixel */ - /* grid. */ - /* */ - /**************************************************************************/ - - -#ifndef __PSHREC_H__ -#define __PSHREC_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_POSTSCRIPT_HINTS_H -#include "pshglob.h" - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GLYPH HINTS RECORDER INTERNALS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /* handle to hint record */ - typedef struct PS_HintRec_* PS_Hint; - - /* hint types */ - typedef enum - { - PS_HINT_TYPE_1 = 1, - PS_HINT_TYPE_2 = 2 - - } PS_Hint_Type; - - - /* hint flags */ - typedef enum - { - PS_HINT_FLAG_GHOST = 1, - PS_HINT_FLAG_BOTTOM = 2 - - } PS_Hint_Flags; - - - /* hint descriptor */ - typedef struct PS_HintRec_ - { - FT_Int pos; - FT_Int len; - FT_UInt flags; - - } PS_HintRec; - - -#define ps_hint_is_active( x ) ( (x)->flags & PS_HINT_FLAG_ACTIVE ) -#define ps_hint_is_ghost( x ) ( (x)->flags & PS_HINT_FLAG_GHOST ) -#define ps_hint_is_bottom( x ) ( (x)->flags & PS_HINT_FLAG_BOTTOM ) - - - /* hints table descriptor */ - typedef struct PS_Hint_TableRec_ - { - FT_UInt num_hints; - FT_UInt max_hints; - PS_Hint hints; - - } PS_Hint_TableRec, *PS_Hint_Table; - - - /* hint and counter mask descriptor */ - typedef struct PS_MaskRec_ - { - FT_UInt num_bits; - FT_UInt max_bits; - FT_Byte* bytes; - FT_UInt end_point; - - } PS_MaskRec, *PS_Mask; - - - /* masks and counters table descriptor */ - typedef struct PS_Mask_TableRec_ - { - FT_UInt num_masks; - FT_UInt max_masks; - PS_Mask masks; - - } PS_Mask_TableRec, *PS_Mask_Table; - - - /* dimension-specific hints descriptor */ - typedef struct PS_DimensionRec_ - { - PS_Hint_TableRec hints; - PS_Mask_TableRec masks; - PS_Mask_TableRec counters; - - } PS_DimensionRec, *PS_Dimension; - - - /* glyph hints descriptor */ - /* dimension 0 => X coordinates + vertical hints/stems */ - /* dimension 1 => Y coordinates + horizontal hints/stems */ - typedef struct PS_HintsRec_ - { - FT_Memory memory; - FT_Error error; - FT_UInt32 magic; - PS_Hint_Type hint_type; - PS_DimensionRec dimension[2]; - - } PS_HintsRec, *PS_Hints; - - /* */ - - /* initialize hints recorder */ - FT_LOCAL( FT_Error ) - ps_hints_init( PS_Hints hints, - FT_Memory memory ); - - /* finalize hints recorder */ - FT_LOCAL( void ) - ps_hints_done( PS_Hints hints ); - - /* initialize Type1 hints recorder interface */ - FT_LOCAL( void ) - t1_hints_funcs_init( T1_Hints_FuncsRec* funcs ); - - /* initialize Type2 hints recorder interface */ - FT_LOCAL( void ) - t2_hints_funcs_init( T2_Hints_FuncsRec* funcs ); - - -#ifdef DEBUG_HINTER - extern PS_Hints ps_debug_hints; - extern int ps_debug_no_horz_hints; - extern int ps_debug_no_vert_hints; -#endif - - /* */ - - -FT_END_HEADER - - -#endif /* __PS_HINTER_RECORD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/pshinter/rules.mk b/nx-X11/extras/freetype2/src/pshinter/rules.mk deleted file mode 100644 index 57773394a..000000000 --- a/nx-X11/extras/freetype2/src/pshinter/rules.mk +++ /dev/null @@ -1,72 +0,0 @@ -# -# FreeType 2 PSHinter driver configuration rules -# - - -# Copyright 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# PSHINTER driver directory -# -PSHINTER_DIR := $(SRC_DIR)/pshinter - - -# compilation flags for the driver -# -PSHINTER_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSHINTER_DIR)) - - -# PSHINTER driver sources (i.e., C files) -# -PSHINTER_DRV_SRC := $(PSHINTER_DIR)/pshrec.c \ - $(PSHINTER_DIR)/pshglob.c \ - $(PSHINTER_DIR)/pshmod.c \ - $(PSHINTER_DIR)/pshalgo.c - - -# PSHINTER driver headers -# -PSHINTER_DRV_H := $(PSHINTER_DRV_SRC:%c=%h) \ - $(PSHINTER_DIR)/pshnterr.h - - -# PSHINTER driver object(s) -# -# PSHINTER_DRV_OBJ_M is used during `multi' builds. -# PSHINTER_DRV_OBJ_S is used during `single' builds. -# -PSHINTER_DRV_OBJ_M := $(PSHINTER_DRV_SRC:$(PSHINTER_DIR)/%.c=$(OBJ_DIR)/%.$O) -PSHINTER_DRV_OBJ_S := $(OBJ_DIR)/pshinter.$O - -# PSHINTER driver source file for single build -# -PSHINTER_DRV_SRC_S := $(PSHINTER_DIR)/pshinter.c - - -# PSHINTER driver - single object -# -$(PSHINTER_DRV_OBJ_S): $(PSHINTER_DRV_SRC_S) $(PSHINTER_DRV_SRC) \ - $(FREETYPE_H) $(PSHINTER_DRV_H) - $(PSHINTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSHINTER_DRV_SRC_S)) - - -# PSHINTER driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(PSHINTER_DIR)/%.c $(FREETYPE_H) $(PSHINTER_DRV_H) - $(PSHINTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(PSHINTER_DRV_OBJ_S) -DRV_OBJS_M += $(PSHINTER_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/psnames/Jamfile b/nx-X11/extras/freetype2/src/psnames/Jamfile deleted file mode 100644 index e75ae1e7a..000000000 --- a/nx-X11/extras/freetype2/src/psnames/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/psnames Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) psnames ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = psmodule ; - } - else - { - _sources = psnames ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/psnames Jamfile diff --git a/nx-X11/extras/freetype2/src/psnames/descrip.mms b/nx-X11/extras/freetype2/src/psnames/descrip.mms deleted file mode 100644 index 6a66b9fa3..000000000 --- a/nx-X11/extras/freetype2/src/psnames/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 PSNames driver compilation rules for VMS -# - - -# Copyright 2001, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.psnames]) - -OBJS=psnames.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/psnames/module.mk b/nx-X11/extras/freetype2/src/psnames/module.mk deleted file mode 100644 index e1e59c46b..000000000 --- a/nx-X11/extras/freetype2/src/psnames/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 PSnames module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_psnames_module - -add_psnames_module: - $(OPEN_DRIVER)psnames_module_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)psnames $(ECHO_DRIVER_DESC)Postscript & Unicode Glyph name handling$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/psnames/psmodule.c b/nx-X11/extras/freetype2/src/psnames/psmodule.c deleted file mode 100644 index f6d6ae328..000000000 --- a/nx-X11/extras/freetype2/src/psnames/psmodule.c +++ /dev/null @@ -1,408 +0,0 @@ -/***************************************************************************/ -/* */ -/* psmodule.c */ -/* */ -/* PSNames module implementation (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H - -#include "psmodule.h" -#include "pstables.h" - -#include "psnamerr.h" - - -#ifndef FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES - - -#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - - /* return the Unicode value corresponding to a given glyph. Note that */ - /* we do deal with glyph variants by detecting a non-initial dot in */ - /* the name, as in `A.swash' or `e.final', etc. */ - /* */ - static FT_UInt32 - ps_unicode_value( const char* glyph_name ) - { - FT_Int n; - char first = glyph_name[0]; - char temp[64]; - - - /* If the name begins with `uni', then the glyph name may be a */ - /* hard-coded unicode character code. */ - if ( glyph_name[0] == 'u' && - glyph_name[1] == 'n' && - glyph_name[2] == 'i' ) - { - /* determine whether the next four characters following are */ - /* hexadecimal. */ - - /* XXX: Add code to deal with ligatures, i.e. glyph names like */ - /* `uniXXXXYYYYZZZZ'... */ - - FT_Int count; - FT_ULong value = 0; - const char* p = glyph_name + 3; - - - for ( count = 4; count > 0; count--, p++ ) - { - char c = *p; - unsigned int d; - - - d = (unsigned char)c - '0'; - if ( d >= 10 ) - { - d = (unsigned char)c - 'A'; - if ( d >= 6 ) - d = 16; - else - d += 10; - } - - /* exit if a non-uppercase hexadecimal character was found */ - if ( d >= 16 ) - break; - - value = ( value << 4 ) + d; - } - - /* there must be exactly four hex digits */ - if ( ( *p == '\0' || *p == '.' ) && count == 0 ) - return value; - } - - /* If the name begins with `u', followed by four to six uppercase */ - /* hexadicimal digits, it is a hard-coded unicode character code. */ - if ( glyph_name[0] == 'u' ) - { - FT_Int count; - FT_ULong value = 0; - const char* p = glyph_name + 1; - - - for ( count = 6; count > 0; count--, p++ ) - { - char c = *p; - unsigned int d; - - - d = (unsigned char)c - '0'; - if ( d >= 10 ) - { - d = (unsigned char)c - 'A'; - if ( d >= 6 ) - d = 16; - else - d += 10; - } - - if ( d >= 16 ) - break; - - value = ( value << 4 ) + d; - } - - if ( ( *p == '\0' || *p == '.' ) && count <= 2 ) - return value; - } - - /* look for a non-initial dot in the glyph name in order to */ - /* sort-out variants like `A.swash', `e.final', etc. */ - { - const char* p; - int len; - - - p = glyph_name; - - while ( *p && *p != '.' ) - p++; - - len = (int)( p - glyph_name ); - - if ( *p && len < 64 ) - { - ft_strncpy( temp, glyph_name, len ); - temp[len] = 0; - glyph_name = temp; - } - } - - /* now, look up the glyph in the Adobe Glyph List */ - for ( n = 0; n < NUM_ADOBE_GLYPHS; n++ ) - { - const char* name = sid_standard_names[n]; - - - if ( first == name[0] && ft_strcmp( glyph_name, name ) == 0 ) - return ps_names_to_unicode[n]; - } - - /* not found, there is probably no Unicode value for this glyph name */ - return 0; - } - - - /* ft_qsort callback to sort the unicode map */ - FT_CALLBACK_DEF( int ) - compare_uni_maps( const void* a, - const void* b ) - { - PS_UniMap* map1 = (PS_UniMap*)a; - PS_UniMap* map2 = (PS_UniMap*)b; - - - return ( map1->unicode - map2->unicode ); - } - - - /* Builds a table that maps Unicode values to glyph indices */ - static FT_Error - ps_unicodes_init( FT_Memory memory, - FT_UInt num_glyphs, - const char** glyph_names, - PS_Unicodes* table ) - { - FT_Error error; - - - /* we first allocate the table */ - table->num_maps = 0; - table->maps = 0; - - if ( !FT_NEW_ARRAY( table->maps, num_glyphs ) ) - { - FT_UInt n; - FT_UInt count; - PS_UniMap* map; - FT_UInt32 uni_char; - - - map = table->maps; - - for ( n = 0; n < num_glyphs; n++ ) - { - const char* gname = glyph_names[n]; - - - if ( gname ) - { - uni_char = ps_unicode_value( gname ); - - if ( uni_char != 0 && uni_char != 0xFFFFL ) - { - map->unicode = (FT_UInt)uni_char; - map->glyph_index = n; - map++; - } - } - } - - /* now, compress the table a bit */ - count = (FT_UInt)( map - table->maps ); - - if ( count > 0 && FT_REALLOC( table->maps, - num_glyphs * sizeof ( PS_UniMap ), - count * sizeof ( PS_UniMap ) ) ) - count = 0; - - if ( count == 0 ) - { - FT_FREE( table->maps ); - if ( !error ) - error = PSnames_Err_Invalid_Argument; /* no unicode chars here! */ - } - else - /* sort the table in increasing order of unicode values */ - ft_qsort( table->maps, count, sizeof ( PS_UniMap ), compare_uni_maps ); - - table->num_maps = count; - } - - return error; - } - - - static FT_UInt - ps_unicodes_char_index( PS_Unicodes* table, - FT_ULong unicode ) - { - PS_UniMap *min, *max, *mid; - - - /* perform a binary search on the table */ - - min = table->maps; - max = min + table->num_maps - 1; - - while ( min <= max ) - { - mid = min + ( max - min ) / 2; - if ( mid->unicode == unicode ) - return mid->glyph_index; - - if ( min == max ) - break; - - if ( mid->unicode < unicode ) - min = mid + 1; - else - max = mid - 1; - } - - return 0xFFFFU; - } - - - static FT_ULong - ps_unicodes_char_next( PS_Unicodes* table, - FT_ULong unicode ) - { - PS_UniMap *min, *max, *mid; - - - unicode++; - /* perform a binary search on the table */ - - min = table->maps; - max = min + table->num_maps - 1; - - while ( min <= max ) - { - mid = min + ( max - min ) / 2; - if ( mid->unicode == unicode ) - return unicode; - - if ( min == max ) - break; - - if ( mid->unicode < unicode ) - min = mid + 1; - else - max = mid - 1; - } - - if ( max < table->maps ) - max = table->maps; - - while ( max < table->maps + table->num_maps ) - { - if ( unicode < max->unicode ) - return max->unicode; - max++; - } - - return 0; - } - - -#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */ - - - static const char* - ps_get_macintosh_name( FT_UInt name_index ) - { - if ( name_index >= 258 ) - name_index = 0; - - return ps_glyph_names[mac_standard_names[name_index]]; - } - - - static const char* - ps_get_standard_strings( FT_UInt sid ) - { - return ( sid < NUM_SID_GLYPHS ? sid_standard_names[sid] : 0 ); - } - - - static - const FT_Service_PsCMapsRec pscmaps_interface = - { -#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - (PS_Unicode_ValueFunc) ps_unicode_value, - (PS_Unicodes_InitFunc) ps_unicodes_init, - (PS_Unicodes_CharIndexFunc)ps_unicodes_char_index, - (PS_Unicodes_CharNextFunc) ps_unicodes_char_next, - -#else - - 0, - 0, - 0, - 0, - -#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */ - - (PS_Macintosh_Name_Func) ps_get_macintosh_name, - (PS_Adobe_Std_Strings_Func)ps_get_standard_strings, - - t1_standard_encoding, - t1_expert_encoding - }; - - - static const FT_ServiceDescRec pscmaps_services[] = - { - { FT_SERVICE_ID_POSTSCRIPT_CMAPS, &pscmaps_interface }, - { NULL, NULL } - }; - - - static FT_Pointer - psnames_get_service( FT_Module module, - const char* service_id ) - { - FT_UNUSED( module ); - - return ft_service_list_lookup( pscmaps_services, service_id ); - } - -#endif /* !FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES */ - - - - FT_CALLBACK_TABLE_DEF - const FT_Module_Class psnames_module_class = - { - 0, /* this is not a font driver, nor a renderer */ - sizeof ( FT_ModuleRec ), - - "psnames", /* driver name */ - 0x10000L, /* driver version */ - 0x20000L, /* driver requires FreeType 2 or above */ - -#ifdef FT_CONFIG_OPTION_NO_POSTSCRIPT_NAMES - 0, - (FT_Module_Constructor)0, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 -#else - (void*)&pscmaps_interface, /* module specific interface */ - (FT_Module_Constructor)0, - (FT_Module_Destructor) 0, - (FT_Module_Requester) psnames_get_service -#endif - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psnames/psmodule.h b/nx-X11/extras/freetype2/src/psnames/psmodule.h deleted file mode 100644 index 232fdfb9a..000000000 --- a/nx-X11/extras/freetype2/src/psnames/psmodule.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************/ -/* */ -/* psmodule.h */ -/* */ -/* High-level PSNames module interface (specification). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __PSMODULE_H__ -#define __PSMODULE_H__ - - -#include <ft2build.h> -#include FT_MODULE_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Module_Class ) psnames_module_class; - - -FT_END_HEADER - -#endif /* __PSMODULE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psnames/psnamerr.h b/nx-X11/extras/freetype2/src/psnames/psnamerr.h deleted file mode 100644 index ae1541d96..000000000 --- a/nx-X11/extras/freetype2/src/psnames/psnamerr.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************/ -/* */ -/* psnamerr.h */ -/* */ -/* PS names module error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the PS names module error enumeration */ - /* constants. */ - /* */ - /*************************************************************************/ - -#ifndef __PSNAMERR_H__ -#define __PSNAMERR_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX PSnames_Err_ -#define FT_ERR_BASE FT_Mod_Err_PSnames - -#include FT_ERRORS_H - -#endif /* __PSNAMERR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psnames/psnames.c b/nx-X11/extras/freetype2/src/psnames/psnames.c deleted file mode 100644 index d6ed998bf..000000000 --- a/nx-X11/extras/freetype2/src/psnames/psnames.c +++ /dev/null @@ -1,25 +0,0 @@ -/***************************************************************************/ -/* */ -/* psnames.c */ -/* */ -/* FreeType PSNames module component (body only). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "psmodule.c" - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psnames/pstables.h b/nx-X11/extras/freetype2/src/psnames/pstables.h deleted file mode 100644 index 7c0739375..000000000 --- a/nx-X11/extras/freetype2/src/psnames/pstables.h +++ /dev/null @@ -1,9437 +0,0 @@ -/***************************************************************************/ -/* */ -/* pstables.h.new */ -/* */ -/* PostScript glyph names (specification only). */ -/* */ -/* Copyright 2000-2001, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /* this file has been generated automatically -- do not edit! */ - - - static const char* const ps_glyph_names[] = - { - ".null", - "nonmarkingreturn", - ".notdef", - "space", - "exclam", - "quotedbl", - "numbersign", - "dollar", - "percent", - "ampersand", - "quoteright", - "parenleft", - "parenright", - "asterisk", - "plus", - "comma", - "hyphen", - "period", - "slash", - "zero", - "one", - "two", - "three", - "four", - "five", - "six", - "seven", - "eight", - "nine", - "colon", - "semicolon", - "less", - "equal", - "greater", - "question", - "at", - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", - "bracketleft", - "backslash", - "bracketright", - "asciicircum", - "underscore", - "quoteleft", - "a", - "b", - "c", - "d", - "e", - "f", - "g", - "h", - "i", - "j", - "k", - "l", - "m", - "n", - "o", - "p", - "q", - "r", - "s", - "t", - "u", - "v", - "w", - "x", - "y", - "z", - "braceleft", - "bar", - "braceright", - "asciitilde", - "exclamdown", - "cent", - "sterling", - "fraction", - "yen", - "florin", - "section", - "currency", - "quotesingle", - "quotedblleft", - "guillemotleft", - "guilsinglleft", - "guilsinglright", - "fi", - "fl", - "endash", - "dagger", - "daggerdbl", - "periodcentered", - "paragraph", - "bullet", - "quotesinglbase", - "quotedblbase", - "quotedblright", - "guillemotright", - "ellipsis", - "perthousand", - "questiondown", - "grave", - "acute", - "circumflex", - "tilde", - "macron", - "breve", - "dotaccent", - "dieresis", - "ring", - "cedilla", - "hungarumlaut", - "ogonek", - "caron", - "emdash", - "AE", - "ordfeminine", - "Lslash", - "Oslash", - "OE", - "ordmasculine", - "ae", - "dotlessi", - "lslash", - "oslash", - "oe", - "germandbls", - "onesuperior", - "logicalnot", - "mu", - "trademark", - "Eth", - "onehalf", - "plusminus", - "Thorn", - "onequarter", - "divide", - "brokenbar", - "degree", - "thorn", - "threequarters", - "twosuperior", - "registered", - "minus", - "eth", - "multiply", - "threesuperior", - "copyright", - "Aacute", - "Acircumflex", - "Adieresis", - "Agrave", - "Aring", - "Atilde", - "Ccedilla", - "Eacute", - "Ecircumflex", - "Edieresis", - "Egrave", - "Iacute", - "Icircumflex", - "Idieresis", - "Igrave", - "Ntilde", - "Oacute", - "Ocircumflex", - "Odieresis", - "Ograve", - "Otilde", - "Scaron", - "Uacute", - "Ucircumflex", - "Udieresis", - "Ugrave", - "Yacute", - "Ydieresis", - "Zcaron", - "aacute", - "acircumflex", - "adieresis", - "agrave", - "aring", - "atilde", - "ccedilla", - "eacute", - "ecircumflex", - "edieresis", - "egrave", - "iacute", - "icircumflex", - "idieresis", - "igrave", - "ntilde", - "oacute", - "ocircumflex", - "odieresis", - "ograve", - "otilde", - "scaron", - "uacute", - "ucircumflex", - "udieresis", - "ugrave", - "yacute", - "ydieresis", - "zcaron", - "exclamsmall", - "Hungarumlautsmall", - "dollaroldstyle", - "dollarsuperior", - "ampersandsmall", - "Acutesmall", - "parenleftsuperior", - "parenrightsuperior", - "twodotenleader", - "onedotenleader", - "zerooldstyle", - "oneoldstyle", - "twooldstyle", - "threeoldstyle", - "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", - "sevenoldstyle", - "eightoldstyle", - "nineoldstyle", - "commasuperior", - "threequartersemdash", - "periodsuperior", - "questionsmall", - "asuperior", - "bsuperior", - "centsuperior", - "dsuperior", - "esuperior", - "isuperior", - "lsuperior", - "msuperior", - "nsuperior", - "osuperior", - "rsuperior", - "ssuperior", - "tsuperior", - "ff", - "ffi", - "ffl", - "parenleftinferior", - "parenrightinferior", - "Circumflexsmall", - "hyphensuperior", - "Gravesmall", - "Asmall", - "Bsmall", - "Csmall", - "Dsmall", - "Esmall", - "Fsmall", - "Gsmall", - "Hsmall", - "Ismall", - "Jsmall", - "Ksmall", - "Lsmall", - "Msmall", - "Nsmall", - "Osmall", - "Psmall", - "Qsmall", - "Rsmall", - "Ssmall", - "Tsmall", - "Usmall", - "Vsmall", - "Wsmall", - "Xsmall", - "Ysmall", - "Zsmall", - "colonmonetary", - "onefitted", - "rupiah", - "Tildesmall", - "exclamdownsmall", - "centoldstyle", - "Lslashsmall", - "Scaronsmall", - "Zcaronsmall", - "Dieresissmall", - "Brevesmall", - "Caronsmall", - "Dotaccentsmall", - "Macronsmall", - "figuredash", - "hypheninferior", - "Ogoneksmall", - "Ringsmall", - "Cedillasmall", - "questiondownsmall", - "oneeighth", - "threeeighths", - "fiveeighths", - "seveneighths", - "onethird", - "twothirds", - "zerosuperior", - "foursuperior", - "fivesuperior", - "sixsuperior", - "sevensuperior", - "eightsuperior", - "ninesuperior", - "zeroinferior", - "oneinferior", - "twoinferior", - "threeinferior", - "fourinferior", - "fiveinferior", - "sixinferior", - "seveninferior", - "eightinferior", - "nineinferior", - "centinferior", - "dollarinferior", - "periodinferior", - "commainferior", - "Agravesmall", - "Aacutesmall", - "Acircumflexsmall", - "Atildesmall", - "Adieresissmall", - "Aringsmall", - "AEsmall", - "Ccedillasmall", - "Egravesmall", - "Eacutesmall", - "Ecircumflexsmall", - "Edieresissmall", - "Igravesmall", - "Iacutesmall", - "Icircumflexsmall", - "Idieresissmall", - "Ethsmall", - "Ntildesmall", - "Ogravesmall", - "Oacutesmall", - "Ocircumflexsmall", - "Otildesmall", - "Odieresissmall", - "OEsmall", - "Oslashsmall", - "Ugravesmall", - "Uacutesmall", - "Ucircumflexsmall", - "Udieresissmall", - "Yacutesmall", - "Thornsmall", - "Ydieresissmall", - "001.000", - "001.001", - "001.002", - "001.003", - "Black", - "Bold", - "Book", - "Light", - "Medium", - "Regular", - "Roman", - "Semibold", - -#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - "AEacute", - "AEmacron", - "Abreve", - "Abreveacute", - "Abrevecyrillic", - "Abrevedotbelow", - "Abrevegrave", - "Abrevehookabove", - "Abrevetilde", - "Acaron", - "Acircle", - "Acircumflexacute", - "Acircumflexdotbelow", - "Acircumflexgrave", - "Acircumflexhookabove", - "Acircumflextilde", - "Acute", - "Acyrillic", - "Adblgrave", - "Adieresiscyrillic", - "Adieresismacron", - "Adotbelow", - "Adotmacron", - "Ahookabove", - "Aiecyrillic", - "Ainvertedbreve", - "Alpha", - "Alphatonos", - "Amacron", - "Amonospace", - "Aogonek", - "Aringacute", - "Aringbelow", - "Aybarmenian", - "Bcircle", - "Bdotaccent", - "Bdotbelow", - "Becyrillic", - "Benarmenian", - "Beta", - "Bhook", - "Blinebelow", - "Bmonospace", - "Btopbar", - "Caarmenian", - "Cacute", - "Caron", - "Ccaron", - "Ccedillaacute", - "Ccircle", - "Ccircumflex", - "Cdot", - "Cdotaccent", - "Chaarmenian", - "Cheabkhasiancyrillic", - "Checyrillic", - "Chedescenderabkhasiancyrillic", - "Chedescendercyrillic", - "Chedieresiscyrillic", - "Cheharmenian", - "Chekhakassiancyrillic", - "Cheverticalstrokecyrillic", - "Chi", - "Chook", - "Cmonospace", - "Coarmenian", - "DZ", - "DZcaron", - "Daarmenian", - "Dafrican", - "Dcaron", - "Dcedilla", - "Dcircle", - "Dcircumflexbelow", - "Dcroat", - "Ddotaccent", - "Ddotbelow", - "Decyrillic", - "Deicoptic", - "Delta", - "Deltagreek", - "Dhook", - "Dieresis", - "DieresisAcute", - "DieresisGrave", - "Digammagreek", - "Djecyrillic", - "Dlinebelow", - "Dmonospace", - "Dslash", - "Dtopbar", - "Dz", - "Dzcaron", - "Dzeabkhasiancyrillic", - "Dzecyrillic", - "Dzhecyrillic", - "Ebreve", - "Ecaron", - "Ecedillabreve", - "Echarmenian", - "Ecircle", - "Ecircumflexacute", - "Ecircumflexbelow", - "Ecircumflexdotbelow", - "Ecircumflexgrave", - "Ecircumflexhookabove", - "Ecircumflextilde", - "Ecyrillic", - "Edblgrave", - "Edot", - "Edotaccent", - "Edotbelow", - "Efcyrillic", - "Eharmenian", - "Ehookabove", - "Eightroman", - "Einvertedbreve", - "Eiotifiedcyrillic", - "Elcyrillic", - "Elevenroman", - "Emacron", - "Emacronacute", - "Emacrongrave", - "Emcyrillic", - "Emonospace", - "Encyrillic", - "Endescendercyrillic", - "Eng", - "Enghecyrillic", - "Enhookcyrillic", - "Eogonek", - "Eopen", - "Epsilon", - "Epsilontonos", - "Ercyrillic", - "Ereversed", - "Ereversedcyrillic", - "Escyrillic", - "Esdescendercyrillic", - "Esh", - "Eta", - "Etarmenian", - "Etatonos", - "Etilde", - "Etildebelow", - "Euro", - "Ezh", - "Ezhcaron", - "Ezhreversed", - "Fcircle", - "Fdotaccent", - "Feharmenian", - "Feicoptic", - "Fhook", - "Fitacyrillic", - "Fiveroman", - "Fmonospace", - "Fourroman", - "GBsquare", - "Gacute", - "Gamma", - "Gammaafrican", - "Gangiacoptic", - "Gbreve", - "Gcaron", - "Gcedilla", - "Gcircle", - "Gcircumflex", - "Gcommaaccent", - "Gdot", - "Gdotaccent", - "Gecyrillic", - "Ghadarmenian", - "Ghemiddlehookcyrillic", - "Ghestrokecyrillic", - "Gheupturncyrillic", - "Ghook", - "Gimarmenian", - "Gjecyrillic", - "Gmacron", - "Gmonospace", - "Grave", - "Gsmallhook", - "Gstroke", - "H18533", - "H18543", - "H18551", - "H22073", - "HPsquare", - "Haabkhasiancyrillic", - "Hadescendercyrillic", - "Hardsigncyrillic", - "Hbar", - "Hbrevebelow", - "Hcedilla", - "Hcircle", - "Hcircumflex", - "Hdieresis", - "Hdotaccent", - "Hdotbelow", - "Hmonospace", - "Hoarmenian", - "Horicoptic", - "Hungarumlaut", - "Hzsquare", - "IAcyrillic", - "IJ", - "IUcyrillic", - "Ibreve", - "Icaron", - "Icircle", - "Icyrillic", - "Idblgrave", - "Idieresisacute", - "Idieresiscyrillic", - "Idot", - "Idotaccent", - "Idotbelow", - "Iebrevecyrillic", - "Iecyrillic", - "Ifraktur", - "Ihookabove", - "Iicyrillic", - "Iinvertedbreve", - "Iishortcyrillic", - "Imacron", - "Imacroncyrillic", - "Imonospace", - "Iniarmenian", - "Iocyrillic", - "Iogonek", - "Iota", - "Iotaafrican", - "Iotadieresis", - "Iotatonos", - "Istroke", - "Itilde", - "Itildebelow", - "Izhitsacyrillic", - "Izhitsadblgravecyrillic", - "Jaarmenian", - "Jcircle", - "Jcircumflex", - "Jecyrillic", - "Jheharmenian", - "Jmonospace", - "KBsquare", - "KKsquare", - "Kabashkircyrillic", - "Kacute", - "Kacyrillic", - "Kadescendercyrillic", - "Kahookcyrillic", - "Kappa", - "Kastrokecyrillic", - "Kaverticalstrokecyrillic", - "Kcaron", - "Kcedilla", - "Kcircle", - "Kcommaaccent", - "Kdotbelow", - "Keharmenian", - "Kenarmenian", - "Khacyrillic", - "Kheicoptic", - "Khook", - "Kjecyrillic", - "Klinebelow", - "Kmonospace", - "Koppacyrillic", - "Koppagreek", - "Ksicyrillic", - "LJ", - "LL", - "Lacute", - "Lambda", - "Lcaron", - "Lcedilla", - "Lcircle", - "Lcircumflexbelow", - "Lcommaaccent", - "Ldot", - "Ldotaccent", - "Ldotbelow", - "Ldotbelowmacron", - "Liwnarmenian", - "Lj", - "Ljecyrillic", - "Llinebelow", - "Lmonospace", - "MBsquare", - "Macron", - "Macute", - "Mcircle", - "Mdotaccent", - "Mdotbelow", - "Menarmenian", - "Mmonospace", - "Mturned", - "Mu", - "NJ", - "Nacute", - "Ncaron", - "Ncedilla", - "Ncircle", - "Ncircumflexbelow", - "Ncommaaccent", - "Ndotaccent", - "Ndotbelow", - "Nhookleft", - "Nineroman", - "Nj", - "Njecyrillic", - "Nlinebelow", - "Nmonospace", - "Nowarmenian", - "Nu", - "Obarredcyrillic", - "Obarreddieresiscyrillic", - "Obreve", - "Ocaron", - "Ocenteredtilde", - "Ocircle", - "Ocircumflexacute", - "Ocircumflexdotbelow", - "Ocircumflexgrave", - "Ocircumflexhookabove", - "Ocircumflextilde", - "Ocyrillic", - "Odblacute", - "Odblgrave", - "Odieresiscyrillic", - "Odotbelow", - "Oharmenian", - "Ohm", - "Ohookabove", - "Ohorn", - "Ohornacute", - "Ohorndotbelow", - "Ohorngrave", - "Ohornhookabove", - "Ohorntilde", - "Ohungarumlaut", - "Oi", - "Oinvertedbreve", - "Omacron", - "Omacronacute", - "Omacrongrave", - "Omega", - "Omegacyrillic", - "Omegagreek", - "Omegaroundcyrillic", - "Omegatitlocyrillic", - "Omegatonos", - "Omicron", - "Omicrontonos", - "Omonospace", - "Oneroman", - "Oogonek", - "Oogonekmacron", - "Oopen", - "Oslashacute", - "Ostrokeacute", - "Otcyrillic", - "Otildeacute", - "Otildedieresis", - "Pacute", - "Pcircle", - "Pdotaccent", - "Pecyrillic", - "Peharmenian", - "Pemiddlehookcyrillic", - "Phi", - "Phook", - "Pi", - "Piwrarmenian", - "Pmonospace", - "Psi", - "Psicyrillic", - "Qcircle", - "Qmonospace", - "Raarmenian", - "Racute", - "Rcaron", - "Rcedilla", - "Rcircle", - "Rcommaaccent", - "Rdblgrave", - "Rdotaccent", - "Rdotbelow", - "Rdotbelowmacron", - "Reharmenian", - "Rfraktur", - "Rho", - "Rinvertedbreve", - "Rlinebelow", - "Rmonospace", - "Rsmallinverted", - "Rsmallinvertedsuperior", - "SF010000", - "SF020000", - "SF030000", - "SF040000", - "SF050000", - "SF060000", - "SF070000", - "SF080000", - "SF090000", - "SF100000", - "SF110000", - "SF190000", - "SF200000", - "SF210000", - "SF220000", - "SF230000", - "SF240000", - "SF250000", - "SF260000", - "SF270000", - "SF280000", - "SF360000", - "SF370000", - "SF380000", - "SF390000", - "SF400000", - "SF410000", - "SF420000", - "SF430000", - "SF440000", - "SF450000", - "SF460000", - "SF470000", - "SF480000", - "SF490000", - "SF500000", - "SF510000", - "SF520000", - "SF530000", - "SF540000", - "Sacute", - "Sacutedotaccent", - "Sampigreek", - "Scarondotaccent", - "Scedilla", - "Schwa", - "Schwacyrillic", - "Schwadieresiscyrillic", - "Scircle", - "Scircumflex", - "Scommaaccent", - "Sdotaccent", - "Sdotbelow", - "Sdotbelowdotaccent", - "Seharmenian", - "Sevenroman", - "Shaarmenian", - "Shacyrillic", - "Shchacyrillic", - "Sheicoptic", - "Shhacyrillic", - "Shimacoptic", - "Sigma", - "Sixroman", - "Smonospace", - "Softsigncyrillic", - "Stigmagreek", - "Tau", - "Tbar", - "Tcaron", - "Tcedilla", - "Tcircle", - "Tcircumflexbelow", - "Tcommaaccent", - "Tdotaccent", - "Tdotbelow", - "Tecyrillic", - "Tedescendercyrillic", - "Tenroman", - "Tetsecyrillic", - "Theta", - "Thook", - "Threeroman", - "Tiwnarmenian", - "Tlinebelow", - "Tmonospace", - "Toarmenian", - "Tonefive", - "Tonesix", - "Tonetwo", - "Tretroflexhook", - "Tsecyrillic", - "Tshecyrillic", - "Twelveroman", - "Tworoman", - "Ubreve", - "Ucaron", - "Ucircle", - "Ucircumflexbelow", - "Ucyrillic", - "Udblacute", - "Udblgrave", - "Udieresisacute", - "Udieresisbelow", - "Udieresiscaron", - "Udieresiscyrillic", - "Udieresisgrave", - "Udieresismacron", - "Udotbelow", - "Uhookabove", - "Uhorn", - "Uhornacute", - "Uhorndotbelow", - "Uhorngrave", - "Uhornhookabove", - "Uhorntilde", - "Uhungarumlaut", - "Uhungarumlautcyrillic", - "Uinvertedbreve", - "Ukcyrillic", - "Umacron", - "Umacroncyrillic", - "Umacrondieresis", - "Umonospace", - "Uogonek", - "Upsilon", - "Upsilon1", - "Upsilonacutehooksymbolgreek", - "Upsilonafrican", - "Upsilondieresis", - "Upsilondieresishooksymbolgreek", - "Upsilonhooksymbol", - "Upsilontonos", - "Uring", - "Ushortcyrillic", - "Ustraightcyrillic", - "Ustraightstrokecyrillic", - "Utilde", - "Utildeacute", - "Utildebelow", - "Vcircle", - "Vdotbelow", - "Vecyrillic", - "Vewarmenian", - "Vhook", - "Vmonospace", - "Voarmenian", - "Vtilde", - "Wacute", - "Wcircle", - "Wcircumflex", - "Wdieresis", - "Wdotaccent", - "Wdotbelow", - "Wgrave", - "Wmonospace", - "Xcircle", - "Xdieresis", - "Xdotaccent", - "Xeharmenian", - "Xi", - "Xmonospace", - "Yatcyrillic", - "Ycircle", - "Ycircumflex", - "Ydotaccent", - "Ydotbelow", - "Yericyrillic", - "Yerudieresiscyrillic", - "Ygrave", - "Yhook", - "Yhookabove", - "Yiarmenian", - "Yicyrillic", - "Yiwnarmenian", - "Ymonospace", - "Ytilde", - "Yusbigcyrillic", - "Yusbigiotifiedcyrillic", - "Yuslittlecyrillic", - "Yuslittleiotifiedcyrillic", - "Zaarmenian", - "Zacute", - "Zcircle", - "Zcircumflex", - "Zdot", - "Zdotaccent", - "Zdotbelow", - "Zecyrillic", - "Zedescendercyrillic", - "Zedieresiscyrillic", - "Zeta", - "Zhearmenian", - "Zhebrevecyrillic", - "Zhecyrillic", - "Zhedescendercyrillic", - "Zhedieresiscyrillic", - "Zlinebelow", - "Zmonospace", - "Zstroke", - "aabengali", - "aadeva", - "aagujarati", - "aagurmukhi", - "aamatragurmukhi", - "aarusquare", - "aavowelsignbengali", - "aavowelsigndeva", - "aavowelsigngujarati", - "abbreviationmarkarmenian", - "abbreviationsigndeva", - "abengali", - "abopomofo", - "abreve", - "abreveacute", - "abrevecyrillic", - "abrevedotbelow", - "abrevegrave", - "abrevehookabove", - "abrevetilde", - "acaron", - "acircle", - "acircumflexacute", - "acircumflexdotbelow", - "acircumflexgrave", - "acircumflexhookabove", - "acircumflextilde", - "acutebelowcmb", - "acutecmb", - "acutecomb", - "acutedeva", - "acutelowmod", - "acutetonecmb", - "acyrillic", - "adblgrave", - "addakgurmukhi", - "adeva", - "adieresiscyrillic", - "adieresismacron", - "adotbelow", - "adotmacron", - "aeacute", - "aekorean", - "aemacron", - "afii00208", - "afii08941", - "afii10017", - "afii10018", - "afii10019", - "afii10020", - "afii10021", - "afii10022", - "afii10023", - "afii10024", - "afii10025", - "afii10026", - "afii10027", - "afii10028", - "afii10029", - "afii10030", - "afii10031", - "afii10032", - "afii10033", - "afii10034", - "afii10035", - "afii10036", - "afii10037", - "afii10038", - "afii10039", - "afii10040", - "afii10041", - "afii10042", - "afii10043", - "afii10044", - "afii10045", - "afii10046", - "afii10047", - "afii10048", - "afii10049", - "afii10050", - "afii10051", - "afii10052", - "afii10053", - "afii10054", - "afii10055", - "afii10056", - "afii10057", - "afii10058", - "afii10059", - "afii10060", - "afii10061", - "afii10062", - "afii10063", - "afii10064", - "afii10065", - "afii10066", - "afii10067", - "afii10068", - "afii10069", - "afii10070", - "afii10071", - "afii10072", - "afii10073", - "afii10074", - "afii10075", - "afii10076", - "afii10077", - "afii10078", - "afii10079", - "afii10080", - "afii10081", - "afii10082", - "afii10083", - "afii10084", - "afii10085", - "afii10086", - "afii10087", - "afii10088", - "afii10089", - "afii10090", - "afii10091", - "afii10092", - "afii10093", - "afii10094", - "afii10095", - "afii10096", - "afii10097", - "afii10098", - "afii10099", - "afii10100", - "afii10101", - "afii10102", - "afii10103", - "afii10104", - "afii10105", - "afii10106", - "afii10107", - "afii10108", - "afii10109", - "afii10110", - "afii10145", - "afii10146", - "afii10147", - "afii10148", - "afii10192", - "afii10193", - "afii10194", - "afii10195", - "afii10196", - "afii10831", - "afii10832", - "afii10846", - "afii299", - "afii300", - "afii301", - "afii57381", - "afii57388", - "afii57392", - "afii57393", - "afii57394", - "afii57395", - "afii57396", - "afii57397", - "afii57398", - "afii57399", - "afii57400", - "afii57401", - "afii57403", - "afii57407", - "afii57409", - "afii57410", - "afii57411", - "afii57412", - "afii57413", - "afii57414", - "afii57415", - "afii57416", - "afii57417", - "afii57418", - "afii57419", - "afii57420", - "afii57421", - "afii57422", - "afii57423", - "afii57424", - "afii57425", - "afii57426", - "afii57427", - "afii57428", - "afii57429", - "afii57430", - "afii57431", - "afii57432", - "afii57433", - "afii57434", - "afii57440", - "afii57441", - "afii57442", - "afii57443", - "afii57444", - "afii57445", - "afii57446", - "afii57448", - "afii57449", - "afii57450", - "afii57451", - "afii57452", - "afii57453", - "afii57454", - "afii57455", - "afii57456", - "afii57457", - "afii57458", - "afii57470", - "afii57505", - "afii57506", - "afii57507", - "afii57508", - "afii57509", - "afii57511", - "afii57512", - "afii57513", - "afii57514", - "afii57519", - "afii57534", - "afii57636", - "afii57645", - "afii57658", - "afii57664", - "afii57665", - "afii57666", - "afii57667", - "afii57668", - "afii57669", - "afii57670", - "afii57671", - "afii57672", - "afii57673", - "afii57674", - "afii57675", - "afii57676", - "afii57677", - "afii57678", - "afii57679", - "afii57680", - "afii57681", - "afii57682", - "afii57683", - "afii57684", - "afii57685", - "afii57686", - "afii57687", - "afii57688", - "afii57689", - "afii57690", - "afii57694", - "afii57695", - "afii57700", - "afii57705", - "afii57716", - "afii57717", - "afii57718", - "afii57723", - "afii57793", - "afii57794", - "afii57795", - "afii57796", - "afii57797", - "afii57798", - "afii57799", - "afii57800", - "afii57801", - "afii57802", - "afii57803", - "afii57804", - "afii57806", - "afii57807", - "afii57839", - "afii57841", - "afii57842", - "afii57929", - "afii61248", - "afii61289", - "afii61352", - "afii61573", - "afii61574", - "afii61575", - "afii61664", - "afii63167", - "afii64937", - "agujarati", - "agurmukhi", - "ahiragana", - "ahookabove", - "aibengali", - "aibopomofo", - "aideva", - "aiecyrillic", - "aigujarati", - "aigurmukhi", - "aimatragurmukhi", - "ainarabic", - "ainfinalarabic", - "aininitialarabic", - "ainmedialarabic", - "ainvertedbreve", - "aivowelsignbengali", - "aivowelsigndeva", - "aivowelsigngujarati", - "akatakana", - "akatakanahalfwidth", - "akorean", - "alef", - "alefarabic", - "alefdageshhebrew", - "aleffinalarabic", - "alefhamzaabovearabic", - "alefhamzaabovefinalarabic", - "alefhamzabelowarabic", - "alefhamzabelowfinalarabic", - "alefhebrew", - "aleflamedhebrew", - "alefmaddaabovearabic", - "alefmaddaabovefinalarabic", - "alefmaksuraarabic", - "alefmaksurafinalarabic", - "alefmaksurainitialarabic", - "alefmaksuramedialarabic", - "alefpatahhebrew", - "alefqamatshebrew", - "aleph", - "allequal", - "alpha", - "alphatonos", - "amacron", - "amonospace", - "ampersandmonospace", - "amsquare", - "anbopomofo", - "angbopomofo", - "angkhankhuthai", - "angle", - "anglebracketleft", - "anglebracketleftvertical", - "anglebracketright", - "anglebracketrightvertical", - "angleleft", - "angleright", - "angstrom", - "anoteleia", - "anudattadeva", - "anusvarabengali", - "anusvaradeva", - "anusvaragujarati", - "aogonek", - "apaatosquare", - "aparen", - "apostrophearmenian", - "apostrophemod", - "apple", - "approaches", - "approxequal", - "approxequalorimage", - "approximatelyequal", - "araeaekorean", - "araeakorean", - "arc", - "arighthalfring", - "aringacute", - "aringbelow", - "arrowboth", - "arrowdashdown", - "arrowdashleft", - "arrowdashright", - "arrowdashup", - "arrowdblboth", - "arrowdbldown", - "arrowdblleft", - "arrowdblright", - "arrowdblup", - "arrowdown", - "arrowdownleft", - "arrowdownright", - "arrowdownwhite", - "arrowheaddownmod", - "arrowheadleftmod", - "arrowheadrightmod", - "arrowheadupmod", - "arrowhorizex", - "arrowleft", - "arrowleftdbl", - "arrowleftdblstroke", - "arrowleftoverright", - "arrowleftwhite", - "arrowright", - "arrowrightdblstroke", - "arrowrightheavy", - "arrowrightoverleft", - "arrowrightwhite", - "arrowtableft", - "arrowtabright", - "arrowup", - "arrowupdn", - "arrowupdnbse", - "arrowupdownbase", - "arrowupleft", - "arrowupleftofdown", - "arrowupright", - "arrowupwhite", - "arrowvertex", - "asciicircummonospace", - "asciitildemonospace", - "ascript", - "ascriptturned", - "asmallhiragana", - "asmallkatakana", - "asmallkatakanahalfwidth", - "asteriskaltonearabic", - "asteriskarabic", - "asteriskmath", - "asteriskmonospace", - "asterisksmall", - "asterism", - "asymptoticallyequal", - "atmonospace", - "atsmall", - "aturned", - "aubengali", - "aubopomofo", - "audeva", - "augujarati", - "augurmukhi", - "aulengthmarkbengali", - "aumatragurmukhi", - "auvowelsignbengali", - "auvowelsigndeva", - "auvowelsigngujarati", - "avagrahadeva", - "aybarmenian", - "ayin", - "ayinaltonehebrew", - "ayinhebrew", - "babengali", - "backslashmonospace", - "badeva", - "bagujarati", - "bagurmukhi", - "bahiragana", - "bahtthai", - "bakatakana", - "barmonospace", - "bbopomofo", - "bcircle", - "bdotaccent", - "bdotbelow", - "beamedsixteenthnotes", - "because", - "becyrillic", - "beharabic", - "behfinalarabic", - "behinitialarabic", - "behiragana", - "behmedialarabic", - "behmeeminitialarabic", - "behmeemisolatedarabic", - "behnoonfinalarabic", - "bekatakana", - "benarmenian", - "bet", - "beta", - "betasymbolgreek", - "betdagesh", - "betdageshhebrew", - "bethebrew", - "betrafehebrew", - "bhabengali", - "bhadeva", - "bhagujarati", - "bhagurmukhi", - "bhook", - "bihiragana", - "bikatakana", - "bilabialclick", - "bindigurmukhi", - "birusquare", - "blackcircle", - "blackdiamond", - "blackdownpointingtriangle", - "blackleftpointingpointer", - "blackleftpointingtriangle", - "blacklenticularbracketleft", - "blacklenticularbracketleftvertical", - "blacklenticularbracketright", - "blacklenticularbracketrightvertical", - "blacklowerlefttriangle", - "blacklowerrighttriangle", - "blackrectangle", - "blackrightpointingpointer", - "blackrightpointingtriangle", - "blacksmallsquare", - "blacksmilingface", - "blacksquare", - "blackstar", - "blackupperlefttriangle", - "blackupperrighttriangle", - "blackuppointingsmalltriangle", - "blackuppointingtriangle", - "blank", - "blinebelow", - "block", - "bmonospace", - "bobaimaithai", - "bohiragana", - "bokatakana", - "bparen", - "bqsquare", - "braceex", - "braceleftbt", - "braceleftmid", - "braceleftmonospace", - "braceleftsmall", - "bracelefttp", - "braceleftvertical", - "bracerightbt", - "bracerightmid", - "bracerightmonospace", - "bracerightsmall", - "bracerighttp", - "bracerightvertical", - "bracketleftbt", - "bracketleftex", - "bracketleftmonospace", - "bracketlefttp", - "bracketrightbt", - "bracketrightex", - "bracketrightmonospace", - "bracketrighttp", - "brevebelowcmb", - "brevecmb", - "breveinvertedbelowcmb", - "breveinvertedcmb", - "breveinverteddoublecmb", - "bridgebelowcmb", - "bridgeinvertedbelowcmb", - "bstroke", - "btopbar", - "buhiragana", - "bukatakana", - "bulletinverse", - "bulletoperator", - "bullseye", - "caarmenian", - "cabengali", - "cacute", - "cadeva", - "cagujarati", - "cagurmukhi", - "calsquare", - "candrabindubengali", - "candrabinducmb", - "candrabindudeva", - "candrabindugujarati", - "capslock", - "careof", - "caronbelowcmb", - "caroncmb", - "carriagereturn", - "cbopomofo", - "ccaron", - "ccedillaacute", - "ccircle", - "ccircumflex", - "ccurl", - "cdot", - "cdotaccent", - "cdsquare", - "cedillacmb", - "centigrade", - "centmonospace", - "chaarmenian", - "chabengali", - "chadeva", - "chagujarati", - "chagurmukhi", - "chbopomofo", - "cheabkhasiancyrillic", - "checkmark", - "checyrillic", - "chedescenderabkhasiancyrillic", - "chedescendercyrillic", - "chedieresiscyrillic", - "cheharmenian", - "chekhakassiancyrillic", - "cheverticalstrokecyrillic", - "chi", - "chieuchacirclekorean", - "chieuchaparenkorean", - "chieuchcirclekorean", - "chieuchkorean", - "chieuchparenkorean", - "chochangthai", - "chochanthai", - "chochingthai", - "chochoethai", - "chook", - "cieucacirclekorean", - "cieucaparenkorean", - "cieuccirclekorean", - "cieuckorean", - "cieucparenkorean", - "cieucuparenkorean", - "circle", - "circlemultiply", - "circleot", - "circleplus", - "circlepostalmark", - "circlewithlefthalfblack", - "circlewithrighthalfblack", - "circumflexbelowcmb", - "circumflexcmb", - "clear", - "clickalveolar", - "clickdental", - "clicklateral", - "clickretroflex", - "club", - "clubsuitblack", - "clubsuitwhite", - "cmcubedsquare", - "cmonospace", - "cmsquaredsquare", - "coarmenian", - "colonmonospace", - "colonsign", - "colonsmall", - "colontriangularhalfmod", - "colontriangularmod", - "commaabovecmb", - "commaaboverightcmb", - "commaaccent", - "commaarabic", - "commaarmenian", - "commamonospace", - "commareversedabovecmb", - "commareversedmod", - "commasmall", - "commaturnedabovecmb", - "commaturnedmod", - "compass", - "congruent", - "contourintegral", - "control", - "controlACK", - "controlBEL", - "controlBS", - "controlCAN", - "controlCR", - "controlDC1", - "controlDC2", - "controlDC3", - "controlDC4", - "controlDEL", - "controlDLE", - "controlEM", - "controlENQ", - "controlEOT", - "controlESC", - "controlETB", - "controlETX", - "controlFF", - "controlFS", - "controlGS", - "controlHT", - "controlLF", - "controlNAK", - "controlRS", - "controlSI", - "controlSO", - "controlSOT", - "controlSTX", - "controlSUB", - "controlSYN", - "controlUS", - "controlVT", - "copyrightsans", - "copyrightserif", - "cornerbracketleft", - "cornerbracketlefthalfwidth", - "cornerbracketleftvertical", - "cornerbracketright", - "cornerbracketrighthalfwidth", - "cornerbracketrightvertical", - "corporationsquare", - "cosquare", - "coverkgsquare", - "cparen", - "cruzeiro", - "cstretched", - "curlyand", - "curlyor", - "cyrBreve", - "cyrFlex", - "cyrbreve", - "cyrflex", - "daarmenian", - "dabengali", - "dadarabic", - "dadeva", - "dadfinalarabic", - "dadinitialarabic", - "dadmedialarabic", - "dagesh", - "dageshhebrew", - "dagujarati", - "dagurmukhi", - "dahiragana", - "dakatakana", - "dalarabic", - "dalet", - "daletdagesh", - "daletdageshhebrew", - "dalethatafpatah", - "dalethatafpatahhebrew", - "dalethatafsegol", - "dalethatafsegolhebrew", - "dalethebrew", - "dalethiriq", - "dalethiriqhebrew", - "daletholam", - "daletholamhebrew", - "daletpatah", - "daletpatahhebrew", - "daletqamats", - "daletqamatshebrew", - "daletqubuts", - "daletqubutshebrew", - "daletsegol", - "daletsegolhebrew", - "daletsheva", - "daletshevahebrew", - "dalettsere", - "dalettserehebrew", - "dalfinalarabic", - "dammaarabic", - "dammalowarabic", - "dammatanaltonearabic", - "dammatanarabic", - "danda", - "dargahebrew", - "dargalefthebrew", - "dasiapneumatacyrilliccmb", - "dblGrave", - "dblanglebracketleft", - "dblanglebracketleftvertical", - "dblanglebracketright", - "dblanglebracketrightvertical", - "dblarchinvertedbelowcmb", - "dblarrowleft", - "dblarrowright", - "dbldanda", - "dblgrave", - "dblgravecmb", - "dblintegral", - "dbllowline", - "dbllowlinecmb", - "dbloverlinecmb", - "dblprimemod", - "dblverticalbar", - "dblverticallineabovecmb", - "dbopomofo", - "dbsquare", - "dcaron", - "dcedilla", - "dcircle", - "dcircumflexbelow", - "dcroat", - "ddabengali", - "ddadeva", - "ddagujarati", - "ddagurmukhi", - "ddalarabic", - "ddalfinalarabic", - "dddhadeva", - "ddhabengali", - "ddhadeva", - "ddhagujarati", - "ddhagurmukhi", - "ddotaccent", - "ddotbelow", - "decimalseparatorarabic", - "decimalseparatorpersian", - "decyrillic", - "dehihebrew", - "dehiragana", - "deicoptic", - "dekatakana", - "deleteleft", - "deleteright", - "delta", - "deltaturned", - "denominatorminusonenumeratorbengali", - "dezh", - "dhabengali", - "dhadeva", - "dhagujarati", - "dhagurmukhi", - "dhook", - "dialytikatonos", - "dialytikatonoscmb", - "diamond", - "diamondsuitwhite", - "dieresisacute", - "dieresisbelowcmb", - "dieresiscmb", - "dieresisgrave", - "dieresistonos", - "dihiragana", - "dikatakana", - "dittomark", - "divides", - "divisionslash", - "djecyrillic", - "dkshade", - "dlinebelow", - "dlsquare", - "dmacron", - "dmonospace", - "dnblock", - "dochadathai", - "dodekthai", - "dohiragana", - "dokatakana", - "dollarmonospace", - "dollarsmall", - "dong", - "dorusquare", - "dotaccentcmb", - "dotbelowcmb", - "dotbelowcomb", - "dotkatakana", - "dotlessj", - "dotlessjstrokehook", - "dotmath", - "dottedcircle", - "doubleyodpatah", - "doubleyodpatahhebrew", - "downtackbelowcmb", - "downtackmod", - "dparen", - "dtail", - "dtopbar", - "duhiragana", - "dukatakana", - "dz", - "dzaltone", - "dzcaron", - "dzcurl", - "dzeabkhasiancyrillic", - "dzecyrillic", - "dzhecyrillic", - "earth", - "ebengali", - "ebopomofo", - "ebreve", - "ecandradeva", - "ecandragujarati", - "ecandravowelsigndeva", - "ecandravowelsigngujarati", - "ecaron", - "ecedillabreve", - "echarmenian", - "echyiwnarmenian", - "ecircle", - "ecircumflexacute", - "ecircumflexbelow", - "ecircumflexdotbelow", - "ecircumflexgrave", - "ecircumflexhookabove", - "ecircumflextilde", - "ecyrillic", - "edblgrave", - "edeva", - "edot", - "edotaccent", - "edotbelow", - "eegurmukhi", - "eematragurmukhi", - "efcyrillic", - "egujarati", - "eharmenian", - "ehbopomofo", - "ehiragana", - "ehookabove", - "eibopomofo", - "eightarabic", - "eightbengali", - "eightcircle", - "eightcircleinversesansserif", - "eightdeva", - "eighteencircle", - "eighteenparen", - "eighteenperiod", - "eightgujarati", - "eightgurmukhi", - "eighthackarabic", - "eighthangzhou", - "eighthnotebeamed", - "eightideographicparen", - "eightmonospace", - "eightparen", - "eightperiod", - "eightpersian", - "eightroman", - "eightthai", - "einvertedbreve", - "eiotifiedcyrillic", - "ekatakana", - "ekatakanahalfwidth", - "ekonkargurmukhi", - "ekorean", - "elcyrillic", - "element", - "elevencircle", - "elevenparen", - "elevenperiod", - "elevenroman", - "ellipsisvertical", - "emacron", - "emacronacute", - "emacrongrave", - "emcyrillic", - "emdashvertical", - "emonospace", - "emphasismarkarmenian", - "emptyset", - "enbopomofo", - "encyrillic", - "endashvertical", - "endescendercyrillic", - "eng", - "engbopomofo", - "enghecyrillic", - "enhookcyrillic", - "enspace", - "eogonek", - "eokorean", - "eopen", - "eopenclosed", - "eopenreversed", - "eopenreversedclosed", - "eopenreversedhook", - "eparen", - "epsilon", - "epsilontonos", - "equalmonospace", - "equalsmall", - "equalsuperior", - "equivalence", - "erbopomofo", - "ercyrillic", - "ereversed", - "ereversedcyrillic", - "escyrillic", - "esdescendercyrillic", - "esh", - "eshcurl", - "eshortdeva", - "eshortvowelsigndeva", - "eshreversedloop", - "eshsquatreversed", - "esmallhiragana", - "esmallkatakana", - "esmallkatakanahalfwidth", - "estimated", - "eta", - "etarmenian", - "etatonos", - "etilde", - "etildebelow", - "etnahtafoukhhebrew", - "etnahtafoukhlefthebrew", - "etnahtahebrew", - "etnahtalefthebrew", - "eturned", - "eukorean", - "euro", - "evowelsignbengali", - "evowelsigndeva", - "evowelsigngujarati", - "exclamarmenian", - "exclamdbl", - "exclammonospace", - "existential", - "ezh", - "ezhcaron", - "ezhcurl", - "ezhreversed", - "ezhtail", - "fadeva", - "fagurmukhi", - "fahrenheit", - "fathaarabic", - "fathalowarabic", - "fathatanarabic", - "fbopomofo", - "fcircle", - "fdotaccent", - "feharabic", - "feharmenian", - "fehfinalarabic", - "fehinitialarabic", - "fehmedialarabic", - "feicoptic", - "female", - "fifteencircle", - "fifteenparen", - "fifteenperiod", - "filledbox", - "filledrect", - "finalkaf", - "finalkafdagesh", - "finalkafdageshhebrew", - "finalkafhebrew", - "finalkafqamats", - "finalkafqamatshebrew", - "finalkafsheva", - "finalkafshevahebrew", - "finalmem", - "finalmemhebrew", - "finalnun", - "finalnunhebrew", - "finalpe", - "finalpehebrew", - "finaltsadi", - "finaltsadihebrew", - "firsttonechinese", - "fisheye", - "fitacyrillic", - "fivearabic", - "fivebengali", - "fivecircle", - "fivecircleinversesansserif", - "fivedeva", - "fivegujarati", - "fivegurmukhi", - "fivehackarabic", - "fivehangzhou", - "fiveideographicparen", - "fivemonospace", - "fiveparen", - "fiveperiod", - "fivepersian", - "fiveroman", - "fivethai", - "fmonospace", - "fmsquare", - "fofanthai", - "fofathai", - "fongmanthai", - "forall", - "fourarabic", - "fourbengali", - "fourcircle", - "fourcircleinversesansserif", - "fourdeva", - "fourgujarati", - "fourgurmukhi", - "fourhackarabic", - "fourhangzhou", - "fourideographicparen", - "fourmonospace", - "fournumeratorbengali", - "fourparen", - "fourperiod", - "fourpersian", - "fourroman", - "fourteencircle", - "fourteenparen", - "fourteenperiod", - "fourthai", - "fourthtonechinese", - "fparen", - "franc", - "gabengali", - "gacute", - "gadeva", - "gafarabic", - "gaffinalarabic", - "gafinitialarabic", - "gafmedialarabic", - "gagujarati", - "gagurmukhi", - "gahiragana", - "gakatakana", - "gamma", - "gammalatinsmall", - "gammasuperior", - "gangiacoptic", - "gbopomofo", - "gbreve", - "gcaron", - "gcedilla", - "gcircle", - "gcircumflex", - "gcommaaccent", - "gdot", - "gdotaccent", - "gecyrillic", - "gehiragana", - "gekatakana", - "geometricallyequal", - "gereshaccenthebrew", - "gereshhebrew", - "gereshmuqdamhebrew", - "gershayimaccenthebrew", - "gershayimhebrew", - "getamark", - "ghabengali", - "ghadarmenian", - "ghadeva", - "ghagujarati", - "ghagurmukhi", - "ghainarabic", - "ghainfinalarabic", - "ghaininitialarabic", - "ghainmedialarabic", - "ghemiddlehookcyrillic", - "ghestrokecyrillic", - "gheupturncyrillic", - "ghhadeva", - "ghhagurmukhi", - "ghook", - "ghzsquare", - "gihiragana", - "gikatakana", - "gimarmenian", - "gimel", - "gimeldagesh", - "gimeldageshhebrew", - "gimelhebrew", - "gjecyrillic", - "glottalinvertedstroke", - "glottalstop", - "glottalstopinverted", - "glottalstopmod", - "glottalstopreversed", - "glottalstopreversedmod", - "glottalstopreversedsuperior", - "glottalstopstroke", - "glottalstopstrokereversed", - "gmacron", - "gmonospace", - "gohiragana", - "gokatakana", - "gparen", - "gpasquare", - "gradient", - "gravebelowcmb", - "gravecmb", - "gravecomb", - "gravedeva", - "gravelowmod", - "gravemonospace", - "gravetonecmb", - "greaterequal", - "greaterequalorless", - "greatermonospace", - "greaterorequivalent", - "greaterorless", - "greateroverequal", - "greatersmall", - "gscript", - "gstroke", - "guhiragana", - "gukatakana", - "guramusquare", - "gysquare", - "haabkhasiancyrillic", - "haaltonearabic", - "habengali", - "hadescendercyrillic", - "hadeva", - "hagujarati", - "hagurmukhi", - "haharabic", - "hahfinalarabic", - "hahinitialarabic", - "hahiragana", - "hahmedialarabic", - "haitusquare", - "hakatakana", - "hakatakanahalfwidth", - "halantgurmukhi", - "hamzaarabic", - "hamzadammaarabic", - "hamzadammatanarabic", - "hamzafathaarabic", - "hamzafathatanarabic", - "hamzalowarabic", - "hamzalowkasraarabic", - "hamzalowkasratanarabic", - "hamzasukunarabic", - "hangulfiller", - "hardsigncyrillic", - "harpoonleftbarbup", - "harpoonrightbarbup", - "hasquare", - "hatafpatah", - "hatafpatah16", - "hatafpatah23", - "hatafpatah2f", - "hatafpatahhebrew", - "hatafpatahnarrowhebrew", - "hatafpatahquarterhebrew", - "hatafpatahwidehebrew", - "hatafqamats", - "hatafqamats1b", - "hatafqamats28", - "hatafqamats34", - "hatafqamatshebrew", - "hatafqamatsnarrowhebrew", - "hatafqamatsquarterhebrew", - "hatafqamatswidehebrew", - "hatafsegol", - "hatafsegol17", - "hatafsegol24", - "hatafsegol30", - "hatafsegolhebrew", - "hatafsegolnarrowhebrew", - "hatafsegolquarterhebrew", - "hatafsegolwidehebrew", - "hbar", - "hbopomofo", - "hbrevebelow", - "hcedilla", - "hcircle", - "hcircumflex", - "hdieresis", - "hdotaccent", - "hdotbelow", - "he", - "heart", - "heartsuitblack", - "heartsuitwhite", - "hedagesh", - "hedageshhebrew", - "hehaltonearabic", - "heharabic", - "hehebrew", - "hehfinalaltonearabic", - "hehfinalalttwoarabic", - "hehfinalarabic", - "hehhamzaabovefinalarabic", - "hehhamzaaboveisolatedarabic", - "hehinitialaltonearabic", - "hehinitialarabic", - "hehiragana", - "hehmedialaltonearabic", - "hehmedialarabic", - "heiseierasquare", - "hekatakana", - "hekatakanahalfwidth", - "hekutaarusquare", - "henghook", - "herutusquare", - "het", - "hethebrew", - "hhook", - "hhooksuperior", - "hieuhacirclekorean", - "hieuhaparenkorean", - "hieuhcirclekorean", - "hieuhkorean", - "hieuhparenkorean", - "hihiragana", - "hikatakana", - "hikatakanahalfwidth", - "hiriq", - "hiriq14", - "hiriq21", - "hiriq2d", - "hiriqhebrew", - "hiriqnarrowhebrew", - "hiriqquarterhebrew", - "hiriqwidehebrew", - "hlinebelow", - "hmonospace", - "hoarmenian", - "hohipthai", - "hohiragana", - "hokatakana", - "hokatakanahalfwidth", - "holam", - "holam19", - "holam26", - "holam32", - "holamhebrew", - "holamnarrowhebrew", - "holamquarterhebrew", - "holamwidehebrew", - "honokhukthai", - "hookabovecomb", - "hookcmb", - "hookpalatalizedbelowcmb", - "hookretroflexbelowcmb", - "hoonsquare", - "horicoptic", - "horizontalbar", - "horncmb", - "hotsprings", - "house", - "hparen", - "hsuperior", - "hturned", - "huhiragana", - "huiitosquare", - "hukatakana", - "hukatakanahalfwidth", - "hungarumlautcmb", - "hv", - "hyphenmonospace", - "hyphensmall", - "hyphentwo", - "iacyrillic", - "ibengali", - "ibopomofo", - "ibreve", - "icaron", - "icircle", - "icyrillic", - "idblgrave", - "ideographearthcircle", - "ideographfirecircle", - "ideographicallianceparen", - "ideographiccallparen", - "ideographiccentrecircle", - "ideographicclose", - "ideographiccomma", - "ideographiccommaleft", - "ideographiccongratulationparen", - "ideographiccorrectcircle", - "ideographicearthparen", - "ideographicenterpriseparen", - "ideographicexcellentcircle", - "ideographicfestivalparen", - "ideographicfinancialcircle", - "ideographicfinancialparen", - "ideographicfireparen", - "ideographichaveparen", - "ideographichighcircle", - "ideographiciterationmark", - "ideographiclaborcircle", - "ideographiclaborparen", - "ideographicleftcircle", - "ideographiclowcircle", - "ideographicmedicinecircle", - "ideographicmetalparen", - "ideographicmoonparen", - "ideographicnameparen", - "ideographicperiod", - "ideographicprintcircle", - "ideographicreachparen", - "ideographicrepresentparen", - "ideographicresourceparen", - "ideographicrightcircle", - "ideographicsecretcircle", - "ideographicselfparen", - "ideographicsocietyparen", - "ideographicspace", - "ideographicspecialparen", - "ideographicstockparen", - "ideographicstudyparen", - "ideographicsunparen", - "ideographicsuperviseparen", - "ideographicwaterparen", - "ideographicwoodparen", - "ideographiczero", - "ideographmetalcircle", - "ideographmooncircle", - "ideographnamecircle", - "ideographsuncircle", - "ideographwatercircle", - "ideographwoodcircle", - "ideva", - "idieresisacute", - "idieresiscyrillic", - "idotbelow", - "iebrevecyrillic", - "iecyrillic", - "ieungacirclekorean", - "ieungaparenkorean", - "ieungcirclekorean", - "ieungkorean", - "ieungparenkorean", - "igujarati", - "igurmukhi", - "ihiragana", - "ihookabove", - "iibengali", - "iicyrillic", - "iideva", - "iigujarati", - "iigurmukhi", - "iimatragurmukhi", - "iinvertedbreve", - "iishortcyrillic", - "iivowelsignbengali", - "iivowelsigndeva", - "iivowelsigngujarati", - "ij", - "ikatakana", - "ikatakanahalfwidth", - "ikorean", - "ilde", - "iluyhebrew", - "imacron", - "imacroncyrillic", - "imageorapproximatelyequal", - "imatragurmukhi", - "imonospace", - "increment", - "infinity", - "iniarmenian", - "integral", - "integralbottom", - "integralbt", - "integralex", - "integraltop", - "integraltp", - "intersection", - "intisquare", - "invbullet", - "invcircle", - "invsmileface", - "iocyrillic", - "iogonek", - "iota", - "iotadieresis", - "iotadieresistonos", - "iotalatin", - "iotatonos", - "iparen", - "irigurmukhi", - "ismallhiragana", - "ismallkatakana", - "ismallkatakanahalfwidth", - "issharbengali", - "istroke", - "iterationhiragana", - "iterationkatakana", - "itilde", - "itildebelow", - "iubopomofo", - "iucyrillic", - "ivowelsignbengali", - "ivowelsigndeva", - "ivowelsigngujarati", - "izhitsacyrillic", - "izhitsadblgravecyrillic", - "jaarmenian", - "jabengali", - "jadeva", - "jagujarati", - "jagurmukhi", - "jbopomofo", - "jcaron", - "jcircle", - "jcircumflex", - "jcrossedtail", - "jdotlessstroke", - "jecyrillic", - "jeemarabic", - "jeemfinalarabic", - "jeeminitialarabic", - "jeemmedialarabic", - "jeharabic", - "jehfinalarabic", - "jhabengali", - "jhadeva", - "jhagujarati", - "jhagurmukhi", - "jheharmenian", - "jis", - "jmonospace", - "jparen", - "jsuperior", - "kabashkircyrillic", - "kabengali", - "kacute", - "kacyrillic", - "kadescendercyrillic", - "kadeva", - "kaf", - "kafarabic", - "kafdagesh", - "kafdageshhebrew", - "kaffinalarabic", - "kafhebrew", - "kafinitialarabic", - "kafmedialarabic", - "kafrafehebrew", - "kagujarati", - "kagurmukhi", - "kahiragana", - "kahookcyrillic", - "kakatakana", - "kakatakanahalfwidth", - "kappa", - "kappasymbolgreek", - "kapyeounmieumkorean", - "kapyeounphieuphkorean", - "kapyeounpieupkorean", - "kapyeounssangpieupkorean", - "karoriisquare", - "kashidaautoarabic", - "kashidaautonosidebearingarabic", - "kasmallkatakana", - "kasquare", - "kasraarabic", - "kasratanarabic", - "kastrokecyrillic", - "katahiraprolongmarkhalfwidth", - "kaverticalstrokecyrillic", - "kbopomofo", - "kcalsquare", - "kcaron", - "kcedilla", - "kcircle", - "kcommaaccent", - "kdotbelow", - "keharmenian", - "kehiragana", - "kekatakana", - "kekatakanahalfwidth", - "kenarmenian", - "kesmallkatakana", - "kgreenlandic", - "khabengali", - "khacyrillic", - "khadeva", - "khagujarati", - "khagurmukhi", - "khaharabic", - "khahfinalarabic", - "khahinitialarabic", - "khahmedialarabic", - "kheicoptic", - "khhadeva", - "khhagurmukhi", - "khieukhacirclekorean", - "khieukhaparenkorean", - "khieukhcirclekorean", - "khieukhkorean", - "khieukhparenkorean", - "khokhaithai", - "khokhonthai", - "khokhuatthai", - "khokhwaithai", - "khomutthai", - "khook", - "khorakhangthai", - "khzsquare", - "kihiragana", - "kikatakana", - "kikatakanahalfwidth", - "kiroguramusquare", - "kiromeetorusquare", - "kirosquare", - "kiyeokacirclekorean", - "kiyeokaparenkorean", - "kiyeokcirclekorean", - "kiyeokkorean", - "kiyeokparenkorean", - "kiyeoksioskorean", - "kjecyrillic", - "klinebelow", - "klsquare", - "kmcubedsquare", - "kmonospace", - "kmsquaredsquare", - "kohiragana", - "kohmsquare", - "kokaithai", - "kokatakana", - "kokatakanahalfwidth", - "kooposquare", - "koppacyrillic", - "koreanstandardsymbol", - "koroniscmb", - "kparen", - "kpasquare", - "ksicyrillic", - "ktsquare", - "kturned", - "kuhiragana", - "kukatakana", - "kukatakanahalfwidth", - "kvsquare", - "kwsquare", - "labengali", - "lacute", - "ladeva", - "lagujarati", - "lagurmukhi", - "lakkhangyaothai", - "lamaleffinalarabic", - "lamalefhamzaabovefinalarabic", - "lamalefhamzaaboveisolatedarabic", - "lamalefhamzabelowfinalarabic", - "lamalefhamzabelowisolatedarabic", - "lamalefisolatedarabic", - "lamalefmaddaabovefinalarabic", - "lamalefmaddaaboveisolatedarabic", - "lamarabic", - "lambda", - "lambdastroke", - "lamed", - "lameddagesh", - "lameddageshhebrew", - "lamedhebrew", - "lamedholam", - "lamedholamdagesh", - "lamedholamdageshhebrew", - "lamedholamhebrew", - "lamfinalarabic", - "lamhahinitialarabic", - "laminitialarabic", - "lamjeeminitialarabic", - "lamkhahinitialarabic", - "lamlamhehisolatedarabic", - "lammedialarabic", - "lammeemhahinitialarabic", - "lammeeminitialarabic", - "lammeemjeeminitialarabic", - "lammeemkhahinitialarabic", - "largecircle", - "lbar", - "lbelt", - "lbopomofo", - "lcaron", - "lcedilla", - "lcircle", - "lcircumflexbelow", - "lcommaaccent", - "ldot", - "ldotaccent", - "ldotbelow", - "ldotbelowmacron", - "leftangleabovecmb", - "lefttackbelowcmb", - "lessequal", - "lessequalorgreater", - "lessmonospace", - "lessorequivalent", - "lessorgreater", - "lessoverequal", - "lesssmall", - "lezh", - "lfblock", - "lhookretroflex", - "lira", - "liwnarmenian", - "lj", - "ljecyrillic", - "ll", - "lladeva", - "llagujarati", - "llinebelow", - "llladeva", - "llvocalicbengali", - "llvocalicdeva", - "llvocalicvowelsignbengali", - "llvocalicvowelsigndeva", - "lmiddletilde", - "lmonospace", - "lmsquare", - "lochulathai", - "logicaland", - "logicalnotreversed", - "logicalor", - "lolingthai", - "longs", - "lowlinecenterline", - "lowlinecmb", - "lowlinedashed", - "lozenge", - "lparen", - "lsquare", - "ltshade", - "luthai", - "lvocalicbengali", - "lvocalicdeva", - "lvocalicvowelsignbengali", - "lvocalicvowelsigndeva", - "lxsquare", - "mabengali", - "macronbelowcmb", - "macroncmb", - "macronlowmod", - "macronmonospace", - "macute", - "madeva", - "magujarati", - "magurmukhi", - "mahapakhhebrew", - "mahapakhlefthebrew", - "mahiragana", - "maichattawalowleftthai", - "maichattawalowrightthai", - "maichattawathai", - "maichattawaupperleftthai", - "maieklowleftthai", - "maieklowrightthai", - "maiekthai", - "maiekupperleftthai", - "maihanakatleftthai", - "maihanakatthai", - "maitaikhuleftthai", - "maitaikhuthai", - "maitholowleftthai", - "maitholowrightthai", - "maithothai", - "maithoupperleftthai", - "maitrilowleftthai", - "maitrilowrightthai", - "maitrithai", - "maitriupperleftthai", - "maiyamokthai", - "makatakana", - "makatakanahalfwidth", - "male", - "mansyonsquare", - "maqafhebrew", - "mars", - "masoracirclehebrew", - "masquare", - "mbopomofo", - "mbsquare", - "mcircle", - "mcubedsquare", - "mdotaccent", - "mdotbelow", - "meemarabic", - "meemfinalarabic", - "meeminitialarabic", - "meemmedialarabic", - "meemmeeminitialarabic", - "meemmeemisolatedarabic", - "meetorusquare", - "mehiragana", - "meizierasquare", - "mekatakana", - "mekatakanahalfwidth", - "mem", - "memdagesh", - "memdageshhebrew", - "memhebrew", - "menarmenian", - "merkhahebrew", - "merkhakefulahebrew", - "merkhakefulalefthebrew", - "merkhalefthebrew", - "mhook", - "mhzsquare", - "middledotkatakanahalfwidth", - "middot", - "mieumacirclekorean", - "mieumaparenkorean", - "mieumcirclekorean", - "mieumkorean", - "mieumpansioskorean", - "mieumparenkorean", - "mieumpieupkorean", - "mieumsioskorean", - "mihiragana", - "mikatakana", - "mikatakanahalfwidth", - "minusbelowcmb", - "minuscircle", - "minusmod", - "minusplus", - "minute", - "miribaarusquare", - "mirisquare", - "mlonglegturned", - "mlsquare", - "mmcubedsquare", - "mmonospace", - "mmsquaredsquare", - "mohiragana", - "mohmsquare", - "mokatakana", - "mokatakanahalfwidth", - "molsquare", - "momathai", - "moverssquare", - "moverssquaredsquare", - "mparen", - "mpasquare", - "mssquare", - "mturned", - "mu1", - "muasquare", - "muchgreater", - "muchless", - "mufsquare", - "mugreek", - "mugsquare", - "muhiragana", - "mukatakana", - "mukatakanahalfwidth", - "mulsquare", - "mumsquare", - "munahhebrew", - "munahlefthebrew", - "musicalnote", - "musicalnotedbl", - "musicflatsign", - "musicsharpsign", - "mussquare", - "muvsquare", - "muwsquare", - "mvmegasquare", - "mvsquare", - "mwmegasquare", - "mwsquare", - "nabengali", - "nabla", - "nacute", - "nadeva", - "nagujarati", - "nagurmukhi", - "nahiragana", - "nakatakana", - "nakatakanahalfwidth", - "napostrophe", - "nasquare", - "nbopomofo", - "nbspace", - "ncaron", - "ncedilla", - "ncircle", - "ncircumflexbelow", - "ncommaaccent", - "ndotaccent", - "ndotbelow", - "nehiragana", - "nekatakana", - "nekatakanahalfwidth", - "newsheqelsign", - "nfsquare", - "ngabengali", - "ngadeva", - "ngagujarati", - "ngagurmukhi", - "ngonguthai", - "nhiragana", - "nhookleft", - "nhookretroflex", - "nieunacirclekorean", - "nieunaparenkorean", - "nieuncieuckorean", - "nieuncirclekorean", - "nieunhieuhkorean", - "nieunkorean", - "nieunpansioskorean", - "nieunparenkorean", - "nieunsioskorean", - "nieuntikeutkorean", - "nihiragana", - "nikatakana", - "nikatakanahalfwidth", - "nikhahitleftthai", - "nikhahitthai", - "ninearabic", - "ninebengali", - "ninecircle", - "ninecircleinversesansserif", - "ninedeva", - "ninegujarati", - "ninegurmukhi", - "ninehackarabic", - "ninehangzhou", - "nineideographicparen", - "ninemonospace", - "nineparen", - "nineperiod", - "ninepersian", - "nineroman", - "nineteencircle", - "nineteenparen", - "nineteenperiod", - "ninethai", - "nj", - "njecyrillic", - "nkatakana", - "nkatakanahalfwidth", - "nlegrightlong", - "nlinebelow", - "nmonospace", - "nmsquare", - "nnabengali", - "nnadeva", - "nnagujarati", - "nnagurmukhi", - "nnnadeva", - "nohiragana", - "nokatakana", - "nokatakanahalfwidth", - "nonbreakingspace", - "nonenthai", - "nonuthai", - "noonarabic", - "noonfinalarabic", - "noonghunnaarabic", - "noonghunnafinalarabic", - "noonhehinitialarabic", - "nooninitialarabic", - "noonjeeminitialarabic", - "noonjeemisolatedarabic", - "noonmedialarabic", - "noonmeeminitialarabic", - "noonmeemisolatedarabic", - "noonnoonfinalarabic", - "notcontains", - "notelement", - "notelementof", - "notequal", - "notgreater", - "notgreaternorequal", - "notgreaternorless", - "notidentical", - "notless", - "notlessnorequal", - "notparallel", - "notprecedes", - "notsubset", - "notsucceeds", - "notsuperset", - "nowarmenian", - "nparen", - "nssquare", - "nu", - "nuhiragana", - "nukatakana", - "nukatakanahalfwidth", - "nuktabengali", - "nuktadeva", - "nuktagujarati", - "nuktagurmukhi", - "numbersignmonospace", - "numbersignsmall", - "numeralsigngreek", - "numeralsignlowergreek", - "numero", - "nun", - "nundagesh", - "nundageshhebrew", - "nunhebrew", - "nvsquare", - "nwsquare", - "nyabengali", - "nyadeva", - "nyagujarati", - "nyagurmukhi", - "oangthai", - "obarred", - "obarredcyrillic", - "obarreddieresiscyrillic", - "obengali", - "obopomofo", - "obreve", - "ocandradeva", - "ocandragujarati", - "ocandravowelsigndeva", - "ocandravowelsigngujarati", - "ocaron", - "ocircle", - "ocircumflexacute", - "ocircumflexdotbelow", - "ocircumflexgrave", - "ocircumflexhookabove", - "ocircumflextilde", - "ocyrillic", - "odblacute", - "odblgrave", - "odeva", - "odieresiscyrillic", - "odotbelow", - "oekorean", - "ogonekcmb", - "ogujarati", - "oharmenian", - "ohiragana", - "ohookabove", - "ohorn", - "ohornacute", - "ohorndotbelow", - "ohorngrave", - "ohornhookabove", - "ohorntilde", - "ohungarumlaut", - "oi", - "oinvertedbreve", - "okatakana", - "okatakanahalfwidth", - "okorean", - "olehebrew", - "omacron", - "omacronacute", - "omacrongrave", - "omdeva", - "omega", - "omega1", - "omegacyrillic", - "omegalatinclosed", - "omegaroundcyrillic", - "omegatitlocyrillic", - "omegatonos", - "omgujarati", - "omicron", - "omicrontonos", - "omonospace", - "onearabic", - "onebengali", - "onecircle", - "onecircleinversesansserif", - "onedeva", - "onegujarati", - "onegurmukhi", - "onehackarabic", - "onehangzhou", - "oneideographicparen", - "onemonospace", - "onenumeratorbengali", - "oneparen", - "oneperiod", - "onepersian", - "oneroman", - "onethai", - "oogonek", - "oogonekmacron", - "oogurmukhi", - "oomatragurmukhi", - "oopen", - "oparen", - "openbullet", - "option", - "orthogonal", - "oshortdeva", - "oshortvowelsigndeva", - "oslashacute", - "osmallhiragana", - "osmallkatakana", - "osmallkatakanahalfwidth", - "ostrokeacute", - "otcyrillic", - "otildeacute", - "otildedieresis", - "oubopomofo", - "overline", - "overlinecenterline", - "overlinecmb", - "overlinedashed", - "overlinedblwavy", - "overlinewavy", - "overscore", - "ovowelsignbengali", - "ovowelsigndeva", - "ovowelsigngujarati", - "paampssquare", - "paasentosquare", - "pabengali", - "pacute", - "padeva", - "pagedown", - "pageup", - "pagujarati", - "pagurmukhi", - "pahiragana", - "paiyannoithai", - "pakatakana", - "palatalizationcyrilliccmb", - "palochkacyrillic", - "pansioskorean", - "parallel", - "parenleftaltonearabic", - "parenleftbt", - "parenleftex", - "parenleftmonospace", - "parenleftsmall", - "parenlefttp", - "parenleftvertical", - "parenrightaltonearabic", - "parenrightbt", - "parenrightex", - "parenrightmonospace", - "parenrightsmall", - "parenrighttp", - "parenrightvertical", - "partialdiff", - "paseqhebrew", - "pashtahebrew", - "pasquare", - "patah", - "patah11", - "patah1d", - "patah2a", - "patahhebrew", - "patahnarrowhebrew", - "patahquarterhebrew", - "patahwidehebrew", - "pazerhebrew", - "pbopomofo", - "pcircle", - "pdotaccent", - "pe", - "pecyrillic", - "pedagesh", - "pedageshhebrew", - "peezisquare", - "pefinaldageshhebrew", - "peharabic", - "peharmenian", - "pehebrew", - "pehfinalarabic", - "pehinitialarabic", - "pehiragana", - "pehmedialarabic", - "pekatakana", - "pemiddlehookcyrillic", - "perafehebrew", - "percentarabic", - "percentmonospace", - "percentsmall", - "periodarmenian", - "periodhalfwidth", - "periodmonospace", - "periodsmall", - "perispomenigreekcmb", - "perpendicular", - "peseta", - "pfsquare", - "phabengali", - "phadeva", - "phagujarati", - "phagurmukhi", - "phi", - "phi1", - "phieuphacirclekorean", - "phieuphaparenkorean", - "phieuphcirclekorean", - "phieuphkorean", - "phieuphparenkorean", - "philatin", - "phinthuthai", - "phisymbolgreek", - "phook", - "phophanthai", - "phophungthai", - "phosamphaothai", - "pi", - "pieupacirclekorean", - "pieupaparenkorean", - "pieupcieuckorean", - "pieupcirclekorean", - "pieupkiyeokkorean", - "pieupkorean", - "pieupparenkorean", - "pieupsioskiyeokkorean", - "pieupsioskorean", - "pieupsiostikeutkorean", - "pieupthieuthkorean", - "pieuptikeutkorean", - "pihiragana", - "pikatakana", - "pisymbolgreek", - "piwrarmenian", - "plusbelowcmb", - "pluscircle", - "plusmod", - "plusmonospace", - "plussmall", - "plussuperior", - "pmonospace", - "pmsquare", - "pohiragana", - "pointingindexdownwhite", - "pointingindexleftwhite", - "pointingindexrightwhite", - "pointingindexupwhite", - "pokatakana", - "poplathai", - "postalmark", - "postalmarkface", - "pparen", - "precedes", - "prescription", - "primemod", - "primereversed", - "product", - "projective", - "prolongedkana", - "propellor", - "propersubset", - "propersuperset", - "proportion", - "proportional", - "psi", - "psicyrillic", - "psilipneumatacyrilliccmb", - "pssquare", - "puhiragana", - "pukatakana", - "pvsquare", - "pwsquare", - "qadeva", - "qadmahebrew", - "qafarabic", - "qaffinalarabic", - "qafinitialarabic", - "qafmedialarabic", - "qamats", - "qamats10", - "qamats1a", - "qamats1c", - "qamats27", - "qamats29", - "qamats33", - "qamatsde", - "qamatshebrew", - "qamatsnarrowhebrew", - "qamatsqatanhebrew", - "qamatsqatannarrowhebrew", - "qamatsqatanquarterhebrew", - "qamatsqatanwidehebrew", - "qamatsquarterhebrew", - "qamatswidehebrew", - "qarneyparahebrew", - "qbopomofo", - "qcircle", - "qhook", - "qmonospace", - "qof", - "qofdagesh", - "qofdageshhebrew", - "qofhatafpatah", - "qofhatafpatahhebrew", - "qofhatafsegol", - "qofhatafsegolhebrew", - "qofhebrew", - "qofhiriq", - "qofhiriqhebrew", - "qofholam", - "qofholamhebrew", - "qofpatah", - "qofpatahhebrew", - "qofqamats", - "qofqamatshebrew", - "qofqubuts", - "qofqubutshebrew", - "qofsegol", - "qofsegolhebrew", - "qofsheva", - "qofshevahebrew", - "qoftsere", - "qoftserehebrew", - "qparen", - "quarternote", - "qubuts", - "qubuts18", - "qubuts25", - "qubuts31", - "qubutshebrew", - "qubutsnarrowhebrew", - "qubutsquarterhebrew", - "qubutswidehebrew", - "questionarabic", - "questionarmenian", - "questiongreek", - "questionmonospace", - "quotedblmonospace", - "quotedblprime", - "quotedblprimereversed", - "quoteleftreversed", - "quotereversed", - "quoterightn", - "quotesinglemonospace", - "raarmenian", - "rabengali", - "racute", - "radeva", - "radical", - "radicalex", - "radoverssquare", - "radoverssquaredsquare", - "radsquare", - "rafe", - "rafehebrew", - "ragujarati", - "ragurmukhi", - "rahiragana", - "rakatakana", - "rakatakanahalfwidth", - "ralowerdiagonalbengali", - "ramiddlediagonalbengali", - "ramshorn", - "ratio", - "rbopomofo", - "rcaron", - "rcedilla", - "rcircle", - "rcommaaccent", - "rdblgrave", - "rdotaccent", - "rdotbelow", - "rdotbelowmacron", - "referencemark", - "reflexsubset", - "reflexsuperset", - "registersans", - "registerserif", - "reharabic", - "reharmenian", - "rehfinalarabic", - "rehiragana", - "rehyehaleflamarabic", - "rekatakana", - "rekatakanahalfwidth", - "resh", - "reshdageshhebrew", - "reshhatafpatah", - "reshhatafpatahhebrew", - "reshhatafsegol", - "reshhatafsegolhebrew", - "reshhebrew", - "reshhiriq", - "reshhiriqhebrew", - "reshholam", - "reshholamhebrew", - "reshpatah", - "reshpatahhebrew", - "reshqamats", - "reshqamatshebrew", - "reshqubuts", - "reshqubutshebrew", - "reshsegol", - "reshsegolhebrew", - "reshsheva", - "reshshevahebrew", - "reshtsere", - "reshtserehebrew", - "reversedtilde", - "reviahebrew", - "reviamugrashhebrew", - "revlogicalnot", - "rfishhook", - "rfishhookreversed", - "rhabengali", - "rhadeva", - "rho", - "rhook", - "rhookturned", - "rhookturnedsuperior", - "rhosymbolgreek", - "rhotichookmod", - "rieulacirclekorean", - "rieulaparenkorean", - "rieulcirclekorean", - "rieulhieuhkorean", - "rieulkiyeokkorean", - "rieulkiyeoksioskorean", - "rieulkorean", - "rieulmieumkorean", - "rieulpansioskorean", - "rieulparenkorean", - "rieulphieuphkorean", - "rieulpieupkorean", - "rieulpieupsioskorean", - "rieulsioskorean", - "rieulthieuthkorean", - "rieultikeutkorean", - "rieulyeorinhieuhkorean", - "rightangle", - "righttackbelowcmb", - "righttriangle", - "rihiragana", - "rikatakana", - "rikatakanahalfwidth", - "ringbelowcmb", - "ringcmb", - "ringhalfleft", - "ringhalfleftarmenian", - "ringhalfleftbelowcmb", - "ringhalfleftcentered", - "ringhalfright", - "ringhalfrightbelowcmb", - "ringhalfrightcentered", - "rinvertedbreve", - "rittorusquare", - "rlinebelow", - "rlongleg", - "rlonglegturned", - "rmonospace", - "rohiragana", - "rokatakana", - "rokatakanahalfwidth", - "roruathai", - "rparen", - "rrabengali", - "rradeva", - "rragurmukhi", - "rreharabic", - "rrehfinalarabic", - "rrvocalicbengali", - "rrvocalicdeva", - "rrvocalicgujarati", - "rrvocalicvowelsignbengali", - "rrvocalicvowelsigndeva", - "rrvocalicvowelsigngujarati", - "rtblock", - "rturned", - "rturnedsuperior", - "ruhiragana", - "rukatakana", - "rukatakanahalfwidth", - "rupeemarkbengali", - "rupeesignbengali", - "ruthai", - "rvocalicbengali", - "rvocalicdeva", - "rvocalicgujarati", - "rvocalicvowelsignbengali", - "rvocalicvowelsigndeva", - "rvocalicvowelsigngujarati", - "sabengali", - "sacute", - "sacutedotaccent", - "sadarabic", - "sadeva", - "sadfinalarabic", - "sadinitialarabic", - "sadmedialarabic", - "sagujarati", - "sagurmukhi", - "sahiragana", - "sakatakana", - "sakatakanahalfwidth", - "sallallahoualayhewasallamarabic", - "samekh", - "samekhdagesh", - "samekhdageshhebrew", - "samekhhebrew", - "saraaathai", - "saraaethai", - "saraaimaimalaithai", - "saraaimaimuanthai", - "saraamthai", - "saraathai", - "saraethai", - "saraiileftthai", - "saraiithai", - "saraileftthai", - "saraithai", - "saraothai", - "saraueeleftthai", - "saraueethai", - "saraueleftthai", - "sarauethai", - "sarauthai", - "sarauuthai", - "sbopomofo", - "scarondotaccent", - "scedilla", - "schwa", - "schwacyrillic", - "schwadieresiscyrillic", - "schwahook", - "scircle", - "scircumflex", - "scommaaccent", - "sdotaccent", - "sdotbelow", - "sdotbelowdotaccent", - "seagullbelowcmb", - "second", - "secondtonechinese", - "seenarabic", - "seenfinalarabic", - "seeninitialarabic", - "seenmedialarabic", - "segol", - "segol13", - "segol1f", - "segol2c", - "segolhebrew", - "segolnarrowhebrew", - "segolquarterhebrew", - "segoltahebrew", - "segolwidehebrew", - "seharmenian", - "sehiragana", - "sekatakana", - "sekatakanahalfwidth", - "semicolonarabic", - "semicolonmonospace", - "semicolonsmall", - "semivoicedmarkkana", - "semivoicedmarkkanahalfwidth", - "sentisquare", - "sentosquare", - "sevenarabic", - "sevenbengali", - "sevencircle", - "sevencircleinversesansserif", - "sevendeva", - "sevengujarati", - "sevengurmukhi", - "sevenhackarabic", - "sevenhangzhou", - "sevenideographicparen", - "sevenmonospace", - "sevenparen", - "sevenperiod", - "sevenpersian", - "sevenroman", - "seventeencircle", - "seventeenparen", - "seventeenperiod", - "seventhai", - "sfthyphen", - "shaarmenian", - "shabengali", - "shacyrillic", - "shaddaarabic", - "shaddadammaarabic", - "shaddadammatanarabic", - "shaddafathaarabic", - "shaddafathatanarabic", - "shaddakasraarabic", - "shaddakasratanarabic", - "shade", - "shadedark", - "shadelight", - "shademedium", - "shadeva", - "shagujarati", - "shagurmukhi", - "shalshelethebrew", - "shbopomofo", - "shchacyrillic", - "sheenarabic", - "sheenfinalarabic", - "sheeninitialarabic", - "sheenmedialarabic", - "sheicoptic", - "sheqel", - "sheqelhebrew", - "sheva", - "sheva115", - "sheva15", - "sheva22", - "sheva2e", - "shevahebrew", - "shevanarrowhebrew", - "shevaquarterhebrew", - "shevawidehebrew", - "shhacyrillic", - "shimacoptic", - "shin", - "shindagesh", - "shindageshhebrew", - "shindageshshindot", - "shindageshshindothebrew", - "shindageshsindot", - "shindageshsindothebrew", - "shindothebrew", - "shinhebrew", - "shinshindot", - "shinshindothebrew", - "shinsindot", - "shinsindothebrew", - "shook", - "sigma", - "sigma1", - "sigmafinal", - "sigmalunatesymbolgreek", - "sihiragana", - "sikatakana", - "sikatakanahalfwidth", - "siluqhebrew", - "siluqlefthebrew", - "similar", - "sindothebrew", - "siosacirclekorean", - "siosaparenkorean", - "sioscieuckorean", - "sioscirclekorean", - "sioskiyeokkorean", - "sioskorean", - "siosnieunkorean", - "siosparenkorean", - "siospieupkorean", - "siostikeutkorean", - "sixarabic", - "sixbengali", - "sixcircle", - "sixcircleinversesansserif", - "sixdeva", - "sixgujarati", - "sixgurmukhi", - "sixhackarabic", - "sixhangzhou", - "sixideographicparen", - "sixmonospace", - "sixparen", - "sixperiod", - "sixpersian", - "sixroman", - "sixteencircle", - "sixteencurrencydenominatorbengali", - "sixteenparen", - "sixteenperiod", - "sixthai", - "slashmonospace", - "slong", - "slongdotaccent", - "smileface", - "smonospace", - "sofpasuqhebrew", - "softhyphen", - "softsigncyrillic", - "sohiragana", - "sokatakana", - "sokatakanahalfwidth", - "soliduslongoverlaycmb", - "solidusshortoverlaycmb", - "sorusithai", - "sosalathai", - "sosothai", - "sosuathai", - "spacehackarabic", - "spade", - "spadesuitblack", - "spadesuitwhite", - "sparen", - "squarebelowcmb", - "squarecc", - "squarecm", - "squarediagonalcrosshatchfill", - "squarehorizontalfill", - "squarekg", - "squarekm", - "squarekmcapital", - "squareln", - "squarelog", - "squaremg", - "squaremil", - "squaremm", - "squaremsquared", - "squareorthogonalcrosshatchfill", - "squareupperlefttolowerrightfill", - "squareupperrighttolowerleftfill", - "squareverticalfill", - "squarewhitewithsmallblack", - "srsquare", - "ssabengali", - "ssadeva", - "ssagujarati", - "ssangcieuckorean", - "ssanghieuhkorean", - "ssangieungkorean", - "ssangkiyeokkorean", - "ssangnieunkorean", - "ssangpieupkorean", - "ssangsioskorean", - "ssangtikeutkorean", - "sterlingmonospace", - "strokelongoverlaycmb", - "strokeshortoverlaycmb", - "subset", - "subsetnotequal", - "subsetorequal", - "succeeds", - "suchthat", - "suhiragana", - "sukatakana", - "sukatakanahalfwidth", - "sukunarabic", - "summation", - "sun", - "superset", - "supersetnotequal", - "supersetorequal", - "svsquare", - "syouwaerasquare", - "tabengali", - "tackdown", - "tackleft", - "tadeva", - "tagujarati", - "tagurmukhi", - "taharabic", - "tahfinalarabic", - "tahinitialarabic", - "tahiragana", - "tahmedialarabic", - "taisyouerasquare", - "takatakana", - "takatakanahalfwidth", - "tatweelarabic", - "tau", - "tav", - "tavdages", - "tavdagesh", - "tavdageshhebrew", - "tavhebrew", - "tbar", - "tbopomofo", - "tcaron", - "tccurl", - "tcedilla", - "tcheharabic", - "tchehfinalarabic", - "tchehinitialarabic", - "tchehmedialarabic", - "tchehmeeminitialarabic", - "tcircle", - "tcircumflexbelow", - "tcommaaccent", - "tdieresis", - "tdotaccent", - "tdotbelow", - "tecyrillic", - "tedescendercyrillic", - "teharabic", - "tehfinalarabic", - "tehhahinitialarabic", - "tehhahisolatedarabic", - "tehinitialarabic", - "tehiragana", - "tehjeeminitialarabic", - "tehjeemisolatedarabic", - "tehmarbutaarabic", - "tehmarbutafinalarabic", - "tehmedialarabic", - "tehmeeminitialarabic", - "tehmeemisolatedarabic", - "tehnoonfinalarabic", - "tekatakana", - "tekatakanahalfwidth", - "telephone", - "telephoneblack", - "telishagedolahebrew", - "telishaqetanahebrew", - "tencircle", - "tenideographicparen", - "tenparen", - "tenperiod", - "tenroman", - "tesh", - "tet", - "tetdagesh", - "tetdageshhebrew", - "tethebrew", - "tetsecyrillic", - "tevirhebrew", - "tevirlefthebrew", - "thabengali", - "thadeva", - "thagujarati", - "thagurmukhi", - "thalarabic", - "thalfinalarabic", - "thanthakhatlowleftthai", - "thanthakhatlowrightthai", - "thanthakhatthai", - "thanthakhatupperleftthai", - "theharabic", - "thehfinalarabic", - "thehinitialarabic", - "thehmedialarabic", - "thereexists", - "therefore", - "theta", - "theta1", - "thetasymbolgreek", - "thieuthacirclekorean", - "thieuthaparenkorean", - "thieuthcirclekorean", - "thieuthkorean", - "thieuthparenkorean", - "thirteencircle", - "thirteenparen", - "thirteenperiod", - "thonangmonthothai", - "thook", - "thophuthaothai", - "thothahanthai", - "thothanthai", - "thothongthai", - "thothungthai", - "thousandcyrillic", - "thousandsseparatorarabic", - "thousandsseparatorpersian", - "threearabic", - "threebengali", - "threecircle", - "threecircleinversesansserif", - "threedeva", - "threegujarati", - "threegurmukhi", - "threehackarabic", - "threehangzhou", - "threeideographicparen", - "threemonospace", - "threenumeratorbengali", - "threeparen", - "threeperiod", - "threepersian", - "threeroman", - "threethai", - "thzsquare", - "tihiragana", - "tikatakana", - "tikatakanahalfwidth", - "tikeutacirclekorean", - "tikeutaparenkorean", - "tikeutcirclekorean", - "tikeutkorean", - "tikeutparenkorean", - "tildebelowcmb", - "tildecmb", - "tildecomb", - "tildedoublecmb", - "tildeoperator", - "tildeoverlaycmb", - "tildeverticalcmb", - "timescircle", - "tipehahebrew", - "tipehalefthebrew", - "tippigurmukhi", - "titlocyrilliccmb", - "tiwnarmenian", - "tlinebelow", - "tmonospace", - "toarmenian", - "tohiragana", - "tokatakana", - "tokatakanahalfwidth", - "tonebarextrahighmod", - "tonebarextralowmod", - "tonebarhighmod", - "tonebarlowmod", - "tonebarmidmod", - "tonefive", - "tonesix", - "tonetwo", - "tonos", - "tonsquare", - "topatakthai", - "tortoiseshellbracketleft", - "tortoiseshellbracketleftsmall", - "tortoiseshellbracketleftvertical", - "tortoiseshellbracketright", - "tortoiseshellbracketrightsmall", - "tortoiseshellbracketrightvertical", - "totaothai", - "tpalatalhook", - "tparen", - "trademarksans", - "trademarkserif", - "tretroflexhook", - "triagdn", - "triaglf", - "triagrt", - "triagup", - "ts", - "tsadi", - "tsadidagesh", - "tsadidageshhebrew", - "tsadihebrew", - "tsecyrillic", - "tsere", - "tsere12", - "tsere1e", - "tsere2b", - "tserehebrew", - "tserenarrowhebrew", - "tserequarterhebrew", - "tserewidehebrew", - "tshecyrillic", - "ttabengali", - "ttadeva", - "ttagujarati", - "ttagurmukhi", - "tteharabic", - "ttehfinalarabic", - "ttehinitialarabic", - "ttehmedialarabic", - "tthabengali", - "tthadeva", - "tthagujarati", - "tthagurmukhi", - "tturned", - "tuhiragana", - "tukatakana", - "tukatakanahalfwidth", - "tusmallhiragana", - "tusmallkatakana", - "tusmallkatakanahalfwidth", - "twelvecircle", - "twelveparen", - "twelveperiod", - "twelveroman", - "twentycircle", - "twentyhangzhou", - "twentyparen", - "twentyperiod", - "twoarabic", - "twobengali", - "twocircle", - "twocircleinversesansserif", - "twodeva", - "twodotleader", - "twodotleadervertical", - "twogujarati", - "twogurmukhi", - "twohackarabic", - "twohangzhou", - "twoideographicparen", - "twomonospace", - "twonumeratorbengali", - "twoparen", - "twoperiod", - "twopersian", - "tworoman", - "twostroke", - "twothai", - "ubar", - "ubengali", - "ubopomofo", - "ubreve", - "ucaron", - "ucircle", - "ucircumflexbelow", - "ucyrillic", - "udattadeva", - "udblacute", - "udblgrave", - "udeva", - "udieresisacute", - "udieresisbelow", - "udieresiscaron", - "udieresiscyrillic", - "udieresisgrave", - "udieresismacron", - "udotbelow", - "ugujarati", - "ugurmukhi", - "uhiragana", - "uhookabove", - "uhorn", - "uhornacute", - "uhorndotbelow", - "uhorngrave", - "uhornhookabove", - "uhorntilde", - "uhungarumlaut", - "uhungarumlautcyrillic", - "uinvertedbreve", - "ukatakana", - "ukatakanahalfwidth", - "ukcyrillic", - "ukorean", - "umacron", - "umacroncyrillic", - "umacrondieresis", - "umatragurmukhi", - "umonospace", - "underscoredbl", - "underscoremonospace", - "underscorevertical", - "underscorewavy", - "union", - "universal", - "uogonek", - "uparen", - "upblock", - "upperdothebrew", - "upsilon", - "upsilondieresis", - "upsilondieresistonos", - "upsilonlatin", - "upsilontonos", - "uptackbelowcmb", - "uptackmod", - "uragurmukhi", - "uring", - "ushortcyrillic", - "usmallhiragana", - "usmallkatakana", - "usmallkatakanahalfwidth", - "ustraightcyrillic", - "ustraightstrokecyrillic", - "utilde", - "utildeacute", - "utildebelow", - "uubengali", - "uudeva", - "uugujarati", - "uugurmukhi", - "uumatragurmukhi", - "uuvowelsignbengali", - "uuvowelsigndeva", - "uuvowelsigngujarati", - "uvowelsignbengali", - "uvowelsigndeva", - "uvowelsigngujarati", - "vadeva", - "vagujarati", - "vagurmukhi", - "vakatakana", - "vav", - "vavdagesh", - "vavdagesh65", - "vavdageshhebrew", - "vavhebrew", - "vavholam", - "vavholamhebrew", - "vavvavhebrew", - "vavyodhebrew", - "vcircle", - "vdotbelow", - "vecyrillic", - "veharabic", - "vehfinalarabic", - "vehinitialarabic", - "vehmedialarabic", - "vekatakana", - "venus", - "verticalbar", - "verticallineabovecmb", - "verticallinebelowcmb", - "verticallinelowmod", - "verticallinemod", - "vewarmenian", - "vhook", - "vikatakana", - "viramabengali", - "viramadeva", - "viramagujarati", - "visargabengali", - "visargadeva", - "visargagujarati", - "vmonospace", - "voarmenian", - "voicediterationhiragana", - "voicediterationkatakana", - "voicedmarkkana", - "voicedmarkkanahalfwidth", - "vokatakana", - "vparen", - "vtilde", - "vturned", - "vuhiragana", - "vukatakana", - "wacute", - "waekorean", - "wahiragana", - "wakatakana", - "wakatakanahalfwidth", - "wakorean", - "wasmallhiragana", - "wasmallkatakana", - "wattosquare", - "wavedash", - "wavyunderscorevertical", - "wawarabic", - "wawfinalarabic", - "wawhamzaabovearabic", - "wawhamzaabovefinalarabic", - "wbsquare", - "wcircle", - "wcircumflex", - "wdieresis", - "wdotaccent", - "wdotbelow", - "wehiragana", - "weierstrass", - "wekatakana", - "wekorean", - "weokorean", - "wgrave", - "whitebullet", - "whitecircle", - "whitecircleinverse", - "whitecornerbracketleft", - "whitecornerbracketleftvertical", - "whitecornerbracketright", - "whitecornerbracketrightvertical", - "whitediamond", - "whitediamondcontainingblacksmalldiamond", - "whitedownpointingsmalltriangle", - "whitedownpointingtriangle", - "whiteleftpointingsmalltriangle", - "whiteleftpointingtriangle", - "whitelenticularbracketleft", - "whitelenticularbracketright", - "whiterightpointingsmalltriangle", - "whiterightpointingtriangle", - "whitesmallsquare", - "whitesmilingface", - "whitesquare", - "whitestar", - "whitetelephone", - "whitetortoiseshellbracketleft", - "whitetortoiseshellbracketright", - "whiteuppointingsmalltriangle", - "whiteuppointingtriangle", - "wihiragana", - "wikatakana", - "wikorean", - "wmonospace", - "wohiragana", - "wokatakana", - "wokatakanahalfwidth", - "won", - "wonmonospace", - "wowaenthai", - "wparen", - "wring", - "wsuperior", - "wturned", - "wynn", - "xabovecmb", - "xbopomofo", - "xcircle", - "xdieresis", - "xdotaccent", - "xeharmenian", - "xi", - "xmonospace", - "xparen", - "xsuperior", - "yaadosquare", - "yabengali", - "yadeva", - "yaekorean", - "yagujarati", - "yagurmukhi", - "yahiragana", - "yakatakana", - "yakatakanahalfwidth", - "yakorean", - "yamakkanthai", - "yasmallhiragana", - "yasmallkatakana", - "yasmallkatakanahalfwidth", - "yatcyrillic", - "ycircle", - "ycircumflex", - "ydotaccent", - "ydotbelow", - "yeharabic", - "yehbarreearabic", - "yehbarreefinalarabic", - "yehfinalarabic", - "yehhamzaabovearabic", - "yehhamzaabovefinalarabic", - "yehhamzaaboveinitialarabic", - "yehhamzaabovemedialarabic", - "yehinitialarabic", - "yehmedialarabic", - "yehmeeminitialarabic", - "yehmeemisolatedarabic", - "yehnoonfinalarabic", - "yehthreedotsbelowarabic", - "yekorean", - "yenmonospace", - "yeokorean", - "yeorinhieuhkorean", - "yerahbenyomohebrew", - "yerahbenyomolefthebrew", - "yericyrillic", - "yerudieresiscyrillic", - "yesieungkorean", - "yesieungpansioskorean", - "yesieungsioskorean", - "yetivhebrew", - "ygrave", - "yhook", - "yhookabove", - "yiarmenian", - "yicyrillic", - "yikorean", - "yinyang", - "yiwnarmenian", - "ymonospace", - "yod", - "yoddagesh", - "yoddageshhebrew", - "yodhebrew", - "yodyodhebrew", - "yodyodpatahhebrew", - "yohiragana", - "yoikorean", - "yokatakana", - "yokatakanahalfwidth", - "yokorean", - "yosmallhiragana", - "yosmallkatakana", - "yosmallkatakanahalfwidth", - "yotgreek", - "yoyaekorean", - "yoyakorean", - "yoyakthai", - "yoyingthai", - "yparen", - "ypogegrammeni", - "ypogegrammenigreekcmb", - "yr", - "yring", - "ysuperior", - "ytilde", - "yturned", - "yuhiragana", - "yuikorean", - "yukatakana", - "yukatakanahalfwidth", - "yukorean", - "yusbigcyrillic", - "yusbigiotifiedcyrillic", - "yuslittlecyrillic", - "yuslittleiotifiedcyrillic", - "yusmallhiragana", - "yusmallkatakana", - "yusmallkatakanahalfwidth", - "yuyekorean", - "yuyeokorean", - "yyabengali", - "yyadeva", - "zaarmenian", - "zacute", - "zadeva", - "zagurmukhi", - "zaharabic", - "zahfinalarabic", - "zahinitialarabic", - "zahiragana", - "zahmedialarabic", - "zainarabic", - "zainfinalarabic", - "zakatakana", - "zaqefgadolhebrew", - "zaqefqatanhebrew", - "zarqahebrew", - "zayin", - "zayindagesh", - "zayindageshhebrew", - "zayinhebrew", - "zbopomofo", - "zcircle", - "zcircumflex", - "zcurl", - "zdot", - "zdotaccent", - "zdotbelow", - "zecyrillic", - "zedescendercyrillic", - "zedieresiscyrillic", - "zehiragana", - "zekatakana", - "zeroarabic", - "zerobengali", - "zerodeva", - "zerogujarati", - "zerogurmukhi", - "zerohackarabic", - "zeromonospace", - "zeropersian", - "zerothai", - "zerowidthjoiner", - "zerowidthnonjoiner", - "zerowidthspace", - "zeta", - "zhbopomofo", - "zhearmenian", - "zhebrevecyrillic", - "zhecyrillic", - "zhedescendercyrillic", - "zhedieresiscyrillic", - "zihiragana", - "zikatakana", - "zinorhebrew", - "zlinebelow", - "zmonospace", - "zohiragana", - "zokatakana", - "zparen", - "zretroflexhook", - "zstroke", - "zuhiragana", - "zukatakana", - -#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */ - - NULL - }; - - - static const char* const * const sid_standard_names = ps_glyph_names + 2; - - -#define NUM_SID_GLYPHS 391 - -#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST -#define NUM_ADOBE_GLYPHS 4294 -#else -#define NUM_ADOBE_GLYPHS 391 -#endif - - - static const unsigned short mac_standard_names[259] = - { - 2, - 0, - 1, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 106, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 126, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 175, - 177, - 179, - 180, - 188, - 191, - 197, - 202, - 205, - 203, - 204, - 207, - 206, - 208, - 209, - 212, - 210, - 211, - 213, - 216, - 214, - 215, - 217, - 218, - 221, - 219, - 220, - 222, - 224, - 227, - 225, - 226, - 114, - 163, - 99, - 100, - 104, - 118, - 117, - 151, - 167, - 172, - 155, - 127, - 133, - 2919, - 140, - 143, - 2413, - 158, - 2642, - 2156, - 102, - 154, - 3092, - 3681, - 3192, - 3153, - 2415, - 141, - 145, - 741, - 146, - 149, - 125, - 98, - 153, - 3284, - 103, - 1353, - 472, - 108, - 122, - 123, - 2901, - 176, - 178, - 193, - 144, - 150, - 113, - 139, - 107, - 121, - 67, - 10, - 161, - 2677, - 229, - 200, - 101, - 105, - 109, - 110, - 111, - 112, - 115, - 116, - 119, - 120, - 124, - 174, - 181, - 173, - 182, - 183, - 184, - 185, - 186, - 187, - 189, - 190, - 1351, - 192, - 195, - 196, - 198, - 147, - 128, - 129, - 130, - 131, - 132, - 134, - 135, - 136, - 137, - 138, - 142, - 148, - 194, - 223, - 201, - 230, - 162, - 156, - 169, - 199, - 228, - 159, - 164, - 168, - 170, - 152, - 166, - 171, - 157, - 160, - 165, - 2074, - 556, - 2091, - 609, - 836, - 3465, - 438, - 1545, - 440, - 1560, - 1767, - 0 - }; - - - - static const unsigned short ps_names_to_unicode[4295] = - { - 0, - 0x0020U, - 0x0021U, - 0x0022U, - 0x0023U, - 0x0024U, - 0x0025U, - 0x0026U, - 0x2019U, - 0x0028U, - 0x0029U, - 0x002AU, - 0x002BU, - 0x002CU, - 0x002DU, - 0x002EU, - 0x002FU, - 0x0030U, - 0x0031U, - 0x0032U, - 0x0033U, - 0x0034U, - 0x0035U, - 0x0036U, - 0x0037U, - 0x0038U, - 0x0039U, - 0x003AU, - 0x003BU, - 0x003CU, - 0x003DU, - 0x003EU, - 0x003FU, - 0x0040U, - 0x0041U, - 0x0042U, - 0x0043U, - 0x0044U, - 0x0045U, - 0x0046U, - 0x0047U, - 0x0048U, - 0x0049U, - 0x004AU, - 0x004BU, - 0x004CU, - 0x004DU, - 0x004EU, - 0x004FU, - 0x0050U, - 0x0051U, - 0x0052U, - 0x0053U, - 0x0054U, - 0x0055U, - 0x0056U, - 0x0057U, - 0x0058U, - 0x0059U, - 0x005AU, - 0x005BU, - 0x005CU, - 0x005DU, - 0x005EU, - 0x005FU, - 0x2018U, - 0x0061U, - 0x0062U, - 0x0063U, - 0x0064U, - 0x0065U, - 0x0066U, - 0x0067U, - 0x0068U, - 0x0069U, - 0x006AU, - 0x006BU, - 0x006CU, - 0x006DU, - 0x006EU, - 0x006FU, - 0x0070U, - 0x0071U, - 0x0072U, - 0x0073U, - 0x0074U, - 0x0075U, - 0x0076U, - 0x0077U, - 0x0078U, - 0x0079U, - 0x007AU, - 0x007BU, - 0x007CU, - 0x007DU, - 0x007EU, - 0x00A1U, - 0x00A2U, - 0x00A3U, - 0x2044U, - 0x00A5U, - 0x0192U, - 0x00A7U, - 0x00A4U, - 0x0027U, - 0x201CU, - 0x00ABU, - 0x2039U, - 0x203AU, - 0xFB01U, - 0xFB02U, - 0x2013U, - 0x2020U, - 0x2021U, - 0x00B7U, - 0x00B6U, - 0x2022U, - 0x201AU, - 0x201EU, - 0x201DU, - 0x00BBU, - 0x2026U, - 0x2030U, - 0x00BFU, - 0x0060U, - 0x00B4U, - 0x02C6U, - 0x02DCU, - 0x00AFU, - 0x02D8U, - 0x02D9U, - 0x00A8U, - 0x02DAU, - 0x00B8U, - 0x02DDU, - 0x02DBU, - 0x02C7U, - 0x2014U, - 0x00C6U, - 0x00AAU, - 0x0141U, - 0x00D8U, - 0x0152U, - 0x00BAU, - 0x00E6U, - 0x0131U, - 0x0142U, - 0x00F8U, - 0x0153U, - 0x00DFU, - 0x00B9U, - 0x00ACU, - 0x00B5U, - 0x2122U, - 0x00D0U, - 0x00BDU, - 0x00B1U, - 0x00DEU, - 0x00BCU, - 0x00F7U, - 0x00A6U, - 0x00B0U, - 0x00FEU, - 0x00BEU, - 0x00B2U, - 0x00AEU, - 0x2212U, - 0x00F0U, - 0x00D7U, - 0x00B3U, - 0x00A9U, - 0x00C1U, - 0x00C2U, - 0x00C4U, - 0x00C0U, - 0x00C5U, - 0x00C3U, - 0x00C7U, - 0x00C9U, - 0x00CAU, - 0x00CBU, - 0x00C8U, - 0x00CDU, - 0x00CEU, - 0x00CFU, - 0x00CCU, - 0x00D1U, - 0x00D3U, - 0x00D4U, - 0x00D6U, - 0x00D2U, - 0x00D5U, - 0x0160U, - 0x00DAU, - 0x00DBU, - 0x00DCU, - 0x00D9U, - 0x00DDU, - 0x0178U, - 0x017DU, - 0x00E1U, - 0x00E2U, - 0x00E4U, - 0x00E0U, - 0x00E5U, - 0x00E3U, - 0x00E7U, - 0x00E9U, - 0x00EAU, - 0x00EBU, - 0x00E8U, - 0x00EDU, - 0x00EEU, - 0x00EFU, - 0x00ECU, - 0x00F1U, - 0x00F3U, - 0x00F4U, - 0x00F6U, - 0x00F2U, - 0x00F5U, - 0x0161U, - 0x00FAU, - 0x00FBU, - 0x00FCU, - 0x00F9U, - 0x00FDU, - 0x00FFU, - 0x017EU, - 0xF721U, - 0xF6F8U, - 0xF724U, - 0xF6E4U, - 0xF726U, - 0xF7B4U, - 0x207DU, - 0x207EU, - 0x2025U, - 0x2024U, - 0xF730U, - 0xF731U, - 0xF732U, - 0xF733U, - 0xF734U, - 0xF735U, - 0xF736U, - 0xF737U, - 0xF738U, - 0xF739U, - 0xF6E2U, - 0xF6DEU, - 0xF6E8U, - 0xF73FU, - 0xF6E9U, - 0xF6EAU, - 0xF6E0U, - 0xF6EBU, - 0xF6ECU, - 0xF6EDU, - 0xF6EEU, - 0xF6EFU, - 0x207FU, - 0xF6F0U, - 0xF6F1U, - 0xF6F2U, - 0xF6F3U, - 0xFB00U, - 0xFB03U, - 0xFB04U, - 0x208DU, - 0x208EU, - 0xF6F6U, - 0xF6E6U, - 0xF760U, - 0xF761U, - 0xF762U, - 0xF763U, - 0xF764U, - 0xF765U, - 0xF766U, - 0xF767U, - 0xF768U, - 0xF769U, - 0xF76AU, - 0xF76BU, - 0xF76CU, - 0xF76DU, - 0xF76EU, - 0xF76FU, - 0xF770U, - 0xF771U, - 0xF772U, - 0xF773U, - 0xF774U, - 0xF775U, - 0xF776U, - 0xF777U, - 0xF778U, - 0xF779U, - 0xF77AU, - 0x20A1U, - 0xF6DCU, - 0xF6DDU, - 0xF6FEU, - 0xF7A1U, - 0xF7A2U, - 0xF6F9U, - 0xF6FDU, - 0xF6FFU, - 0xF7A8U, - 0xF6F4U, - 0xF6F5U, - 0xF6F7U, - 0xF7AFU, - 0x2012U, - 0xF6E5U, - 0xF6FBU, - 0xF6FCU, - 0xF7B8U, - 0xF7BFU, - 0x215BU, - 0x215CU, - 0x215DU, - 0x215EU, - 0x2153U, - 0x2154U, - 0x2070U, - 0x2074U, - 0x2075U, - 0x2076U, - 0x2077U, - 0x2078U, - 0x2079U, - 0x2080U, - 0x2081U, - 0x2082U, - 0x2083U, - 0x2084U, - 0x2085U, - 0x2086U, - 0x2087U, - 0x2088U, - 0x2089U, - 0xF6DFU, - 0xF6E3U, - 0xF6E7U, - 0xF6E1U, - 0xF7E0U, - 0xF7E1U, - 0xF7E2U, - 0xF7E3U, - 0xF7E4U, - 0xF7E5U, - 0xF7E6U, - 0xF7E7U, - 0xF7E8U, - 0xF7E9U, - 0xF7EAU, - 0xF7EBU, - 0xF7ECU, - 0xF7EDU, - 0xF7EEU, - 0xF7EFU, - 0xF7F0U, - 0xF7F1U, - 0xF7F2U, - 0xF7F3U, - 0xF7F4U, - 0xF7F5U, - 0xF7F6U, - 0xF6FAU, - 0xF7F8U, - 0xF7F9U, - 0xF7FAU, - 0xF7FBU, - 0xF7FCU, - 0xF7FDU, - 0xF7FEU, - 0xF7FFU, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST - - 0x01FCU, - 0x01E2U, - 0x0102U, - 0x1EAEU, - 0x04D0U, - 0x1EB6U, - 0x1EB0U, - 0x1EB2U, - 0x1EB4U, - 0x01CDU, - 0x24B6U, - 0x1EA4U, - 0x1EACU, - 0x1EA6U, - 0x1EA8U, - 0x1EAAU, - 0xF6C9U, - 0x0410U, - 0x0200U, - 0x04D2U, - 0x01DEU, - 0x1EA0U, - 0x01E0U, - 0x1EA2U, - 0x04D4U, - 0x0202U, - 0x0391U, - 0x0386U, - 0x0100U, - 0xFF21U, - 0x0104U, - 0x01FAU, - 0x1E00U, - 0x0531U, - 0x24B7U, - 0x1E02U, - 0x1E04U, - 0x0411U, - 0x0532U, - 0x0392U, - 0x0181U, - 0x1E06U, - 0xFF22U, - 0x0182U, - 0x053EU, - 0x0106U, - 0xF6CAU, - 0x010CU, - 0x1E08U, - 0x24B8U, - 0x0108U, - 0x010AU, - 0x010AU, - 0x0549U, - 0x04BCU, - 0x0427U, - 0x04BEU, - 0x04B6U, - 0x04F4U, - 0x0543U, - 0x04CBU, - 0x04B8U, - 0x03A7U, - 0x0187U, - 0xFF23U, - 0x0551U, - 0x01F1U, - 0x01C4U, - 0x0534U, - 0x0189U, - 0x010EU, - 0x1E10U, - 0x24B9U, - 0x1E12U, - 0x0110U, - 0x1E0AU, - 0x1E0CU, - 0x0414U, - 0x03EEU, - 0x2206U, - 0x0394U, - 0x018AU, - 0xF6CBU, - 0xF6CCU, - 0xF6CDU, - 0x03DCU, - 0x0402U, - 0x1E0EU, - 0xFF24U, - 0x0110U, - 0x018BU, - 0x01F2U, - 0x01C5U, - 0x04E0U, - 0x0405U, - 0x040FU, - 0x0114U, - 0x011AU, - 0x1E1CU, - 0x0535U, - 0x24BAU, - 0x1EBEU, - 0x1E18U, - 0x1EC6U, - 0x1EC0U, - 0x1EC2U, - 0x1EC4U, - 0x0404U, - 0x0204U, - 0x0116U, - 0x0116U, - 0x1EB8U, - 0x0424U, - 0x0537U, - 0x1EBAU, - 0x2167U, - 0x0206U, - 0x0464U, - 0x041BU, - 0x216AU, - 0x0112U, - 0x1E16U, - 0x1E14U, - 0x041CU, - 0xFF25U, - 0x041DU, - 0x04A2U, - 0x014AU, - 0x04A4U, - 0x04C7U, - 0x0118U, - 0x0190U, - 0x0395U, - 0x0388U, - 0x0420U, - 0x018EU, - 0x042DU, - 0x0421U, - 0x04AAU, - 0x01A9U, - 0x0397U, - 0x0538U, - 0x0389U, - 0x1EBCU, - 0x1E1AU, - 0x20ACU, - 0x01B7U, - 0x01EEU, - 0x01B8U, - 0x24BBU, - 0x1E1EU, - 0x0556U, - 0x03E4U, - 0x0191U, - 0x0472U, - 0x2164U, - 0xFF26U, - 0x2163U, - 0x3387U, - 0x01F4U, - 0x0393U, - 0x0194U, - 0x03EAU, - 0x011EU, - 0x01E6U, - 0x0122U, - 0x24BCU, - 0x011CU, - 0x0122U, - 0x0120U, - 0x0120U, - 0x0413U, - 0x0542U, - 0x0494U, - 0x0492U, - 0x0490U, - 0x0193U, - 0x0533U, - 0x0403U, - 0x1E20U, - 0xFF27U, - 0xF6CEU, - 0x029BU, - 0x01E4U, - 0x25CFU, - 0x25AAU, - 0x25ABU, - 0x25A1U, - 0x33CBU, - 0x04A8U, - 0x04B2U, - 0x042AU, - 0x0126U, - 0x1E2AU, - 0x1E28U, - 0x24BDU, - 0x0124U, - 0x1E26U, - 0x1E22U, - 0x1E24U, - 0xFF28U, - 0x0540U, - 0x03E8U, - 0xF6CFU, - 0x3390U, - 0x042FU, - 0x0132U, - 0x042EU, - 0x012CU, - 0x01CFU, - 0x24BEU, - 0x0406U, - 0x0208U, - 0x1E2EU, - 0x04E4U, - 0x0130U, - 0x0130U, - 0x1ECAU, - 0x04D6U, - 0x0415U, - 0x2111U, - 0x1EC8U, - 0x0418U, - 0x020AU, - 0x0419U, - 0x012AU, - 0x04E2U, - 0xFF29U, - 0x053BU, - 0x0401U, - 0x012EU, - 0x0399U, - 0x0196U, - 0x03AAU, - 0x038AU, - 0x0197U, - 0x0128U, - 0x1E2CU, - 0x0474U, - 0x0476U, - 0x0541U, - 0x24BFU, - 0x0134U, - 0x0408U, - 0x054BU, - 0xFF2AU, - 0x3385U, - 0x33CDU, - 0x04A0U, - 0x1E30U, - 0x041AU, - 0x049AU, - 0x04C3U, - 0x039AU, - 0x049EU, - 0x049CU, - 0x01E8U, - 0x0136U, - 0x24C0U, - 0x0136U, - 0x1E32U, - 0x0554U, - 0x053FU, - 0x0425U, - 0x03E6U, - 0x0198U, - 0x040CU, - 0x1E34U, - 0xFF2BU, - 0x0480U, - 0x03DEU, - 0x046EU, - 0x01C7U, - 0xF6BFU, - 0x0139U, - 0x039BU, - 0x013DU, - 0x013BU, - 0x24C1U, - 0x1E3CU, - 0x013BU, - 0x013FU, - 0x013FU, - 0x1E36U, - 0x1E38U, - 0x053CU, - 0x01C8U, - 0x0409U, - 0x1E3AU, - 0xFF2CU, - 0x3386U, - 0xF6D0U, - 0x1E3EU, - 0x24C2U, - 0x1E40U, - 0x1E42U, - 0x0544U, - 0xFF2DU, - 0x019CU, - 0x039CU, - 0x01CAU, - 0x0143U, - 0x0147U, - 0x0145U, - 0x24C3U, - 0x1E4AU, - 0x0145U, - 0x1E44U, - 0x1E46U, - 0x019DU, - 0x2168U, - 0x01CBU, - 0x040AU, - 0x1E48U, - 0xFF2EU, - 0x0546U, - 0x039DU, - 0x04E8U, - 0x04EAU, - 0x014EU, - 0x01D1U, - 0x019FU, - 0x24C4U, - 0x1ED0U, - 0x1ED8U, - 0x1ED2U, - 0x1ED4U, - 0x1ED6U, - 0x041EU, - 0x0150U, - 0x020CU, - 0x04E6U, - 0x1ECCU, - 0x0555U, - 0x2126U, - 0x1ECEU, - 0x01A0U, - 0x1EDAU, - 0x1EE2U, - 0x1EDCU, - 0x1EDEU, - 0x1EE0U, - 0x0150U, - 0x01A2U, - 0x020EU, - 0x014CU, - 0x1E52U, - 0x1E50U, - 0x2126U, - 0x0460U, - 0x03A9U, - 0x047AU, - 0x047CU, - 0x038FU, - 0x039FU, - 0x038CU, - 0xFF2FU, - 0x2160U, - 0x01EAU, - 0x01ECU, - 0x0186U, - 0x01FEU, - 0x01FEU, - 0x047EU, - 0x1E4CU, - 0x1E4EU, - 0x1E54U, - 0x24C5U, - 0x1E56U, - 0x041FU, - 0x054AU, - 0x04A6U, - 0x03A6U, - 0x01A4U, - 0x03A0U, - 0x0553U, - 0xFF30U, - 0x03A8U, - 0x0470U, - 0x24C6U, - 0xFF31U, - 0x054CU, - 0x0154U, - 0x0158U, - 0x0156U, - 0x24C7U, - 0x0156U, - 0x0210U, - 0x1E58U, - 0x1E5AU, - 0x1E5CU, - 0x0550U, - 0x211CU, - 0x03A1U, - 0x0212U, - 0x1E5EU, - 0xFF32U, - 0x0281U, - 0x02B6U, - 0x250CU, - 0x2514U, - 0x2510U, - 0x2518U, - 0x253CU, - 0x252CU, - 0x2534U, - 0x251CU, - 0x2524U, - 0x2500U, - 0x2502U, - 0x2561U, - 0x2562U, - 0x2556U, - 0x2555U, - 0x2563U, - 0x2551U, - 0x2557U, - 0x255DU, - 0x255CU, - 0x255BU, - 0x255EU, - 0x255FU, - 0x255AU, - 0x2554U, - 0x2569U, - 0x2566U, - 0x2560U, - 0x2550U, - 0x256CU, - 0x2567U, - 0x2568U, - 0x2564U, - 0x2565U, - 0x2559U, - 0x2558U, - 0x2552U, - 0x2553U, - 0x256BU, - 0x256AU, - 0x015AU, - 0x1E64U, - 0x03E0U, - 0x1E66U, - 0x015EU, - 0x018FU, - 0x04D8U, - 0x04DAU, - 0x24C8U, - 0x015CU, - 0x0218U, - 0x1E60U, - 0x1E62U, - 0x1E68U, - 0x054DU, - 0x2166U, - 0x0547U, - 0x0428U, - 0x0429U, - 0x03E2U, - 0x04BAU, - 0x03ECU, - 0x03A3U, - 0x2165U, - 0xFF33U, - 0x042CU, - 0x03DAU, - 0x03A4U, - 0x0166U, - 0x0164U, - 0x0162U, - 0x24C9U, - 0x1E70U, - 0x0162U, - 0x1E6AU, - 0x1E6CU, - 0x0422U, - 0x04ACU, - 0x2169U, - 0x04B4U, - 0x0398U, - 0x01ACU, - 0x2162U, - 0x054FU, - 0x1E6EU, - 0xFF34U, - 0x0539U, - 0x01BCU, - 0x0184U, - 0x01A7U, - 0x01AEU, - 0x0426U, - 0x040BU, - 0x216BU, - 0x2161U, - 0x016CU, - 0x01D3U, - 0x24CAU, - 0x1E76U, - 0x0423U, - 0x0170U, - 0x0214U, - 0x01D7U, - 0x1E72U, - 0x01D9U, - 0x04F0U, - 0x01DBU, - 0x01D5U, - 0x1EE4U, - 0x1EE6U, - 0x01AFU, - 0x1EE8U, - 0x1EF0U, - 0x1EEAU, - 0x1EECU, - 0x1EEEU, - 0x0170U, - 0x04F2U, - 0x0216U, - 0x0478U, - 0x016AU, - 0x04EEU, - 0x1E7AU, - 0xFF35U, - 0x0172U, - 0x03A5U, - 0x03D2U, - 0x03D3U, - 0x01B1U, - 0x03ABU, - 0x03D4U, - 0x03D2U, - 0x038EU, - 0x016EU, - 0x040EU, - 0x04AEU, - 0x04B0U, - 0x0168U, - 0x1E78U, - 0x1E74U, - 0x24CBU, - 0x1E7EU, - 0x0412U, - 0x054EU, - 0x01B2U, - 0xFF36U, - 0x0548U, - 0x1E7CU, - 0x1E82U, - 0x24CCU, - 0x0174U, - 0x1E84U, - 0x1E86U, - 0x1E88U, - 0x1E80U, - 0xFF37U, - 0x24CDU, - 0x1E8CU, - 0x1E8AU, - 0x053DU, - 0x039EU, - 0xFF38U, - 0x0462U, - 0x24CEU, - 0x0176U, - 0x1E8EU, - 0x1EF4U, - 0x042BU, - 0x04F8U, - 0x1EF2U, - 0x01B3U, - 0x1EF6U, - 0x0545U, - 0x0407U, - 0x0552U, - 0xFF39U, - 0x1EF8U, - 0x046AU, - 0x046CU, - 0x0466U, - 0x0468U, - 0x0536U, - 0x0179U, - 0x24CFU, - 0x1E90U, - 0x017BU, - 0x017BU, - 0x1E92U, - 0x0417U, - 0x0498U, - 0x04DEU, - 0x0396U, - 0x053AU, - 0x04C1U, - 0x0416U, - 0x0496U, - 0x04DCU, - 0x1E94U, - 0xFF3AU, - 0x01B5U, - 0x0986U, - 0x0906U, - 0x0A86U, - 0x0A06U, - 0x0A3EU, - 0x3303U, - 0x09BEU, - 0x093EU, - 0x0ABEU, - 0x055FU, - 0x0970U, - 0x0985U, - 0x311AU, - 0x0103U, - 0x1EAFU, - 0x04D1U, - 0x1EB7U, - 0x1EB1U, - 0x1EB3U, - 0x1EB5U, - 0x01CEU, - 0x24D0U, - 0x1EA5U, - 0x1EADU, - 0x1EA7U, - 0x1EA9U, - 0x1EABU, - 0x0317U, - 0x0301U, - 0x0301U, - 0x0954U, - 0x02CFU, - 0x0341U, - 0x0430U, - 0x0201U, - 0x0A71U, - 0x0905U, - 0x04D3U, - 0x01DFU, - 0x1EA1U, - 0x01E1U, - 0x01FDU, - 0x3150U, - 0x01E3U, - 0x2015U, - 0x20A4U, - 0x0410U, - 0x0411U, - 0x0412U, - 0x0413U, - 0x0414U, - 0x0415U, - 0x0401U, - 0x0416U, - 0x0417U, - 0x0418U, - 0x0419U, - 0x041AU, - 0x041BU, - 0x041CU, - 0x041DU, - 0x041EU, - 0x041FU, - 0x0420U, - 0x0421U, - 0x0422U, - 0x0423U, - 0x0424U, - 0x0425U, - 0x0426U, - 0x0427U, - 0x0428U, - 0x0429U, - 0x042AU, - 0x042BU, - 0x042CU, - 0x042DU, - 0x042EU, - 0x042FU, - 0x0490U, - 0x0402U, - 0x0403U, - 0x0404U, - 0x0405U, - 0x0406U, - 0x0407U, - 0x0408U, - 0x0409U, - 0x040AU, - 0x040BU, - 0x040CU, - 0x040EU, - 0xF6C4U, - 0xF6C5U, - 0x0430U, - 0x0431U, - 0x0432U, - 0x0433U, - 0x0434U, - 0x0435U, - 0x0451U, - 0x0436U, - 0x0437U, - 0x0438U, - 0x0439U, - 0x043AU, - 0x043BU, - 0x043CU, - 0x043DU, - 0x043EU, - 0x043FU, - 0x0440U, - 0x0441U, - 0x0442U, - 0x0443U, - 0x0444U, - 0x0445U, - 0x0446U, - 0x0447U, - 0x0448U, - 0x0449U, - 0x044AU, - 0x044BU, - 0x044CU, - 0x044DU, - 0x044EU, - 0x044FU, - 0x0491U, - 0x0452U, - 0x0453U, - 0x0454U, - 0x0455U, - 0x0456U, - 0x0457U, - 0x0458U, - 0x0459U, - 0x045AU, - 0x045BU, - 0x045CU, - 0x045EU, - 0x040FU, - 0x0462U, - 0x0472U, - 0x0474U, - 0xF6C6U, - 0x045FU, - 0x0463U, - 0x0473U, - 0x0475U, - 0xF6C7U, - 0xF6C8U, - 0x04D9U, - 0x200EU, - 0x200FU, - 0x200DU, - 0x066AU, - 0x060CU, - 0x0660U, - 0x0661U, - 0x0662U, - 0x0663U, - 0x0664U, - 0x0665U, - 0x0666U, - 0x0667U, - 0x0668U, - 0x0669U, - 0x061BU, - 0x061FU, - 0x0621U, - 0x0622U, - 0x0623U, - 0x0624U, - 0x0625U, - 0x0626U, - 0x0627U, - 0x0628U, - 0x0629U, - 0x062AU, - 0x062BU, - 0x062CU, - 0x062DU, - 0x062EU, - 0x062FU, - 0x0630U, - 0x0631U, - 0x0632U, - 0x0633U, - 0x0634U, - 0x0635U, - 0x0636U, - 0x0637U, - 0x0638U, - 0x0639U, - 0x063AU, - 0x0640U, - 0x0641U, - 0x0642U, - 0x0643U, - 0x0644U, - 0x0645U, - 0x0646U, - 0x0648U, - 0x0649U, - 0x064AU, - 0x064BU, - 0x064CU, - 0x064DU, - 0x064EU, - 0x064FU, - 0x0650U, - 0x0651U, - 0x0652U, - 0x0647U, - 0x06A4U, - 0x067EU, - 0x0686U, - 0x0698U, - 0x06AFU, - 0x0679U, - 0x0688U, - 0x0691U, - 0x06BAU, - 0x06D2U, - 0x06D5U, - 0x20AAU, - 0x05BEU, - 0x05C3U, - 0x05D0U, - 0x05D1U, - 0x05D2U, - 0x05D3U, - 0x05D4U, - 0x05D5U, - 0x05D6U, - 0x05D7U, - 0x05D8U, - 0x05D9U, - 0x05DAU, - 0x05DBU, - 0x05DCU, - 0x05DDU, - 0x05DEU, - 0x05DFU, - 0x05E0U, - 0x05E1U, - 0x05E2U, - 0x05E3U, - 0x05E4U, - 0x05E5U, - 0x05E6U, - 0x05E7U, - 0x05E8U, - 0x05E9U, - 0x05EAU, - 0xFB2AU, - 0xFB2BU, - 0xFB4BU, - 0xFB1FU, - 0x05F0U, - 0x05F1U, - 0x05F2U, - 0xFB35U, - 0x05B4U, - 0x05B5U, - 0x05B6U, - 0x05BBU, - 0x05B8U, - 0x05B7U, - 0x05B0U, - 0x05B2U, - 0x05B1U, - 0x05B3U, - 0x05C2U, - 0x05C1U, - 0x05B9U, - 0x05BCU, - 0x05BDU, - 0x05BFU, - 0x05C0U, - 0x02BCU, - 0x2105U, - 0x2113U, - 0x2116U, - 0x202CU, - 0x202DU, - 0x202EU, - 0x200CU, - 0x066DU, - 0x02BDU, - 0x0A85U, - 0x0A05U, - 0x3042U, - 0x1EA3U, - 0x0990U, - 0x311EU, - 0x0910U, - 0x04D5U, - 0x0A90U, - 0x0A10U, - 0x0A48U, - 0x0639U, - 0xFECAU, - 0xFECBU, - 0xFECCU, - 0x0203U, - 0x09C8U, - 0x0948U, - 0x0AC8U, - 0x30A2U, - 0xFF71U, - 0x314FU, - 0x05D0U, - 0x0627U, - 0xFB30U, - 0xFE8EU, - 0x0623U, - 0xFE84U, - 0x0625U, - 0xFE88U, - 0x05D0U, - 0xFB4FU, - 0x0622U, - 0xFE82U, - 0x0649U, - 0xFEF0U, - 0xFEF3U, - 0xFEF4U, - 0xFB2EU, - 0xFB2FU, - 0x2135U, - 0x224CU, - 0x03B1U, - 0x03ACU, - 0x0101U, - 0xFF41U, - 0xFF06U, - 0x33C2U, - 0x3122U, - 0x3124U, - 0x0E5AU, - 0x2220U, - 0x3008U, - 0xFE3FU, - 0x3009U, - 0xFE40U, - 0x2329U, - 0x232AU, - 0x212BU, - 0x0387U, - 0x0952U, - 0x0982U, - 0x0902U, - 0x0A82U, - 0x0105U, - 0x3300U, - 0x249CU, - 0x055AU, - 0x02BCU, - 0xF8FFU, - 0x2250U, - 0x2248U, - 0x2252U, - 0x2245U, - 0x318EU, - 0x318DU, - 0x2312U, - 0x1E9AU, - 0x01FBU, - 0x1E01U, - 0x2194U, - 0x21E3U, - 0x21E0U, - 0x21E2U, - 0x21E1U, - 0x21D4U, - 0x21D3U, - 0x21D0U, - 0x21D2U, - 0x21D1U, - 0x2193U, - 0x2199U, - 0x2198U, - 0x21E9U, - 0x02C5U, - 0x02C2U, - 0x02C3U, - 0x02C4U, - 0xF8E7U, - 0x2190U, - 0x21D0U, - 0x21CDU, - 0x21C6U, - 0x21E6U, - 0x2192U, - 0x21CFU, - 0x279EU, - 0x21C4U, - 0x21E8U, - 0x21E4U, - 0x21E5U, - 0x2191U, - 0x2195U, - 0x21A8U, - 0x21A8U, - 0x2196U, - 0x21C5U, - 0x2197U, - 0x21E7U, - 0xF8E6U, - 0xFF3EU, - 0xFF5EU, - 0x0251U, - 0x0252U, - 0x3041U, - 0x30A1U, - 0xFF67U, - 0x066DU, - 0x066DU, - 0x2217U, - 0xFF0AU, - 0xFE61U, - 0x2042U, - 0x2243U, - 0xFF20U, - 0xFE6BU, - 0x0250U, - 0x0994U, - 0x3120U, - 0x0914U, - 0x0A94U, - 0x0A14U, - 0x09D7U, - 0x0A4CU, - 0x09CCU, - 0x094CU, - 0x0ACCU, - 0x093DU, - 0x0561U, - 0x05E2U, - 0xFB20U, - 0x05E2U, - 0x09ACU, - 0xFF3CU, - 0x092CU, - 0x0AACU, - 0x0A2CU, - 0x3070U, - 0x0E3FU, - 0x30D0U, - 0xFF5CU, - 0x3105U, - 0x24D1U, - 0x1E03U, - 0x1E05U, - 0x266CU, - 0x2235U, - 0x0431U, - 0x0628U, - 0xFE90U, - 0xFE91U, - 0x3079U, - 0xFE92U, - 0xFC9FU, - 0xFC08U, - 0xFC6DU, - 0x30D9U, - 0x0562U, - 0x05D1U, - 0x03B2U, - 0x03D0U, - 0xFB31U, - 0xFB31U, - 0x05D1U, - 0xFB4CU, - 0x09ADU, - 0x092DU, - 0x0AADU, - 0x0A2DU, - 0x0253U, - 0x3073U, - 0x30D3U, - 0x0298U, - 0x0A02U, - 0x3331U, - 0x25CFU, - 0x25C6U, - 0x25BCU, - 0x25C4U, - 0x25C0U, - 0x3010U, - 0xFE3BU, - 0x3011U, - 0xFE3CU, - 0x25E3U, - 0x25E2U, - 0x25ACU, - 0x25BAU, - 0x25B6U, - 0x25AAU, - 0x263BU, - 0x25A0U, - 0x2605U, - 0x25E4U, - 0x25E5U, - 0x25B4U, - 0x25B2U, - 0x2423U, - 0x1E07U, - 0x2588U, - 0xFF42U, - 0x0E1AU, - 0x307CU, - 0x30DCU, - 0x249DU, - 0x33C3U, - 0xF8F4U, - 0xF8F3U, - 0xF8F2U, - 0xFF5BU, - 0xFE5BU, - 0xF8F1U, - 0xFE37U, - 0xF8FEU, - 0xF8FDU, - 0xFF5DU, - 0xFE5CU, - 0xF8FCU, - 0xFE38U, - 0xF8F0U, - 0xF8EFU, - 0xFF3BU, - 0xF8EEU, - 0xF8FBU, - 0xF8FAU, - 0xFF3DU, - 0xF8F9U, - 0x032EU, - 0x0306U, - 0x032FU, - 0x0311U, - 0x0361U, - 0x032AU, - 0x033AU, - 0x0180U, - 0x0183U, - 0x3076U, - 0x30D6U, - 0x25D8U, - 0x2219U, - 0x25CEU, - 0x056EU, - 0x099AU, - 0x0107U, - 0x091AU, - 0x0A9AU, - 0x0A1AU, - 0x3388U, - 0x0981U, - 0x0310U, - 0x0901U, - 0x0A81U, - 0x21EAU, - 0x2105U, - 0x032CU, - 0x030CU, - 0x21B5U, - 0x3118U, - 0x010DU, - 0x1E09U, - 0x24D2U, - 0x0109U, - 0x0255U, - 0x010BU, - 0x010BU, - 0x33C5U, - 0x0327U, - 0x2103U, - 0xFFE0U, - 0x0579U, - 0x099BU, - 0x091BU, - 0x0A9BU, - 0x0A1BU, - 0x3114U, - 0x04BDU, - 0x2713U, - 0x0447U, - 0x04BFU, - 0x04B7U, - 0x04F5U, - 0x0573U, - 0x04CCU, - 0x04B9U, - 0x03C7U, - 0x3277U, - 0x3217U, - 0x3269U, - 0x314AU, - 0x3209U, - 0x0E0AU, - 0x0E08U, - 0x0E09U, - 0x0E0CU, - 0x0188U, - 0x3276U, - 0x3216U, - 0x3268U, - 0x3148U, - 0x3208U, - 0x321CU, - 0x25CBU, - 0x2297U, - 0x2299U, - 0x2295U, - 0x3036U, - 0x25D0U, - 0x25D1U, - 0x032DU, - 0x0302U, - 0x2327U, - 0x01C2U, - 0x01C0U, - 0x01C1U, - 0x01C3U, - 0x2663U, - 0x2663U, - 0x2667U, - 0x33A4U, - 0xFF43U, - 0x33A0U, - 0x0581U, - 0xFF1AU, - 0x20A1U, - 0xFE55U, - 0x02D1U, - 0x02D0U, - 0x0313U, - 0x0315U, - 0xF6C3U, - 0x060CU, - 0x055DU, - 0xFF0CU, - 0x0314U, - 0x02BDU, - 0xFE50U, - 0x0312U, - 0x02BBU, - 0x263CU, - 0x2245U, - 0x222EU, - 0x2303U, - 0x0006U, - 0x0007U, - 0x0008U, - 0x0018U, - 0x000DU, - 0x0011U, - 0x0012U, - 0x0013U, - 0x0014U, - 0x007FU, - 0x0010U, - 0x0019U, - 0x0005U, - 0x0004U, - 0x001BU, - 0x0017U, - 0x0003U, - 0x000CU, - 0x001CU, - 0x001DU, - 0x0009U, - 0x000AU, - 0x0015U, - 0x001EU, - 0x000FU, - 0x000EU, - 0x0002U, - 0x0001U, - 0x001AU, - 0x0016U, - 0x001FU, - 0x000BU, - 0xF8E9U, - 0xF6D9U, - 0x300CU, - 0xFF62U, - 0xFE41U, - 0x300DU, - 0xFF63U, - 0xFE42U, - 0x337FU, - 0x33C7U, - 0x33C6U, - 0x249EU, - 0x20A2U, - 0x0297U, - 0x22CFU, - 0x22CEU, - 0xF6D1U, - 0xF6D2U, - 0xF6D4U, - 0xF6D5U, - 0x0564U, - 0x09A6U, - 0x0636U, - 0x0926U, - 0xFEBEU, - 0xFEBFU, - 0xFEC0U, - 0x05BCU, - 0x05BCU, - 0x0AA6U, - 0x0A26U, - 0x3060U, - 0x30C0U, - 0x062FU, - 0x05D3U, - 0xFB33U, - 0xFB33U, - 0, - 0, - 0, - 0, - 0x05D3U, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0xFEAAU, - 0x064FU, - 0x064FU, - 0x064CU, - 0x064CU, - 0x0964U, - 0x05A7U, - 0x05A7U, - 0x0485U, - 0xF6D3U, - 0x300AU, - 0xFE3DU, - 0x300BU, - 0xFE3EU, - 0x032BU, - 0x21D4U, - 0x21D2U, - 0x0965U, - 0xF6D6U, - 0x030FU, - 0x222CU, - 0x2017U, - 0x0333U, - 0x033FU, - 0x02BAU, - 0x2016U, - 0x030EU, - 0x3109U, - 0x33C8U, - 0x010FU, - 0x1E11U, - 0x24D3U, - 0x1E13U, - 0x0111U, - 0x09A1U, - 0x0921U, - 0x0AA1U, - 0x0A21U, - 0x0688U, - 0xFB89U, - 0x095CU, - 0x09A2U, - 0x0922U, - 0x0AA2U, - 0x0A22U, - 0x1E0BU, - 0x1E0DU, - 0x066BU, - 0x066BU, - 0x0434U, - 0x05ADU, - 0x3067U, - 0x03EFU, - 0x30C7U, - 0x232BU, - 0x2326U, - 0x03B4U, - 0x018DU, - 0x09F8U, - 0x02A4U, - 0x09A7U, - 0x0927U, - 0x0AA7U, - 0x0A27U, - 0x0257U, - 0x0385U, - 0x0344U, - 0x2666U, - 0x2662U, - 0xF6D7U, - 0x0324U, - 0x0308U, - 0xF6D8U, - 0x0385U, - 0x3062U, - 0x30C2U, - 0x3003U, - 0x2223U, - 0x2215U, - 0x0452U, - 0x2593U, - 0x1E0FU, - 0x3397U, - 0x0111U, - 0xFF44U, - 0x2584U, - 0x0E0EU, - 0x0E14U, - 0x3069U, - 0x30C9U, - 0xFF04U, - 0xFE69U, - 0x20ABU, - 0x3326U, - 0x0307U, - 0x0323U, - 0x0323U, - 0x30FBU, - 0xF6BEU, - 0x0284U, - 0x22C5U, - 0x25CCU, - 0xFB1FU, - 0xFB1FU, - 0x031EU, - 0x02D5U, - 0x249FU, - 0x0256U, - 0x018CU, - 0x3065U, - 0x30C5U, - 0x01F3U, - 0x02A3U, - 0x01C6U, - 0x02A5U, - 0x04E1U, - 0x0455U, - 0x045FU, - 0x2641U, - 0x098FU, - 0x311CU, - 0x0115U, - 0x090DU, - 0x0A8DU, - 0x0945U, - 0x0AC5U, - 0x011BU, - 0x1E1DU, - 0x0565U, - 0x0587U, - 0x24D4U, - 0x1EBFU, - 0x1E19U, - 0x1EC7U, - 0x1EC1U, - 0x1EC3U, - 0x1EC5U, - 0x0454U, - 0x0205U, - 0x090FU, - 0x0117U, - 0x0117U, - 0x1EB9U, - 0x0A0FU, - 0x0A47U, - 0x0444U, - 0x0A8FU, - 0x0567U, - 0x311DU, - 0x3048U, - 0x1EBBU, - 0x311FU, - 0x0668U, - 0x09EEU, - 0x2467U, - 0x2791U, - 0x096EU, - 0x2471U, - 0x2485U, - 0x2499U, - 0x0AEEU, - 0x0A6EU, - 0x0668U, - 0x3028U, - 0x266BU, - 0x3227U, - 0xFF18U, - 0x247BU, - 0x248FU, - 0x06F8U, - 0x2177U, - 0x0E58U, - 0x0207U, - 0x0465U, - 0x30A8U, - 0xFF74U, - 0x0A74U, - 0x3154U, - 0x043BU, - 0x2208U, - 0x246AU, - 0x247EU, - 0x2492U, - 0x217AU, - 0x22EEU, - 0x0113U, - 0x1E17U, - 0x1E15U, - 0x043CU, - 0xFE31U, - 0xFF45U, - 0x055BU, - 0x2205U, - 0x3123U, - 0x043DU, - 0xFE32U, - 0x04A3U, - 0x014BU, - 0x3125U, - 0x04A5U, - 0x04C8U, - 0x2002U, - 0x0119U, - 0x3153U, - 0x025BU, - 0x029AU, - 0x025CU, - 0x025EU, - 0x025DU, - 0x24A0U, - 0x03B5U, - 0x03ADU, - 0xFF1DU, - 0xFE66U, - 0x207CU, - 0x2261U, - 0x3126U, - 0x0440U, - 0x0258U, - 0x044DU, - 0x0441U, - 0x04ABU, - 0x0283U, - 0x0286U, - 0x090EU, - 0x0946U, - 0x01AAU, - 0x0285U, - 0x3047U, - 0x30A7U, - 0xFF6AU, - 0x212EU, - 0x03B7U, - 0x0568U, - 0x03AEU, - 0x1EBDU, - 0x1E1BU, - 0x0591U, - 0x0591U, - 0x0591U, - 0x0591U, - 0x01DDU, - 0x3161U, - 0x20ACU, - 0x09C7U, - 0x0947U, - 0x0AC7U, - 0x055CU, - 0x203CU, - 0xFF01U, - 0x2203U, - 0x0292U, - 0x01EFU, - 0x0293U, - 0x01B9U, - 0x01BAU, - 0x095EU, - 0x0A5EU, - 0x2109U, - 0x064EU, - 0x064EU, - 0x064BU, - 0x3108U, - 0x24D5U, - 0x1E1FU, - 0x0641U, - 0x0586U, - 0xFED2U, - 0xFED3U, - 0xFED4U, - 0x03E5U, - 0x2640U, - 0x246EU, - 0x2482U, - 0x2496U, - 0x25A0U, - 0x25ACU, - 0x05DAU, - 0xFB3AU, - 0xFB3AU, - 0x05DAU, - 0, - 0, - 0, - 0, - 0x05DDU, - 0x05DDU, - 0x05DFU, - 0x05DFU, - 0x05E3U, - 0x05E3U, - 0x05E5U, - 0x05E5U, - 0x02C9U, - 0x25C9U, - 0x0473U, - 0x0665U, - 0x09EBU, - 0x2464U, - 0x278EU, - 0x096BU, - 0x0AEBU, - 0x0A6BU, - 0x0665U, - 0x3025U, - 0x3224U, - 0xFF15U, - 0x2478U, - 0x248CU, - 0x06F5U, - 0x2174U, - 0x0E55U, - 0xFF46U, - 0x3399U, - 0x0E1FU, - 0x0E1DU, - 0x0E4FU, - 0x2200U, - 0x0664U, - 0x09EAU, - 0x2463U, - 0x278DU, - 0x096AU, - 0x0AEAU, - 0x0A6AU, - 0x0664U, - 0x3024U, - 0x3223U, - 0xFF14U, - 0x09F7U, - 0x2477U, - 0x248BU, - 0x06F4U, - 0x2173U, - 0x246DU, - 0x2481U, - 0x2495U, - 0x0E54U, - 0x02CBU, - 0x24A1U, - 0x20A3U, - 0x0997U, - 0x01F5U, - 0x0917U, - 0x06AFU, - 0xFB93U, - 0xFB94U, - 0xFB95U, - 0x0A97U, - 0x0A17U, - 0x304CU, - 0x30ACU, - 0x03B3U, - 0x0263U, - 0x02E0U, - 0x03EBU, - 0x310DU, - 0x011FU, - 0x01E7U, - 0x0123U, - 0x24D6U, - 0x011DU, - 0x0123U, - 0x0121U, - 0x0121U, - 0x0433U, - 0x3052U, - 0x30B2U, - 0x2251U, - 0x059CU, - 0x05F3U, - 0x059DU, - 0x059EU, - 0x05F4U, - 0x3013U, - 0x0998U, - 0x0572U, - 0x0918U, - 0x0A98U, - 0x0A18U, - 0x063AU, - 0xFECEU, - 0xFECFU, - 0xFED0U, - 0x0495U, - 0x0493U, - 0x0491U, - 0x095AU, - 0x0A5AU, - 0x0260U, - 0x3393U, - 0x304EU, - 0x30AEU, - 0x0563U, - 0x05D2U, - 0xFB32U, - 0xFB32U, - 0x05D2U, - 0x0453U, - 0x01BEU, - 0x0294U, - 0x0296U, - 0x02C0U, - 0x0295U, - 0x02C1U, - 0x02E4U, - 0x02A1U, - 0x02A2U, - 0x1E21U, - 0xFF47U, - 0x3054U, - 0x30B4U, - 0x24A2U, - 0x33ACU, - 0x2207U, - 0x0316U, - 0x0300U, - 0x0300U, - 0x0953U, - 0x02CEU, - 0xFF40U, - 0x0340U, - 0x2265U, - 0x22DBU, - 0xFF1EU, - 0x2273U, - 0x2277U, - 0x2267U, - 0xFE65U, - 0x0261U, - 0x01E5U, - 0x3050U, - 0x30B0U, - 0x3318U, - 0x33C9U, - 0x04A9U, - 0x06C1U, - 0x09B9U, - 0x04B3U, - 0x0939U, - 0x0AB9U, - 0x0A39U, - 0x062DU, - 0xFEA2U, - 0xFEA3U, - 0x306FU, - 0xFEA4U, - 0x332AU, - 0x30CFU, - 0xFF8AU, - 0x0A4DU, - 0x0621U, - 0, - 0, - 0, - 0, - 0x0621U, - 0, - 0, - 0, - 0x3164U, - 0x044AU, - 0x21BCU, - 0x21C0U, - 0x33CAU, - 0x05B2U, - 0x05B2U, - 0x05B2U, - 0x05B2U, - 0x05B2U, - 0x05B2U, - 0x05B2U, - 0x05B2U, - 0x05B3U, - 0x05B3U, - 0x05B3U, - 0x05B3U, - 0x05B3U, - 0x05B3U, - 0x05B3U, - 0x05B3U, - 0x05B1U, - 0x05B1U, - 0x05B1U, - 0x05B1U, - 0x05B1U, - 0x05B1U, - 0x05B1U, - 0x05B1U, - 0x0127U, - 0x310FU, - 0x1E2BU, - 0x1E29U, - 0x24D7U, - 0x0125U, - 0x1E27U, - 0x1E23U, - 0x1E25U, - 0x05D4U, - 0x2665U, - 0x2665U, - 0x2661U, - 0xFB34U, - 0xFB34U, - 0x06C1U, - 0x0647U, - 0x05D4U, - 0xFBA7U, - 0xFEEAU, - 0xFEEAU, - 0xFBA5U, - 0xFBA4U, - 0xFBA8U, - 0xFEEBU, - 0x3078U, - 0xFBA9U, - 0xFEECU, - 0x337BU, - 0x30D8U, - 0xFF8DU, - 0x3336U, - 0x0267U, - 0x3339U, - 0x05D7U, - 0x05D7U, - 0x0266U, - 0x02B1U, - 0x327BU, - 0x321BU, - 0x326DU, - 0x314EU, - 0x320DU, - 0x3072U, - 0x30D2U, - 0xFF8BU, - 0x05B4U, - 0x05B4U, - 0x05B4U, - 0x05B4U, - 0x05B4U, - 0x05B4U, - 0x05B4U, - 0x05B4U, - 0x1E96U, - 0xFF48U, - 0x0570U, - 0x0E2BU, - 0x307BU, - 0x30DBU, - 0xFF8EU, - 0x05B9U, - 0x05B9U, - 0x05B9U, - 0x05B9U, - 0x05B9U, - 0x05B9U, - 0x05B9U, - 0x05B9U, - 0x0E2EU, - 0x0309U, - 0x0309U, - 0x0321U, - 0x0322U, - 0x3342U, - 0x03E9U, - 0x2015U, - 0x031BU, - 0x2668U, - 0x2302U, - 0x24A3U, - 0x02B0U, - 0x0265U, - 0x3075U, - 0x3333U, - 0x30D5U, - 0xFF8CU, - 0x030BU, - 0x0195U, - 0xFF0DU, - 0xFE63U, - 0x2010U, - 0x044FU, - 0x0987U, - 0x3127U, - 0x012DU, - 0x01D0U, - 0x24D8U, - 0x0456U, - 0x0209U, - 0x328FU, - 0x328BU, - 0x323FU, - 0x323AU, - 0x32A5U, - 0x3006U, - 0x3001U, - 0xFF64U, - 0x3237U, - 0x32A3U, - 0x322FU, - 0x323DU, - 0x329DU, - 0x3240U, - 0x3296U, - 0x3236U, - 0x322BU, - 0x3232U, - 0x32A4U, - 0x3005U, - 0x3298U, - 0x3238U, - 0x32A7U, - 0x32A6U, - 0x32A9U, - 0x322EU, - 0x322AU, - 0x3234U, - 0x3002U, - 0x329EU, - 0x3243U, - 0x3239U, - 0x323EU, - 0x32A8U, - 0x3299U, - 0x3242U, - 0x3233U, - 0x3000U, - 0x3235U, - 0x3231U, - 0x323BU, - 0x3230U, - 0x323CU, - 0x322CU, - 0x322DU, - 0x3007U, - 0x328EU, - 0x328AU, - 0x3294U, - 0x3290U, - 0x328CU, - 0x328DU, - 0x0907U, - 0x1E2FU, - 0x04E5U, - 0x1ECBU, - 0x04D7U, - 0x0435U, - 0x3275U, - 0x3215U, - 0x3267U, - 0x3147U, - 0x3207U, - 0x0A87U, - 0x0A07U, - 0x3044U, - 0x1EC9U, - 0x0988U, - 0x0438U, - 0x0908U, - 0x0A88U, - 0x0A08U, - 0x0A40U, - 0x020BU, - 0x0439U, - 0x09C0U, - 0x0940U, - 0x0AC0U, - 0x0133U, - 0x30A4U, - 0xFF72U, - 0x3163U, - 0x02DCU, - 0x05ACU, - 0x012BU, - 0x04E3U, - 0x2253U, - 0x0A3FU, - 0xFF49U, - 0x2206U, - 0x221EU, - 0x056BU, - 0x222BU, - 0x2321U, - 0x2321U, - 0xF8F5U, - 0x2320U, - 0x2320U, - 0x2229U, - 0x3305U, - 0x25D8U, - 0x25D9U, - 0x263BU, - 0x0451U, - 0x012FU, - 0x03B9U, - 0x03CAU, - 0x0390U, - 0x0269U, - 0x03AFU, - 0x24A4U, - 0x0A72U, - 0x3043U, - 0x30A3U, - 0xFF68U, - 0x09FAU, - 0x0268U, - 0x309DU, - 0x30FDU, - 0x0129U, - 0x1E2DU, - 0x3129U, - 0x044EU, - 0x09BFU, - 0x093FU, - 0x0ABFU, - 0x0475U, - 0x0477U, - 0x0571U, - 0x099CU, - 0x091CU, - 0x0A9CU, - 0x0A1CU, - 0x3110U, - 0x01F0U, - 0x24D9U, - 0x0135U, - 0x029DU, - 0x025FU, - 0x0458U, - 0x062CU, - 0xFE9EU, - 0xFE9FU, - 0xFEA0U, - 0x0698U, - 0xFB8BU, - 0x099DU, - 0x091DU, - 0x0A9DU, - 0x0A1DU, - 0x057BU, - 0x3004U, - 0xFF4AU, - 0x24A5U, - 0x02B2U, - 0x04A1U, - 0x0995U, - 0x1E31U, - 0x043AU, - 0x049BU, - 0x0915U, - 0x05DBU, - 0x0643U, - 0xFB3BU, - 0xFB3BU, - 0xFEDAU, - 0x05DBU, - 0xFEDBU, - 0xFEDCU, - 0xFB4DU, - 0x0A95U, - 0x0A15U, - 0x304BU, - 0x04C4U, - 0x30ABU, - 0xFF76U, - 0x03BAU, - 0x03F0U, - 0x3171U, - 0x3184U, - 0x3178U, - 0x3179U, - 0x330DU, - 0x0640U, - 0x0640U, - 0x30F5U, - 0x3384U, - 0x0650U, - 0x064DU, - 0x049FU, - 0xFF70U, - 0x049DU, - 0x310EU, - 0x3389U, - 0x01E9U, - 0x0137U, - 0x24DAU, - 0x0137U, - 0x1E33U, - 0x0584U, - 0x3051U, - 0x30B1U, - 0xFF79U, - 0x056FU, - 0x30F6U, - 0x0138U, - 0x0996U, - 0x0445U, - 0x0916U, - 0x0A96U, - 0x0A16U, - 0x062EU, - 0xFEA6U, - 0xFEA7U, - 0xFEA8U, - 0x03E7U, - 0x0959U, - 0x0A59U, - 0x3278U, - 0x3218U, - 0x326AU, - 0x314BU, - 0x320AU, - 0x0E02U, - 0x0E05U, - 0x0E03U, - 0x0E04U, - 0x0E5BU, - 0x0199U, - 0x0E06U, - 0x3391U, - 0x304DU, - 0x30ADU, - 0xFF77U, - 0x3315U, - 0x3316U, - 0x3314U, - 0x326EU, - 0x320EU, - 0x3260U, - 0x3131U, - 0x3200U, - 0x3133U, - 0x045CU, - 0x1E35U, - 0x3398U, - 0x33A6U, - 0xFF4BU, - 0x33A2U, - 0x3053U, - 0x33C0U, - 0x0E01U, - 0x30B3U, - 0xFF7AU, - 0x331EU, - 0x0481U, - 0x327FU, - 0x0343U, - 0x24A6U, - 0x33AAU, - 0x046FU, - 0x33CFU, - 0x029EU, - 0x304FU, - 0x30AFU, - 0xFF78U, - 0x33B8U, - 0x33BEU, - 0x09B2U, - 0x013AU, - 0x0932U, - 0x0AB2U, - 0x0A32U, - 0x0E45U, - 0xFEFCU, - 0xFEF8U, - 0xFEF7U, - 0xFEFAU, - 0xFEF9U, - 0xFEFBU, - 0xFEF6U, - 0xFEF5U, - 0x0644U, - 0x03BBU, - 0x019BU, - 0x05DCU, - 0xFB3CU, - 0xFB3CU, - 0x05DCU, - 0, - 0, - 0, - 0, - 0xFEDEU, - 0xFCCAU, - 0xFEDFU, - 0xFCC9U, - 0xFCCBU, - 0xFDF2U, - 0xFEE0U, - 0xFD88U, - 0xFCCCU, - 0, - 0, - 0x25EFU, - 0x019AU, - 0x026CU, - 0x310CU, - 0x013EU, - 0x013CU, - 0x24DBU, - 0x1E3DU, - 0x013CU, - 0x0140U, - 0x0140U, - 0x1E37U, - 0x1E39U, - 0x031AU, - 0x0318U, - 0x2264U, - 0x22DAU, - 0xFF1CU, - 0x2272U, - 0x2276U, - 0x2266U, - 0xFE64U, - 0x026EU, - 0x258CU, - 0x026DU, - 0x20A4U, - 0x056CU, - 0x01C9U, - 0x0459U, - 0xF6C0U, - 0x0933U, - 0x0AB3U, - 0x1E3BU, - 0x0934U, - 0x09E1U, - 0x0961U, - 0x09E3U, - 0x0963U, - 0x026BU, - 0xFF4CU, - 0x33D0U, - 0x0E2CU, - 0x2227U, - 0x2310U, - 0x2228U, - 0x0E25U, - 0x017FU, - 0xFE4EU, - 0x0332U, - 0xFE4DU, - 0x25CAU, - 0x24A7U, - 0x2113U, - 0x2591U, - 0x0E26U, - 0x098CU, - 0x090CU, - 0x09E2U, - 0x0962U, - 0x33D3U, - 0x09AEU, - 0x0331U, - 0x0304U, - 0x02CDU, - 0xFFE3U, - 0x1E3FU, - 0x092EU, - 0x0AAEU, - 0x0A2EU, - 0x05A4U, - 0x05A4U, - 0x307EU, - 0xF895U, - 0xF894U, - 0x0E4BU, - 0xF893U, - 0xF88CU, - 0xF88BU, - 0x0E48U, - 0xF88AU, - 0xF884U, - 0x0E31U, - 0xF889U, - 0x0E47U, - 0xF88FU, - 0xF88EU, - 0x0E49U, - 0xF88DU, - 0xF892U, - 0xF891U, - 0x0E4AU, - 0xF890U, - 0x0E46U, - 0x30DEU, - 0xFF8FU, - 0x2642U, - 0x3347U, - 0x05BEU, - 0x2642U, - 0x05AFU, - 0x3383U, - 0x3107U, - 0x33D4U, - 0x24DCU, - 0x33A5U, - 0x1E41U, - 0x1E43U, - 0x0645U, - 0xFEE2U, - 0xFEE3U, - 0xFEE4U, - 0xFCD1U, - 0xFC48U, - 0x334DU, - 0x3081U, - 0x337EU, - 0x30E1U, - 0xFF92U, - 0x05DEU, - 0xFB3EU, - 0xFB3EU, - 0x05DEU, - 0x0574U, - 0x05A5U, - 0x05A6U, - 0x05A6U, - 0x05A5U, - 0x0271U, - 0x3392U, - 0xFF65U, - 0x00B7U, - 0x3272U, - 0x3212U, - 0x3264U, - 0x3141U, - 0x3170U, - 0x3204U, - 0x316EU, - 0x316FU, - 0x307FU, - 0x30DFU, - 0xFF90U, - 0x0320U, - 0x2296U, - 0x02D7U, - 0x2213U, - 0x2032U, - 0x334AU, - 0x3349U, - 0x0270U, - 0x3396U, - 0x33A3U, - 0xFF4DU, - 0x339FU, - 0x3082U, - 0x33C1U, - 0x30E2U, - 0xFF93U, - 0x33D6U, - 0x0E21U, - 0x33A7U, - 0x33A8U, - 0x24A8U, - 0x33ABU, - 0x33B3U, - 0x026FU, - 0x00B5U, - 0x3382U, - 0x226BU, - 0x226AU, - 0x338CU, - 0x03BCU, - 0x338DU, - 0x3080U, - 0x30E0U, - 0xFF91U, - 0x3395U, - 0x339BU, - 0x05A3U, - 0x05A3U, - 0x266AU, - 0x266BU, - 0x266DU, - 0x266FU, - 0x33B2U, - 0x33B6U, - 0x33BCU, - 0x33B9U, - 0x33B7U, - 0x33BFU, - 0x33BDU, - 0x09A8U, - 0x2207U, - 0x0144U, - 0x0928U, - 0x0AA8U, - 0x0A28U, - 0x306AU, - 0x30CAU, - 0xFF85U, - 0x0149U, - 0x3381U, - 0x310BU, - 0x00A0U, - 0x0148U, - 0x0146U, - 0x24DDU, - 0x1E4BU, - 0x0146U, - 0x1E45U, - 0x1E47U, - 0x306DU, - 0x30CDU, - 0xFF88U, - 0x20AAU, - 0x338BU, - 0x0999U, - 0x0919U, - 0x0A99U, - 0x0A19U, - 0x0E07U, - 0x3093U, - 0x0272U, - 0x0273U, - 0x326FU, - 0x320FU, - 0x3135U, - 0x3261U, - 0x3136U, - 0x3134U, - 0x3168U, - 0x3201U, - 0x3167U, - 0x3166U, - 0x306BU, - 0x30CBU, - 0xFF86U, - 0xF899U, - 0x0E4DU, - 0x0669U, - 0x09EFU, - 0x2468U, - 0x2792U, - 0x096FU, - 0x0AEFU, - 0x0A6FU, - 0x0669U, - 0x3029U, - 0x3228U, - 0xFF19U, - 0x247CU, - 0x2490U, - 0x06F9U, - 0x2178U, - 0x2472U, - 0x2486U, - 0x249AU, - 0x0E59U, - 0x01CCU, - 0x045AU, - 0x30F3U, - 0xFF9DU, - 0x019EU, - 0x1E49U, - 0xFF4EU, - 0x339AU, - 0x09A3U, - 0x0923U, - 0x0AA3U, - 0x0A23U, - 0x0929U, - 0x306EU, - 0x30CEU, - 0xFF89U, - 0x00A0U, - 0x0E13U, - 0x0E19U, - 0x0646U, - 0xFEE6U, - 0x06BAU, - 0xFB9FU, - 0, - 0xFEE7U, - 0xFCD2U, - 0xFC4BU, - 0xFEE8U, - 0xFCD5U, - 0xFC4EU, - 0xFC8DU, - 0x220CU, - 0x2209U, - 0x2209U, - 0x2260U, - 0x226FU, - 0x2271U, - 0x2279U, - 0x2262U, - 0x226EU, - 0x2270U, - 0x2226U, - 0x2280U, - 0x2284U, - 0x2281U, - 0x2285U, - 0x0576U, - 0x24A9U, - 0x33B1U, - 0x03BDU, - 0x306CU, - 0x30CCU, - 0xFF87U, - 0x09BCU, - 0x093CU, - 0x0ABCU, - 0x0A3CU, - 0xFF03U, - 0xFE5FU, - 0x0374U, - 0x0375U, - 0x2116U, - 0x05E0U, - 0xFB40U, - 0xFB40U, - 0x05E0U, - 0x33B5U, - 0x33BBU, - 0x099EU, - 0x091EU, - 0x0A9EU, - 0x0A1EU, - 0x0E2DU, - 0x0275U, - 0x04E9U, - 0x04EBU, - 0x0993U, - 0x311BU, - 0x014FU, - 0x0911U, - 0x0A91U, - 0x0949U, - 0x0AC9U, - 0x01D2U, - 0x24DEU, - 0x1ED1U, - 0x1ED9U, - 0x1ED3U, - 0x1ED5U, - 0x1ED7U, - 0x043EU, - 0x0151U, - 0x020DU, - 0x0913U, - 0x04E7U, - 0x1ECDU, - 0x315AU, - 0x0328U, - 0x0A93U, - 0x0585U, - 0x304AU, - 0x1ECFU, - 0x01A1U, - 0x1EDBU, - 0x1EE3U, - 0x1EDDU, - 0x1EDFU, - 0x1EE1U, - 0x0151U, - 0x01A3U, - 0x020FU, - 0x30AAU, - 0xFF75U, - 0x3157U, - 0x05ABU, - 0x014DU, - 0x1E53U, - 0x1E51U, - 0x0950U, - 0x03C9U, - 0x03D6U, - 0x0461U, - 0x0277U, - 0x047BU, - 0x047DU, - 0x03CEU, - 0x0AD0U, - 0x03BFU, - 0x03CCU, - 0xFF4FU, - 0x0661U, - 0x09E7U, - 0x2460U, - 0x278AU, - 0x0967U, - 0x0AE7U, - 0x0A67U, - 0x0661U, - 0x3021U, - 0x3220U, - 0xFF11U, - 0x09F4U, - 0x2474U, - 0x2488U, - 0x06F1U, - 0x2170U, - 0x0E51U, - 0x01EBU, - 0x01EDU, - 0x0A13U, - 0x0A4BU, - 0x0254U, - 0x24AAU, - 0x25E6U, - 0x2325U, - 0x221FU, - 0x0912U, - 0x094AU, - 0x01FFU, - 0x3049U, - 0x30A9U, - 0xFF6BU, - 0x01FFU, - 0x047FU, - 0x1E4DU, - 0x1E4FU, - 0x3121U, - 0x203EU, - 0xFE4AU, - 0x0305U, - 0xFE49U, - 0xFE4CU, - 0xFE4BU, - 0x00AFU, - 0x09CBU, - 0x094BU, - 0x0ACBU, - 0x3380U, - 0x332BU, - 0x09AAU, - 0x1E55U, - 0x092AU, - 0x21DFU, - 0x21DEU, - 0x0AAAU, - 0x0A2AU, - 0x3071U, - 0x0E2FU, - 0x30D1U, - 0x0484U, - 0x04C0U, - 0x317FU, - 0x2225U, - 0xFD3EU, - 0xF8EDU, - 0xF8ECU, - 0xFF08U, - 0xFE59U, - 0xF8EBU, - 0xFE35U, - 0xFD3FU, - 0xF8F8U, - 0xF8F7U, - 0xFF09U, - 0xFE5AU, - 0xF8F6U, - 0xFE36U, - 0x2202U, - 0x05C0U, - 0x0599U, - 0x33A9U, - 0x05B7U, - 0x05B7U, - 0x05B7U, - 0x05B7U, - 0x05B7U, - 0x05B7U, - 0x05B7U, - 0x05B7U, - 0x05A1U, - 0x3106U, - 0x24DFU, - 0x1E57U, - 0x05E4U, - 0x043FU, - 0xFB44U, - 0xFB44U, - 0x333BU, - 0xFB43U, - 0x067EU, - 0x057AU, - 0x05E4U, - 0xFB57U, - 0xFB58U, - 0x307AU, - 0xFB59U, - 0x30DAU, - 0x04A7U, - 0xFB4EU, - 0x066AU, - 0xFF05U, - 0xFE6AU, - 0x0589U, - 0xFF61U, - 0xFF0EU, - 0xFE52U, - 0x0342U, - 0x22A5U, - 0x20A7U, - 0x338AU, - 0x09ABU, - 0x092BU, - 0x0AABU, - 0x0A2BU, - 0x03C6U, - 0x03D5U, - 0x327AU, - 0x321AU, - 0x326CU, - 0x314DU, - 0x320CU, - 0x0278U, - 0x0E3AU, - 0x03D5U, - 0x01A5U, - 0x0E1EU, - 0x0E1CU, - 0x0E20U, - 0x03C0U, - 0x3273U, - 0x3213U, - 0x3176U, - 0x3265U, - 0x3172U, - 0x3142U, - 0x3205U, - 0x3174U, - 0x3144U, - 0x3175U, - 0x3177U, - 0x3173U, - 0x3074U, - 0x30D4U, - 0x03D6U, - 0x0583U, - 0x031FU, - 0x2295U, - 0x02D6U, - 0xFF0BU, - 0xFE62U, - 0x207AU, - 0xFF50U, - 0x33D8U, - 0x307DU, - 0x261FU, - 0x261CU, - 0x261EU, - 0x261DU, - 0x30DDU, - 0x0E1BU, - 0x3012U, - 0x3020U, - 0x24ABU, - 0x227AU, - 0x211EU, - 0x02B9U, - 0x2035U, - 0x220FU, - 0x2305U, - 0x30FCU, - 0x2318U, - 0x2282U, - 0x2283U, - 0x2237U, - 0x221DU, - 0x03C8U, - 0x0471U, - 0x0486U, - 0x33B0U, - 0x3077U, - 0x30D7U, - 0x33B4U, - 0x33BAU, - 0x0958U, - 0x05A8U, - 0x0642U, - 0xFED6U, - 0xFED7U, - 0xFED8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x05B8U, - 0x059FU, - 0x3111U, - 0x24E0U, - 0x02A0U, - 0xFF51U, - 0x05E7U, - 0xFB47U, - 0xFB47U, - 0, - 0, - 0, - 0, - 0x05E7U, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0x24ACU, - 0x2669U, - 0x05BBU, - 0x05BBU, - 0x05BBU, - 0x05BBU, - 0x05BBU, - 0x05BBU, - 0x05BBU, - 0x05BBU, - 0x061FU, - 0x055EU, - 0x037EU, - 0xFF1FU, - 0xFF02U, - 0x301EU, - 0x301DU, - 0x201BU, - 0x201BU, - 0x0149U, - 0xFF07U, - 0x057CU, - 0x09B0U, - 0x0155U, - 0x0930U, - 0x221AU, - 0xF8E5U, - 0x33AEU, - 0x33AFU, - 0x33ADU, - 0x05BFU, - 0x05BFU, - 0x0AB0U, - 0x0A30U, - 0x3089U, - 0x30E9U, - 0xFF97U, - 0x09F1U, - 0x09F0U, - 0x0264U, - 0x2236U, - 0x3116U, - 0x0159U, - 0x0157U, - 0x24E1U, - 0x0157U, - 0x0211U, - 0x1E59U, - 0x1E5BU, - 0x1E5DU, - 0x203BU, - 0x2286U, - 0x2287U, - 0xF8E8U, - 0xF6DAU, - 0x0631U, - 0x0580U, - 0xFEAEU, - 0x308CU, - 0, - 0x30ECU, - 0xFF9AU, - 0x05E8U, - 0xFB48U, - 0, - 0, - 0, - 0, - 0x05E8U, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0x223DU, - 0x0597U, - 0x0597U, - 0x2310U, - 0x027EU, - 0x027FU, - 0x09DDU, - 0x095DU, - 0x03C1U, - 0x027DU, - 0x027BU, - 0x02B5U, - 0x03F1U, - 0x02DEU, - 0x3271U, - 0x3211U, - 0x3263U, - 0x3140U, - 0x313AU, - 0x3169U, - 0x3139U, - 0x313BU, - 0x316CU, - 0x3203U, - 0x313FU, - 0x313CU, - 0x316BU, - 0x313DU, - 0x313EU, - 0x316AU, - 0x316DU, - 0x221FU, - 0x0319U, - 0x22BFU, - 0x308AU, - 0x30EAU, - 0xFF98U, - 0x0325U, - 0x030AU, - 0x02BFU, - 0x0559U, - 0x031CU, - 0x02D3U, - 0x02BEU, - 0x0339U, - 0x02D2U, - 0x0213U, - 0x3351U, - 0x1E5FU, - 0x027CU, - 0x027AU, - 0xFF52U, - 0x308DU, - 0x30EDU, - 0xFF9BU, - 0x0E23U, - 0x24ADU, - 0x09DCU, - 0x0931U, - 0x0A5CU, - 0x0691U, - 0xFB8DU, - 0x09E0U, - 0x0960U, - 0x0AE0U, - 0x09C4U, - 0x0944U, - 0x0AC4U, - 0x2590U, - 0x0279U, - 0x02B4U, - 0x308BU, - 0x30EBU, - 0xFF99U, - 0x09F2U, - 0x09F3U, - 0x0E24U, - 0x098BU, - 0x090BU, - 0x0A8BU, - 0x09C3U, - 0x0943U, - 0x0AC3U, - 0x09B8U, - 0x015BU, - 0x1E65U, - 0x0635U, - 0x0938U, - 0xFEBAU, - 0xFEBBU, - 0xFEBCU, - 0x0AB8U, - 0x0A38U, - 0x3055U, - 0x30B5U, - 0xFF7BU, - 0xFDFAU, - 0x05E1U, - 0xFB41U, - 0xFB41U, - 0x05E1U, - 0x0E32U, - 0x0E41U, - 0x0E44U, - 0x0E43U, - 0x0E33U, - 0x0E30U, - 0x0E40U, - 0xF886U, - 0x0E35U, - 0xF885U, - 0x0E34U, - 0x0E42U, - 0xF888U, - 0x0E37U, - 0xF887U, - 0x0E36U, - 0x0E38U, - 0x0E39U, - 0x3119U, - 0x1E67U, - 0x015FU, - 0x0259U, - 0x04D9U, - 0x04DBU, - 0x025AU, - 0x24E2U, - 0x015DU, - 0x0219U, - 0x1E61U, - 0x1E63U, - 0x1E69U, - 0x033CU, - 0x2033U, - 0x02CAU, - 0x0633U, - 0xFEB2U, - 0xFEB3U, - 0xFEB4U, - 0x05B6U, - 0x05B6U, - 0x05B6U, - 0x05B6U, - 0x05B6U, - 0x05B6U, - 0x05B6U, - 0x0592U, - 0x05B6U, - 0x057DU, - 0x305BU, - 0x30BBU, - 0xFF7EU, - 0x061BU, - 0xFF1BU, - 0xFE54U, - 0x309CU, - 0xFF9FU, - 0x3322U, - 0x3323U, - 0x0667U, - 0x09EDU, - 0x2466U, - 0x2790U, - 0x096DU, - 0x0AEDU, - 0x0A6DU, - 0x0667U, - 0x3027U, - 0x3226U, - 0xFF17U, - 0x247AU, - 0x248EU, - 0x06F7U, - 0x2176U, - 0x2470U, - 0x2484U, - 0x2498U, - 0x0E57U, - 0x00ADU, - 0x0577U, - 0x09B6U, - 0x0448U, - 0x0651U, - 0xFC61U, - 0xFC5EU, - 0xFC60U, - 0, - 0xFC62U, - 0xFC5FU, - 0x2592U, - 0x2593U, - 0x2591U, - 0x2592U, - 0x0936U, - 0x0AB6U, - 0x0A36U, - 0x0593U, - 0x3115U, - 0x0449U, - 0x0634U, - 0xFEB6U, - 0xFEB7U, - 0xFEB8U, - 0x03E3U, - 0x20AAU, - 0x20AAU, - 0x05B0U, - 0x05B0U, - 0x05B0U, - 0x05B0U, - 0x05B0U, - 0x05B0U, - 0x05B0U, - 0x05B0U, - 0x05B0U, - 0x04BBU, - 0x03EDU, - 0x05E9U, - 0xFB49U, - 0xFB49U, - 0xFB2CU, - 0xFB2CU, - 0xFB2DU, - 0xFB2DU, - 0x05C1U, - 0x05E9U, - 0xFB2AU, - 0xFB2AU, - 0xFB2BU, - 0xFB2BU, - 0x0282U, - 0x03C3U, - 0x03C2U, - 0x03C2U, - 0x03F2U, - 0x3057U, - 0x30B7U, - 0xFF7CU, - 0x05BDU, - 0x05BDU, - 0x223CU, - 0x05C2U, - 0x3274U, - 0x3214U, - 0x317EU, - 0x3266U, - 0x317AU, - 0x3145U, - 0x317BU, - 0x3206U, - 0x317DU, - 0x317CU, - 0x0666U, - 0x09ECU, - 0x2465U, - 0x278FU, - 0x096CU, - 0x0AECU, - 0x0A6CU, - 0x0666U, - 0x3026U, - 0x3225U, - 0xFF16U, - 0x2479U, - 0x248DU, - 0x06F6U, - 0x2175U, - 0x246FU, - 0x09F9U, - 0x2483U, - 0x2497U, - 0x0E56U, - 0xFF0FU, - 0x017FU, - 0x1E9BU, - 0x263AU, - 0xFF53U, - 0x05C3U, - 0x00ADU, - 0x044CU, - 0x305DU, - 0x30BDU, - 0xFF7FU, - 0x0338U, - 0x0337U, - 0x0E29U, - 0x0E28U, - 0x0E0BU, - 0x0E2AU, - 0x0020U, - 0x2660U, - 0x2660U, - 0x2664U, - 0x24AEU, - 0x033BU, - 0x33C4U, - 0x339DU, - 0x25A9U, - 0x25A4U, - 0x338FU, - 0x339EU, - 0x33CEU, - 0x33D1U, - 0x33D2U, - 0x338EU, - 0x33D5U, - 0x339CU, - 0x33A1U, - 0x25A6U, - 0x25A7U, - 0x25A8U, - 0x25A5U, - 0x25A3U, - 0x33DBU, - 0x09B7U, - 0x0937U, - 0x0AB7U, - 0x3149U, - 0x3185U, - 0x3180U, - 0x3132U, - 0x3165U, - 0x3143U, - 0x3146U, - 0x3138U, - 0xFFE1U, - 0x0336U, - 0x0335U, - 0x2282U, - 0x228AU, - 0x2286U, - 0x227BU, - 0x220BU, - 0x3059U, - 0x30B9U, - 0xFF7DU, - 0x0652U, - 0x2211U, - 0x263CU, - 0x2283U, - 0x228BU, - 0x2287U, - 0x33DCU, - 0x337CU, - 0x09A4U, - 0x22A4U, - 0x22A3U, - 0x0924U, - 0x0AA4U, - 0x0A24U, - 0x0637U, - 0xFEC2U, - 0xFEC3U, - 0x305FU, - 0xFEC4U, - 0x337DU, - 0x30BFU, - 0xFF80U, - 0x0640U, - 0x03C4U, - 0x05EAU, - 0xFB4AU, - 0xFB4AU, - 0xFB4AU, - 0x05EAU, - 0x0167U, - 0x310AU, - 0x0165U, - 0x02A8U, - 0x0163U, - 0x0686U, - 0xFB7BU, - 0xFB7CU, - 0xFB7DU, - 0, - 0x24E3U, - 0x1E71U, - 0x0163U, - 0x1E97U, - 0x1E6BU, - 0x1E6DU, - 0x0442U, - 0x04ADU, - 0x062AU, - 0xFE96U, - 0xFCA2U, - 0xFC0CU, - 0xFE97U, - 0x3066U, - 0xFCA1U, - 0xFC0BU, - 0x0629U, - 0xFE94U, - 0xFE98U, - 0xFCA4U, - 0xFC0EU, - 0xFC73U, - 0x30C6U, - 0xFF83U, - 0x2121U, - 0x260EU, - 0x05A0U, - 0x05A9U, - 0x2469U, - 0x3229U, - 0x247DU, - 0x2491U, - 0x2179U, - 0x02A7U, - 0x05D8U, - 0xFB38U, - 0xFB38U, - 0x05D8U, - 0x04B5U, - 0x059BU, - 0x059BU, - 0x09A5U, - 0x0925U, - 0x0AA5U, - 0x0A25U, - 0x0630U, - 0xFEACU, - 0xF898U, - 0xF897U, - 0x0E4CU, - 0xF896U, - 0x062BU, - 0xFE9AU, - 0xFE9BU, - 0xFE9CU, - 0x2203U, - 0x2234U, - 0x03B8U, - 0x03D1U, - 0x03D1U, - 0x3279U, - 0x3219U, - 0x326BU, - 0x314CU, - 0x320BU, - 0x246CU, - 0x2480U, - 0x2494U, - 0x0E11U, - 0x01ADU, - 0x0E12U, - 0x0E17U, - 0x0E10U, - 0x0E18U, - 0x0E16U, - 0x0482U, - 0x066CU, - 0x066CU, - 0x0663U, - 0x09E9U, - 0x2462U, - 0x278CU, - 0x0969U, - 0x0AE9U, - 0x0A69U, - 0x0663U, - 0x3023U, - 0x3222U, - 0xFF13U, - 0x09F6U, - 0x2476U, - 0x248AU, - 0x06F3U, - 0x2172U, - 0x0E53U, - 0x3394U, - 0x3061U, - 0x30C1U, - 0xFF81U, - 0x3270U, - 0x3210U, - 0x3262U, - 0x3137U, - 0x3202U, - 0x0330U, - 0x0303U, - 0x0303U, - 0x0360U, - 0x223CU, - 0x0334U, - 0x033EU, - 0x2297U, - 0x0596U, - 0x0596U, - 0x0A70U, - 0x0483U, - 0x057FU, - 0x1E6FU, - 0xFF54U, - 0x0569U, - 0x3068U, - 0x30C8U, - 0xFF84U, - 0x02E5U, - 0x02E9U, - 0x02E6U, - 0x02E8U, - 0x02E7U, - 0x01BDU, - 0x0185U, - 0x01A8U, - 0x0384U, - 0x3327U, - 0x0E0FU, - 0x3014U, - 0xFE5DU, - 0xFE39U, - 0x3015U, - 0xFE5EU, - 0xFE3AU, - 0x0E15U, - 0x01ABU, - 0x24AFU, - 0xF8EAU, - 0xF6DBU, - 0x0288U, - 0x25BCU, - 0x25C4U, - 0x25BAU, - 0x25B2U, - 0x02A6U, - 0x05E6U, - 0xFB46U, - 0xFB46U, - 0x05E6U, - 0x0446U, - 0x05B5U, - 0x05B5U, - 0x05B5U, - 0x05B5U, - 0x05B5U, - 0x05B5U, - 0x05B5U, - 0x05B5U, - 0x045BU, - 0x099FU, - 0x091FU, - 0x0A9FU, - 0x0A1FU, - 0x0679U, - 0xFB67U, - 0xFB68U, - 0xFB69U, - 0x09A0U, - 0x0920U, - 0x0AA0U, - 0x0A20U, - 0x0287U, - 0x3064U, - 0x30C4U, - 0xFF82U, - 0x3063U, - 0x30C3U, - 0xFF6FU, - 0x246BU, - 0x247FU, - 0x2493U, - 0x217BU, - 0x2473U, - 0x5344U, - 0x2487U, - 0x249BU, - 0x0662U, - 0x09E8U, - 0x2461U, - 0x278BU, - 0x0968U, - 0x2025U, - 0xFE30U, - 0x0AE8U, - 0x0A68U, - 0x0662U, - 0x3022U, - 0x3221U, - 0xFF12U, - 0x09F5U, - 0x2475U, - 0x2489U, - 0x06F2U, - 0x2171U, - 0x01BBU, - 0x0E52U, - 0x0289U, - 0x0989U, - 0x3128U, - 0x016DU, - 0x01D4U, - 0x24E4U, - 0x1E77U, - 0x0443U, - 0x0951U, - 0x0171U, - 0x0215U, - 0x0909U, - 0x01D8U, - 0x1E73U, - 0x01DAU, - 0x04F1U, - 0x01DCU, - 0x01D6U, - 0x1EE5U, - 0x0A89U, - 0x0A09U, - 0x3046U, - 0x1EE7U, - 0x01B0U, - 0x1EE9U, - 0x1EF1U, - 0x1EEBU, - 0x1EEDU, - 0x1EEFU, - 0x0171U, - 0x04F3U, - 0x0217U, - 0x30A6U, - 0xFF73U, - 0x0479U, - 0x315CU, - 0x016BU, - 0x04EFU, - 0x1E7BU, - 0x0A41U, - 0xFF55U, - 0x2017U, - 0xFF3FU, - 0xFE33U, - 0xFE4FU, - 0x222AU, - 0x2200U, - 0x0173U, - 0x24B0U, - 0x2580U, - 0x05C4U, - 0x03C5U, - 0x03CBU, - 0x03B0U, - 0x028AU, - 0x03CDU, - 0x031DU, - 0x02D4U, - 0x0A73U, - 0x016FU, - 0x045EU, - 0x3045U, - 0x30A5U, - 0xFF69U, - 0x04AFU, - 0x04B1U, - 0x0169U, - 0x1E79U, - 0x1E75U, - 0x098AU, - 0x090AU, - 0x0A8AU, - 0x0A0AU, - 0x0A42U, - 0x09C2U, - 0x0942U, - 0x0AC2U, - 0x09C1U, - 0x0941U, - 0x0AC1U, - 0x0935U, - 0x0AB5U, - 0x0A35U, - 0x30F7U, - 0x05D5U, - 0xFB35U, - 0xFB35U, - 0xFB35U, - 0x05D5U, - 0xFB4BU, - 0xFB4BU, - 0x05F0U, - 0x05F1U, - 0x24E5U, - 0x1E7FU, - 0x0432U, - 0x06A4U, - 0xFB6BU, - 0xFB6CU, - 0xFB6DU, - 0x30F9U, - 0x2640U, - 0x007CU, - 0x030DU, - 0x0329U, - 0x02CCU, - 0x02C8U, - 0x057EU, - 0x028BU, - 0x30F8U, - 0x09CDU, - 0x094DU, - 0x0ACDU, - 0x0983U, - 0x0903U, - 0x0A83U, - 0xFF56U, - 0x0578U, - 0x309EU, - 0x30FEU, - 0x309BU, - 0xFF9EU, - 0x30FAU, - 0x24B1U, - 0x1E7DU, - 0x028CU, - 0x3094U, - 0x30F4U, - 0x1E83U, - 0x3159U, - 0x308FU, - 0x30EFU, - 0xFF9CU, - 0x3158U, - 0x308EU, - 0x30EEU, - 0x3357U, - 0x301CU, - 0xFE34U, - 0x0648U, - 0xFEEEU, - 0x0624U, - 0xFE86U, - 0x33DDU, - 0x24E6U, - 0x0175U, - 0x1E85U, - 0x1E87U, - 0x1E89U, - 0x3091U, - 0x2118U, - 0x30F1U, - 0x315EU, - 0x315DU, - 0x1E81U, - 0x25E6U, - 0x25CBU, - 0x25D9U, - 0x300EU, - 0xFE43U, - 0x300FU, - 0xFE44U, - 0x25C7U, - 0x25C8U, - 0x25BFU, - 0x25BDU, - 0x25C3U, - 0x25C1U, - 0x3016U, - 0x3017U, - 0x25B9U, - 0x25B7U, - 0x25ABU, - 0x263AU, - 0x25A1U, - 0x2606U, - 0x260FU, - 0x3018U, - 0x3019U, - 0x25B5U, - 0x25B3U, - 0x3090U, - 0x30F0U, - 0x315FU, - 0xFF57U, - 0x3092U, - 0x30F2U, - 0xFF66U, - 0x20A9U, - 0xFFE6U, - 0x0E27U, - 0x24B2U, - 0x1E98U, - 0x02B7U, - 0x028DU, - 0x01BFU, - 0x033DU, - 0x3112U, - 0x24E7U, - 0x1E8DU, - 0x1E8BU, - 0x056DU, - 0x03BEU, - 0xFF58U, - 0x24B3U, - 0x02E3U, - 0x334EU, - 0x09AFU, - 0x092FU, - 0x3152U, - 0x0AAFU, - 0x0A2FU, - 0x3084U, - 0x30E4U, - 0xFF94U, - 0x3151U, - 0x0E4EU, - 0x3083U, - 0x30E3U, - 0xFF6CU, - 0x0463U, - 0x24E8U, - 0x0177U, - 0x1E8FU, - 0x1EF5U, - 0x064AU, - 0x06D2U, - 0xFBAFU, - 0xFEF2U, - 0x0626U, - 0xFE8AU, - 0xFE8BU, - 0xFE8CU, - 0xFEF3U, - 0xFEF4U, - 0xFCDDU, - 0xFC58U, - 0xFC94U, - 0x06D1U, - 0x3156U, - 0xFFE5U, - 0x3155U, - 0x3186U, - 0x05AAU, - 0x05AAU, - 0x044BU, - 0x04F9U, - 0x3181U, - 0x3183U, - 0x3182U, - 0x059AU, - 0x1EF3U, - 0x01B4U, - 0x1EF7U, - 0x0575U, - 0x0457U, - 0x3162U, - 0x262FU, - 0x0582U, - 0xFF59U, - 0x05D9U, - 0xFB39U, - 0xFB39U, - 0x05D9U, - 0x05F2U, - 0xFB1FU, - 0x3088U, - 0x3189U, - 0x30E8U, - 0xFF96U, - 0x315BU, - 0x3087U, - 0x30E7U, - 0xFF6EU, - 0x03F3U, - 0x3188U, - 0x3187U, - 0x0E22U, - 0x0E0DU, - 0x24B4U, - 0x037AU, - 0x0345U, - 0x01A6U, - 0x1E99U, - 0x02B8U, - 0x1EF9U, - 0x028EU, - 0x3086U, - 0x318CU, - 0x30E6U, - 0xFF95U, - 0x3160U, - 0x046BU, - 0x046DU, - 0x0467U, - 0x0469U, - 0x3085U, - 0x30E5U, - 0xFF6DU, - 0x318BU, - 0x318AU, - 0x09DFU, - 0x095FU, - 0x0566U, - 0x017AU, - 0x095BU, - 0x0A5BU, - 0x0638U, - 0xFEC6U, - 0xFEC7U, - 0x3056U, - 0xFEC8U, - 0x0632U, - 0xFEB0U, - 0x30B6U, - 0x0595U, - 0x0594U, - 0x0598U, - 0x05D6U, - 0xFB36U, - 0xFB36U, - 0x05D6U, - 0x3117U, - 0x24E9U, - 0x1E91U, - 0x0291U, - 0x017CU, - 0x017CU, - 0x1E93U, - 0x0437U, - 0x0499U, - 0x04DFU, - 0x305CU, - 0x30BCU, - 0x0660U, - 0x09E6U, - 0x0966U, - 0x0AE6U, - 0x0A66U, - 0x0660U, - 0xFF10U, - 0x06F0U, - 0x0E50U, - 0xFEFFU, - 0x200CU, - 0x200BU, - 0x03B6U, - 0x3113U, - 0x056AU, - 0x04C2U, - 0x0436U, - 0x0497U, - 0x04DDU, - 0x3058U, - 0x30B8U, - 0x05AEU, - 0x1E95U, - 0xFF5AU, - 0x305EU, - 0x30BEU, - 0x24B5U, - 0x0290U, - 0x01B6U, - 0x305AU, - 0x30BAU, - -#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */ - 0 - }; - - - - static const unsigned short t1_standard_encoding[257] = - { - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 45, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 58, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 77, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 90, - 91, - 92, - 93, - 94, - 95, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 109, - 110, - 0, - 111, - 112, - 113, - 114, - 0, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 122, - 0, - 123, - 0, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 0, - 132, - 133, - 0, - 134, - 135, - 136, - 137, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 138, - 0, - 139, - 0, - 0, - 0, - 0, - 140, - 141, - 142, - 143, - 0, - 0, - 0, - 0, - 0, - 144, - 0, - 0, - 0, - 145, - 0, - 0, - 146, - 147, - 148, - 149, - 0, - 0, - 0, - 0, - 0 - }; - - - static const unsigned short t1_expert_encoding[257] = - { - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 229, - 230, - 0, - 231, - 232, - 233, - 234, - 235, - 236, - 237, - 238, - 13, - 14, - 15, - 99, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 27, - 28, - 249, - 250, - 251, - 252, - 0, - 253, - 254, - 255, - 256, - 257, - 0, - 0, - 0, - 258, - 0, - 0, - 259, - 260, - 261, - 262, - 0, - 0, - 263, - 264, - 265, - 0, - 266, - 109, - 110, - 267, - 268, - 269, - 0, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 282, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 301, - 302, - 303, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 304, - 305, - 306, - 0, - 0, - 307, - 308, - 309, - 310, - 311, - 0, - 312, - 0, - 0, - 313, - 0, - 0, - 314, - 315, - 0, - 0, - 316, - 317, - 318, - 0, - 0, - 0, - 158, - 155, - 163, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 0, - 0, - 326, - 150, - 164, - 169, - 327, - 328, - 329, - 330, - 331, - 332, - 333, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 346, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 365, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 378, - 0 - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/psnames/rules.mk b/nx-X11/extras/freetype2/src/psnames/rules.mk deleted file mode 100644 index 06bd161e3..000000000 --- a/nx-X11/extras/freetype2/src/psnames/rules.mk +++ /dev/null @@ -1,70 +0,0 @@ -# -# FreeType 2 PSNames driver configuration rules -# - - -# Copyright 1996-2000, 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# PSNames driver directory -# -PSNAMES_DIR := $(SRC_DIR)/psnames - - -# compilation flags for the driver -# -PSNAMES_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(PSNAMES_DIR)) - - -# PSNames driver sources (i.e., C files) -# -PSNAMES_DRV_SRC := $(PSNAMES_DIR)/psmodule.c - - -# PSNames driver headers -# -PSNAMES_DRV_H := $(PSNAMES_DRV_SRC:%.c=%.h) \ - $(PSNAMES_DIR)/pstables.h \ - $(PSNAMES_DIR)/psnamerr.h - - -# PSNames driver object(s) -# -# PSNAMES_DRV_OBJ_M is used during `multi' builds -# PSNAMES_DRV_OBJ_S is used during `single' builds -# -PSNAMES_DRV_OBJ_M := $(PSNAMES_DRV_SRC:$(PSNAMES_DIR)/%.c=$(OBJ_DIR)/%.$O) -PSNAMES_DRV_OBJ_S := $(OBJ_DIR)/psnames.$O - -# PSNames driver source file for single build -# -PSNAMES_DRV_SRC_S := $(PSNAMES_DIR)/psmodule.c - - -# PSNames driver - single object -# -$(PSNAMES_DRV_OBJ_S): $(PSNAMES_DRV_SRC_S) $(PSNAMES_DRV_SRC) \ - $(FREETYPE_H) $(PSNAMES_DRV_H) - $(PSNAMES_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(PSNAMES_DRV_SRC_S)) - - -# PSNames driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(PSNAMES_DIR)/%.c $(FREETYPE_H) $(PSNAMES_DRV_H) - $(PSNAMES_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(PSNAMES_DRV_OBJ_S) -DRV_OBJS_M += $(PSNAMES_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/raster/Jamfile b/nx-X11/extras/freetype2/src/raster/Jamfile deleted file mode 100644 index 01b5c0db0..000000000 --- a/nx-X11/extras/freetype2/src/raster/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/raster Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) raster ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ftraster ftrend1 ; - } - else - { - _sources = raster ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/raster Jamfile diff --git a/nx-X11/extras/freetype2/src/raster/descrip.mms b/nx-X11/extras/freetype2/src/raster/descrip.mms deleted file mode 100644 index d0650ebbf..000000000 --- a/nx-X11/extras/freetype2/src/raster/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 renderer module compilation rules for VMS -# - - -# Copyright 2001 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.raster]) - -OBJS=raster.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/raster/ftraster.c b/nx-X11/extras/freetype2/src/raster/ftraster.c deleted file mode 100644 index 0ba27e828..000000000 --- a/nx-X11/extras/freetype2/src/raster/ftraster.c +++ /dev/null @@ -1,3298 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftraster.c */ -/* */ -/* The FreeType glyph rasterizer (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* This is a rewrite of the FreeType 1.x scan-line converter */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include "ftraster.h" -#include FT_INTERNAL_CALC_H /* for FT_MulDiv only */ - - - /*************************************************************************/ - /* */ - /* A simple technical note on how the raster works */ - /* ----------------------------------------------- */ - /* */ - /* Converting an outline into a bitmap is achieved in several steps: */ - /* */ - /* 1 - Decomposing the outline into successive `profiles'. Each */ - /* profile is simply an array of scanline intersections on a given */ - /* dimension. A profile's main attributes are */ - /* */ - /* o its scanline position boundaries, i.e. `Ymin' and `Ymax'. */ - /* */ - /* o an array of intersection coordinates for each scanline */ - /* between `Ymin' and `Ymax'. */ - /* */ - /* o a direction, indicating whether it was built going `up' or */ - /* `down', as this is very important for filling rules. */ - /* */ - /* 2 - Sweeping the target map's scanlines in order to compute segment */ - /* `spans' which are then filled. Additionally, this pass */ - /* performs drop-out control. */ - /* */ - /* The outline data is parsed during step 1 only. The profiles are */ - /* built from the bottom of the render pool, used as a stack. The */ - /* following graphics shows the profile list under construction: */ - /* */ - /* ____________________________________________________________ _ _ */ - /* | | | | | */ - /* | profile | coordinates for | profile | coordinates for |--> */ - /* | 1 | profile 1 | 2 | profile 2 |--> */ - /* |_________|___________________|_________|_________________|__ _ _ */ - /* */ - /* ^ ^ */ - /* | | */ - /* start of render pool top */ - /* */ - /* The top of the profile stack is kept in the `top' variable. */ - /* */ - /* As you can see, a profile record is pushed on top of the render */ - /* pool, which is then followed by its coordinates/intersections. If */ - /* a change of direction is detected in the outline, a new profile is */ - /* generated until the end of the outline. */ - /* */ - /* Note that when all profiles have been generated, the function */ - /* Finalize_Profile_Table() is used to record, for each profile, its */ - /* bottom-most scanline as well as the scanline above its upmost */ - /* boundary. These positions are called `y-turns' because they (sort */ - /* of) correspond to local extrema. They are stored in a sorted list */ - /* built from the top of the render pool as a downwards stack: */ - /* */ - /* _ _ _______________________________________ */ - /* | | */ - /* <--| sorted list of | */ - /* <--| extrema scanlines | */ - /* _ _ __________________|____________________| */ - /* */ - /* ^ ^ */ - /* | | */ - /* maxBuff sizeBuff = end of pool */ - /* */ - /* This list is later used during the sweep phase in order to */ - /* optimize performance (see technical note on the sweep below). */ - /* */ - /* Of course, the raster detects whether the two stacks collide and */ - /* handles the situation propertly. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /*************************************************************************/ - /** **/ - /** CONFIGURATION MACROS **/ - /** **/ - /*************************************************************************/ - /*************************************************************************/ - - /* define DEBUG_RASTER if you want to compile a debugging version */ -#define xxxDEBUG_RASTER - - /* The default render pool size in bytes */ -#define RASTER_RENDER_POOL 8192 - - /* undefine FT_RASTER_OPTION_ANTI_ALIASING if you do not want to support */ - /* 5-levels anti-aliasing */ -#ifdef FT_CONFIG_OPTION_5_GRAY_LEVELS -#define FT_RASTER_OPTION_ANTI_ALIASING -#endif - - /* The size of the two-lines intermediate bitmap used */ - /* for anti-aliasing, in bytes. */ -#define RASTER_GRAY_LINES 2048 - - - /*************************************************************************/ - /*************************************************************************/ - /** **/ - /** OTHER MACROS (do not change) **/ - /** **/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_raster - - -#ifdef _STANDALONE_ - - - /* This macro is used to indicate that a function parameter is unused. */ - /* Its purpose is simply to reduce compiler warnings. Note also that */ - /* simply defining it as `(void)x' doesn't avoid warnings with certain */ - /* ANSI compilers (e.g. LCC). */ -#define FT_UNUSED( x ) (x) = (x) - - /* Disable the tracing mechanism for simplicity -- developers can */ - /* activate it easily by redefining these two macros. */ -#ifndef FT_ERROR -#define FT_ERROR( x ) do ; while ( 0 ) /* nothing */ -#endif - -#ifndef FT_TRACE -#define FT_TRACE( x ) do ; while ( 0 ) /* nothing */ -#endif - -#define Raster_Err_None 0 -#define Raster_Err_Not_Ini -1 -#define Raster_Err_Overflow -2 -#define Raster_Err_Neg_Height -3 -#define Raster_Err_Invalid -4 -#define Raster_Err_Unsupported -5 - - -#else /* _STANDALONE_ */ - - -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H /* for FT_TRACE() and FT_ERROR() */ - -#include "rasterrs.h" - -#define Raster_Err_None Raster_Err_Ok -#define Raster_Err_Not_Ini Raster_Err_Raster_Uninitialized -#define Raster_Err_Overflow Raster_Err_Raster_Overflow -#define Raster_Err_Neg_Height Raster_Err_Raster_Negative_Height -#define Raster_Err_Invalid Raster_Err_Invalid_Outline -#define Raster_Err_Unsupported Raster_Err_Cannot_Render_Glyph - - -#endif /* _STANDALONE_ */ - - -#ifndef FT_MEM_SET -#define FT_MEM_SET( d, s, c ) ft_memset( d, s, c ) -#endif - - - /* FMulDiv means `Fast MulDiv'; it is used in case where `b' is */ - /* typically a small value and the result of a*b is known to fit into */ - /* 32 bits. */ -#define FMulDiv( a, b, c ) ( (a) * (b) / (c) ) - - /* On the other hand, SMulDiv means `Slow MulDiv', and is used typically */ - /* for clipping computations. It simply uses the FT_MulDiv() function */ - /* defined in `ftcalc.h'. */ -#define SMulDiv FT_MulDiv - - /* The rasterizer is a very general purpose component; please leave */ - /* the following redefinitions there (you never know your target */ - /* environment). */ - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - -#ifndef NULL -#define NULL (void*)0 -#endif - -#ifndef SUCCESS -#define SUCCESS 0 -#endif - -#ifndef FAILURE -#define FAILURE 1 -#endif - - -#define MaxBezier 32 /* The maximum number of stacked Bezier curves. */ - /* Setting this constant to more than 32 is a */ - /* pure waste of space. */ - -#define Pixel_Bits 6 /* fractional bits of *input* coordinates */ - - - /*************************************************************************/ - /*************************************************************************/ - /** **/ - /** SIMPLE TYPE DECLARATIONS **/ - /** **/ - /*************************************************************************/ - /*************************************************************************/ - - typedef int Int; - typedef unsigned int UInt; - typedef short Short; - typedef unsigned short UShort, *PUShort; - typedef long Long, *PLong; - typedef unsigned long ULong; - - typedef unsigned char Byte, *PByte; - typedef char Bool; - - - typedef union Alignment_ - { - long l; - void* p; - void (*f)(void); - - } Alignment, *PAlignment; - - - typedef struct TPoint_ - { - Long x; - Long y; - - } TPoint; - - - typedef enum TFlow_ - { - Flow_None = 0, - Flow_Up = 1, - Flow_Down = -1 - - } TFlow; - - - /* States of each line, arc, and profile */ - typedef enum TStates_ - { - Unknown_State, - Ascending_State, - Descending_State, - Flat_State - - } TStates; - - - typedef struct TProfile_ TProfile; - typedef TProfile* PProfile; - - struct TProfile_ - { - FT_F26Dot6 X; /* current coordinate during sweep */ - PProfile link; /* link to next profile - various purpose */ - PLong offset; /* start of profile's data in render pool */ - int flow; /* Profile orientation: Asc/Descending */ - long height; /* profile's height in scanlines */ - long start; /* profile's starting scanline */ - - unsigned countL; /* number of lines to step before this */ - /* profile becomes drawable */ - - PProfile next; /* next profile in same contour, used */ - /* during drop-out control */ - }; - - typedef PProfile TProfileList; - typedef PProfile* PProfileList; - - - /* Simple record used to implement a stack of bands, required */ - /* by the sub-banding mechanism */ - typedef struct TBand_ - { - Short y_min; /* band's minimum */ - Short y_max; /* band's maximum */ - - } TBand; - - -#define AlignProfileSize \ - ( ( sizeof ( TProfile ) + sizeof ( Alignment ) - 1 ) / sizeof ( long ) ) - - -#ifdef TT_STATIC_RASTER - - -#define RAS_ARGS /* void */ -#define RAS_ARG /* void */ - -#define RAS_VARS /* void */ -#define RAS_VAR /* void */ - -#define FT_UNUSED_RASTER do ; while ( 0 ) - - -#else /* TT_STATIC_RASTER */ - - -#define RAS_ARGS TRaster_Instance* raster, -#define RAS_ARG TRaster_Instance* raster - -#define RAS_VARS raster, -#define RAS_VAR raster - -#define FT_UNUSED_RASTER FT_UNUSED( raster ) - - -#endif /* TT_STATIC_RASTER */ - - - typedef struct TRaster_Instance_ TRaster_Instance; - - - /* prototypes used for sweep function dispatch */ - typedef void - Function_Sweep_Init( RAS_ARGS Short* min, - Short* max ); - - typedef void - Function_Sweep_Span( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ); - - typedef void - Function_Sweep_Step( RAS_ARG ); - - - /* NOTE: These operations are only valid on 2's complement processors */ - -#define FLOOR( x ) ( (x) & -ras.precision ) -#define CEILING( x ) ( ( (x) + ras.precision - 1 ) & -ras.precision ) -#define TRUNC( x ) ( (signed long)(x) >> ras.precision_bits ) -#define FRAC( x ) ( (x) & ( ras.precision - 1 ) ) -#define SCALED( x ) ( ( (x) << ras.scale_shift ) - ras.precision_half ) - - /* Note that I have moved the location of some fields in the */ - /* structure to ensure that the most used variables are used */ - /* at the top. Thus, their offset can be coded with less */ - /* opcodes, and it results in a smaller executable. */ - - struct TRaster_Instance_ - { - Int precision_bits; /* precision related variables */ - Int precision; - Int precision_half; - Long precision_mask; - Int precision_shift; - Int precision_step; - Int precision_jitter; - - Int scale_shift; /* == precision_shift for bitmaps */ - /* == precision_shift+1 for pixmaps */ - - PLong buff; /* The profiles buffer */ - PLong sizeBuff; /* Render pool size */ - PLong maxBuff; /* Profiles buffer size */ - PLong top; /* Current cursor in buffer */ - - FT_Error error; - - Int numTurns; /* number of Y-turns in outline */ - - TPoint* arc; /* current Bezier arc pointer */ - - UShort bWidth; /* target bitmap width */ - PByte bTarget; /* target bitmap buffer */ - PByte gTarget; /* target pixmap buffer */ - - Long lastX, lastY, minY, maxY; - - UShort num_Profs; /* current number of profiles */ - - Bool fresh; /* signals a fresh new profile which */ - /* 'start' field must be completed */ - Bool joint; /* signals that the last arc ended */ - /* exactly on a scanline. Allows */ - /* removal of doublets */ - PProfile cProfile; /* current profile */ - PProfile fProfile; /* head of linked list of profiles */ - PProfile gProfile; /* contour's first profile in case */ - /* of impact */ - - TStates state; /* rendering state */ - - FT_Bitmap target; /* description of target bit/pixmap */ - FT_Outline outline; - - Long traceOfs; /* current offset in target bitmap */ - Long traceG; /* current offset in target pixmap */ - - Short traceIncr; /* sweep's increment in target bitmap */ - - Short gray_min_x; /* current min x during gray rendering */ - Short gray_max_x; /* current max x during gray rendering */ - - /* dispatch variables */ - - Function_Sweep_Init* Proc_Sweep_Init; - Function_Sweep_Span* Proc_Sweep_Span; - Function_Sweep_Span* Proc_Sweep_Drop; - Function_Sweep_Step* Proc_Sweep_Step; - - Byte dropOutControl; /* current drop_out control method */ - - Bool second_pass; /* indicates wether a horizontal pass */ - /* should be performed to control */ - /* drop-out accurately when calling */ - /* Render_Glyph. Note that there is */ - /* no horizontal pass during gray */ - /* rendering. */ - - TPoint arcs[3 * MaxBezier + 1]; /* The Bezier stack */ - - TBand band_stack[16]; /* band stack used for sub-banding */ - Int band_top; /* band stack top */ - - Int count_table[256]; /* Look-up table used to quickly count */ - /* set bits in a gray 2x2 cell */ - - void* memory; - -#ifdef FT_RASTER_OPTION_ANTI_ALIASING - - Byte grays[5]; /* Palette of gray levels used for */ - /* render. */ - - Byte gray_lines[RASTER_GRAY_LINES]; - /* Intermediate table used to render the */ - /* graylevels pixmaps. */ - /* gray_lines is a buffer holding two */ - /* monochrome scanlines */ - - Short gray_width; /* width in bytes of one monochrome */ - /* intermediate scanline of gray_lines. */ - /* Each gray pixel takes 2 bits long there */ - - /* The gray_lines must hold 2 lines, thus with size */ - /* in bytes of at least `gray_width*2'. */ - -#endif /* FT_RASTER_ANTI_ALIASING */ - -#if 0 - PByte flags; /* current flags table */ - PUShort outs; /* current outlines table */ - FT_Vector* coords; - - UShort nPoints; /* number of points in current glyph */ - Short nContours; /* number of contours in current glyph */ -#endif - - }; - - -#ifdef FT_CONFIG_OPTION_STATIC_RASTER - - static TRaster_Instance cur_ras; -#define ras cur_ras - -#else - -#define ras (*raster) - -#endif /* FT_CONFIG_OPTION_STATIC_RASTER */ - - - /*************************************************************************/ - /*************************************************************************/ - /** **/ - /** PROFILES COMPUTATION **/ - /** **/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Set_High_Precision */ - /* */ - /* <Description> */ - /* Sets precision variables according to param flag. */ - /* */ - /* <Input> */ - /* High :: Set to True for high precision (typically for ppem < 18), */ - /* false otherwise. */ - /* */ - static void - Set_High_Precision( RAS_ARGS Int High ) - { - if ( High ) - { - ras.precision_bits = 10; - ras.precision_step = 128; - ras.precision_jitter = 24; - } - else - { - ras.precision_bits = 6; - ras.precision_step = 32; - ras.precision_jitter = 2; - } - - FT_TRACE6(( "Set_High_Precision(%s)\n", High ? "true" : "false" )); - - ras.precision = 1 << ras.precision_bits; - ras.precision_half = ras.precision / 2; - ras.precision_shift = ras.precision_bits - Pixel_Bits; - ras.precision_mask = -ras.precision; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* New_Profile */ - /* */ - /* <Description> */ - /* Creates a new profile in the render pool. */ - /* */ - /* <Input> */ - /* aState :: The state/orientation of the new profile. */ - /* */ - /* <Return> */ - /* SUCCESS on success. FAILURE in case of overflow or of incoherent */ - /* profile. */ - /* */ - static Bool - New_Profile( RAS_ARGS TStates aState ) - { - if ( !ras.fProfile ) - { - ras.cProfile = (PProfile)ras.top; - ras.fProfile = ras.cProfile; - ras.top += AlignProfileSize; - } - - if ( ras.top >= ras.maxBuff ) - { - ras.error = Raster_Err_Overflow; - return FAILURE; - } - - switch ( aState ) - { - case Ascending_State: - ras.cProfile->flow = Flow_Up; - FT_TRACE6(( "New ascending profile = %lx\n", (long)ras.cProfile )); - break; - - case Descending_State: - ras.cProfile->flow = Flow_Down; - FT_TRACE6(( "New descending profile = %lx\n", (long)ras.cProfile )); - break; - - default: - FT_ERROR(( "New_Profile: invalid profile direction!\n" )); - ras.error = Raster_Err_Invalid; - return FAILURE; - } - - ras.cProfile->start = 0; - ras.cProfile->height = 0; - ras.cProfile->offset = ras.top; - ras.cProfile->link = (PProfile)0; - ras.cProfile->next = (PProfile)0; - - if ( !ras.gProfile ) - ras.gProfile = ras.cProfile; - - ras.state = aState; - ras.fresh = TRUE; - ras.joint = FALSE; - - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* End_Profile */ - /* */ - /* <Description> */ - /* Finalizes the current profile. */ - /* */ - /* <Return> */ - /* SUCCESS on success. FAILURE in case of overflow or incoherency. */ - /* */ - static Bool - End_Profile( RAS_ARG ) - { - Long h; - PProfile oldProfile; - - - h = (Long)( ras.top - ras.cProfile->offset ); - - if ( h < 0 ) - { - FT_ERROR(( "End_Profile: negative height encountered!\n" )); - ras.error = Raster_Err_Neg_Height; - return FAILURE; - } - - if ( h > 0 ) - { - FT_TRACE6(( "Ending profile %lx, start = %ld, height = %ld\n", - (long)ras.cProfile, ras.cProfile->start, h )); - - oldProfile = ras.cProfile; - ras.cProfile->height = h; - ras.cProfile = (PProfile)ras.top; - - ras.top += AlignProfileSize; - - ras.cProfile->height = 0; - ras.cProfile->offset = ras.top; - oldProfile->next = ras.cProfile; - ras.num_Profs++; - } - - if ( ras.top >= ras.maxBuff ) - { - FT_TRACE1(( "overflow in End_Profile\n" )); - ras.error = Raster_Err_Overflow; - return FAILURE; - } - - ras.joint = FALSE; - - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Insert_Y_Turn */ - /* */ - /* <Description> */ - /* Inserts a salient into the sorted list placed on top of the render */ - /* pool. */ - /* */ - /* <Input> */ - /* New y scanline position. */ - /* */ - /* <Return> */ - /* SUCCESS on success. FAILURE in case of overflow. */ - /* */ - static Bool - Insert_Y_Turn( RAS_ARGS Int y ) - { - PLong y_turns; - Int y2, n; - - - n = ras.numTurns - 1; - y_turns = ras.sizeBuff - ras.numTurns; - - /* look for first y value that is <= */ - while ( n >= 0 && y < y_turns[n] ) - n--; - - /* if it is <, simply insert it, ignore if == */ - if ( n >= 0 && y > y_turns[n] ) - while ( n >= 0 ) - { - y2 = (Int)y_turns[n]; - y_turns[n] = y; - y = y2; - n--; - } - - if ( n < 0 ) - { - ras.maxBuff--; - if ( ras.maxBuff <= ras.top ) - { - ras.error = Raster_Err_Overflow; - return FAILURE; - } - ras.numTurns++; - ras.sizeBuff[-ras.numTurns] = y; - } - - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Finalize_Profile_Table */ - /* */ - /* <Description> */ - /* Adjusts all links in the profiles list. */ - /* */ - /* <Return> */ - /* SUCCESS on success. FAILURE in case of overflow. */ - /* */ - static Bool - Finalize_Profile_Table( RAS_ARG ) - { - Int bottom, top; - UShort n; - PProfile p; - - - n = ras.num_Profs; - - if ( n > 1 ) - { - p = ras.fProfile; - while ( n > 0 ) - { - if ( n > 1 ) - p->link = (PProfile)( p->offset + p->height ); - else - p->link = NULL; - - switch ( p->flow ) - { - case Flow_Down: - bottom = (Int)( p->start - p->height + 1 ); - top = (Int)p->start; - p->start = bottom; - p->offset += p->height - 1; - break; - - case Flow_Up: - default: - bottom = (Int)p->start; - top = (Int)( p->start + p->height - 1 ); - } - - if ( Insert_Y_Turn( RAS_VARS bottom ) || - Insert_Y_Turn( RAS_VARS top + 1 ) ) - return FAILURE; - - p = p->link; - n--; - } - } - else - ras.fProfile = NULL; - - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Split_Conic */ - /* */ - /* <Description> */ - /* Subdivides one conic Bezier into two joint sub-arcs in the Bezier */ - /* stack. */ - /* */ - /* <Input> */ - /* None (subdivided Bezier is taken from the top of the stack). */ - /* */ - /* <Note> */ - /* This routine is the `beef' of this component. It is _the_ inner */ - /* loop that should be optimized to hell to get the best performance. */ - /* */ - static void - Split_Conic( TPoint* base ) - { - Long a, b; - - - base[4].x = base[2].x; - b = base[1].x; - a = base[3].x = ( base[2].x + b ) / 2; - b = base[1].x = ( base[0].x + b ) / 2; - base[2].x = ( a + b ) / 2; - - base[4].y = base[2].y; - b = base[1].y; - a = base[3].y = ( base[2].y + b ) / 2; - b = base[1].y = ( base[0].y + b ) / 2; - base[2].y = ( a + b ) / 2; - - /* hand optimized. gcc doesn't seem to be too good at common */ - /* expression substitution and instruction scheduling ;-) */ - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Split_Cubic */ - /* */ - /* <Description> */ - /* Subdivides a third-order Bezier arc into two joint sub-arcs in the */ - /* Bezier stack. */ - /* */ - /* <Note> */ - /* This routine is the `beef' of the component. It is one of _the_ */ - /* inner loops that should be optimized like hell to get the best */ - /* performance. */ - /* */ - static void - Split_Cubic( TPoint* base ) - { - Long a, b, c, d; - - - base[6].x = base[3].x; - c = base[1].x; - d = base[2].x; - base[1].x = a = ( base[0].x + c + 1 ) >> 1; - base[5].x = b = ( base[3].x + d + 1 ) >> 1; - c = ( c + d + 1 ) >> 1; - base[2].x = a = ( a + c + 1 ) >> 1; - base[4].x = b = ( b + c + 1 ) >> 1; - base[3].x = ( a + b + 1 ) >> 1; - - base[6].y = base[3].y; - c = base[1].y; - d = base[2].y; - base[1].y = a = ( base[0].y + c + 1 ) >> 1; - base[5].y = b = ( base[3].y + d + 1 ) >> 1; - c = ( c + d + 1 ) >> 1; - base[2].y = a = ( a + c + 1 ) >> 1; - base[4].y = b = ( b + c + 1 ) >> 1; - base[3].y = ( a + b + 1 ) >> 1; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Line_Up */ - /* */ - /* <Description> */ - /* Computes the x-coordinates of an ascending line segment and stores */ - /* them in the render pool. */ - /* */ - /* <Input> */ - /* x1 :: The x-coordinate of the segment's start point. */ - /* */ - /* y1 :: The y-coordinate of the segment's start point. */ - /* */ - /* x2 :: The x-coordinate of the segment's end point. */ - /* */ - /* y2 :: The y-coordinate of the segment's end point. */ - /* */ - /* miny :: A lower vertical clipping bound value. */ - /* */ - /* maxy :: An upper vertical clipping bound value. */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE on render pool overflow. */ - /* */ - static Bool - Line_Up( RAS_ARGS Long x1, - Long y1, - Long x2, - Long y2, - Long miny, - Long maxy ) - { - Long Dx, Dy; - Int e1, e2, f1, f2, size; /* XXX: is `Short' sufficient? */ - Long Ix, Rx, Ax; - - PLong top; - - - Dx = x2 - x1; - Dy = y2 - y1; - - if ( Dy <= 0 || y2 < miny || y1 > maxy ) - return SUCCESS; - - if ( y1 < miny ) - { - /* Take care: miny-y1 can be a very large value; we use */ - /* a slow MulDiv function to avoid clipping bugs */ - x1 += SMulDiv( Dx, miny - y1, Dy ); - e1 = (Int)TRUNC( miny ); - f1 = 0; - } - else - { - e1 = (Int)TRUNC( y1 ); - f1 = (Int)FRAC( y1 ); - } - - if ( y2 > maxy ) - { - /* x2 += FMulDiv( Dx, maxy - y2, Dy ); UNNECESSARY */ - e2 = (Int)TRUNC( maxy ); - f2 = 0; - } - else - { - e2 = (Int)TRUNC( y2 ); - f2 = (Int)FRAC( y2 ); - } - - if ( f1 > 0 ) - { - if ( e1 == e2 ) - return SUCCESS; - else - { - x1 += FMulDiv( Dx, ras.precision - f1, Dy ); - e1 += 1; - } - } - else - if ( ras.joint ) - { - ras.top--; - ras.joint = FALSE; - } - - ras.joint = (char)( f2 == 0 ); - - if ( ras.fresh ) - { - ras.cProfile->start = e1; - ras.fresh = FALSE; - } - - size = e2 - e1 + 1; - if ( ras.top + size >= ras.maxBuff ) - { - ras.error = Raster_Err_Overflow; - return FAILURE; - } - - if ( Dx > 0 ) - { - Ix = ( ras.precision * Dx ) / Dy; - Rx = ( ras.precision * Dx ) % Dy; - Dx = 1; - } - else - { - Ix = -( ( ras.precision * -Dx ) / Dy ); - Rx = ( ras.precision * -Dx ) % Dy; - Dx = -1; - } - - Ax = -Dy; - top = ras.top; - - while ( size > 0 ) - { - *top++ = x1; - - x1 += Ix; - Ax += Rx; - if ( Ax >= 0 ) - { - Ax -= Dy; - x1 += Dx; - } - size--; - } - - ras.top = top; - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Line_Down */ - /* */ - /* <Description> */ - /* Computes the x-coordinates of an descending line segment and */ - /* stores them in the render pool. */ - /* */ - /* <Input> */ - /* x1 :: The x-coordinate of the segment's start point. */ - /* */ - /* y1 :: The y-coordinate of the segment's start point. */ - /* */ - /* x2 :: The x-coordinate of the segment's end point. */ - /* */ - /* y2 :: The y-coordinate of the segment's end point. */ - /* */ - /* miny :: A lower vertical clipping bound value. */ - /* */ - /* maxy :: An upper vertical clipping bound value. */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE on render pool overflow. */ - /* */ - static Bool - Line_Down( RAS_ARGS Long x1, - Long y1, - Long x2, - Long y2, - Long miny, - Long maxy ) - { - Bool result, fresh; - - - fresh = ras.fresh; - - result = Line_Up( RAS_VARS x1, -y1, x2, -y2, -maxy, -miny ); - - if ( fresh && !ras.fresh ) - ras.cProfile->start = -ras.cProfile->start; - - return result; - } - - - /* A function type describing the functions used to split Bezier arcs */ - typedef void (*TSplitter)( TPoint* base ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Bezier_Up */ - /* */ - /* <Description> */ - /* Computes the x-coordinates of an ascending Bezier arc and stores */ - /* them in the render pool. */ - /* */ - /* <Input> */ - /* degree :: The degree of the Bezier arc (either 2 or 3). */ - /* */ - /* splitter :: The function to split Bezier arcs. */ - /* */ - /* miny :: A lower vertical clipping bound value. */ - /* */ - /* maxy :: An upper vertical clipping bound value. */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE on render pool overflow. */ - /* */ - static Bool - Bezier_Up( RAS_ARGS Int degree, - TSplitter splitter, - Long miny, - Long maxy ) - { - Long y1, y2, e, e2, e0; - Short f1; - - TPoint* arc; - TPoint* start_arc; - - PLong top; - - - arc = ras.arc; - y1 = arc[degree].y; - y2 = arc[0].y; - top = ras.top; - - if ( y2 < miny || y1 > maxy ) - goto Fin; - - e2 = FLOOR( y2 ); - - if ( e2 > maxy ) - e2 = maxy; - - e0 = miny; - - if ( y1 < miny ) - e = miny; - else - { - e = CEILING( y1 ); - f1 = (Short)( FRAC( y1 ) ); - e0 = e; - - if ( f1 == 0 ) - { - if ( ras.joint ) - { - top--; - ras.joint = FALSE; - } - - *top++ = arc[degree].x; - - e += ras.precision; - } - } - - if ( ras.fresh ) - { - ras.cProfile->start = TRUNC( e0 ); - ras.fresh = FALSE; - } - - if ( e2 < e ) - goto Fin; - - if ( ( top + TRUNC( e2 - e ) + 1 ) >= ras.maxBuff ) - { - ras.top = top; - ras.error = Raster_Err_Overflow; - return FAILURE; - } - - start_arc = arc; - - while ( arc >= start_arc && e <= e2 ) - { - ras.joint = FALSE; - - y2 = arc[0].y; - - if ( y2 > e ) - { - y1 = arc[degree].y; - if ( y2 - y1 >= ras.precision_step ) - { - splitter( arc ); - arc += degree; - } - else - { - *top++ = arc[degree].x + FMulDiv( arc[0].x-arc[degree].x, - e - y1, y2 - y1 ); - arc -= degree; - e += ras.precision; - } - } - else - { - if ( y2 == e ) - { - ras.joint = TRUE; - *top++ = arc[0].x; - - e += ras.precision; - } - arc -= degree; - } - } - - Fin: - ras.top = top; - ras.arc -= degree; - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Bezier_Down */ - /* */ - /* <Description> */ - /* Computes the x-coordinates of an descending Bezier arc and stores */ - /* them in the render pool. */ - /* */ - /* <Input> */ - /* degree :: The degree of the Bezier arc (either 2 or 3). */ - /* */ - /* splitter :: The function to split Bezier arcs. */ - /* */ - /* miny :: A lower vertical clipping bound value. */ - /* */ - /* maxy :: An upper vertical clipping bound value. */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE on render pool overflow. */ - /* */ - static Bool - Bezier_Down( RAS_ARGS Int degree, - TSplitter splitter, - Long miny, - Long maxy ) - { - TPoint* arc = ras.arc; - Bool result, fresh; - - - arc[0].y = -arc[0].y; - arc[1].y = -arc[1].y; - arc[2].y = -arc[2].y; - if ( degree > 2 ) - arc[3].y = -arc[3].y; - - fresh = ras.fresh; - - result = Bezier_Up( RAS_VARS degree, splitter, -maxy, -miny ); - - if ( fresh && !ras.fresh ) - ras.cProfile->start = -ras.cProfile->start; - - arc[0].y = -arc[0].y; - return result; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Line_To */ - /* */ - /* <Description> */ - /* Injects a new line segment and adjusts Profiles list. */ - /* */ - /* <Input> */ - /* x :: The x-coordinate of the segment's end point (its start point */ - /* is stored in `LastX'). */ - /* */ - /* y :: The y-coordinate of the segment's end point (its start point */ - /* is stored in `LastY'). */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE on render pool overflow or incorrect */ - /* profile. */ - /* */ - static Bool - Line_To( RAS_ARGS Long x, - Long y ) - { - /* First, detect a change of direction */ - - switch ( ras.state ) - { - case Unknown_State: - if ( y > ras.lastY ) - { - if ( New_Profile( RAS_VARS Ascending_State ) ) - return FAILURE; - } - else - { - if ( y < ras.lastY ) - if ( New_Profile( RAS_VARS Descending_State ) ) - return FAILURE; - } - break; - - case Ascending_State: - if ( y < ras.lastY ) - { - if ( End_Profile( RAS_VAR ) || - New_Profile( RAS_VARS Descending_State ) ) - return FAILURE; - } - break; - - case Descending_State: - if ( y > ras.lastY ) - { - if ( End_Profile( RAS_VAR ) || - New_Profile( RAS_VARS Ascending_State ) ) - return FAILURE; - } - break; - - default: - ; - } - - /* Then compute the lines */ - - switch ( ras.state ) - { - case Ascending_State: - if ( Line_Up( RAS_VARS ras.lastX, ras.lastY, - x, y, ras.minY, ras.maxY ) ) - return FAILURE; - break; - - case Descending_State: - if ( Line_Down( RAS_VARS ras.lastX, ras.lastY, - x, y, ras.minY, ras.maxY ) ) - return FAILURE; - break; - - default: - ; - } - - ras.lastX = x; - ras.lastY = y; - - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Conic_To */ - /* */ - /* <Description> */ - /* Injects a new conic arc and adjusts the profile list. */ - /* */ - /* <Input> */ - /* cx :: The x-coordinate of the arc's new control point. */ - /* */ - /* cy :: The y-coordinate of the arc's new control point. */ - /* */ - /* x :: The x-coordinate of the arc's end point (its start point is */ - /* stored in `LastX'). */ - /* */ - /* y :: The y-coordinate of the arc's end point (its start point is */ - /* stored in `LastY'). */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE on render pool overflow or incorrect */ - /* profile. */ - /* */ - static Bool - Conic_To( RAS_ARGS Long cx, - Long cy, - Long x, - Long y ) - { - Long y1, y2, y3, x3, ymin, ymax; - TStates state_bez; - - - ras.arc = ras.arcs; - ras.arc[2].x = ras.lastX; - ras.arc[2].y = ras.lastY; - ras.arc[1].x = cx; ras.arc[1].y = cy; - ras.arc[0].x = x; ras.arc[0].y = y; - - do - { - y1 = ras.arc[2].y; - y2 = ras.arc[1].y; - y3 = ras.arc[0].y; - x3 = ras.arc[0].x; - - /* first, categorize the Bezier arc */ - - if ( y1 <= y3 ) - { - ymin = y1; - ymax = y3; - } - else - { - ymin = y3; - ymax = y1; - } - - if ( y2 < ymin || y2 > ymax ) - { - /* this arc has no given direction, split it! */ - Split_Conic( ras.arc ); - ras.arc += 2; - } - else if ( y1 == y3 ) - { - /* this arc is flat, ignore it and pop it from the Bezier stack */ - ras.arc -= 2; - } - else - { - /* the arc is y-monotonous, either ascending or descending */ - /* detect a change of direction */ - state_bez = y1 < y3 ? Ascending_State : Descending_State; - if ( ras.state != state_bez ) - { - /* finalize current profile if any */ - if ( ras.state != Unknown_State && - End_Profile( RAS_VAR ) ) - goto Fail; - - /* create a new profile */ - if ( New_Profile( RAS_VARS state_bez ) ) - goto Fail; - } - - /* now call the appropriate routine */ - if ( state_bez == Ascending_State ) - { - if ( Bezier_Up( RAS_VARS 2, Split_Conic, ras.minY, ras.maxY ) ) - goto Fail; - } - else - if ( Bezier_Down( RAS_VARS 2, Split_Conic, ras.minY, ras.maxY ) ) - goto Fail; - } - - } while ( ras.arc >= ras.arcs ); - - ras.lastX = x3; - ras.lastY = y3; - - return SUCCESS; - - Fail: - return FAILURE; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Cubic_To */ - /* */ - /* <Description> */ - /* Injects a new cubic arc and adjusts the profile list. */ - /* */ - /* <Input> */ - /* cx1 :: The x-coordinate of the arc's first new control point. */ - /* */ - /* cy1 :: The y-coordinate of the arc's first new control point. */ - /* */ - /* cx2 :: The x-coordinate of the arc's second new control point. */ - /* */ - /* cy2 :: The y-coordinate of the arc's second new control point. */ - /* */ - /* x :: The x-coordinate of the arc's end point (its start point is */ - /* stored in `LastX'). */ - /* */ - /* y :: The y-coordinate of the arc's end point (its start point is */ - /* stored in `LastY'). */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE on render pool overflow or incorrect */ - /* profile. */ - /* */ - static Bool - Cubic_To( RAS_ARGS Long cx1, - Long cy1, - Long cx2, - Long cy2, - Long x, - Long y ) - { - Long y1, y2, y3, y4, x4, ymin1, ymax1, ymin2, ymax2; - TStates state_bez; - - - ras.arc = ras.arcs; - ras.arc[3].x = ras.lastX; - ras.arc[3].y = ras.lastY; - ras.arc[2].x = cx1; ras.arc[2].y = cy1; - ras.arc[1].x = cx2; ras.arc[1].y = cy2; - ras.arc[0].x = x; ras.arc[0].y = y; - - do - { - y1 = ras.arc[3].y; - y2 = ras.arc[2].y; - y3 = ras.arc[1].y; - y4 = ras.arc[0].y; - x4 = ras.arc[0].x; - - /* first, categorize the Bezier arc */ - - if ( y1 <= y4 ) - { - ymin1 = y1; - ymax1 = y4; - } - else - { - ymin1 = y4; - ymax1 = y1; - } - - if ( y2 <= y3 ) - { - ymin2 = y2; - ymax2 = y3; - } - else - { - ymin2 = y3; - ymax2 = y2; - } - - if ( ymin2 < ymin1 || ymax2 > ymax1 ) - { - /* this arc has no given direction, split it! */ - Split_Cubic( ras.arc ); - ras.arc += 3; - } - else if ( y1 == y4 ) - { - /* this arc is flat, ignore it and pop it from the Bezier stack */ - ras.arc -= 3; - } - else - { - state_bez = ( y1 <= y4 ) ? Ascending_State : Descending_State; - - /* detect a change of direction */ - if ( ras.state != state_bez ) - { - if ( ras.state != Unknown_State && - End_Profile( RAS_VAR ) ) - goto Fail; - - if ( New_Profile( RAS_VARS state_bez ) ) - goto Fail; - } - - /* compute intersections */ - if ( state_bez == Ascending_State ) - { - if ( Bezier_Up( RAS_VARS 3, Split_Cubic, ras.minY, ras.maxY ) ) - goto Fail; - } - else - if ( Bezier_Down( RAS_VARS 3, Split_Cubic, ras.minY, ras.maxY ) ) - goto Fail; - } - - } while ( ras.arc >= ras.arcs ); - - ras.lastX = x4; - ras.lastY = y4; - - return SUCCESS; - - Fail: - return FAILURE; - } - - -#undef SWAP_ -#define SWAP_( x, y ) do \ - { \ - Long swap = x; \ - \ - \ - x = y; \ - y = swap; \ - } while ( 0 ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Decompose_Curve */ - /* */ - /* <Description> */ - /* Scans the outline arays in order to emit individual segments and */ - /* Beziers by calling Line_To() and Bezier_To(). It handles all */ - /* weird cases, like when the first point is off the curve, or when */ - /* there are simply no `on' points in the contour! */ - /* */ - /* <Input> */ - /* first :: The index of the first point in the contour. */ - /* */ - /* last :: The index of the last point in the contour. */ - /* */ - /* flipped :: If set, flip the direction of the curve. */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE on error. */ - /* */ - static Bool - Decompose_Curve( RAS_ARGS UShort first, - UShort last, - int flipped ) - { - FT_Vector v_last; - FT_Vector v_control; - FT_Vector v_start; - - FT_Vector* points; - FT_Vector* point; - FT_Vector* limit; - char* tags; - - unsigned tag; /* current point's state */ - - - points = ras.outline.points; - limit = points + last; - - v_start.x = SCALED( points[first].x ); - v_start.y = SCALED( points[first].y ); - v_last.x = SCALED( points[last].x ); - v_last.y = SCALED( points[last].y ); - - if ( flipped ) - { - SWAP_( v_start.x, v_start.y ); - SWAP_( v_last.x, v_last.y ); - } - - v_control = v_start; - - point = points + first; - tags = ras.outline.tags + first; - tag = FT_CURVE_TAG( tags[0] ); - - /* A contour cannot start with a cubic control point! */ - if ( tag == FT_CURVE_TAG_CUBIC ) - goto Invalid_Outline; - - /* check first point to determine origin */ - if ( tag == FT_CURVE_TAG_CONIC ) - { - /* first point is conic control. Yes, this happens. */ - if ( FT_CURVE_TAG( ras.outline.tags[last] ) == FT_CURVE_TAG_ON ) - { - /* start at last point if it is on the curve */ - v_start = v_last; - limit--; - } - else - { - /* if both first and last points are conic, */ - /* start at their middle and record its position */ - /* for closure */ - v_start.x = ( v_start.x + v_last.x ) / 2; - v_start.y = ( v_start.y + v_last.y ) / 2; - - v_last = v_start; - } - point--; - tags--; - } - - ras.lastX = v_start.x; - ras.lastY = v_start.y; - - while ( point < limit ) - { - point++; - tags++; - - tag = FT_CURVE_TAG( tags[0] ); - - switch ( tag ) - { - case FT_CURVE_TAG_ON: /* emit a single line_to */ - { - Long x, y; - - - x = SCALED( point->x ); - y = SCALED( point->y ); - if ( flipped ) - SWAP_( x, y ); - - if ( Line_To( RAS_VARS x, y ) ) - goto Fail; - continue; - } - - case FT_CURVE_TAG_CONIC: /* consume conic arcs */ - v_control.x = SCALED( point[0].x ); - v_control.y = SCALED( point[0].y ); - - if ( flipped ) - SWAP_( v_control.x, v_control.y ); - - Do_Conic: - if ( point < limit ) - { - FT_Vector v_middle; - Long x, y; - - - point++; - tags++; - tag = FT_CURVE_TAG( tags[0] ); - - x = SCALED( point[0].x ); - y = SCALED( point[0].y ); - - if ( flipped ) - SWAP_( x, y ); - - if ( tag == FT_CURVE_TAG_ON ) - { - if ( Conic_To( RAS_VARS v_control.x, v_control.y, x, y ) ) - goto Fail; - continue; - } - - if ( tag != FT_CURVE_TAG_CONIC ) - goto Invalid_Outline; - - v_middle.x = ( v_control.x + x ) / 2; - v_middle.y = ( v_control.y + y ) / 2; - - if ( Conic_To( RAS_VARS v_control.x, v_control.y, - v_middle.x, v_middle.y ) ) - goto Fail; - - v_control.x = x; - v_control.y = y; - - goto Do_Conic; - } - - if ( Conic_To( RAS_VARS v_control.x, v_control.y, - v_start.x, v_start.y ) ) - goto Fail; - - goto Close; - - default: /* FT_CURVE_TAG_CUBIC */ - { - Long x1, y1, x2, y2, x3, y3; - - - if ( point + 1 > limit || - FT_CURVE_TAG( tags[1] ) != FT_CURVE_TAG_CUBIC ) - goto Invalid_Outline; - - point += 2; - tags += 2; - - x1 = SCALED( point[-2].x ); - y1 = SCALED( point[-2].y ); - x2 = SCALED( point[-1].x ); - y2 = SCALED( point[-1].y ); - x3 = SCALED( point[ 0].x ); - y3 = SCALED( point[ 0].y ); - - if ( flipped ) - { - SWAP_( x1, y1 ); - SWAP_( x2, y2 ); - SWAP_( x3, y3 ); - } - - if ( point <= limit ) - { - if ( Cubic_To( RAS_VARS x1, y1, x2, y2, x3, y3 ) ) - goto Fail; - continue; - } - - if ( Cubic_To( RAS_VARS x1, y1, x2, y2, v_start.x, v_start.y ) ) - goto Fail; - goto Close; - } - } - } - - /* close the contour with a line segment */ - if ( Line_To( RAS_VARS v_start.x, v_start.y ) ) - goto Fail; - - Close: - return SUCCESS; - - Invalid_Outline: - ras.error = Raster_Err_Invalid; - - Fail: - return FAILURE; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Convert_Glyph */ - /* */ - /* <Description> */ - /* Converts a glyph into a series of segments and arcs and makes a */ - /* profiles list with them. */ - /* */ - /* <Input> */ - /* flipped :: If set, flip the direction of curve. */ - /* */ - /* <Return> */ - /* SUCCESS on success, FAILURE if any error was encountered during */ - /* rendering. */ - /* */ - static Bool - Convert_Glyph( RAS_ARGS int flipped ) - { - int i; - unsigned start; - - PProfile lastProfile; - - - ras.fProfile = NULL; - ras.joint = FALSE; - ras.fresh = FALSE; - - ras.maxBuff = ras.sizeBuff - AlignProfileSize; - - ras.numTurns = 0; - - ras.cProfile = (PProfile)ras.top; - ras.cProfile->offset = ras.top; - ras.num_Profs = 0; - - start = 0; - - for ( i = 0; i < ras.outline.n_contours; i++ ) - { - ras.state = Unknown_State; - ras.gProfile = NULL; - - if ( Decompose_Curve( RAS_VARS (unsigned short)start, - ras.outline.contours[i], - flipped ) ) - return FAILURE; - - start = ras.outline.contours[i] + 1; - - /* We must now see whether the extreme arcs join or not */ - if ( FRAC( ras.lastY ) == 0 && - ras.lastY >= ras.minY && - ras.lastY <= ras.maxY ) - if ( ras.gProfile && ras.gProfile->flow == ras.cProfile->flow ) - ras.top--; - /* Note that ras.gProfile can be nil if the contour was too small */ - /* to be drawn. */ - - lastProfile = ras.cProfile; - if ( End_Profile( RAS_VAR ) ) - return FAILURE; - - /* close the `next profile in contour' linked list */ - if ( ras.gProfile ) - lastProfile->next = ras.gProfile; - } - - if ( Finalize_Profile_Table( RAS_VAR ) ) - return FAILURE; - - return (Bool)( ras.top < ras.maxBuff ? SUCCESS : FAILURE ); - } - - - /*************************************************************************/ - /*************************************************************************/ - /** **/ - /** SCAN-LINE SWEEPS AND DRAWING **/ - /** **/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Init_Linked */ - /* */ - /* Initializes an empty linked list. */ - /* */ - static void - Init_Linked( TProfileList* l ) - { - *l = NULL; - } - - - /*************************************************************************/ - /* */ - /* InsNew */ - /* */ - /* Inserts a new profile in a linked list. */ - /* */ - static void - InsNew( PProfileList list, - PProfile profile ) - { - PProfile *old, current; - Long x; - - - old = list; - current = *old; - x = profile->X; - - while ( current ) - { - if ( x < current->X ) - break; - old = ¤t->link; - current = *old; - } - - profile->link = current; - *old = profile; - } - - - /*************************************************************************/ - /* */ - /* DelOld */ - /* */ - /* Removes an old profile from a linked list. */ - /* */ - static void - DelOld( PProfileList list, - PProfile profile ) - { - PProfile *old, current; - - - old = list; - current = *old; - - while ( current ) - { - if ( current == profile ) - { - *old = current->link; - return; - } - - old = ¤t->link; - current = *old; - } - - /* we should never get there, unless the profile was not part of */ - /* the list. */ - } - - - /*************************************************************************/ - /* */ - /* Sort */ - /* */ - /* Sorts a trace list. In 95%, the list is already sorted. We need */ - /* an algorithm which is fast in this case. Bubble sort is enough */ - /* and simple. */ - /* */ - static void - Sort( PProfileList list ) - { - PProfile *old, current, next; - - - /* First, set the new X coordinate of each profile */ - current = *list; - while ( current ) - { - current->X = *current->offset; - current->offset += current->flow; - current->height--; - current = current->link; - } - - /* Then sort them */ - old = list; - current = *old; - - if ( !current ) - return; - - next = current->link; - - while ( next ) - { - if ( current->X <= next->X ) - { - old = ¤t->link; - current = *old; - - if ( !current ) - return; - } - else - { - *old = next; - current->link = next->link; - next->link = current; - - old = list; - current = *old; - } - - next = current->link; - } - } - - - /*************************************************************************/ - /* */ - /* Vertical Sweep Procedure Set */ - /* */ - /* These four routines are used during the vertical black/white sweep */ - /* phase by the generic Draw_Sweep() function. */ - /* */ - /*************************************************************************/ - - static void - Vertical_Sweep_Init( RAS_ARGS Short* min, - Short* max ) - { - Long pitch = ras.target.pitch; - - FT_UNUSED( max ); - - - ras.traceIncr = (Short)-pitch; - ras.traceOfs = -*min * pitch; - if ( pitch > 0 ) - ras.traceOfs += ( ras.target.rows - 1 ) * pitch; - - ras.gray_min_x = 0; - ras.gray_max_x = 0; - } - - - static void - Vertical_Sweep_Span( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) - { - Long e1, e2; - int c1, c2; - Byte f1, f2; - Byte* target; - - FT_UNUSED( y ); - FT_UNUSED( left ); - FT_UNUSED( right ); - - - /* Drop-out control */ - - e1 = TRUNC( CEILING( x1 ) ); - - if ( x2 - x1 - ras.precision <= ras.precision_jitter ) - e2 = e1; - else - e2 = TRUNC( FLOOR( x2 ) ); - - if ( e2 >= 0 && e1 < ras.bWidth ) - { - if ( e1 < 0 ) - e1 = 0; - if ( e2 >= ras.bWidth ) - e2 = ras.bWidth - 1; - - c1 = (Short)( e1 >> 3 ); - c2 = (Short)( e2 >> 3 ); - - f1 = (Byte) ( 0xFF >> ( e1 & 7 ) ); - f2 = (Byte) ~( 0x7F >> ( e2 & 7 ) ); - - if ( ras.gray_min_x > c1 ) ras.gray_min_x = (short)c1; - if ( ras.gray_max_x < c2 ) ras.gray_max_x = (short)c2; - - target = ras.bTarget + ras.traceOfs + c1; - c2 -= c1; - - if ( c2 > 0 ) - { - target[0] |= f1; - - /* memset() is slower than the following code on many platforms. */ - /* This is due to the fact that, in the vast majority of cases, */ - /* the span length in bytes is relatively small. */ - c2--; - while ( c2 > 0 ) - { - *(++target) = 0xFF; - c2--; - } - target[1] |= f2; - } - else - *target |= ( f1 & f2 ); - } - } - - - static void - Vertical_Sweep_Drop( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) - { - Long e1, e2; - Short c1, f1; - - - /* Drop-out control */ - - e1 = CEILING( x1 ); - e2 = FLOOR ( x2 ); - - if ( e1 > e2 ) - { - if ( e1 == e2 + ras.precision ) - { - switch ( ras.dropOutControl ) - { - case 1: - e1 = e2; - break; - - case 4: - e1 = CEILING( (x1 + x2 + 1) / 2 ); - break; - - case 2: - case 5: - /* Drop-out Control Rule #4 */ - - /* The spec is not very clear regarding rule #4. It */ - /* presents a method that is way too costly to implement */ - /* while the general idea seems to get rid of `stubs'. */ - /* */ - /* Here, we only get rid of stubs recognized if: */ - /* */ - /* upper stub: */ - /* */ - /* - P_Left and P_Right are in the same contour */ - /* - P_Right is the successor of P_Left in that contour */ - /* - y is the top of P_Left and P_Right */ - /* */ - /* lower stub: */ - /* */ - /* - P_Left and P_Right are in the same contour */ - /* - P_Left is the successor of P_Right in that contour */ - /* - y is the bottom of P_Left */ - /* */ - - /* FIXXXME: uncommenting this line solves the disappearing */ - /* bit problem in the `7' of verdana 10pts, but */ - /* makes a new one in the `C' of arial 14pts */ - -#if 0 - if ( x2 - x1 < ras.precision_half ) -#endif - { - /* upper stub test */ - if ( left->next == right && left->height <= 0 ) - return; - - /* lower stub test */ - if ( right->next == left && left->start == y ) - return; - } - - /* check that the rightmost pixel isn't set */ - - e1 = TRUNC( e1 ); - - c1 = (Short)( e1 >> 3 ); - f1 = (Short)( e1 & 7 ); - - if ( e1 >= 0 && e1 < ras.bWidth && - ras.bTarget[ras.traceOfs + c1] & ( 0x80 >> f1 ) ) - return; - - if ( ras.dropOutControl == 2 ) - e1 = e2; - else - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); - - break; - - default: - return; /* unsupported mode */ - } - } - else - return; - } - - e1 = TRUNC( e1 ); - - if ( e1 >= 0 && e1 < ras.bWidth ) - { - c1 = (Short)( e1 >> 3 ); - f1 = (Short)( e1 & 7 ); - - if ( ras.gray_min_x > c1 ) ras.gray_min_x = c1; - if ( ras.gray_max_x < c1 ) ras.gray_max_x = c1; - - ras.bTarget[ras.traceOfs + c1] |= (char)( 0x80 >> f1 ); - } - } - - - static void - Vertical_Sweep_Step( RAS_ARG ) - { - ras.traceOfs += ras.traceIncr; - } - - - /***********************************************************************/ - /* */ - /* Horizontal Sweep Procedure Set */ - /* */ - /* These four routines are used during the horizontal black/white */ - /* sweep phase by the generic Draw_Sweep() function. */ - /* */ - /***********************************************************************/ - - static void - Horizontal_Sweep_Init( RAS_ARGS Short* min, - Short* max ) - { - /* nothing, really */ - FT_UNUSED( raster ); - FT_UNUSED( min ); - FT_UNUSED( max ); - } - - - static void - Horizontal_Sweep_Span( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) - { - Long e1, e2; - PByte bits; - Byte f1; - - FT_UNUSED( left ); - FT_UNUSED( right ); - - - if ( x2 - x1 < ras.precision ) - { - e1 = CEILING( x1 ); - e2 = FLOOR ( x2 ); - - if ( e1 == e2 ) - { - bits = ras.bTarget + ( y >> 3 ); - f1 = (Byte)( 0x80 >> ( y & 7 ) ); - - e1 = TRUNC( e1 ); - - if ( e1 >= 0 && e1 < ras.target.rows ) - { - PByte p; - - - p = bits - e1*ras.target.pitch; - if ( ras.target.pitch > 0 ) - p += ( ras.target.rows - 1 ) * ras.target.pitch; - - p[0] |= f1; - } - } - } - } - - - static void - Horizontal_Sweep_Drop( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) - { - Long e1, e2; - PByte bits; - Byte f1; - - - /* During the horizontal sweep, we only take care of drop-outs */ - - e1 = CEILING( x1 ); - e2 = FLOOR ( x2 ); - - if ( e1 > e2 ) - { - if ( e1 == e2 + ras.precision ) - { - switch ( ras.dropOutControl ) - { - case 1: - e1 = e2; - break; - - case 4: - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); - break; - - case 2: - case 5: - - /* Drop-out Control Rule #4 */ - - /* The spec is not very clear regarding rule #4. It */ - /* presents a method that is way too costly to implement */ - /* while the general idea seems to get rid of `stubs'. */ - /* */ - - /* rightmost stub test */ - if ( left->next == right && left->height <= 0 ) - return; - - /* leftmost stub test */ - if ( right->next == left && left->start == y ) - return; - - /* check that the rightmost pixel isn't set */ - - e1 = TRUNC( e1 ); - - bits = ras.bTarget + ( y >> 3 ); - f1 = (Byte)( 0x80 >> ( y & 7 ) ); - - bits -= e1 * ras.target.pitch; - if ( ras.target.pitch > 0 ) - bits += ( ras.target.rows - 1 ) * ras.target.pitch; - - if ( e1 >= 0 && - e1 < ras.target.rows && - *bits & f1 ) - return; - - if ( ras.dropOutControl == 2 ) - e1 = e2; - else - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); - - break; - - default: - return; /* unsupported mode */ - } - } - else - return; - } - - bits = ras.bTarget + ( y >> 3 ); - f1 = (Byte)( 0x80 >> ( y & 7 ) ); - - e1 = TRUNC( e1 ); - - if ( e1 >= 0 && e1 < ras.target.rows ) - { - bits -= e1 * ras.target.pitch; - if ( ras.target.pitch > 0 ) - bits += ( ras.target.rows - 1 ) * ras.target.pitch; - - bits[0] |= f1; - } - } - - - static void - Horizontal_Sweep_Step( RAS_ARG ) - { - /* Nothing, really */ - FT_UNUSED( raster ); - } - - -#ifdef FT_RASTER_OPTION_ANTI_ALIASING - - - /*************************************************************************/ - /* */ - /* Vertical Gray Sweep Procedure Set */ - /* */ - /* These two routines are used during the vertical gray-levels sweep */ - /* phase by the generic Draw_Sweep() function. */ - /* */ - /* NOTES */ - /* */ - /* - The target pixmap's width *must* be a multiple of 4. */ - /* */ - /* - You have to use the function Vertical_Sweep_Span() for the gray */ - /* span call. */ - /* */ - /*************************************************************************/ - - static void - Vertical_Gray_Sweep_Init( RAS_ARGS Short* min, - Short* max ) - { - Long pitch, byte_len; - - - *min = *min & -2; - *max = ( *max + 3 ) & -2; - - ras.traceOfs = 0; - pitch = ras.target.pitch; - byte_len = -pitch; - ras.traceIncr = (Short)byte_len; - ras.traceG = ( *min / 2 ) * byte_len; - - if ( pitch > 0 ) - { - ras.traceG += ( ras.target.rows - 1 ) * pitch; - byte_len = -byte_len; - } - - ras.gray_min_x = (Short)byte_len; - ras.gray_max_x = -(Short)byte_len; - } - - - static void - Vertical_Gray_Sweep_Step( RAS_ARG ) - { - Int c1, c2; - PByte pix, bit, bit2; - Int* count = ras.count_table; - Byte* grays; - - - ras.traceOfs += ras.gray_width; - - if ( ras.traceOfs > ras.gray_width ) - { - pix = ras.gTarget + ras.traceG + ras.gray_min_x * 4; - grays = ras.grays; - - if ( ras.gray_max_x >= 0 ) - { - Long last_pixel = ras.target.width - 1; - Int last_cell = last_pixel >> 2; - Int last_bit = last_pixel & 3; - Bool over = 0; - - - if ( ras.gray_max_x >= last_cell && last_bit != 3 ) - { - ras.gray_max_x = last_cell - 1; - over = 1; - } - - if ( ras.gray_min_x < 0 ) - ras.gray_min_x = 0; - - bit = ras.bTarget + ras.gray_min_x; - bit2 = bit + ras.gray_width; - - c1 = ras.gray_max_x - ras.gray_min_x; - - while ( c1 >= 0 ) - { - c2 = count[*bit] + count[*bit2]; - - if ( c2 ) - { - pix[0] = grays[(c2 >> 12) & 0x000F]; - pix[1] = grays[(c2 >> 8 ) & 0x000F]; - pix[2] = grays[(c2 >> 4 ) & 0x000F]; - pix[3] = grays[ c2 & 0x000F]; - - *bit = 0; - *bit2 = 0; - } - - bit++; - bit2++; - pix += 4; - c1--; - } - - if ( over ) - { - c2 = count[*bit] + count[*bit2]; - if ( c2 ) - { - switch ( last_bit ) - { - case 2: - pix[2] = grays[(c2 >> 4 ) & 0x000F]; - case 1: - pix[1] = grays[(c2 >> 8 ) & 0x000F]; - default: - pix[0] = grays[(c2 >> 12) & 0x000F]; - } - - *bit = 0; - *bit2 = 0; - } - } - } - - ras.traceOfs = 0; - ras.traceG += ras.traceIncr; - - ras.gray_min_x = 32000; - ras.gray_max_x = -32000; - } - } - - - static void - Horizontal_Gray_Sweep_Span( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) - { - /* nothing, really */ - FT_UNUSED( raster ); - FT_UNUSED( y ); - FT_UNUSED( x1 ); - FT_UNUSED( x2 ); - FT_UNUSED( left ); - FT_UNUSED( right ); - } - - - static void - Horizontal_Gray_Sweep_Drop( RAS_ARGS Short y, - FT_F26Dot6 x1, - FT_F26Dot6 x2, - PProfile left, - PProfile right ) - { - Long e1, e2; - PByte pixel; - Byte color; - - - /* During the horizontal sweep, we only take care of drop-outs */ - e1 = CEILING( x1 ); - e2 = FLOOR ( x2 ); - - if ( e1 > e2 ) - { - if ( e1 == e2 + ras.precision ) - { - switch ( ras.dropOutControl ) - { - case 1: - e1 = e2; - break; - - case 4: - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); - break; - - case 2: - case 5: - - /* Drop-out Control Rule #4 */ - - /* The spec is not very clear regarding rule #4. It */ - /* presents a method that is way too costly to implement */ - /* while the general idea seems to get rid of `stubs'. */ - /* */ - - /* rightmost stub test */ - if ( left->next == right && left->height <= 0 ) - return; - - /* leftmost stub test */ - if ( right->next == left && left->start == y ) - return; - - if ( ras.dropOutControl == 2 ) - e1 = e2; - else - e1 = CEILING( ( x1 + x2 + 1 ) / 2 ); - - break; - - default: - return; /* unsupported mode */ - } - } - else - return; - } - - if ( e1 >= 0 ) - { - if ( x2 - x1 >= ras.precision_half ) - color = ras.grays[2]; - else - color = ras.grays[1]; - - e1 = TRUNC( e1 ) / 2; - if ( e1 < ras.target.rows ) - { - pixel = ras.gTarget - e1 * ras.target.pitch + y / 2; - if ( ras.target.pitch > 0 ) - pixel += ( ras.target.rows - 1 ) * ras.target.pitch; - - if ( pixel[0] == ras.grays[0] ) - pixel[0] = color; - } - } - } - - -#endif /* FT_RASTER_OPTION_ANTI_ALIASING */ - - - /*************************************************************************/ - /* */ - /* Generic Sweep Drawing routine */ - /* */ - /*************************************************************************/ - - static Bool - Draw_Sweep( RAS_ARG ) - { - Short y, y_change, y_height; - - PProfile P, Q, P_Left, P_Right; - - Short min_Y, max_Y, top, bottom, dropouts; - - Long x1, x2, xs, e1, e2; - - TProfileList waiting; - TProfileList draw_left, draw_right; - - - /* Init empty linked lists */ - - Init_Linked( &waiting ); - - Init_Linked( &draw_left ); - Init_Linked( &draw_right ); - - /* first, compute min and max Y */ - - P = ras.fProfile; - max_Y = (Short)TRUNC( ras.minY ); - min_Y = (Short)TRUNC( ras.maxY ); - - while ( P ) - { - Q = P->link; - - bottom = (Short)P->start; - top = (Short)( P->start + P->height - 1 ); - - if ( min_Y > bottom ) min_Y = bottom; - if ( max_Y < top ) max_Y = top; - - P->X = 0; - InsNew( &waiting, P ); - - P = Q; - } - - /* Check the Y-turns */ - if ( ras.numTurns == 0 ) - { - ras.error = Raster_Err_Invalid; - return FAILURE; - } - - /* Now inits the sweep */ - - ras.Proc_Sweep_Init( RAS_VARS &min_Y, &max_Y ); - - /* Then compute the distance of each profile from min_Y */ - - P = waiting; - - while ( P ) - { - P->countL = (UShort)( P->start - min_Y ); - P = P->link; - } - - /* Let's go */ - - y = min_Y; - y_height = 0; - - if ( ras.numTurns > 0 && - ras.sizeBuff[-ras.numTurns] == min_Y ) - ras.numTurns--; - - while ( ras.numTurns > 0 ) - { - /* look in the waiting list for new activations */ - - P = waiting; - - while ( P ) - { - Q = P->link; - P->countL -= y_height; - if ( P->countL == 0 ) - { - DelOld( &waiting, P ); - - switch ( P->flow ) - { - case Flow_Up: - InsNew( &draw_left, P ); - break; - - case Flow_Down: - InsNew( &draw_right, P ); - break; - } - } - - P = Q; - } - - /* Sort the drawing lists */ - - Sort( &draw_left ); - Sort( &draw_right ); - - y_change = (Short)ras.sizeBuff[-ras.numTurns--]; - y_height = (Short)( y_change - y ); - - while ( y < y_change ) - { - /* Let's trace */ - - dropouts = 0; - - P_Left = draw_left; - P_Right = draw_right; - - while ( P_Left ) - { - x1 = P_Left ->X; - x2 = P_Right->X; - - if ( x1 > x2 ) - { - xs = x1; - x1 = x2; - x2 = xs; - } - - if ( x2 - x1 <= ras.precision ) - { - e1 = FLOOR( x1 ); - e2 = CEILING( x2 ); - - if ( ras.dropOutControl != 0 && - ( e1 > e2 || e2 == e1 + ras.precision ) ) - { - /* a drop out was detected */ - - P_Left ->X = x1; - P_Right->X = x2; - - /* mark profile for drop-out processing */ - P_Left->countL = 1; - dropouts++; - - goto Skip_To_Next; - } - } - - ras.Proc_Sweep_Span( RAS_VARS y, x1, x2, P_Left, P_Right ); - - Skip_To_Next: - - P_Left = P_Left->link; - P_Right = P_Right->link; - } - - /* now perform the dropouts _after_ the span drawing -- */ - /* drop-outs processing has been moved out of the loop */ - /* for performance tuning */ - if ( dropouts > 0 ) - goto Scan_DropOuts; - - Next_Line: - - ras.Proc_Sweep_Step( RAS_VAR ); - - y++; - - if ( y < y_change ) - { - Sort( &draw_left ); - Sort( &draw_right ); - } - } - - /* Now finalize the profiles that needs it */ - - P = draw_left; - while ( P ) - { - Q = P->link; - if ( P->height == 0 ) - DelOld( &draw_left, P ); - P = Q; - } - - P = draw_right; - while ( P ) - { - Q = P->link; - if ( P->height == 0 ) - DelOld( &draw_right, P ); - P = Q; - } - } - - /* for gray-scaling, flushes the bitmap scanline cache */ - while ( y <= max_Y ) - { - ras.Proc_Sweep_Step( RAS_VAR ); - y++; - } - - return SUCCESS; - - Scan_DropOuts: - - P_Left = draw_left; - P_Right = draw_right; - - while ( P_Left ) - { - if ( P_Left->countL ) - { - P_Left->countL = 0; -#if 0 - dropouts--; /* -- this is useful when debugging only */ -#endif - ras.Proc_Sweep_Drop( RAS_VARS y, - P_Left->X, - P_Right->X, - P_Left, - P_Right ); - } - - P_Left = P_Left->link; - P_Right = P_Right->link; - } - - goto Next_Line; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Render_Single_Pass */ - /* */ - /* <Description> */ - /* Performs one sweep with sub-banding. */ - /* */ - /* <Input> */ - /* flipped :: If set, flip the direction of the outline. */ - /* */ - /* <Return> */ - /* Renderer error code. */ - /* */ - static int - Render_Single_Pass( RAS_ARGS Bool flipped ) - { - Short i, j, k; - - - while ( ras.band_top >= 0 ) - { - ras.maxY = (Long)ras.band_stack[ras.band_top].y_max * ras.precision; - ras.minY = (Long)ras.band_stack[ras.band_top].y_min * ras.precision; - - ras.top = ras.buff; - - ras.error = Raster_Err_None; - - if ( Convert_Glyph( RAS_VARS flipped ) ) - { - if ( ras.error != Raster_Err_Overflow ) - return FAILURE; - - ras.error = Raster_Err_None; - - /* sub-banding */ - -#ifdef DEBUG_RASTER - ClearBand( RAS_VARS TRUNC( ras.minY ), TRUNC( ras.maxY ) ); -#endif - - i = ras.band_stack[ras.band_top].y_min; - j = ras.band_stack[ras.band_top].y_max; - - k = (Short)( ( i + j ) / 2 ); - - if ( ras.band_top >= 7 || k < i ) - { - ras.band_top = 0; - ras.error = Raster_Err_Invalid; - - return ras.error; - } - - ras.band_stack[ras.band_top + 1].y_min = k; - ras.band_stack[ras.band_top + 1].y_max = j; - - ras.band_stack[ras.band_top].y_max = (Short)( k - 1 ); - - ras.band_top++; - } - else - { - if ( ras.fProfile ) - if ( Draw_Sweep( RAS_VAR ) ) - return ras.error; - ras.band_top--; - } - } - - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Render_Glyph */ - /* */ - /* <Description> */ - /* Renders a glyph in a bitmap. Sub-banding if needed. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - Render_Glyph( RAS_ARG ) - { - FT_Error error; - - - Set_High_Precision( RAS_VARS ras.outline.flags & - FT_OUTLINE_HIGH_PRECISION ); - ras.scale_shift = ras.precision_shift; - ras.dropOutControl = 2; - ras.second_pass = (FT_Byte)( !( ras.outline.flags & - FT_OUTLINE_SINGLE_PASS ) ); - - /* Vertical Sweep */ - ras.Proc_Sweep_Init = Vertical_Sweep_Init; - ras.Proc_Sweep_Span = Vertical_Sweep_Span; - ras.Proc_Sweep_Drop = Vertical_Sweep_Drop; - ras.Proc_Sweep_Step = Vertical_Sweep_Step; - - ras.band_top = 0; - ras.band_stack[0].y_min = 0; - ras.band_stack[0].y_max = (short)( ras.target.rows - 1 ); - - ras.bWidth = (unsigned short)ras.target.width; - ras.bTarget = (Byte*)ras.target.buffer; - - if ( ( error = Render_Single_Pass( RAS_VARS 0 ) ) != 0 ) - return error; - - /* Horizontal Sweep */ - if ( ras.second_pass && ras.dropOutControl != 0 ) - { - ras.Proc_Sweep_Init = Horizontal_Sweep_Init; - ras.Proc_Sweep_Span = Horizontal_Sweep_Span; - ras.Proc_Sweep_Drop = Horizontal_Sweep_Drop; - ras.Proc_Sweep_Step = Horizontal_Sweep_Step; - - ras.band_top = 0; - ras.band_stack[0].y_min = 0; - ras.band_stack[0].y_max = (short)( ras.target.width - 1 ); - - if ( ( error = Render_Single_Pass( RAS_VARS 1 ) ) != 0 ) - return error; - } - - return Raster_Err_Ok; - } - - -#ifdef FT_RASTER_OPTION_ANTI_ALIASING - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Render_Gray_Glyph */ - /* */ - /* <Description> */ - /* Renders a glyph with grayscaling. Sub-banding if needed. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - Render_Gray_Glyph( RAS_ARG ) - { - Long pixel_width; - FT_Error error; - - - Set_High_Precision( RAS_VARS ras.outline.flags & - FT_OUTLINE_HIGH_PRECISION ); - ras.scale_shift = ras.precision_shift + 1; - ras.dropOutControl = 2; - ras.second_pass = !( ras.outline.flags & FT_OUTLINE_SINGLE_PASS ); - - /* Vertical Sweep */ - - ras.band_top = 0; - ras.band_stack[0].y_min = 0; - ras.band_stack[0].y_max = 2 * ras.target.rows - 1; - - ras.bWidth = ras.gray_width; - pixel_width = 2 * ( ( ras.target.width + 3 ) >> 2 ); - - if ( ras.bWidth > pixel_width ) - ras.bWidth = pixel_width; - - ras.bWidth = ras.bWidth * 8; - ras.bTarget = (Byte*)ras.gray_lines; - ras.gTarget = (Byte*)ras.target.buffer; - - ras.Proc_Sweep_Init = Vertical_Gray_Sweep_Init; - ras.Proc_Sweep_Span = Vertical_Sweep_Span; - ras.Proc_Sweep_Drop = Vertical_Sweep_Drop; - ras.Proc_Sweep_Step = Vertical_Gray_Sweep_Step; - - error = Render_Single_Pass( RAS_VARS 0 ); - if ( error ) - return error; - - /* Horizontal Sweep */ - if ( ras.second_pass && ras.dropOutControl != 0 ) - { - ras.Proc_Sweep_Init = Horizontal_Sweep_Init; - ras.Proc_Sweep_Span = Horizontal_Gray_Sweep_Span; - ras.Proc_Sweep_Drop = Horizontal_Gray_Sweep_Drop; - ras.Proc_Sweep_Step = Horizontal_Sweep_Step; - - ras.band_top = 0; - ras.band_stack[0].y_min = 0; - ras.band_stack[0].y_max = ras.target.width * 2 - 1; - - error = Render_Single_Pass( RAS_VARS 1 ); - if ( error ) - return error; - } - - return Raster_Err_Ok; - } - -#else /* !FT_RASTER_OPTION_ANTI_ALIASING */ - - FT_LOCAL_DEF( FT_Error ) - Render_Gray_Glyph( RAS_ARG ) - { - FT_UNUSED_RASTER; - - return Raster_Err_Cannot_Render_Glyph; - } - -#endif /* !FT_RASTER_OPTION_ANTI_ALIASING */ - - - static void - ft_black_init( TRaster_Instance* raster ) - { - FT_UInt n; - FT_ULong c; - - - /* setup count table */ - for ( n = 0; n < 256; n++ ) - { - c = ( n & 0x55 ) + ( ( n & 0xAA ) >> 1 ); - - c = ( ( c << 6 ) & 0x3000 ) | - ( ( c << 4 ) & 0x0300 ) | - ( ( c << 2 ) & 0x0030 ) | - (c & 0x0003 ); - - raster->count_table[n] = (UInt)c; - } - -#ifdef FT_RASTER_OPTION_ANTI_ALIASING - - /* set default 5-levels gray palette */ - for ( n = 0; n < 5; n++ ) - raster->grays[n] = n * 255 / 4; - - raster->gray_width = RASTER_GRAY_LINES / 2; - -#endif - } - - - /**** RASTER OBJECT CREATION: In standalone mode, we simply use *****/ - /**** a static object. *****/ - - -#ifdef _STANDALONE_ - - - static int - ft_black_new( void* memory, - FT_Raster *araster ) - { - static FT_RasterRec_ the_raster; - - - *araster = &the_raster; - FT_MEM_ZERO( &the_raster, sizeof ( the_raster ) ); - ft_black_init( &the_raster ); - - return 0; - } - - - static void - ft_black_done( FT_Raster raster ) - { - /* nothing */ - raster->init = 0; - } - - -#else /* _STANDALONE_ */ - - - static int - ft_black_new( FT_Memory memory, - TRaster_Instance** araster ) - { - FT_Error error; - TRaster_Instance* raster; - - - *araster = 0; - if ( !FT_NEW( raster ) ) - { - raster->memory = memory; - ft_black_init( raster ); - - *araster = raster; - } - - return error; - } - - - static void - ft_black_done( TRaster_Instance* raster ) - { - FT_Memory memory = (FT_Memory)raster->memory; - FT_FREE( raster ); - } - - -#endif /* _STANDALONE_ */ - - - static void - ft_black_reset( TRaster_Instance* raster, - const char* pool_base, - long pool_size ) - { - if ( raster && pool_base && pool_size >= 4096 ) - { - /* save the pool */ - raster->buff = (PLong)pool_base; - raster->sizeBuff = raster->buff + pool_size / sizeof ( Long ); - } - } - - - static void - ft_black_set_mode( TRaster_Instance* raster, - unsigned long mode, - const char* palette ) - { -#ifdef FT_RASTER_OPTION_ANTI_ALIASING - - if ( mode == FT_MAKE_TAG( 'p', 'a', 'l', '5' ) ) - { - /* set 5-levels gray palette */ - raster->grays[0] = palette[0]; - raster->grays[1] = palette[1]; - raster->grays[2] = palette[2]; - raster->grays[3] = palette[3]; - raster->grays[4] = palette[4]; - } - -#else - - FT_UNUSED( raster ); - FT_UNUSED( mode ); - FT_UNUSED( palette ); - -#endif - } - - - static int - ft_black_render( TRaster_Instance* raster, - FT_Raster_Params* params ) - { - FT_Outline* outline = (FT_Outline*)params->source; - FT_Bitmap* target_map = params->target; - - - if ( !raster || !raster->buff || !raster->sizeBuff ) - return Raster_Err_Not_Ini; - - /* return immediately if the outline is empty */ - if ( outline->n_points == 0 || outline->n_contours <= 0 ) - return Raster_Err_None; - - if ( !outline || !outline->contours || !outline->points ) - return Raster_Err_Invalid; - - if ( outline->n_points != outline->contours[outline->n_contours - 1] + 1 ) - return Raster_Err_Invalid; - - /* this version of the raster does not support direct rendering, sorry */ - if ( params->flags & FT_RASTER_FLAG_DIRECT ) - return Raster_Err_Unsupported; - - if ( !target_map || !target_map->buffer ) - return Raster_Err_Invalid; - - ras.outline = *outline; - ras.target = *target_map; - - return ( ( params->flags & FT_RASTER_FLAG_AA ) - ? Render_Gray_Glyph( raster ) - : Render_Glyph( raster ) ); - } - - - const FT_Raster_Funcs ft_standard_raster = - { - FT_GLYPH_FORMAT_OUTLINE, - (FT_Raster_New_Func) ft_black_new, - (FT_Raster_Reset_Func) ft_black_reset, - (FT_Raster_Set_Mode_Func)ft_black_set_mode, - (FT_Raster_Render_Func) ft_black_render, - (FT_Raster_Done_Func) ft_black_done - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/raster/ftraster.h b/nx-X11/extras/freetype2/src/raster/ftraster.h deleted file mode 100644 index 80fe46deb..000000000 --- a/nx-X11/extras/freetype2/src/raster/ftraster.h +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftraster.h */ -/* */ -/* The FreeType glyph rasterizer (specification). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used */ -/* modified and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTRASTER_H__ -#define __FTRASTER_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_IMAGE_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* Uncomment the following line if you are using ftraster.c as a */ - /* standalone module, fully independent of FreeType. */ - /* */ -/* #define _STANDALONE_ */ - - FT_EXPORT_VAR( const FT_Raster_Funcs ) ft_standard_raster; - - -FT_END_HEADER - -#endif /* __FTRASTER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/raster/ftrend1.c b/nx-X11/extras/freetype2/src/raster/ftrend1.c deleted file mode 100644 index a17ef9b61..000000000 --- a/nx-X11/extras/freetype2/src/raster/ftrend1.c +++ /dev/null @@ -1,273 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftrend1.c */ -/* */ -/* The FreeType glyph rasterizer interface (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_OUTLINE_H -#include "ftrend1.h" -#include "ftraster.h" - -#include "rasterrs.h" - - - /* initialize renderer -- init its raster */ - static FT_Error - ft_raster1_init( FT_Renderer render ) - { - FT_Library library = FT_MODULE_LIBRARY( render ); - - - render->clazz->raster_class->raster_reset( render->raster, - library->raster_pool, - library->raster_pool_size ); - - return Raster_Err_Ok; - } - - - /* set render-specific mode */ - static FT_Error - ft_raster1_set_mode( FT_Renderer render, - FT_ULong mode_tag, - FT_Pointer data ) - { - /* we simply pass it to the raster */ - return render->clazz->raster_class->raster_set_mode( render->raster, - mode_tag, - data ); - } - - - /* transform a given glyph image */ - static FT_Error - ft_raster1_transform( FT_Renderer render, - FT_GlyphSlot slot, - FT_Matrix* matrix, - FT_Vector* delta ) - { - FT_Error error = Raster_Err_Ok; - - - if ( slot->format != render->glyph_format ) - { - error = Raster_Err_Invalid_Argument; - goto Exit; - } - - if ( matrix ) - FT_Outline_Transform( &slot->outline, matrix ); - - if ( delta ) - FT_Outline_Translate( &slot->outline, delta->x, delta->y ); - - Exit: - return error; - } - - - /* return the glyph's control box */ - static void - ft_raster1_get_cbox( FT_Renderer render, - FT_GlyphSlot slot, - FT_BBox* cbox ) - { - FT_MEM_ZERO( cbox, sizeof ( *cbox ) ); - - if ( slot->format == render->glyph_format ) - FT_Outline_Get_CBox( &slot->outline, cbox ); - } - - - /* convert a slot's glyph image into a bitmap */ - static FT_Error - ft_raster1_render( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - FT_Vector* origin ) - { - FT_Error error; - FT_Outline* outline; - FT_BBox cbox; - FT_UInt width, height, pitch; - FT_Bitmap* bitmap; - FT_Memory memory; - - FT_Raster_Params params; - - - /* check glyph image format */ - if ( slot->format != render->glyph_format ) - { - error = Raster_Err_Invalid_Argument; - goto Exit; - } - - /* check rendering mode */ - if ( mode != FT_RENDER_MODE_MONO ) - { - /* raster1 is only capable of producing monochrome bitmaps */ - if ( render->clazz == &ft_raster1_renderer_class ) - return Raster_Err_Cannot_Render_Glyph; - } - else - { - /* raster5 is only capable of producing 5-gray-levels bitmaps */ - if ( render->clazz == &ft_raster5_renderer_class ) - return Raster_Err_Cannot_Render_Glyph; - } - - outline = &slot->outline; - - /* translate the outline to the new origin if needed */ - if ( origin ) - FT_Outline_Translate( outline, origin->x, origin->y ); - - /* compute the control box, and grid fit it */ - FT_Outline_Get_CBox( outline, &cbox ); - - cbox.xMin = FT_PIX_FLOOR( cbox.xMin ); - cbox.yMin = FT_PIX_FLOOR( cbox.yMin ); - cbox.xMax = FT_PIX_CEIL( cbox.xMax ); - cbox.yMax = FT_PIX_CEIL( cbox.yMax ); - - width = (FT_UInt)( ( cbox.xMax - cbox.xMin ) >> 6 ); - height = (FT_UInt)( ( cbox.yMax - cbox.yMin ) >> 6 ); - bitmap = &slot->bitmap; - memory = render->root.memory; - - /* release old bitmap buffer */ - if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) - { - FT_FREE( bitmap->buffer ); - slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP; - } - - /* allocate new one, depends on pixel format */ - if ( !( mode & FT_RENDER_MODE_MONO ) ) - { - /* we pad to 32 bits, only for backwards compatibility with FT 1.x */ - pitch = FT_PAD_CEIL( width, 4 ); - bitmap->pixel_mode = FT_PIXEL_MODE_GRAY; - bitmap->num_grays = 256; - } - else - { - pitch = ( ( width + 15 ) >> 4 ) << 1; - bitmap->pixel_mode = FT_PIXEL_MODE_MONO; - } - - bitmap->width = width; - bitmap->rows = height; - bitmap->pitch = pitch; - - if ( FT_ALLOC( bitmap->buffer, (FT_ULong)pitch * height ) ) - goto Exit; - - slot->internal->flags |= FT_GLYPH_OWN_BITMAP; - - /* translate outline to render it into the bitmap */ - FT_Outline_Translate( outline, -cbox.xMin, -cbox.yMin ); - - /* set up parameters */ - params.target = bitmap; - params.source = outline; - params.flags = 0; - - if ( bitmap->pixel_mode == FT_PIXEL_MODE_GRAY ) - params.flags |= FT_RASTER_FLAG_AA; - - /* render outline into the bitmap */ - error = render->raster_render( render->raster, ¶ms ); - - FT_Outline_Translate( outline, cbox.xMin, cbox.yMin ); - - if ( error ) - goto Exit; - - slot->format = FT_GLYPH_FORMAT_BITMAP; - slot->bitmap_left = (FT_Int)( cbox.xMin >> 6 ); - slot->bitmap_top = (FT_Int)( cbox.yMax >> 6 ); - - Exit: - return error; - } - - - FT_CALLBACK_TABLE_DEF - const FT_Renderer_Class ft_raster1_renderer_class = - { - { - FT_MODULE_RENDERER, - sizeof( FT_RendererRec ), - - "raster1", - 0x10000L, - 0x20000L, - - 0, /* module specific interface */ - - (FT_Module_Constructor)ft_raster1_init, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 - }, - - FT_GLYPH_FORMAT_OUTLINE, - - (FT_Renderer_RenderFunc) ft_raster1_render, - (FT_Renderer_TransformFunc)ft_raster1_transform, - (FT_Renderer_GetCBoxFunc) ft_raster1_get_cbox, - (FT_Renderer_SetModeFunc) ft_raster1_set_mode, - - (FT_Raster_Funcs*) &ft_standard_raster - }; - - - /* This renderer is _NOT_ part of the default modules; you will need */ - /* to register it by hand in your application. It should only be */ - /* used for backwards-compatibility with FT 1.x anyway. */ - /* */ - FT_CALLBACK_TABLE_DEF - const FT_Renderer_Class ft_raster5_renderer_class = - { - { - FT_MODULE_RENDERER, - sizeof( FT_RendererRec ), - - "raster5", - 0x10000L, - 0x20000L, - - 0, /* module specific interface */ - - (FT_Module_Constructor)ft_raster1_init, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 - }, - - FT_GLYPH_FORMAT_OUTLINE, - - (FT_Renderer_RenderFunc) ft_raster1_render, - (FT_Renderer_TransformFunc)ft_raster1_transform, - (FT_Renderer_GetCBoxFunc) ft_raster1_get_cbox, - (FT_Renderer_SetModeFunc) ft_raster1_set_mode, - - (FT_Raster_Funcs*) &ft_standard_raster - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/raster/ftrend1.h b/nx-X11/extras/freetype2/src/raster/ftrend1.h deleted file mode 100644 index 76e9a5f58..000000000 --- a/nx-X11/extras/freetype2/src/raster/ftrend1.h +++ /dev/null @@ -1,44 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftrend1.h */ -/* */ -/* The FreeType glyph rasterizer interface (specification). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTREND1_H__ -#define __FTREND1_H__ - - -#include <ft2build.h> -#include FT_RENDER_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Renderer_Class ) ft_raster1_renderer_class; - - /* this renderer is _NOT_ part of the default modules, you'll need */ - /* to register it by hand in your application. It should only be */ - /* used for backwards-compatibility with FT 1.x anyway. */ - /* */ - FT_EXPORT_VAR( const FT_Renderer_Class ) ft_raster5_renderer_class; - - -FT_END_HEADER - -#endif /* __FTREND1_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/raster/module.mk b/nx-X11/extras/freetype2/src/raster/module.mk deleted file mode 100644 index 8a3136413..000000000 --- a/nx-X11/extras/freetype2/src/raster/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 renderer module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_raster_module - -add_raster_module: - $(OPEN_DRIVER)ft_raster1_renderer_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)raster $(ECHO_DRIVER_DESC)monochrome bitmap renderer$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/raster/raster.c b/nx-X11/extras/freetype2/src/raster/raster.c deleted file mode 100644 index f13a67a20..000000000 --- a/nx-X11/extras/freetype2/src/raster/raster.c +++ /dev/null @@ -1,26 +0,0 @@ -/***************************************************************************/ -/* */ -/* raster.c */ -/* */ -/* FreeType monochrome rasterer module component (body only). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "ftraster.c" -#include "ftrend1.c" - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/raster/rasterrs.h b/nx-X11/extras/freetype2/src/raster/rasterrs.h deleted file mode 100644 index 5df9a7ab1..000000000 --- a/nx-X11/extras/freetype2/src/raster/rasterrs.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************/ -/* */ -/* rasterrs.h */ -/* */ -/* monochrome renderer error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the monochrome renderer error enumeration */ - /* constants. */ - /* */ - /*************************************************************************/ - -#ifndef __RASTERRS_H__ -#define __RASTERRS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX Raster_Err_ -#define FT_ERR_BASE FT_Mod_Err_Raster - -#include FT_ERRORS_H - -#endif /* __RASTERRS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/raster/rules.mk b/nx-X11/extras/freetype2/src/raster/rules.mk deleted file mode 100644 index 0dc8782ea..000000000 --- a/nx-X11/extras/freetype2/src/raster/rules.mk +++ /dev/null @@ -1,69 +0,0 @@ -# -# FreeType 2 renderer module build rules -# - - -# Copyright 1996-2000, 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# raster driver directory -# -RASTER_DIR := $(SRC_DIR)/raster - -# compilation flags for the driver -# -RASTER_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(RASTER_DIR)) - - -# raster driver sources (i.e., C files) -# -RASTER_DRV_SRC := $(RASTER_DIR)/ftraster.c \ - $(RASTER_DIR)/ftrend1.c - - -# raster driver headers -# -RASTER_DRV_H := $(RASTER_DRV_SRC:%.c=%.h) \ - $(RASTER_DIR)/rasterrs.h - - -# raster driver object(s) -# -# RASTER_DRV_OBJ_M is used during `multi' builds. -# RASTER_DRV_OBJ_S is used during `single' builds. -# -RASTER_DRV_OBJ_M := $(RASTER_DRV_SRC:$(RASTER_DIR)/%.c=$(OBJ_DIR)/%.$O) -RASTER_DRV_OBJ_S := $(OBJ_DIR)/raster.$O - -# raster driver source file for single build -# -RASTER_DRV_SRC_S := $(RASTER_DIR)/raster.c - - -# raster driver - single object -# -$(RASTER_DRV_OBJ_S): $(RASTER_DRV_SRC_S) $(RASTER_DRV_SRC) \ - $(FREETYPE_H) $(RASTER_DRV_H) - $(RASTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(RASTER_DRV_SRC_S)) - - -# raster driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(RASTER_DIR)/%.c $(FREETYPE_H) $(RASTER_DRV_H) - $(RASTER_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(RASTER_DRV_OBJ_S) -DRV_OBJS_M += $(RASTER_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/sfnt/Jamfile b/nx-X11/extras/freetype2/src/sfnt/Jamfile deleted file mode 100644 index 257b3442c..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/sfnt Jamfile (c) 2001, 2002, 2004 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) sfnt ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = sfobjs sfdriver ttcmap0 ttpost ttload ttsbit ; - } - else - { - _sources = sfnt ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/sfnt Jamfile diff --git a/nx-X11/extras/freetype2/src/sfnt/descrip.mms b/nx-X11/extras/freetype2/src/sfnt/descrip.mms deleted file mode 100644 index 811c8b3ee..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 SFNT driver compilation rules for VMS -# - - -# Copyright 2001, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.sfnt]) - -OBJS=sfnt.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/sfnt/module.mk b/nx-X11/extras/freetype2/src/sfnt/module.mk deleted file mode 100644 index 52607e2af..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 SFNT module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_sfnt_module - -add_sfnt_module: - $(OPEN_DRIVER)sfnt_module_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)sfnt $(ECHO_DRIVER_DESC)helper module for TrueType & OpenType formats$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/sfnt/rules.mk b/nx-X11/extras/freetype2/src/sfnt/rules.mk deleted file mode 100644 index f13238549..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/rules.mk +++ /dev/null @@ -1,73 +0,0 @@ -# -# FreeType 2 SFNT driver configuration rules -# - - -# Copyright 1996-2000, 2002, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# SFNT driver directory -# -SFNT_DIR := $(SRC_DIR)/sfnt - - -# compilation flags for the driver -# -SFNT_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SFNT_DIR)) - - -# SFNT driver sources (i.e., C files) -# -SFNT_DRV_SRC := $(SFNT_DIR)/ttload.c \ - $(SFNT_DIR)/ttcmap0.c \ - $(SFNT_DIR)/ttsbit.c \ - $(SFNT_DIR)/ttpost.c \ - $(SFNT_DIR)/sfobjs.c \ - $(SFNT_DIR)/sfdriver.c - -# SFNT driver headers -# -SFNT_DRV_H := $(SFNT_DRV_SRC:%c=%h) \ - $(SFNT_DIR)/sferrors.h - - -# SFNT driver object(s) -# -# SFNT_DRV_OBJ_M is used during `multi' builds. -# SFNT_DRV_OBJ_S is used during `single' builds. -# -SFNT_DRV_OBJ_M := $(SFNT_DRV_SRC:$(SFNT_DIR)/%.c=$(OBJ_DIR)/%.$O) -SFNT_DRV_OBJ_S := $(OBJ_DIR)/sfnt.$O - -# SFNT driver source file for single build -# -SFNT_DRV_SRC_S := $(SFNT_DIR)/sfnt.c - - -# SFNT driver - single object -# -$(SFNT_DRV_OBJ_S): $(SFNT_DRV_SRC_S) $(SFNT_DRV_SRC) \ - $(FREETYPE_H) $(SFNT_DRV_H) - $(SFNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(SFNT_DRV_SRC_S)) - - -# SFNT driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(SFNT_DIR)/%.c $(FREETYPE_H) $(SFNT_DRV_H) - $(SFNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(SFNT_DRV_OBJ_S) -DRV_OBJS_M += $(SFNT_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/sfnt/sfdriver.c b/nx-X11/extras/freetype2/src/sfnt/sfdriver.c deleted file mode 100644 index 7da53d2f1..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/sfdriver.c +++ /dev/null @@ -1,400 +0,0 @@ -/***************************************************************************/ -/* */ -/* sfdriver.c */ -/* */ -/* High-level SFNT driver interface (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_OBJECTS_H - -#include "sfdriver.h" -#include "ttload.h" -#include "sfobjs.h" - -#include "sferrors.h" - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS -#include "ttsbit.h" -#endif - -#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES -#include "ttpost.h" -#endif - -#include "ttcmap0.h" - -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_SFNT_H -#include FT_SERVICE_TT_CMAP_H - - - /* - * SFNT TABLE SERVICE - * - */ - - static void* - get_sfnt_table( TT_Face face, - FT_Sfnt_Tag tag ) - { - void* table; - - - switch ( tag ) - { - case ft_sfnt_head: - table = &face->header; - break; - - case ft_sfnt_hhea: - table = &face->horizontal; - break; - - case ft_sfnt_vhea: - table = face->vertical_info ? &face->vertical : 0; - break; - - case ft_sfnt_os2: - table = face->os2.version == 0xFFFFU ? 0 : &face->os2; - break; - - case ft_sfnt_post: - table = &face->postscript; - break; - - case ft_sfnt_maxp: - table = &face->max_profile; - break; - - case ft_sfnt_pclt: - table = face->pclt.Version ? &face->pclt : 0; - break; - - default: - table = 0; - } - - return table; - } - - - static const FT_Service_SFNT_TableRec sfnt_service_sfnt_table = - { - (FT_SFNT_TableLoadFunc)tt_face_load_any, - (FT_SFNT_TableGetFunc) get_sfnt_table - }; - - -#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - /* - * GLYPH DICT SERVICE - * - */ - - static FT_Error - sfnt_get_glyph_name( TT_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) - { - FT_String* gname; - FT_Error error; - - - error = tt_face_get_ps_name( face, glyph_index, &gname ); - if ( !error && buffer_max > 0 ) - { - FT_UInt len = (FT_UInt)( ft_strlen( gname ) ); - - - if ( len >= buffer_max ) - len = buffer_max - 1; - - FT_MEM_COPY( buffer, gname, len ); - ((FT_Byte*)buffer)[len] = 0; - } - - return error; - } - - - static const FT_Service_GlyphDictRec sfnt_service_glyph_dict = - { - (FT_GlyphDict_GetNameFunc) sfnt_get_glyph_name, - (FT_GlyphDict_NameIndexFunc)NULL - }; - -#endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */ - - - /* - * POSTSCRIPT NAME SERVICE - * - */ - - static const char* - sfnt_get_ps_name( TT_Face face ) - { - FT_Int n, found_win, found_apple; - const char* result = NULL; - - - /* shouldn't happen, but just in case to avoid memory leaks */ - if ( face->postscript_name ) - return face->postscript_name; - - /* scan the name table to see whether we have a Postscript name here, */ - /* either in Macintosh or Windows platform encodings */ - found_win = -1; - found_apple = -1; - - for ( n = 0; n < face->num_names; n++ ) - { - TT_NameEntryRec* name = face->name_table.names + n; - - - if ( name->nameID == 6 && name->stringLength > 0 ) - { - if ( name->platformID == 3 && - name->encodingID == 1 && - name->languageID == 0x409 ) - found_win = n; - - if ( name->platformID == 1 && - name->encodingID == 0 && - name->languageID == 0 ) - found_apple = n; - } - } - - if ( found_win != -1 ) - { - FT_Memory memory = face->root.memory; - TT_NameEntryRec* name = face->name_table.names + found_win; - FT_UInt len = name->stringLength / 2; - FT_Error error = SFNT_Err_Ok; - - FT_UNUSED( error ); - - - if ( !FT_ALLOC( result, name->stringLength + 1 ) ) - { - FT_Stream stream = face->name_table.stream; - FT_String* r = (FT_String*)result; - FT_Byte* p = (FT_Byte*)name->string; - - - if ( FT_STREAM_SEEK( name->stringOffset ) || - FT_FRAME_ENTER( name->stringLength ) ) - { - FT_FREE( result ); - name->stringLength = 0; - name->stringOffset = 0; - FT_FREE( name->string ); - - goto Exit; - } - - p = (FT_Byte*)stream->cursor; - - for ( ; len > 0; len--, p += 2 ) - { - if ( p[0] == 0 && p[1] >= 32 && p[1] < 128 ) - *r++ = p[1]; - } - *r = '\0'; - - FT_FRAME_EXIT(); - } - goto Exit; - } - - if ( found_apple != -1 ) - { - FT_Memory memory = face->root.memory; - TT_NameEntryRec* name = face->name_table.names + found_apple; - FT_UInt len = name->stringLength; - FT_Error error = SFNT_Err_Ok; - - FT_UNUSED( error ); - - - if ( !FT_ALLOC( result, len + 1 ) ) - { - FT_Stream stream = face->name_table.stream; - - - if ( FT_STREAM_SEEK( name->stringOffset ) || - FT_STREAM_READ( result, len ) ) - { - name->stringOffset = 0; - name->stringLength = 0; - FT_FREE( name->string ); - FT_FREE( result ); - goto Exit; - } - ((char*)result)[len] = '\0'; - } - } - - Exit: - face->postscript_name = result; - return result; - } - - static const FT_Service_PsFontNameRec sfnt_service_ps_name = - { - (FT_PsName_GetFunc)sfnt_get_ps_name - }; - - - /* - * TT CMAP INFO - * - */ - static const FT_Service_TTCMapsRec tt_service_get_cmap_info = - { - (TT_CMap_Info_GetFunc)tt_get_cmap_info - }; - - - /* - * SERVICE LIST - * - */ - - static const FT_ServiceDescRec sfnt_services[] = - { - { FT_SERVICE_ID_SFNT_TABLE, &sfnt_service_sfnt_table }, - { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name }, -#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES - { FT_SERVICE_ID_GLYPH_DICT, &sfnt_service_glyph_dict }, -#endif - { FT_SERVICE_ID_TT_CMAP, &tt_service_get_cmap_info }, - - { NULL, NULL } - }; - - - FT_CALLBACK_DEF( FT_Module_Interface ) - sfnt_get_interface( FT_Module module, - const char* module_interface ) - { - FT_UNUSED( module ); - - if ( ft_strcmp( module_interface, "get_sfnt" ) == 0 ) - return (FT_Module_Interface)get_sfnt_table; - - if ( ft_strcmp( module_interface, "load_sfnt" ) == 0 ) - return (FT_Module_Interface)tt_face_load_any; - - return ft_service_list_lookup( sfnt_services, module_interface ); - } - - - static - const SFNT_Interface sfnt_interface = - { - tt_face_goto_table, - - sfnt_init_face, - sfnt_load_face, - sfnt_done_face, - sfnt_get_interface, - - tt_face_load_any, - tt_face_load_sfnt_header, - tt_face_load_directory, - - tt_face_load_header, - tt_face_load_metrics_header, - tt_face_load_cmap, - tt_face_load_max_profile, - tt_face_load_os2, - tt_face_load_postscript, - - tt_face_load_names, - tt_face_free_names, - - tt_face_load_hdmx, - tt_face_free_hdmx, - - tt_face_load_kern, - tt_face_load_gasp, - tt_face_load_pclt, - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - /* see `ttload.h' */ - tt_face_load_bitmap_header, - - /* see `ttsbit.h' and `sfnt.h' */ - tt_face_set_sbit_strike, - tt_face_load_sbit_strikes, - tt_find_sbit_image, - tt_load_sbit_metrics, - tt_face_load_sbit_image, - tt_face_free_sbit_strikes, - -#else /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - -#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES - - /* see `ttpost.h' */ - tt_face_get_ps_name, - tt_face_free_ps_names, - -#else /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */ - - 0, - 0, - -#endif /* TT_CONFIG_OPTION_POSTSCRIPT_NAMES */ - - }; - - - FT_CALLBACK_TABLE_DEF - const FT_Module_Class sfnt_module_class = - { - 0, /* not a font driver or renderer */ - sizeof( FT_ModuleRec ), - - "sfnt", /* driver name */ - 0x10000L, /* driver version 1.0 */ - 0x20000L, /* driver requires FreeType 2.0 or higher */ - - (const void*)&sfnt_interface, /* module specific interface */ - - (FT_Module_Constructor)0, - (FT_Module_Destructor) 0, - (FT_Module_Requester) sfnt_get_interface - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/sfdriver.h b/nx-X11/extras/freetype2/src/sfnt/sfdriver.h deleted file mode 100644 index 92db79694..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/sfdriver.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************/ -/* */ -/* sfdriver.h */ -/* */ -/* High-level SFNT driver interface (specification). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SFDRIVER_H__ -#define __SFDRIVER_H__ - - -#include <ft2build.h> -#include FT_MODULE_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Module_Class ) sfnt_module_class; - - -FT_END_HEADER - -#endif /* __SFDRIVER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/sferrors.h b/nx-X11/extras/freetype2/src/sfnt/sferrors.h deleted file mode 100644 index fd2736b6c..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/sferrors.h +++ /dev/null @@ -1,39 +0,0 @@ -/***************************************************************************/ -/* */ -/* sferrors.h */ -/* */ -/* SFNT error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the SFNT error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __SFERRORS_H__ -#define __SFERRORS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX SFNT_Err_ -#define FT_ERR_BASE FT_Mod_Err_SFNT - -#include FT_ERRORS_H - -#endif /* __SFERRORS_H__ */ - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/sfnt.c b/nx-X11/extras/freetype2/src/sfnt/sfnt.c deleted file mode 100644 index 90c1bee91..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/sfnt.c +++ /dev/null @@ -1,36 +0,0 @@ -/***************************************************************************/ -/* */ -/* sfnt.c */ -/* */ -/* Single object library component. */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "ttload.c" -#include "ttcmap0.c" -#include "sfobjs.c" -#include "sfdriver.c" - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS -#include "ttsbit.c" -#endif - -#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES -#include "ttpost.c" -#endif - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/sfobjs.c b/nx-X11/extras/freetype2/src/sfnt/sfobjs.c deleted file mode 100644 index aef3f5dfb..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/sfobjs.c +++ /dev/null @@ -1,854 +0,0 @@ -/***************************************************************************/ -/* */ -/* sfobjs.c */ -/* */ -/* SFNT object management (base). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "sfobjs.h" -#include "ttload.h" -#include "ttcmap0.h" -#include FT_INTERNAL_SFNT_H -#include FT_TRUETYPE_IDS_H -#include FT_TRUETYPE_TAGS_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include "sferrors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_sfobjs - - - - /* convert a UTF-16 name entry to ASCII */ - static FT_String* - tt_name_entry_ascii_from_utf16( TT_NameEntry entry, - FT_Memory memory ) - { - FT_String* string; - FT_UInt len, code, n; - FT_Byte* read = (FT_Byte*)entry->string; - - - len = (FT_UInt)entry->stringLength / 2; - - if ( FT_MEM_NEW_ARRAY( string, len + 1 ) ) - return NULL; - - for ( n = 0; n < len; n++ ) - { - code = FT_NEXT_USHORT( read ); - if ( code < 32 || code > 127 ) - code = '?'; - - string[n] = (char)code; - } - - string[len] = 0; - - return string; - } - - - /* convert a UCS-4 name entry to ASCII */ - static FT_String* - tt_name_entry_ascii_from_ucs4( TT_NameEntry entry, - FT_Memory memory ) - { - FT_String* string; - FT_UInt len, code, n; - FT_Byte* read = (FT_Byte*)entry->string; - - - len = (FT_UInt)entry->stringLength / 4; - - if ( FT_MEM_NEW_ARRAY( string, len + 1 ) ) - return NULL; - - for ( n = 0; n < len; n++ ) - { - code = (FT_UInt)FT_NEXT_ULONG( read ); - if ( code < 32 || code > 127 ) - code = '?'; - - string[n] = (char)code; - } - - string[len] = 0; - - return string; - } - - - /* convert an Apple Roman or symbol name entry to ASCII */ - static FT_String* - tt_name_entry_ascii_from_other( TT_NameEntry entry, - FT_Memory memory ) - { - FT_String* string; - FT_UInt len, code, n; - FT_Byte* read = (FT_Byte*)entry->string; - - - len = (FT_UInt)entry->stringLength; - - if ( FT_MEM_NEW_ARRAY( string, len + 1 ) ) - return NULL; - - for ( n = 0; n < len; n++ ) - { - code = *read++; - if ( code < 32 || code > 127 ) - code = '?'; - - string[n] = (char)code; - } - - string[len] = 0; - - return string; - } - - - typedef FT_String* (*TT_NameEntry_ConvertFunc)( TT_NameEntry entry, - FT_Memory memory ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_get_name */ - /* */ - /* <Description> */ - /* Returns a given ENGLISH name record in ASCII. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* nameid :: The name id of the name record to return. */ - /* */ - /* <Return> */ - /* Character string. NULL if no name is present. */ - /* */ - static FT_String* - tt_face_get_name( TT_Face face, - FT_UShort nameid ) - { - FT_Memory memory = face->root.memory; - FT_String* result = NULL; - FT_UShort n; - TT_NameEntryRec* rec; - FT_Int found_apple = -1; - FT_Int found_win = -1; - FT_Int found_unicode = -1; - - FT_Bool is_english = 0; - - TT_NameEntry_ConvertFunc convert; - - - rec = face->name_table.names; - for ( n = 0; n < face->num_names; n++, rec++ ) - { - /* According to the OpenType 1.3 specification, only Microsoft or */ - /* Apple platform IDs might be used in the `name' table. The */ - /* `Unicode' platform is reserved for the `cmap' table, and the */ - /* `Iso' one is deprecated. */ - /* */ - /* However, the Apple TrueType specification doesn't say the same */ - /* thing and goes to suggest that all Unicode `name' table entries */ - /* should be coded in UTF-16 (in big-endian format I suppose). */ - /* */ - if ( rec->nameID == nameid && rec->stringLength > 0 ) - { - switch ( rec->platformID ) - { - case TT_PLATFORM_APPLE_UNICODE: - case TT_PLATFORM_ISO: - /* there is `languageID' to check there. We should use this */ - /* field only as a last solution when nothing else is */ - /* available. */ - /* */ - found_unicode = n; - break; - - case TT_PLATFORM_MACINTOSH: - if ( rec->languageID == TT_MAC_LANGID_ENGLISH ) - found_apple = n; - - break; - - case TT_PLATFORM_MICROSOFT: - /* we only take a non-English name when there is nothing */ - /* else available in the font */ - /* */ - if ( found_win == -1 || ( rec->languageID & 0x3FF ) == 0x009 ) - { - switch ( rec->encodingID ) - { - case TT_MS_ID_SYMBOL_CS: - case TT_MS_ID_UNICODE_CS: - case TT_MS_ID_UCS_4: - is_english = ( rec->languageID & 0x3FF ) == 0x009; - found_win = n; - break; - - default: - ; - } - } - break; - - default: - ; - } - } - } - - /* some fonts contain invalid Unicode or Macintosh formatted entries; */ - /* we will thus favor names encoded in Windows formats if available */ - /* (provided it is an English name) */ - /* */ - convert = NULL; - if ( found_win >= 0 && !( found_apple >= 0 && !is_english ) ) - { - rec = face->name_table.names + found_win; - switch ( rec->encodingID ) - { - case TT_MS_ID_UNICODE_CS: - case TT_MS_ID_SYMBOL_CS: - convert = tt_name_entry_ascii_from_utf16; - break; - - case TT_MS_ID_UCS_4: - convert = tt_name_entry_ascii_from_ucs4; - break; - - default: - ; - } - } - else if ( found_apple >= 0 ) - { - rec = face->name_table.names + found_apple; - convert = tt_name_entry_ascii_from_other; - } - else if ( found_unicode >= 0 ) - { - rec = face->name_table.names + found_unicode; - convert = tt_name_entry_ascii_from_utf16; - } - - if ( rec && convert ) - { - if ( rec->string == NULL ) - { - FT_Error error = SFNT_Err_Ok; - FT_Stream stream = face->name_table.stream; - - FT_UNUSED( error ); - - - if ( FT_QNEW_ARRAY ( rec->string, rec->stringLength ) || - FT_STREAM_SEEK( rec->stringOffset ) || - FT_STREAM_READ( rec->string, rec->stringLength ) ) - { - FT_FREE( rec->string ); - rec->stringLength = 0; - result = NULL; - goto Exit; - } - } - - result = convert( rec, memory ); - } - - Exit: - return result; - } - - - static FT_Encoding - sfnt_find_encoding( int platform_id, - int encoding_id ) - { - typedef struct TEncoding - { - int platform_id; - int encoding_id; - FT_Encoding encoding; - - } TEncoding; - - static - const TEncoding tt_encodings[] = - { - { TT_PLATFORM_ISO, -1, FT_ENCODING_UNICODE }, - - { TT_PLATFORM_APPLE_UNICODE, -1, FT_ENCODING_UNICODE }, - - { TT_PLATFORM_MACINTOSH, TT_MAC_ID_ROMAN, FT_ENCODING_APPLE_ROMAN }, - - { TT_PLATFORM_MICROSOFT, TT_MS_ID_SYMBOL_CS, FT_ENCODING_MS_SYMBOL }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_UCS_4, FT_ENCODING_UNICODE }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_UNICODE_CS, FT_ENCODING_UNICODE }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_SJIS, FT_ENCODING_SJIS }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_GB2312, FT_ENCODING_GB2312 }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_BIG_5, FT_ENCODING_BIG5 }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_WANSUNG, FT_ENCODING_WANSUNG }, - { TT_PLATFORM_MICROSOFT, TT_MS_ID_JOHAB, FT_ENCODING_JOHAB } - }; - - const TEncoding *cur, *limit; - - - cur = tt_encodings; - limit = cur + sizeof ( tt_encodings ) / sizeof ( tt_encodings[0] ); - - for ( ; cur < limit; cur++ ) - { - if ( cur->platform_id == platform_id ) - { - if ( cur->encoding_id == encoding_id || - cur->encoding_id == -1 ) - return cur->encoding; - } - } - - return FT_ENCODING_NONE; - } - - - FT_LOCAL_DEF( FT_Error ) - sfnt_init_face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error; - FT_Library library = face->root.driver->root.library; - SFNT_Service sfnt; - SFNT_HeaderRec sfnt_header; - - /* for now, parameters are unused */ - FT_UNUSED( num_params ); - FT_UNUSED( params ); - - - sfnt = (SFNT_Service)face->sfnt; - if ( !sfnt ) - { - sfnt = (SFNT_Service)FT_Get_Module_Interface( library, "sfnt" ); - if ( !sfnt ) - { - error = SFNT_Err_Invalid_File_Format; - goto Exit; - } - - face->sfnt = sfnt; - face->goto_table = sfnt->goto_table; - } - - FT_FACE_FIND_GLOBAL_SERVICE( face, face->psnames, POSTSCRIPT_CMAPS ); - - /* check that we have a valid TrueType file */ - error = sfnt->load_sfnt_header( face, stream, face_index, &sfnt_header ); - if ( error ) - goto Exit; - - face->format_tag = sfnt_header.format_tag; - face->num_tables = sfnt_header.num_tables; - - /* Load font directory */ - error = sfnt->load_directory( face, stream, &sfnt_header ); - if ( error ) - goto Exit; - - face->root.num_faces = face->ttc_header.count; - if ( face->root.num_faces < 1 ) - face->root.num_faces = 1; - - Exit: - return error; - } - - -#undef LOAD_ -#define LOAD_( x ) ( ( error = sfnt->load_##x( face, stream ) ) \ - != SFNT_Err_Ok ) - - - FT_LOCAL_DEF( FT_Error ) - sfnt_load_face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error, psnames_error; - FT_Bool has_outline; - FT_Bool is_apple_sbit; - - SFNT_Service sfnt = (SFNT_Service)face->sfnt; - - FT_UNUSED( face_index ); - FT_UNUSED( num_params ); - FT_UNUSED( params ); - - - /* Load tables */ - - /* We now support two SFNT-based bitmapped font formats. They */ - /* are recognized easily as they do not include a `glyf' */ - /* table. */ - /* */ - /* The first format comes from Apple, and uses a table named */ - /* `bhed' instead of `head' to store the font header (using */ - /* the same format). It also doesn't include horizontal and */ - /* vertical metrics tables (i.e. `hhea' and `vhea' tables are */ - /* missing). */ - /* */ - /* The other format comes from Microsoft, and is used with */ - /* WinCE/PocketPC. It looks like a standard TTF, except that */ - /* it doesn't contain outlines. */ - /* */ - - /* do we have outlines in there? */ -#ifdef FT_CONFIG_OPTION_INCREMENTAL - has_outline = FT_BOOL( face->root.internal->incremental_interface != 0 || - tt_face_lookup_table( face, TTAG_glyf ) != 0 || - tt_face_lookup_table( face, TTAG_CFF ) != 0 ); -#else - has_outline = FT_BOOL( tt_face_lookup_table( face, TTAG_glyf ) != 0 || - tt_face_lookup_table( face, TTAG_CFF ) != 0 ); -#endif - - is_apple_sbit = 0; - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - /* if this font doesn't contain outlines, we try to load */ - /* a `bhed' table */ - if ( !has_outline ) - is_apple_sbit = FT_BOOL( !LOAD_( bitmap_header ) ); - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - /* load the font header (`head' table) if this isn't an Apple */ - /* sbit font file */ - if ( !is_apple_sbit && LOAD_( header ) ) - goto Exit; - - /* the following tables are often not present in embedded TrueType */ - /* fonts within PDF documents, so don't check for them. */ - (void)LOAD_( max_profile ); - (void)LOAD_( charmaps ); - - /* the following tables are optional in PCL fonts -- */ - /* don't check for errors */ - (void)LOAD_( names ); - psnames_error = LOAD_( psnames ); - - /* do not load the metrics headers and tables if this is an Apple */ - /* sbit font file */ - if ( !is_apple_sbit ) - { - /* load the `hhea' and `hmtx' tables at once */ - error = sfnt->load_metrics( face, stream, 0 ); - if ( error ) - goto Exit; - - /* try to load the `vhea' and `vmtx' tables at once */ - error = sfnt->load_metrics( face, stream, 1 ); - if ( error ) - goto Exit; - - if ( LOAD_( os2 ) ) - goto Exit; - } - - /* the optional tables */ - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - /* embedded bitmap support. */ - if ( sfnt->load_sbits && LOAD_( sbits ) ) - { - /* return an error if this font file has no outlines */ - if ( error == SFNT_Err_Table_Missing && has_outline ) - error = SFNT_Err_Ok; - else - goto Exit; - } - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - if ( LOAD_( hdmx ) || - LOAD_( gasp ) || - LOAD_( kerning ) || - LOAD_( pclt ) ) - goto Exit; - - face->root.family_name = tt_face_get_name( face, - TT_NAME_ID_FONT_FAMILY ); - face->root.style_name = tt_face_get_name( face, - TT_NAME_ID_FONT_SUBFAMILY ); - - /* now set up root fields */ - { - FT_Face root = &face->root; - FT_Int32 flags = 0; - FT_Memory memory; - - - memory = root->memory; - - /*********************************************************************/ - /* */ - /* Compute face flags. */ - /* */ - if ( has_outline == TRUE ) - flags = FT_FACE_FLAG_SCALABLE; /* scalable outlines */ - - flags |= FT_FACE_FLAG_SFNT | /* SFNT file format */ - FT_FACE_FLAG_HORIZONTAL; /* horizontal data */ - -#ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES - if ( psnames_error == SFNT_Err_Ok && - face->postscript.FormatType != 0x00030000L ) - flags |= FT_FACE_FLAG_GLYPH_NAMES; -#endif - - /* fixed width font? */ - if ( face->postscript.isFixedPitch ) - flags |= FT_FACE_FLAG_FIXED_WIDTH; - - /* vertical information? */ - if ( face->vertical_info ) - flags |= FT_FACE_FLAG_VERTICAL; - - /* kerning available ? */ - if ( face->kern_pairs ) - flags |= FT_FACE_FLAG_KERNING; - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - /* Don't bother to load the tables unless somebody asks for them. */ - /* No need to do work which will (probably) not be used. */ - if ( tt_face_lookup_table( face, TTAG_glyf ) != 0 && - tt_face_lookup_table( face, TTAG_fvar ) != 0 && - tt_face_lookup_table( face, TTAG_gvar ) != 0 ) - flags |= FT_FACE_FLAG_MULTIPLE_MASTERS; -#endif - - root->face_flags = flags; - - /*********************************************************************/ - /* */ - /* Compute style flags. */ - /* */ - flags = 0; - if ( has_outline == TRUE && face->os2.version != 0xFFFFU ) - { - /* we have an OS/2 table; use the `fsSelection' field */ - if ( face->os2.fsSelection & 1 ) - flags |= FT_STYLE_FLAG_ITALIC; - - if ( face->os2.fsSelection & 32 ) - flags |= FT_STYLE_FLAG_BOLD; - } - else - { - /* this is an old Mac font, use the header field */ - if ( face->header.Mac_Style & 1 ) - flags |= FT_STYLE_FLAG_BOLD; - - if ( face->header.Mac_Style & 2 ) - flags |= FT_STYLE_FLAG_ITALIC; - } - - root->style_flags = flags; - - /*********************************************************************/ - /* */ - /* Polish the charmaps. */ - /* */ - /* Try to set the charmap encoding according to the platform & */ - /* encoding ID of each charmap. */ - /* */ - - tt_face_build_cmaps( face ); /* ignore errors */ - - - /* set the encoding fields */ - { - FT_Int m; - - - for ( m = 0; m < root->num_charmaps; m++ ) - { - FT_CharMap charmap = root->charmaps[m]; - - - charmap->encoding = sfnt_find_encoding( charmap->platform_id, - charmap->encoding_id ); - -#if 0 - if ( root->charmap == NULL && - charmap->encoding == FT_ENCODING_UNICODE ) - { - /* set 'root->charmap' to the first Unicode encoding we find */ - root->charmap = charmap; - } -#endif - } - } - - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - if ( face->num_sbit_strikes ) - { - FT_ULong n; - - - root->face_flags |= FT_FACE_FLAG_FIXED_SIZES; - -#if 0 - /* XXX: I don't know criteria whether layout is horizontal */ - /* or vertical. */ - if ( has_outline.... ) - { - ... - root->face_flags |= FT_FACE_FLAG_VERTICAL; - } -#endif - root->num_fixed_sizes = (FT_Int)face->num_sbit_strikes; - - if ( FT_NEW_ARRAY( root->available_sizes, face->num_sbit_strikes ) ) - goto Exit; - - for ( n = 0 ; n < face->num_sbit_strikes ; n++ ) - { - FT_Bitmap_Size* bsize = root->available_sizes + n; - TT_SBit_Strike strike = face->sbit_strikes + n; - FT_UShort fupem = face->header.Units_Per_EM; - FT_Short height = (FT_Short)( face->horizontal.Ascender - - face->horizontal.Descender + - face->horizontal.Line_Gap ); - FT_Short avg = face->os2.xAvgCharWidth; - - - /* assume 72dpi */ - bsize->height = - (FT_Short)( ( height * strike->y_ppem + fupem/2 ) / fupem ); - bsize->width = - (FT_Short)( ( avg * strike->y_ppem + fupem/2 ) / fupem ); - bsize->size = strike->y_ppem << 6; - bsize->x_ppem = strike->x_ppem << 6; - bsize->y_ppem = strike->y_ppem << 6; - } - } - else - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - { - root->num_fixed_sizes = 0; - root->available_sizes = 0; - } - - /*********************************************************************/ - /* */ - /* Set up metrics. */ - /* */ - if ( has_outline == TRUE ) - { - /* XXX What about if outline header is missing */ - /* (e.g. sfnt wrapped bitmap)? */ - root->bbox.xMin = face->header.xMin; - root->bbox.yMin = face->header.yMin; - root->bbox.xMax = face->header.xMax; - root->bbox.yMax = face->header.yMax; - root->units_per_EM = face->header.Units_Per_EM; - - - /* XXX: Computing the ascender/descender/height is very different */ - /* from what the specification tells you. Apparently, we */ - /* must be careful because */ - /* */ - /* - not all fonts have an OS/2 table; in this case, we take */ - /* the values in the horizontal header. However, these */ - /* values very often are not reliable. */ - /* */ - /* - otherwise, the correct typographic values are in the */ - /* sTypoAscender, sTypoDescender & sTypoLineGap fields. */ - /* */ - /* However, certains fonts have these fields set to 0. */ - /* Rather, they have usWinAscent & usWinDescent correctly */ - /* set (but with different values). */ - /* */ - /* As an example, Arial Narrow is implemented through four */ - /* files ARIALN.TTF, ARIALNI.TTF, ARIALNB.TTF & ARIALNBI.TTF */ - /* */ - /* Strangely, all fonts have the same values in their */ - /* sTypoXXX fields, except ARIALNB which sets them to 0. */ - /* */ - /* On the other hand, they all have different */ - /* usWinAscent/Descent values -- as a conclusion, the OS/2 */ - /* table cannot be used to compute the text height reliably! */ - /* */ - - /* The ascender/descender/height are computed from the OS/2 table */ - /* when found. Otherwise, they're taken from the horizontal */ - /* header. */ - /* */ - - root->ascender = face->horizontal.Ascender; - root->descender = face->horizontal.Descender; - - root->height = (FT_Short)( root->ascender - root->descender + - face->horizontal.Line_Gap ); - -#if 0 - /* if the line_gap is 0, we add an extra 15% to the text height -- */ - /* this computation is based on various versions of Times New Roman */ - if ( face->horizontal.Line_Gap == 0 ) - root->height = (FT_Short)( ( root->height * 115 + 50 ) / 100 ); -#endif - -#if 0 - - /* some fonts have the OS/2 "sTypoAscender", "sTypoDescender" & */ - /* "sTypoLineGap" fields set to 0, like ARIALNB.TTF */ - if ( face->os2.version != 0xFFFFU && root->ascender ) - { - FT_Int height; - - - root->ascender = face->os2.sTypoAscender; - root->descender = -face->os2.sTypoDescender; - - height = root->ascender + root->descender + face->os2.sTypoLineGap; - if ( height > root->height ) - root->height = height; - } - -#endif /* 0 */ - - root->max_advance_width = face->horizontal.advance_Width_Max; - - root->max_advance_height = (FT_Short)( face->vertical_info - ? face->vertical.advance_Height_Max - : root->height ); - - root->underline_position = face->postscript.underlinePosition; - root->underline_thickness = face->postscript.underlineThickness; - - /* root->max_points -- already set up */ - /* root->max_contours -- already set up */ - } - } - - Exit: - return error; - } - - -#undef LOAD_ - - - FT_LOCAL_DEF( void ) - sfnt_done_face( TT_Face face ) - { - FT_Memory memory = face->root.memory; - SFNT_Service sfnt = (SFNT_Service)face->sfnt; - - - if ( sfnt ) - { - /* destroy the postscript names table if it is loaded */ - if ( sfnt->free_psnames ) - sfnt->free_psnames( face ); - - /* destroy the embedded bitmaps table if it is loaded */ - if ( sfnt->free_sbits ) - sfnt->free_sbits( face ); - } - - /* freeing the kerning table */ - FT_FREE( face->kern_pairs ); - face->num_kern_pairs = 0; - - /* freeing the collection table */ - FT_FREE( face->ttc_header.offsets ); - face->ttc_header.count = 0; - - /* freeing table directory */ - FT_FREE( face->dir_tables ); - face->num_tables = 0; - - { - FT_Stream stream = FT_FACE_STREAM( face ); - - - /* simply release the 'cmap' table frame */ - FT_FRAME_RELEASE( face->cmap_table ); - face->cmap_size = 0; - } - - /* freeing the horizontal metrics */ - FT_FREE( face->horizontal.long_metrics ); - FT_FREE( face->horizontal.short_metrics ); - - /* freeing the vertical ones, if any */ - if ( face->vertical_info ) - { - FT_FREE( face->vertical.long_metrics ); - FT_FREE( face->vertical.short_metrics ); - face->vertical_info = 0; - } - - /* freeing the gasp table */ - FT_FREE( face->gasp.gaspRanges ); - face->gasp.numRanges = 0; - - /* freeing the name table */ - sfnt->free_names( face ); - - /* freeing the hdmx table */ - sfnt->free_hdmx( face ); - - /* freeing family and style name */ - FT_FREE( face->root.family_name ); - FT_FREE( face->root.style_name ); - - /* freeing sbit size table */ - FT_FREE( face->root.available_sizes ); - face->root.num_fixed_sizes = 0; - - FT_FREE( face->postscript_name ); - - face->sfnt = 0; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/sfobjs.h b/nx-X11/extras/freetype2/src/sfnt/sfobjs.h deleted file mode 100644 index 6241c93b3..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/sfobjs.h +++ /dev/null @@ -1,54 +0,0 @@ -/***************************************************************************/ -/* */ -/* sfobjs.h */ -/* */ -/* SFNT object management (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __SFOBJS_H__ -#define __SFOBJS_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_SFNT_H -#include FT_INTERNAL_OBJECTS_H - - -FT_BEGIN_HEADER - - - FT_LOCAL( FT_Error ) - sfnt_init_face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL( FT_Error ) - sfnt_load_face( FT_Stream stream, - TT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL( void ) - sfnt_done_face( TT_Face face ); - - -FT_END_HEADER - -#endif /* __SFDRIVER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/ttcmap0.c b/nx-X11/extras/freetype2/src/sfnt/ttcmap0.c deleted file mode 100644 index dd1c76aaa..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/ttcmap0.c +++ /dev/null @@ -1,1991 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttcmap0.c */ -/* */ -/* TrueType new character mapping table (cmap) support (body). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H -#include "ttload.h" -#include "ttcmap0.h" - -#include "sferrors.h" - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttcmap - - -#define TT_PEEK_SHORT FT_PEEK_SHORT -#define TT_PEEK_USHORT FT_PEEK_USHORT -#define TT_PEEK_LONG FT_PEEK_LONG -#define TT_PEEK_ULONG FT_PEEK_ULONG - -#define TT_NEXT_SHORT FT_NEXT_SHORT -#define TT_NEXT_USHORT FT_NEXT_USHORT -#define TT_NEXT_LONG FT_NEXT_LONG -#define TT_NEXT_ULONG FT_NEXT_ULONG - - - FT_CALLBACK_DEF( FT_Error ) - tt_cmap_init( TT_CMap cmap, - FT_Byte* table ) - { - cmap->data = table; - return 0; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FORMAT 0 *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* TABLE OVERVIEW */ - /* -------------- */ - /* */ - /* NAME OFFSET TYPE DESCRIPTION */ - /* */ - /* format 0 USHORT must be 0 */ - /* length 2 USHORT table length in bytes */ - /* language 4 USHORT Mac language code */ - /* glyph_ids 6 BYTE[256] array of glyph indices */ - /* 262 */ - /* */ - -#ifdef TT_CONFIG_CMAP_FORMAT_0 - - FT_CALLBACK_DEF( void ) - tt_cmap0_validate( FT_Byte* table, - FT_Validator valid ) - { - FT_Byte* p = table + 2; - FT_UInt length = TT_NEXT_USHORT( p ); - - - if ( table + length > valid->limit || length < 262 ) - FT_INVALID_TOO_SHORT; - - /* check glyph indices whenever necessary */ - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - FT_UInt n, idx; - - - p = table + 6; - for ( n = 0; n < 256; n++ ) - { - idx = *p++; - if ( idx >= TT_VALID_GLYPH_COUNT( valid ) ) - FT_INVALID_GLYPH_ID; - } - } - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap0_char_index( TT_CMap cmap, - FT_UInt32 char_code ) - { - FT_Byte* table = cmap->data; - - - return char_code < 256 ? table[6 + char_code] : 0; - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap0_char_next( TT_CMap cmap, - FT_UInt32 *pchar_code ) - { - FT_Byte* table = cmap->data; - FT_UInt32 charcode = *pchar_code; - FT_UInt32 result = 0; - FT_UInt gindex = 0; - - - table += 6; /* go to glyph ids */ - while ( ++charcode < 256 ) - { - gindex = table[charcode]; - if ( gindex != 0 ) - { - result = charcode; - break; - } - } - - *pchar_code = result; - return gindex; - } - - - FT_CALLBACK_DEF( FT_Error ) - tt_cmap0_get_info( TT_CMap cmap, - TT_CMapInfo *cmap_info ) - { - FT_Byte* p = cmap->data + 4; - - - cmap_info->language = (FT_ULong)TT_PEEK_USHORT( p ); - - return FT_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const TT_CMap_ClassRec tt_cmap0_class_rec = - { - { - sizeof( TT_CMapRec ), - - (FT_CMap_InitFunc) tt_cmap_init, - (FT_CMap_DoneFunc) NULL, - (FT_CMap_CharIndexFunc)tt_cmap0_char_index, - (FT_CMap_CharNextFunc) tt_cmap0_char_next - }, - 0, - (TT_CMap_ValidateFunc) tt_cmap0_validate, - (TT_CMap_Info_GetFunc) tt_cmap0_get_info - }; - -#endif /* TT_CONFIG_CMAP_FORMAT_0 */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FORMAT 2 *****/ - /***** *****/ - /***** This is used for certain CJK encodings that encode text in a *****/ - /***** mixed 8/16 bits encoding along the following lines: *****/ - /***** *****/ - /***** * Certain byte values correspond to an 8-bit character code *****/ - /***** (typically in the range 0..127 for ASCII compatibility). *****/ - /***** *****/ - /***** * Certain byte values signal the first byte of a 2-byte *****/ - /***** character code (but these values are also valid as the *****/ - /***** second byte of a 2-byte character). *****/ - /***** *****/ - /***** The following charmap lookup and iteration functions all *****/ - /***** assume that the value "charcode" correspond to following: *****/ - /***** *****/ - /***** - For one byte characters, "charcode" is simply the *****/ - /***** character code. *****/ - /***** *****/ - /***** - For two byte characters, "charcode" is the 2-byte *****/ - /***** character code in big endian format. More exactly: *****/ - /***** *****/ - /***** (charcode >> 8) is the first byte value *****/ - /***** (charcode & 0xFF) is the second byte value *****/ - /***** *****/ - /***** Note that not all values of "charcode" are valid according *****/ - /***** to these rules, and the function moderately check the *****/ - /***** arguments. *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* TABLE OVERVIEW */ - /* -------------- */ - /* */ - /* NAME OFFSET TYPE DESCRIPTION */ - /* */ - /* format 0 USHORT must be 2 */ - /* length 2 USHORT table length in bytes */ - /* language 4 USHORT Mac language code */ - /* keys 6 USHORT[256] sub-header keys */ - /* subs 518 SUBHEAD[NSUBS] sub-headers array */ - /* glyph_ids 518+NSUB*8 USHORT[] glyph id array */ - /* */ - /* The `keys' table is used to map charcode high-bytes to sub-headers. */ - /* The value of `NSUBS' is the number of sub-headers defined in the */ - /* table and is computed by finding the maximum of the `keys' table. */ - /* */ - /* Note that for any n, `keys[n]' is a byte offset within the `subs' */ - /* table, i.e., it is the corresponding sub-header index multiplied */ - /* by 8. */ - /* */ - /* Each sub-header has the following format: */ - /* */ - /* NAME OFFSET TYPE DESCRIPTION */ - /* */ - /* first 0 USHORT first valid low-byte */ - /* count 2 USHORT number of valid low-bytes */ - /* delta 4 SHORT see below */ - /* offset 6 USHORT see below */ - /* */ - /* A sub-header defines, for each high-byte, the range of valid */ - /* low-bytes within the charmap. Note that the range defined by `first' */ - /* and `count' must be completely included in the interval [0..255] */ - /* according to the specification. */ - /* */ - /* If a character code is contained within a given sub-header, then */ - /* mapping it to a glyph index is done as follows: */ - /* */ - /* * The value of `offset' is read. This is a _byte_ distance from the */ - /* location of the `offset' field itself into a slice of the */ - /* `glyph_ids' table. Let's call it `slice' (it's a USHORT[] too). */ - /* */ - /* * The value `slice[char.lo - first]' is read. If it is 0, there is */ - /* no glyph for the charcode. Otherwise, the value of `delta' is */ - /* added to it (modulo 65536) to form a new glyph index. */ - /* */ - /* It is up to the validation routine to check that all offsets fall */ - /* within the glyph ids table (and not within the `subs' table itself or */ - /* outside of the CMap). */ - /* */ - -#ifdef TT_CONFIG_CMAP_FORMAT_2 - - FT_CALLBACK_DEF( void ) - tt_cmap2_validate( FT_Byte* table, - FT_Validator valid ) - { - FT_Byte* p = table + 2; /* skip format */ - FT_UInt length = TT_PEEK_USHORT( p ); - FT_UInt n, max_subs; - FT_Byte* keys; /* keys table */ - FT_Byte* subs; /* sub-headers */ - FT_Byte* glyph_ids; /* glyph id array */ - - - if ( table + length > valid->limit || length < 6 + 512 ) - FT_INVALID_TOO_SHORT; - - keys = table + 6; - - /* parse keys to compute sub-headers count */ - p = keys; - max_subs = 0; - for ( n = 0; n < 256; n++ ) - { - FT_UInt idx = TT_NEXT_USHORT( p ); - - - /* value must be multiple of 8 */ - if ( valid->level >= FT_VALIDATE_PARANOID && ( idx & 7 ) != 0 ) - FT_INVALID_DATA; - - idx >>= 3; - - if ( idx > max_subs ) - max_subs = idx; - } - - FT_ASSERT( p == table + 518 ); - - subs = p; - glyph_ids = subs + (max_subs + 1) * 8; - if ( glyph_ids > valid->limit ) - FT_INVALID_TOO_SHORT; - - /* parse sub-headers */ - for ( n = 0; n <= max_subs; n++ ) - { - FT_UInt first_code, code_count, offset; - FT_Int delta; - FT_Byte* ids; - - - first_code = TT_NEXT_USHORT( p ); - code_count = TT_NEXT_USHORT( p ); - delta = TT_NEXT_SHORT( p ); - offset = TT_NEXT_USHORT( p ); - - /* check range within 0..255 */ - if ( valid->level >= FT_VALIDATE_PARANOID ) - { - if ( first_code >= 256 || first_code + code_count > 256 ) - FT_INVALID_DATA; - } - - /* check offset */ - if ( offset != 0 ) - { - ids = p - 2 + offset; - if ( ids < glyph_ids || ids + code_count*2 > table + length ) - FT_INVALID_OFFSET; - - /* check glyph ids */ - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - FT_Byte* limit = p + code_count * 2; - FT_UInt idx; - - - for ( ; p < limit; ) - { - idx = TT_NEXT_USHORT( p ); - if ( idx != 0 ) - { - idx = ( idx + delta ) & 0xFFFFU; - if ( idx >= TT_VALID_GLYPH_COUNT( valid ) ) - FT_INVALID_GLYPH_ID; - } - } - } - } - } - } - - - /* return sub header corresponding to a given character code */ - /* NULL on invalid charcode */ - static FT_Byte* - tt_cmap2_get_subheader( FT_Byte* table, - FT_UInt32 char_code ) - { - FT_Byte* result = NULL; - - - if ( char_code < 0x10000UL ) - { - FT_UInt char_lo = (FT_UInt)( char_code & 0xFF ); - FT_UInt char_hi = (FT_UInt)( char_code >> 8 ); - FT_Byte* p = table + 6; /* keys table */ - FT_Byte* subs = table + 518; /* subheaders table */ - FT_Byte* sub; - - - if ( char_hi == 0 ) - { - /* an 8-bit character code -- we use subHeader 0 in this case */ - /* to test whether the character code is in the charmap */ - /* */ - sub = subs; /* jump to first sub-header */ - - /* check that the sub-header for this byte is 0, which */ - /* indicates that it's really a valid one-byte value */ - /* Otherwise, return 0 */ - /* */ - p += char_lo * 2; - if ( TT_PEEK_USHORT( p ) != 0 ) - goto Exit; - } - else - { - /* a 16-bit character code */ - - /* jump to key entry */ - p += char_hi * 2; - /* jump to sub-header */ - sub = subs + ( FT_PAD_FLOOR( TT_PEEK_USHORT( p ), 8 ) ); - - /* check that the high byte isn't a valid one-byte value */ - if ( sub == subs ) - goto Exit; - } - result = sub; - } - Exit: - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap2_char_index( TT_CMap cmap, - FT_UInt32 char_code ) - { - FT_Byte* table = cmap->data; - FT_UInt result = 0; - FT_Byte* subheader; - - - subheader = tt_cmap2_get_subheader( table, char_code ); - if ( subheader ) - { - FT_Byte* p = subheader; - FT_UInt idx = (FT_UInt)(char_code & 0xFF); - FT_UInt start, count; - FT_Int delta; - FT_UInt offset; - - - start = TT_NEXT_USHORT( p ); - count = TT_NEXT_USHORT( p ); - delta = TT_NEXT_SHORT ( p ); - offset = TT_PEEK_USHORT( p ); - - idx -= start; - if ( idx < count && offset != 0 ) - { - p += offset + 2 * idx; - idx = TT_PEEK_USHORT( p ); - - if ( idx != 0 ) - result = (FT_UInt)( idx + delta ) & 0xFFFFU; - } - } - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap2_char_next( TT_CMap cmap, - FT_UInt32 *pcharcode ) - { - FT_Byte* table = cmap->data; - FT_UInt gindex = 0; - FT_UInt32 result = 0; - FT_UInt32 charcode = *pcharcode + 1; - FT_Byte* subheader; - - - while ( charcode < 0x10000UL ) - { - subheader = tt_cmap2_get_subheader( table, charcode ); - if ( subheader ) - { - FT_Byte* p = subheader; - FT_UInt start = TT_NEXT_USHORT( p ); - FT_UInt count = TT_NEXT_USHORT( p ); - FT_Int delta = TT_NEXT_SHORT ( p ); - FT_UInt offset = TT_PEEK_USHORT( p ); - FT_UInt char_lo = (FT_UInt)( charcode & 0xFF ); - FT_UInt pos, idx; - - - if ( offset == 0 ) - goto Next_SubHeader; - - if ( char_lo < start ) - { - char_lo = start; - pos = 0; - } - else - pos = (FT_UInt)( char_lo - start ); - - p += offset + pos * 2; - charcode = FT_PAD_FLOOR( charcode, 256 ) + char_lo; - - for ( ; pos < count; pos++, charcode++ ) - { - idx = TT_NEXT_USHORT( p ); - - if ( idx != 0 ) - { - gindex = ( idx + delta ) & 0xFFFFU; - if ( gindex != 0 ) - { - result = charcode; - goto Exit; - } - } - } - } - - /* jump to next sub-header, i.e. higher byte value */ - Next_SubHeader: - charcode = FT_PAD_FLOOR( charcode, 256 ) + 256; - } - - Exit: - *pcharcode = result; - - return gindex; - } - - - FT_CALLBACK_DEF( FT_Error ) - tt_cmap2_get_info( TT_CMap cmap, - TT_CMapInfo *cmap_info ) - { - FT_Byte* p = cmap->data + 4; - - - cmap_info->language = (FT_ULong)TT_PEEK_USHORT( p ); - - return FT_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const TT_CMap_ClassRec tt_cmap2_class_rec = - { - { - sizeof( TT_CMapRec ), - - (FT_CMap_InitFunc) tt_cmap_init, - (FT_CMap_DoneFunc) NULL, - (FT_CMap_CharIndexFunc)tt_cmap2_char_index, - (FT_CMap_CharNextFunc) tt_cmap2_char_next - }, - 2, - (TT_CMap_ValidateFunc) tt_cmap2_validate, - (TT_CMap_Info_GetFunc) tt_cmap2_get_info - }; - -#endif /* TT_CONFIG_CMAP_FORMAT_2 */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FORMAT 4 *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* TABLE OVERVIEW */ - /* -------------- */ - /* */ - /* NAME OFFSET TYPE DESCRIPTION */ - /* */ - /* format 0 USHORT must be 4 */ - /* length 2 USHORT table length */ - /* in bytes */ - /* language 4 USHORT Mac language code */ - /* */ - /* segCountX2 6 USHORT 2*NUM_SEGS */ - /* searchRange 8 USHORT 2*(1 << LOG_SEGS) */ - /* entrySelector 10 USHORT LOG_SEGS */ - /* rangeShift 12 USHORT segCountX2 - */ - /* searchRange */ - /* */ - /* endCount 14 USHORT[NUM_SEGS] end charcode for */ - /* each segment; last */ - /* is 0xFFFF */ - /* */ - /* pad 14+NUM_SEGS*2 USHORT padding */ - /* */ - /* startCount 16+NUM_SEGS*2 USHORT[NUM_SEGS] first charcode for */ - /* each segment */ - /* */ - /* idDelta 16+NUM_SEGS*4 SHORT[NUM_SEGS] delta for each */ - /* segment */ - /* idOffset 16+NUM_SEGS*6 SHORT[NUM_SEGS] range offset for */ - /* each segment; can be */ - /* zero */ - /* */ - /* glyphIds 16+NUM_SEGS*8 USHORT[] array of glyph id */ - /* ranges */ - /* */ - /* Character codes are modelled by a series of ordered (increasing) */ - /* intervals called segments. Each segment has start and end codes, */ - /* provided by the `startCount' and `endCount' arrays. Segments must */ - /* not be overlapping and the last segment should always contain the */ - /* `0xFFFF' endCount. */ - /* */ - /* The fields `searchRange', `entrySelector' and `rangeShift' are better */ - /* ignored (they are traces of over-engineering in the TrueType */ - /* specification). */ - /* */ - /* Each segment also has a signed `delta', as well as an optional offset */ - /* within the `glyphIds' table. */ - /* */ - /* If a segment's idOffset is 0, the glyph index corresponding to any */ - /* charcode within the segment is obtained by adding the value of */ - /* `idDelta' directly to the charcode, modulo 65536. */ - /* */ - /* Otherwise, a glyph index is taken from the glyph ids sub-array for */ - /* the segment, and the value of `idDelta' is added to it. */ - /* */ - /* */ - /* Finally, note that certain fonts contain invalid charmaps that */ - /* contain end=0xFFFF, start=0xFFFF, delta=0x0001, offset=0xFFFF at the */ - /* of their charmaps (e.g. opens___.ttf which comes with OpenOffice.org) */ - /* we need special code to deal with them correctly... */ - /* */ - -#ifdef TT_CONFIG_CMAP_FORMAT_4 - - FT_CALLBACK_DEF( void ) - tt_cmap4_validate( FT_Byte* table, - FT_Validator valid ) - { - FT_Byte* p = table + 2; /* skip format */ - FT_UInt length = TT_NEXT_USHORT( p ); - FT_Byte *ends, *starts, *offsets, *deltas, *glyph_ids; - FT_UInt num_segs; - - - /* in certain fonts, the `length' field is invalid and goes */ - /* out of bound. We try to correct this here... */ - if ( length < 16 ) - FT_INVALID_TOO_SHORT; - - if ( table + length > valid->limit ) - { - if ( valid->level >= FT_VALIDATE_TIGHT ) - FT_INVALID_TOO_SHORT; - - length = (FT_UInt)( valid->limit - table ); - } - - p = table + 6; - num_segs = TT_NEXT_USHORT( p ); /* read segCountX2 */ - - if ( valid->level >= FT_VALIDATE_PARANOID ) - { - /* check that we have an even value here */ - if ( num_segs & 1 ) - FT_INVALID_DATA; - } - - num_segs /= 2; - - /* check the search parameters - even though we never use them */ - /* */ - if ( valid->level >= FT_VALIDATE_PARANOID ) - { - /* check the values of 'searchRange', 'entrySelector', 'rangeShift' */ - FT_UInt search_range = TT_NEXT_USHORT( p ); - FT_UInt entry_selector = TT_NEXT_USHORT( p ); - FT_UInt range_shift = TT_NEXT_USHORT( p ); - - - if ( ( search_range | range_shift ) & 1 ) /* must be even values */ - FT_INVALID_DATA; - - search_range /= 2; - range_shift /= 2; - - /* `search range' is the greatest power of 2 that is <= num_segs */ - - if ( search_range > num_segs || - search_range * 2 < num_segs || - search_range + range_shift != num_segs || - search_range != ( 1U << entry_selector ) ) - FT_INVALID_DATA; - } - - ends = table + 14; - starts = table + 16 + num_segs * 2; - deltas = starts + num_segs * 2; - offsets = deltas + num_segs * 2; - glyph_ids = offsets + num_segs * 2; - - if ( glyph_ids > table + length ) - FT_INVALID_TOO_SHORT; - - /* check last segment, its end count must be FFFF */ - if ( valid->level >= FT_VALIDATE_PARANOID ) - { - p = ends + ( num_segs - 1 ) * 2; - if ( TT_PEEK_USHORT( p ) != 0xFFFFU ) - FT_INVALID_DATA; - } - - /* check that segments are sorted in increasing order and do not */ - /* overlap; check also the offsets */ - { - FT_UInt start, end, last = 0, offset, n; - FT_Int delta; - - - for ( n = 0; n < num_segs; n++ ) - { - p = starts + n * 2; - start = TT_PEEK_USHORT( p ); - p = ends + n * 2; - end = TT_PEEK_USHORT( p ); - p = deltas + n * 2; - delta = TT_PEEK_SHORT( p ); - p = offsets + n * 2; - offset = TT_PEEK_USHORT( p ); - - if ( start > end ) - FT_INVALID_DATA; - - /* this test should be performed at default validation level; */ - /* unfortunately, some popular Asian fonts present overlapping */ - /* ranges in their charmaps */ - /* */ - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - if ( n > 0 && start <= last ) - FT_INVALID_DATA; - } - - if ( offset && offset != 0xFFFFU ) - { - p += offset; /* start of glyph id array */ - - /* check that we point within the glyph ids table only */ - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - if ( p < glyph_ids || - p + ( end - start + 1 ) * 2 > table + length ) - FT_INVALID_DATA; - } - else - { - if ( p < glyph_ids || - p + ( end - start + 1 ) * 2 > valid->limit ) - FT_INVALID_DATA; - } - - /* check glyph indices within the segment range */ - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - FT_UInt i, idx; - - - for ( i = start; i < end; i++ ) - { - idx = FT_NEXT_USHORT( p ); - if ( idx != 0 ) - { - idx = (FT_UInt)( idx + delta ) & 0xFFFFU; - - if ( idx >= TT_VALID_GLYPH_COUNT( valid ) ) - FT_INVALID_GLYPH_ID; - } - } - } - } - else if ( offset == 0xFFFFU ) - { - /* Some fonts (erroneously?) use a range offset of 0xFFFF */ - /* to mean missing glyph in cmap table */ - /* */ - if ( valid->level >= FT_VALIDATE_PARANOID || - n != num_segs - 1 || - !( start == 0xFFFFU && end == 0xFFFFU && delta == 0x1U ) ) - FT_INVALID_DATA; - } - - last = end; - } - } - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap4_char_index( TT_CMap cmap, - FT_UInt32 char_code ) - { - FT_Byte* table = cmap->data; - FT_UInt result = 0; - - - if ( char_code < 0x10000UL ) - { - FT_UInt idx, num_segs2; - FT_Int delta; - FT_UInt code = (FT_UInt)char_code; - FT_Byte* p; - - - p = table + 6; - num_segs2 = FT_PAD_FLOOR( TT_PEEK_USHORT( p ), 2 ); /* be paranoid! */ - -#if 1 - /* Some fonts have more than 170 segments in their charmaps! */ - /* We changed this function to use a more efficient binary */ - /* search for improving performance */ - { - FT_UInt min = 0; - FT_UInt max = num_segs2 >> 1; - FT_UInt mid, start, end, offset; - - - while ( min < max ) - { - mid = ( min + max ) >> 1; - p = table + 14 + mid * 2; - end = TT_NEXT_USHORT( p ); - p += num_segs2; - start = TT_PEEK_USHORT( p); - - if ( code < start ) - max = mid; - else if ( code > end ) - min = mid + 1; - else - { - /* we found the segment */ - idx = code; - - p += num_segs2; - delta = TT_PEEK_SHORT( p ); - - p += num_segs2; - offset = TT_PEEK_USHORT( p ); - - if ( offset == 0xFFFFU ) - goto Exit; - - if ( offset != 0 ) - { - p += offset + 2 * ( idx - start ); - idx = TT_PEEK_USHORT( p ); - } - - if ( idx != 0 ) - result = (FT_UInt)( idx + delta ) & 0xFFFFU; - - goto Exit; - } - } - } - -#else /* 0 - old code */ - - { - FT_UInt n; - FT_Byte* q; - - - p = table + 14; /* ends table */ - q = table + 16 + num_segs2; /* starts table */ - - - for ( n = 0; n < num_segs2; n += 2 ) - { - FT_UInt end = TT_NEXT_USHORT( p ); - FT_UInt start = TT_NEXT_USHORT( q ); - FT_UInt offset; - - - if ( code < start ) - break; - - if ( code <= end ) - { - idx = code; - - p = q + num_segs2 - 2; - delta = TT_PEEK_SHORT( p ); - p += num_segs2; - offset = TT_PEEK_USHORT( p ); - - if ( offset == 0xFFFFU ) - goto Exit; - - if ( offset != 0 ) - { - p += offset + 2 * ( idx - start ); - idx = TT_PEEK_USHORT( p ); - } - - if ( idx != 0 ) - result = (FT_UInt)( idx + delta ) & 0xFFFFU; - } - } - } - -#endif /* 0 */ - - } - - Exit: - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap4_char_next( TT_CMap cmap, - FT_UInt32 *pchar_code ) - { - FT_Byte* table = cmap->data; - FT_UInt32 result = 0; - FT_UInt gindex = 0; - FT_UInt32 char_code = *pchar_code; - FT_Byte* p; - FT_UInt code, num_segs2; - - - if ( char_code >= 0xFFFFUL ) - goto Exit; - - code = (FT_UInt)char_code + 1; - p = table + 6; - num_segs2 = FT_PAD_FLOOR( TT_PEEK_USHORT(p), 2 ); /* ensure even-ness */ - -#if 1 - - for (;;) - { - /* Some fonts have more than 170 segments in their charmaps! */ - /* We changed this function to use a more efficient binary */ - /* search */ - FT_UInt offset; - FT_Int delta; - FT_UInt min = 0; - FT_UInt max = num_segs2 >> 1; - FT_UInt mid, start, end; - FT_UInt hi; - - - /* we begin by finding the segment which end is - closer to our code point */ - hi = max + 1; - while ( min < max ) - { - mid = ( min + max ) >> 1; - p = table + 14 + mid * 2; - end = TT_PEEK_USHORT( p ); - - if ( end < code ) - min = mid + 1; - else - { - hi = mid; - max = mid; - } - } - - if ( hi > max ) - { - /* the point is behind the last segment; - we will exit right now */ - goto Exit; - } - - p = table + 14 + hi * 2; - end = TT_PEEK_USHORT( p ); - - p += 2 + num_segs2; - start = TT_PEEK_USHORT( p ); - - if ( code < start ) - code = start; - - p += num_segs2; - delta = TT_PEEK_USHORT( p ); - - p += num_segs2; - offset = TT_PEEK_USHORT( p ); - - if ( offset != 0 && offset != 0xFFFFU ) - { - /* parse the glyph ids array for non-zero index */ - p += offset + ( code - start ) * 2; - while ( code <= end ) - { - gindex = TT_NEXT_USHORT( p ); - if ( gindex != 0 ) - { - gindex = (FT_UInt)( gindex + delta ) & 0xFFFFU; - if ( gindex != 0 ) - { - result = code; - goto Exit; - } - } - code++; - } - } - else if ( offset == 0xFFFFU ) - { - /* an offset of 0xFFFF means an empty glyph in certain fonts! */ - code = end + 1; - } - else /* offset == 0 */ - { - gindex = (FT_UInt)( code + delta ) & 0xFFFFU; - if ( gindex != 0 ) - { - result = code; - goto Exit; - } - code++; - } - } - -#else /* old code -- kept for reference */ - - for ( ;; ) - { - FT_UInt offset, n; - FT_Int delta; - FT_Byte* q; - - - p = table + 14; /* ends table */ - q = table + 16 + num_segs2; /* starts table */ - - for ( n = 0; n < num_segs2; n += 2 ) - { - FT_UInt end = TT_NEXT_USHORT( p ); - FT_UInt start = TT_NEXT_USHORT( q ); - - - if ( code < start ) - code = start; - - if ( code <= end ) - { - p = q + num_segs2 - 2; - delta = TT_PEEK_SHORT( p ); - p += num_segs2; - offset = TT_PEEK_USHORT( p ); - - if ( offset != 0 && offset != 0xFFFFU ) - { - /* parse the glyph ids array for non-0 index */ - p += offset + ( code - start ) * 2; - while ( code <= end ) - { - gindex = TT_NEXT_USHORT( p ); - if ( gindex != 0 ) - { - gindex = (FT_UInt)( gindex + delta ) & 0xFFFFU; - if ( gindex != 0 ) - break; - } - code++; - } - } - else if ( offset == 0xFFFFU ) - { - /* an offset of 0xFFFF means an empty glyph in certain fonts! */ - code = end; - break; - } - else - gindex = (FT_UInt)( code + delta ) & 0xFFFFU; - - if ( gindex == 0 ) - break; - - result = code; - goto Exit; - } - } - /* loop to next trial charcode */ - if ( code >= 0xFFFFU ) - break; - - code++; - } - -#endif /* !1 */ - - Exit: - *pchar_code = result; - return gindex; - } - - - FT_CALLBACK_DEF( FT_Error ) - tt_cmap4_get_info( TT_CMap cmap, - TT_CMapInfo *cmap_info ) - { - FT_Byte* p = cmap->data + 4; - - - cmap_info->language = (FT_ULong)TT_PEEK_USHORT( p ); - - return FT_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const TT_CMap_ClassRec tt_cmap4_class_rec = - { - { - sizeof ( TT_CMapRec ), - - (FT_CMap_InitFunc) tt_cmap_init, - (FT_CMap_DoneFunc) NULL, - (FT_CMap_CharIndexFunc)tt_cmap4_char_index, - (FT_CMap_CharNextFunc) tt_cmap4_char_next - }, - 4, - (TT_CMap_ValidateFunc) tt_cmap4_validate, - (TT_CMap_Info_GetFunc) tt_cmap4_get_info - }; - -#endif /* TT_CONFIG_CMAP_FORMAT_4 */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FORMAT 6 *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* TABLE OVERVIEW */ - /* -------------- */ - /* */ - /* NAME OFFSET TYPE DESCRIPTION */ - /* */ - /* format 0 USHORT must be 4 */ - /* length 2 USHORT table length in bytes */ - /* language 4 USHORT Mac language code */ - /* */ - /* first 6 USHORT first segment code */ - /* count 8 USHORT segment size in chars */ - /* glyphIds 10 USHORT[count] glyph ids */ - /* */ - /* A very simplified segment mapping. */ - /* */ - -#ifdef TT_CONFIG_CMAP_FORMAT_6 - - FT_CALLBACK_DEF( void ) - tt_cmap6_validate( FT_Byte* table, - FT_Validator valid ) - { - FT_Byte* p; - FT_UInt length, count; - - - if ( table + 10 > valid->limit ) - FT_INVALID_TOO_SHORT; - - p = table + 2; - length = TT_NEXT_USHORT( p ); - - p = table + 8; /* skip language and start index */ - count = TT_NEXT_USHORT( p ); - - if ( table + length > valid->limit || length < 10 + count * 2 ) - FT_INVALID_TOO_SHORT; - - /* check glyph indices */ - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - FT_UInt gindex; - - - for ( ; count > 0; count-- ) - { - gindex = TT_NEXT_USHORT( p ); - if ( gindex >= TT_VALID_GLYPH_COUNT( valid ) ) - FT_INVALID_GLYPH_ID; - } - } - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap6_char_index( TT_CMap cmap, - FT_UInt32 char_code ) - { - FT_Byte* table = cmap->data; - FT_UInt result = 0; - FT_Byte* p = table + 6; - FT_UInt start = TT_NEXT_USHORT( p ); - FT_UInt count = TT_NEXT_USHORT( p ); - FT_UInt idx = (FT_UInt)( char_code - start ); - - - if ( idx < count ) - { - p += 2 * idx; - result = TT_PEEK_USHORT( p ); - } - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap6_char_next( TT_CMap cmap, - FT_UInt32 *pchar_code ) - { - FT_Byte* table = cmap->data; - FT_UInt32 result = 0; - FT_UInt32 char_code = *pchar_code + 1; - FT_UInt gindex = 0; - - FT_Byte* p = table + 6; - FT_UInt start = TT_NEXT_USHORT( p ); - FT_UInt count = TT_NEXT_USHORT( p ); - FT_UInt idx; - - - if ( char_code >= 0x10000UL ) - goto Exit; - - if ( char_code < start ) - char_code = start; - - idx = (FT_UInt)( char_code - start ); - p += 2 * idx; - - for ( ; idx < count; idx++ ) - { - gindex = TT_NEXT_USHORT( p ); - if ( gindex != 0 ) - { - result = char_code; - break; - } - char_code++; - } - - Exit: - *pchar_code = result; - return gindex; - } - - - FT_CALLBACK_DEF( FT_Error ) - tt_cmap6_get_info( TT_CMap cmap, - TT_CMapInfo *cmap_info ) - { - FT_Byte* p = cmap->data + 4; - - - cmap_info->language = (FT_ULong)TT_PEEK_USHORT( p ); - - return FT_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const TT_CMap_ClassRec tt_cmap6_class_rec = - { - { - sizeof ( TT_CMapRec ), - - (FT_CMap_InitFunc) tt_cmap_init, - (FT_CMap_DoneFunc) NULL, - (FT_CMap_CharIndexFunc)tt_cmap6_char_index, - (FT_CMap_CharNextFunc) tt_cmap6_char_next - }, - 6, - (TT_CMap_ValidateFunc) tt_cmap6_validate, - (TT_CMap_Info_GetFunc) tt_cmap6_get_info - }; - -#endif /* TT_CONFIG_CMAP_FORMAT_6 */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FORMAT 8 *****/ - /***** *****/ - /***** It's hard to completely understand what the OpenType spec *****/ - /***** says about this format, but here is my conclusion. *****/ - /***** *****/ - /***** The purpose of this format is to easily map UTF-16 text to *****/ - /***** glyph indices. Basically, the `char_code' must be in one of *****/ - /***** the following formats: *****/ - /***** *****/ - /***** - A 16-bit value that isn't part of the Unicode Surrogates *****/ - /***** Area (i.e. U+D800-U+DFFF). *****/ - /***** *****/ - /***** - A 32-bit value, made of two surrogate values, i.e.. if *****/ - /***** `char_code = (char_hi << 16) | char_lo', then both *****/ - /***** `char_hi' and `char_lo' must be in the Surrogates Area. *****/ - /***** Area. *****/ - /***** *****/ - /***** The 'is32' table embedded in the charmap indicates whether a *****/ - /***** given 16-bit value is in the surrogates area or not. *****/ - /***** *****/ - /***** So, for any given `char_code', we can assert the following: *****/ - /***** *****/ - /***** If `char_hi == 0' then we must have `is32[char_lo] == 0'. *****/ - /***** *****/ - /***** If `char_hi != 0' then we must have both *****/ - /***** `is32[char_hi] != 0' and `is32[char_lo] != 0'. *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* TABLE OVERVIEW */ - /* -------------- */ - /* */ - /* NAME OFFSET TYPE DESCRIPTION */ - /* */ - /* format 0 USHORT must be 8 */ - /* reseved 2 USHORT reserved */ - /* length 4 ULONG length in bytes */ - /* language 8 ULONG Mac language code */ - /* is32 12 BYTE[8192] 32-bitness bitmap */ - /* count 8204 ULONG number of groups */ - /* */ - /* This header is followed by 'count' groups of the following format: */ - /* */ - /* start 0 ULONG first charcode */ - /* end 4 ULONG last charcode */ - /* startId 8 ULONG start glyph id for the group */ - /* */ - -#ifdef TT_CONFIG_CMAP_FORMAT_8 - - FT_CALLBACK_DEF( void ) - tt_cmap8_validate( FT_Byte* table, - FT_Validator valid ) - { - FT_Byte* p = table + 4; - FT_Byte* is32; - FT_UInt32 length; - FT_UInt32 num_groups; - - - if ( table + 16 + 8192 > valid->limit ) - FT_INVALID_TOO_SHORT; - - length = TT_NEXT_ULONG( p ); - if ( table + length > valid->limit || length < 8208 ) - FT_INVALID_TOO_SHORT; - - is32 = table + 12; - p = is32 + 8192; /* skip `is32' array */ - num_groups = TT_NEXT_ULONG( p ); - - if ( p + num_groups * 12 > valid->limit ) - FT_INVALID_TOO_SHORT; - - /* check groups, they must be in increasing order */ - { - FT_UInt32 n, start, end, start_id, count, last = 0; - - - for ( n = 0; n < num_groups; n++ ) - { - FT_UInt hi, lo; - - - start = TT_NEXT_ULONG( p ); - end = TT_NEXT_ULONG( p ); - start_id = TT_NEXT_ULONG( p ); - - if ( start > end ) - FT_INVALID_DATA; - - if ( n > 0 && start <= last ) - FT_INVALID_DATA; - - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - if ( start_id + end - start >= TT_VALID_GLYPH_COUNT( valid ) ) - FT_INVALID_GLYPH_ID; - - count = (FT_UInt32)( end - start + 1 ); - - if ( start & ~0xFFFFU ) - { - /* start_hi != 0; check that is32[i] is 1 for each i in */ - /* the `hi' and `lo' of the range [start..end] */ - for ( ; count > 0; count--, start++ ) - { - hi = (FT_UInt)( start >> 16 ); - lo = (FT_UInt)( start & 0xFFFFU ); - - if ( (is32[hi >> 3] & ( 0x80 >> ( hi & 7 ) ) ) == 0 ) - FT_INVALID_DATA; - - if ( (is32[lo >> 3] & ( 0x80 >> ( lo & 7 ) ) ) == 0 ) - FT_INVALID_DATA; - } - } - else - { - /* start_hi == 0; check that is32[i] is 0 for each i in */ - /* the range [start..end] */ - - /* end_hi cannot be != 0! */ - if ( end & ~0xFFFFU ) - FT_INVALID_DATA; - - for ( ; count > 0; count--, start++ ) - { - lo = (FT_UInt)( start & 0xFFFFU ); - - if ( (is32[lo >> 3] & ( 0x80 >> ( lo & 7 ) ) ) != 0 ) - FT_INVALID_DATA; - } - } - } - - last = end; - } - } - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap8_char_index( TT_CMap cmap, - FT_UInt32 char_code ) - { - FT_Byte* table = cmap->data; - FT_UInt result = 0; - FT_Byte* p = table + 8204; - FT_UInt32 num_groups = TT_NEXT_ULONG( p ); - FT_UInt32 start, end, start_id; - - - for ( ; num_groups > 0; num_groups-- ) - { - start = TT_NEXT_ULONG( p ); - end = TT_NEXT_ULONG( p ); - start_id = TT_NEXT_ULONG( p ); - - if ( char_code < start ) - break; - - if ( char_code <= end ) - { - result = (FT_UInt)( start_id + char_code - start ); - break; - } - } - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap8_char_next( TT_CMap cmap, - FT_UInt32 *pchar_code ) - { - FT_UInt32 result = 0; - FT_UInt32 char_code = *pchar_code + 1; - FT_UInt gindex = 0; - FT_Byte* table = cmap->data; - FT_Byte* p = table + 8204; - FT_UInt32 num_groups = TT_NEXT_ULONG( p ); - FT_UInt32 start, end, start_id; - - - p = table + 8208; - - for ( ; num_groups > 0; num_groups-- ) - { - start = TT_NEXT_ULONG( p ); - end = TT_NEXT_ULONG( p ); - start_id = TT_NEXT_ULONG( p ); - - if ( char_code < start ) - char_code = start; - - if ( char_code <= end ) - { - gindex = (FT_UInt)( char_code - start + start_id ); - if ( gindex != 0 ) - { - result = char_code; - goto Exit; - } - } - } - - Exit: - *pchar_code = result; - return gindex; - } - - - FT_CALLBACK_DEF( FT_Error ) - tt_cmap8_get_info( TT_CMap cmap, - TT_CMapInfo *cmap_info ) - { - FT_Byte* p = cmap->data + 8; - - - cmap_info->language = (FT_ULong)TT_PEEK_ULONG( p ); - return FT_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const TT_CMap_ClassRec tt_cmap8_class_rec = - { - { - sizeof ( TT_CMapRec ), - - (FT_CMap_InitFunc) tt_cmap_init, - (FT_CMap_DoneFunc) NULL, - (FT_CMap_CharIndexFunc)tt_cmap8_char_index, - (FT_CMap_CharNextFunc) tt_cmap8_char_next - }, - 8, - (TT_CMap_ValidateFunc) tt_cmap8_validate, - (TT_CMap_Info_GetFunc) tt_cmap8_get_info - }; - -#endif /* TT_CONFIG_CMAP_FORMAT_8 */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FORMAT 10 *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* TABLE OVERVIEW */ - /* -------------- */ - /* */ - /* NAME OFFSET TYPE DESCRIPTION */ - /* */ - /* format 0 USHORT must be 10 */ - /* reserved 2 USHORT reserved */ - /* length 4 ULONG length in bytes */ - /* language 8 ULONG Mac language code */ - /* */ - /* start 12 ULONG first char in range */ - /* count 16 ULONG number of chars in range */ - /* glyphIds 20 USHORT[count] glyph indices covered */ - /* */ - -#ifdef TT_CONFIG_CMAP_FORMAT_10 - - FT_CALLBACK_DEF( void ) - tt_cmap10_validate( FT_Byte* table, - FT_Validator valid ) - { - FT_Byte* p = table + 4; - FT_ULong length, count; - - - if ( table + 20 > valid->limit ) - FT_INVALID_TOO_SHORT; - - length = TT_NEXT_ULONG( p ); - p = table + 16; - count = TT_NEXT_ULONG( p ); - - if ( table + length > valid->limit || length < 20 + count * 2 ) - FT_INVALID_TOO_SHORT; - - /* check glyph indices */ - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - FT_UInt gindex; - - - for ( ; count > 0; count-- ) - { - gindex = TT_NEXT_USHORT( p ); - if ( gindex >= TT_VALID_GLYPH_COUNT( valid ) ) - FT_INVALID_GLYPH_ID; - } - } - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap10_char_index( TT_CMap cmap, - FT_UInt32 char_code ) - { - FT_Byte* table = cmap->data; - FT_UInt result = 0; - FT_Byte* p = table + 12; - FT_UInt32 start = TT_NEXT_ULONG( p ); - FT_UInt32 count = TT_NEXT_ULONG( p ); - FT_UInt32 idx = (FT_ULong)( char_code - start ); - - - if ( idx < count ) - { - p += 2 * idx; - result = TT_PEEK_USHORT( p ); - } - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap10_char_next( TT_CMap cmap, - FT_UInt32 *pchar_code ) - { - FT_Byte* table = cmap->data; - FT_UInt32 char_code = *pchar_code + 1; - FT_UInt gindex = 0; - FT_Byte* p = table + 12; - FT_UInt32 start = TT_NEXT_ULONG( p ); - FT_UInt32 count = TT_NEXT_ULONG( p ); - FT_UInt32 idx; - - - if ( char_code < start ) - char_code = start; - - idx = (FT_UInt32)( char_code - start ); - p += 2 * idx; - - for ( ; idx < count; idx++ ) - { - gindex = TT_NEXT_USHORT( p ); - if ( gindex != 0 ) - break; - char_code++; - } - - *pchar_code = char_code; - return gindex; - } - - - FT_CALLBACK_DEF( FT_Error ) - tt_cmap10_get_info( TT_CMap cmap, - TT_CMapInfo *cmap_info ) - { - FT_Byte* p = cmap->data + 8; - - - cmap_info->language = (FT_ULong)TT_PEEK_ULONG( p ); - - return FT_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const TT_CMap_ClassRec tt_cmap10_class_rec = - { - { - sizeof ( TT_CMapRec ), - - (FT_CMap_InitFunc) tt_cmap_init, - (FT_CMap_DoneFunc) NULL, - (FT_CMap_CharIndexFunc)tt_cmap10_char_index, - (FT_CMap_CharNextFunc) tt_cmap10_char_next - }, - 10, - (TT_CMap_ValidateFunc) tt_cmap10_validate, - (TT_CMap_Info_GetFunc) tt_cmap10_get_info - }; - -#endif /* TT_CONFIG_CMAP_FORMAT_10 */ - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** FORMAT 12 *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* TABLE OVERVIEW */ - /* -------------- */ - /* */ - /* NAME OFFSET TYPE DESCRIPTION */ - /* */ - /* format 0 USHORT must be 12 */ - /* reserved 2 USHORT reserved */ - /* length 4 ULONG length in bytes */ - /* language 8 ULONG Mac language code */ - /* count 12 ULONG number of groups */ - /* 16 */ - /* */ - /* This header is followed by `count' groups of the following format: */ - /* */ - /* start 0 ULONG first charcode */ - /* end 4 ULONG last charcode */ - /* startId 8 ULONG start glyph id for the group */ - /* */ - -#ifdef TT_CONFIG_CMAP_FORMAT_12 - - FT_CALLBACK_DEF( void ) - tt_cmap12_validate( FT_Byte* table, - FT_Validator valid ) - { - FT_Byte* p; - FT_ULong length; - FT_ULong num_groups; - - - if ( table + 16 > valid->limit ) - FT_INVALID_TOO_SHORT; - - p = table + 4; - length = TT_NEXT_ULONG( p ); - - p = table + 12; - num_groups = TT_NEXT_ULONG( p ); - - if ( table + length > valid->limit || length < 16 + 12 * num_groups ) - FT_INVALID_TOO_SHORT; - - /* check groups, they must be in increasing order */ - { - FT_ULong n, start, end, start_id, last = 0; - - - for ( n = 0; n < num_groups; n++ ) - { - start = TT_NEXT_ULONG( p ); - end = TT_NEXT_ULONG( p ); - start_id = TT_NEXT_ULONG( p ); - - if ( start > end ) - FT_INVALID_DATA; - - if ( n > 0 && start <= last ) - FT_INVALID_DATA; - - if ( valid->level >= FT_VALIDATE_TIGHT ) - { - if ( start_id + end - start >= TT_VALID_GLYPH_COUNT( valid ) ) - FT_INVALID_GLYPH_ID; - } - - last = end; - } - } - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap12_char_index( TT_CMap cmap, - FT_UInt32 char_code ) - { - FT_UInt result = 0; - FT_Byte* table = cmap->data; - FT_Byte* p = table + 12; - FT_UInt32 num_groups = TT_NEXT_ULONG( p ); - FT_UInt32 start, end, start_id; - - - for ( ; num_groups > 0; num_groups-- ) - { - start = TT_NEXT_ULONG( p ); - end = TT_NEXT_ULONG( p ); - start_id = TT_NEXT_ULONG( p ); - - if ( char_code < start ) - break; - - if ( char_code <= end ) - { - result = (FT_UInt)( start_id + char_code - start ); - break; - } - } - return result; - } - - - FT_CALLBACK_DEF( FT_UInt ) - tt_cmap12_char_next( TT_CMap cmap, - FT_UInt32 *pchar_code ) - { - FT_Byte* table = cmap->data; - FT_UInt32 result = 0; - FT_UInt32 char_code = *pchar_code + 1; - FT_UInt gindex = 0; - FT_Byte* p = table + 12; - FT_UInt32 num_groups = TT_NEXT_ULONG( p ); - FT_UInt32 start, end, start_id; - - - p = table + 16; - - for ( ; num_groups > 0; num_groups-- ) - { - start = TT_NEXT_ULONG( p ); - end = TT_NEXT_ULONG( p ); - start_id = TT_NEXT_ULONG( p ); - - if ( char_code < start ) - char_code = start; - - if ( char_code <= end ) - { - gindex = (FT_UInt)(char_code - start + start_id); - if ( gindex != 0 ) - { - result = char_code; - goto Exit; - } - } - } - - Exit: - *pchar_code = result; - return gindex; - } - - - FT_CALLBACK_DEF( FT_Error ) - tt_cmap12_get_info( TT_CMap cmap, - TT_CMapInfo *cmap_info ) - { - FT_Byte* p = cmap->data + 8; - - - cmap_info->language = (FT_ULong)TT_PEEK_ULONG( p ); - - return FT_Err_Ok; - } - - - FT_CALLBACK_TABLE_DEF - const TT_CMap_ClassRec tt_cmap12_class_rec = - { - { - sizeof ( TT_CMapRec ), - - (FT_CMap_InitFunc) tt_cmap_init, - (FT_CMap_DoneFunc) NULL, - (FT_CMap_CharIndexFunc)tt_cmap12_char_index, - (FT_CMap_CharNextFunc) tt_cmap12_char_next - }, - 12, - (TT_CMap_ValidateFunc) tt_cmap12_validate, - (TT_CMap_Info_GetFunc) tt_cmap12_get_info - }; - - -#endif /* TT_CONFIG_CMAP_FORMAT_12 */ - - - static const TT_CMap_Class tt_cmap_classes[] = - { -#ifdef TT_CONFIG_CMAP_FORMAT_0 - &tt_cmap0_class_rec, -#endif - -#ifdef TT_CONFIG_CMAP_FORMAT_2 - &tt_cmap2_class_rec, -#endif - -#ifdef TT_CONFIG_CMAP_FORMAT_4 - &tt_cmap4_class_rec, -#endif - -#ifdef TT_CONFIG_CMAP_FORMAT_6 - &tt_cmap6_class_rec, -#endif - -#ifdef TT_CONFIG_CMAP_FORMAT_8 - &tt_cmap8_class_rec, -#endif - -#ifdef TT_CONFIG_CMAP_FORMAT_10 - &tt_cmap10_class_rec, -#endif - -#ifdef TT_CONFIG_CMAP_FORMAT_12 - &tt_cmap12_class_rec, -#endif - - NULL, - }; - - - /* parse the `cmap' table and build the corresponding TT_CMap objects */ - /* in the current face */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_build_cmaps( TT_Face face ) - { - FT_Byte* table = face->cmap_table; - FT_Byte* limit = table + face->cmap_size; - FT_UInt volatile num_cmaps; - FT_Byte* volatile p = table; - - - if ( p + 4 > limit ) - return SFNT_Err_Invalid_Table; - - /* only recognize format 0 */ - if ( TT_NEXT_USHORT( p ) != 0 ) - { - p -= 2; - FT_ERROR(( "tt_face_build_cmaps: unsupported `cmap' table format = %d\n", - TT_PEEK_USHORT( p ) )); - return SFNT_Err_Invalid_Table; - } - - num_cmaps = TT_NEXT_USHORT( p ); - - for ( ; num_cmaps > 0 && p + 8 <= limit; num_cmaps-- ) - { - FT_CharMapRec charmap; - FT_UInt32 offset; - - - charmap.platform_id = TT_NEXT_USHORT( p ); - charmap.encoding_id = TT_NEXT_USHORT( p ); - charmap.face = FT_FACE( face ); - charmap.encoding = FT_ENCODING_NONE; /* will be filled later */ - offset = TT_NEXT_ULONG( p ); - - if ( offset && table + offset + 2 < limit ) - { - FT_Byte* cmap = table + offset; - volatile FT_UInt format = TT_PEEK_USHORT( cmap ); - const TT_CMap_Class* volatile pclazz = tt_cmap_classes; - TT_CMap_Class clazz; - - - for ( ; *pclazz; pclazz++ ) - { - clazz = *pclazz; - if ( clazz->format == format ) - { - volatile TT_ValidatorRec valid; - - - ft_validator_init( FT_VALIDATOR( &valid ), cmap, limit, - FT_VALIDATE_DEFAULT ); - - valid.num_glyphs = (FT_UInt)face->root.num_glyphs; - - if ( ft_setjmp( FT_VALIDATOR( &valid )->jump_buffer ) == 0 ) - { - /* validate this cmap sub-table */ - clazz->validate( cmap, FT_VALIDATOR( &valid ) ); - } - - if ( valid.validator.error == 0 ) - (void)FT_CMap_New( (FT_CMap_Class)clazz, cmap, &charmap, NULL ); - else - { - FT_ERROR(( "tt_face_build_cmaps:" )); - FT_ERROR(( " broken cmap sub-table ignored!\n" )); - } - break; - } - } - } - } - - return 0; - } - - - FT_LOCAL( FT_Error ) - tt_get_cmap_info( FT_CharMap charmap, - TT_CMapInfo *cmap_info ) - { - FT_CMap cmap = (FT_CMap)charmap; - TT_CMap_Class clazz = (TT_CMap_Class)cmap->clazz; - - - return clazz->get_cmap_info( charmap, cmap_info ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/ttcmap0.h b/nx-X11/extras/freetype2/src/sfnt/ttcmap0.h deleted file mode 100644 index 6ca9ca110..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/ttcmap0.h +++ /dev/null @@ -1,80 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttcmap0.h */ -/* */ -/* TrueType new character mapping table (cmap) support (specification). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTCMAP0_H__ -#define __TTCMAP0_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_TRUETYPE_TYPES_H -#include FT_INTERNAL_OBJECTS_H -#include FT_SERVICE_TT_CMAP_H - -FT_BEGIN_HEADER - - typedef struct TT_CMapRec_ - { - FT_CMapRec cmap; - FT_Byte* data; /* pointer to in-memory cmap table */ - - } TT_CMapRec, *TT_CMap; - - typedef const struct TT_CMap_ClassRec_* TT_CMap_Class; - - - typedef FT_Error - (*TT_CMap_ValidateFunc)( FT_Byte* data, - FT_Validator valid ); - - typedef struct TT_CMap_ClassRec_ - { - FT_CMap_ClassRec clazz; - FT_UInt format; - TT_CMap_ValidateFunc validate; - TT_CMap_Info_GetFunc get_cmap_info; - - } TT_CMap_ClassRec; - - - typedef struct TT_ValidatorRec_ - { - FT_ValidatorRec validator; - FT_UInt num_glyphs; - - } TT_ValidatorRec, *TT_Validator; - - -#define TT_VALIDATOR( x ) ((TT_Validator)( x )) -#define TT_VALID_GLYPH_COUNT( x ) TT_VALIDATOR( x )->num_glyphs - - - FT_LOCAL( FT_Error ) - tt_face_build_cmaps( TT_Face face ); - - /* used in tt-cmaps service */ - FT_LOCAL( FT_Error ) - tt_get_cmap_info( FT_CharMap charmap, - TT_CMapInfo *cmap_info ); - - -FT_END_HEADER - -#endif /* __TTCMAP0_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/ttload.c b/nx-X11/extras/freetype2/src/sfnt/ttload.c deleted file mode 100644 index fa5c6a71a..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/ttload.c +++ /dev/null @@ -1,1912 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttload.c */ -/* */ -/* Load the basic TrueType tables, i.e., tables that can be either in */ -/* TTF or OTF fonts (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H -#include "ttload.h" - -#include "sferrors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttload - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_lookup_table */ - /* */ - /* <Description> */ - /* Looks for a TrueType table by name. */ - /* */ - /* <Input> */ - /* face :: A face object handle. */ - /* */ - /* tag :: The searched tag. */ - /* */ - /* <Return> */ - /* A pointer to the table directory entry. 0 if not found. */ - /* */ - FT_LOCAL_DEF( TT_Table ) - tt_face_lookup_table( TT_Face face, - FT_ULong tag ) - { - TT_Table entry; - TT_Table limit; - - - FT_TRACE3(( "tt_face_lookup_table: %08p, `%c%c%c%c' -- ", - face, - (FT_Char)( tag >> 24 ), - (FT_Char)( tag >> 16 ), - (FT_Char)( tag >> 8 ), - (FT_Char)( tag ) )); - - entry = face->dir_tables; - limit = entry + face->num_tables; - - for ( ; entry < limit; entry++ ) - { - /* For compatibility with Windows, we consider 0-length */ - /* tables the same as missing tables. */ - if ( entry->Tag == tag && entry->Length != 0 ) - { - FT_TRACE3(( "found table.\n" )); - return entry; - } - } - - FT_TRACE3(( "could not find table!\n" )); - return 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_goto_table */ - /* */ - /* <Description> */ - /* Looks for a TrueType table by name, then seek a stream to it. */ - /* */ - /* <Input> */ - /* face :: A face object handle. */ - /* */ - /* tag :: The searched tag. */ - /* */ - /* stream :: The stream to seek when the table is found. */ - /* */ - /* <Output> */ - /* length :: The length of the table if found, undefined otherwise. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_goto_table( TT_Face face, - FT_ULong tag, - FT_Stream stream, - FT_ULong* length ) - { - TT_Table table; - FT_Error error; - - - table = tt_face_lookup_table( face, tag ); - if ( table ) - { - if ( length ) - *length = table->Length; - - if ( FT_STREAM_SEEK( table->Offset ) ) - goto Exit; - } - else - error = SFNT_Err_Table_Missing; - - Exit: - return error; - } - - - /* In theory, we should check the values of `search_range', */ - /* `entry_selector', and `range_shift' to detect non-SFNT based files */ - /* whose header might also start with 0x100000L (yes, these exist). */ - /* */ - /* Very unfortunately, many TrueType fonts don't have these fields */ - /* set correctly and we must ignore them to support them. An alternative */ - /* way to check the font file is thus to: */ - /* */ - /* - check that `num_tables' is valid */ - /* - look for a "head" table, check its size, and parse it to */ - /* see if its "magic" field is correctly set */ - /* */ - /* When checking directory entries, ignore the tables `glyx' and `locx' */ - /* which are hacked-out versions of `glyf' and `loca' in some PostScript */ - /* Type 42 fonts, and will generally be invalid. */ - /* */ - static FT_Error - sfnt_dir_check( FT_Stream stream, - FT_ULong offset, - FT_UInt num_tables ) - { - FT_Error error; - FT_UInt nn, has_head = 0; - - const FT_ULong glyx_tag = FT_MAKE_TAG( 'g', 'l', 'y', 'x' ); - const FT_ULong locx_tag = FT_MAKE_TAG( 'l', 'o', 'c', 'x' ); - - static const FT_Frame_Field sfnt_dir_entry_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_TableRec - - FT_FRAME_START( 16 ), - FT_FRAME_ULONG( Tag ), - FT_FRAME_ULONG( CheckSum ), - FT_FRAME_ULONG( Offset ), - FT_FRAME_ULONG( Length ), - FT_FRAME_END - }; - - - /* if 'num_tables' is 0, read the table count from the file */ - if ( num_tables == 0 ) - { - if ( FT_STREAM_SEEK( offset ) || - FT_STREAM_SKIP( 4 ) || - FT_READ_USHORT( num_tables ) || - FT_STREAM_SKIP( 6 ) ) - goto Bad_Format; - - if ( offset + 12 + num_tables*16 > stream->size ) - goto Bad_Format; - } - else if ( FT_STREAM_SEEK( offset + 12 ) ) - goto Bad_Format; - - for ( nn = 0; nn < num_tables; nn++ ) - { - TT_TableRec table; - - - if ( FT_STREAM_READ_FIELDS( sfnt_dir_entry_fields, &table ) ) - goto Bad_Format; - - if ( table.Offset + table.Length > stream->size && - table.Tag != glyx_tag && table.Tag != locx_tag ) - goto Bad_Format; - - if ( table.Tag == TTAG_head ) - { - FT_UInt32 magic; - - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - head_retry: -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - has_head = 1; - - /* The table length should be 0x36, but certain font tools - * make it 0x38, so we will just check that it is greater. - * - * Note that according to the specification, - * the table must be padded to 32-bit lengths, but this doesn't - * apply to the value of its "Length" field! - */ - if ( table.Length < 0x36 || - FT_STREAM_SEEK( table.Offset + 12 ) || - FT_READ_ULONG( magic ) || - magic != 0x5F0F3CF5UL ) - goto Bad_Format; - - if ( FT_STREAM_SEEK( offset + 28 + 16*nn ) ) - goto Bad_Format; - } -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - else if ( table.Tag == TTAG_bhed ) - goto head_retry; -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - } - - if ( has_head == 0 ) - goto Bad_Format; - - Exit: - return error; - - Bad_Format: - error = SFNT_Err_Unknown_File_Format; - goto Exit; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_sfnt_header */ - /* */ - /* <Description> */ - /* Loads the header of a SFNT font file. Supports collections. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* face_index :: If the font is a collection, the number of the font */ - /* in the collection. Must be zero otherwise. */ - /* */ - /* <Output> */ - /* sfnt :: The SFNT header. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The stream cursor must be at the font file's origin. */ - /* */ - /* This function recognizes fonts embedded in a `TrueType collection' */ - /* */ - /* The header will be checked whether it is valid by looking at the */ - /* values of `search_range', `entry_selector', and `range_shift'. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_sfnt_header( TT_Face face, - FT_Stream stream, - FT_Long face_index, - SFNT_Header sfnt ) - { - FT_Error error; - FT_ULong font_format_tag, format_tag, offset; - FT_Memory memory = stream->memory; - - static const FT_Frame_Field sfnt_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE SFNT_HeaderRec - - FT_FRAME_START( 8 ), - FT_FRAME_USHORT( num_tables ), - FT_FRAME_USHORT( search_range ), - FT_FRAME_USHORT( entry_selector ), - FT_FRAME_USHORT( range_shift ), - FT_FRAME_END - }; - - static const FT_Frame_Field ttc_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TTC_HeaderRec - - FT_FRAME_START( 8 ), - FT_FRAME_LONG( version ), - FT_FRAME_LONG( count ), - FT_FRAME_END - }; - - - FT_TRACE2(( "tt_face_load_sfnt_header: %08p, %ld\n", - face, face_index )); - - face->ttc_header.tag = 0; - face->ttc_header.version = 0; - face->ttc_header.count = 0; - - face->num_tables = 0; - - /* First of all, read the first 4 bytes. If it is `ttcf', then the */ - /* file is a TrueType collection, otherwise it is a single-face font. */ - /* */ - offset = FT_STREAM_POS(); - - if ( FT_READ_ULONG( font_format_tag ) ) - goto Exit; - - format_tag = font_format_tag; - - if ( font_format_tag == TTAG_ttcf ) - { - FT_Int n; - - - FT_TRACE3(( "tt_face_load_sfnt_header: file is a collection\n" )); - - /* It is a TrueType collection, i.e. a file containing several */ - /* font files. Read the font directory now */ - if ( FT_STREAM_READ_FIELDS( ttc_header_fields, &face->ttc_header ) ) - goto Exit; - - /* now read the offsets of each font in the file */ - if ( FT_NEW_ARRAY( face->ttc_header.offsets, face->ttc_header.count ) || - FT_FRAME_ENTER( face->ttc_header.count * 4L ) ) - goto Exit; - - for ( n = 0; n < face->ttc_header.count; n++ ) - face->ttc_header.offsets[n] = FT_GET_ULONG(); - - FT_FRAME_EXIT(); - - /* check face index */ - if ( face_index >= face->ttc_header.count ) - { - error = SFNT_Err_Bad_Argument; - goto Exit; - } - - /* seek to the appropriate TrueType file, then read tag */ - offset = face->ttc_header.offsets[face_index]; - - if ( FT_STREAM_SEEK( offset ) || - FT_READ_LONG( format_tag ) ) - goto Exit; - } - - /* the format tag was read, now check the rest of the header */ - sfnt->format_tag = format_tag; - sfnt->offset = offset; - - if ( FT_STREAM_READ_FIELDS( sfnt_header_fields, sfnt ) ) - goto Exit; - - /* now check the sfnt directory */ - error = sfnt_dir_check( stream, offset, sfnt->num_tables ); - if ( error ) - { - FT_TRACE2(( "tt_face_load_sfnt_header: file is not SFNT!\n" )); - error = SFNT_Err_Unknown_File_Format; - goto Exit; - } - - /* disallow face index values > 0 for non-TTC files */ - if ( font_format_tag != TTAG_ttcf && face_index > 0 ) - error = SFNT_Err_Bad_Argument; - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_directory */ - /* */ - /* <Description> */ - /* Loads the table directory into a face object. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* stream :: The input stream. */ - /* */ - /* sfnt :: The SFNT directory header. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The stream cursor must be at the font file's origin. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_directory( TT_Face face, - FT_Stream stream, - SFNT_Header sfnt ) - { - FT_Error error; - FT_Memory memory = stream->memory; - - TT_TableRec *entry, *limit; - - - FT_TRACE2(( "tt_face_load_directory: %08p\n", face )); - - FT_TRACE2(( "-- Tables count: %12u\n", sfnt->num_tables )); - FT_TRACE2(( "-- Format version: %08lx\n", sfnt->format_tag )); - - face->num_tables = sfnt->num_tables; - - if ( FT_QNEW_ARRAY( face->dir_tables, face->num_tables ) ) - goto Exit; - - if ( FT_STREAM_SEEK( sfnt->offset + 12 ) || - FT_FRAME_ENTER( face->num_tables * 16L ) ) - goto Exit; - - entry = face->dir_tables; - limit = entry + face->num_tables; - - for ( ; entry < limit; entry++ ) - { /* loop through the tables and get all entries */ - entry->Tag = FT_GET_TAG4(); - entry->CheckSum = FT_GET_ULONG(); - entry->Offset = FT_GET_LONG(); - entry->Length = FT_GET_LONG(); - - FT_TRACE2(( " %c%c%c%c - %08lx - %08lx\n", - (FT_Char)( entry->Tag >> 24 ), - (FT_Char)( entry->Tag >> 16 ), - (FT_Char)( entry->Tag >> 8 ), - (FT_Char)( entry->Tag ), - entry->Offset, - entry->Length )); - } - - FT_FRAME_EXIT(); - - FT_TRACE2(( "Directory loaded\n\n" )); - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_any */ - /* */ - /* <Description> */ - /* Loads any font table into client memory. */ - /* */ - /* <Input> */ - /* face :: The face object to look for. */ - /* */ - /* tag :: The tag of table to load. Use the value 0 if you want */ - /* to access the whole font file, else set this parameter */ - /* to a valid TrueType table tag that you can forge with */ - /* the MAKE_TT_TAG macro. */ - /* */ - /* offset :: The starting offset in the table (or the file if */ - /* tag == 0). */ - /* */ - /* length :: The address of the decision variable: */ - /* */ - /* If length == NULL: */ - /* Loads the whole table. Returns an error if */ - /* `offset' == 0! */ - /* */ - /* If *length == 0: */ - /* Exits immediately; returning the length of the given */ - /* table or of the font file, depending on the value of */ - /* `tag'. */ - /* */ - /* If *length != 0: */ - /* Loads the next `length' bytes of table or font, */ - /* starting at offset `offset' (in table or font too). */ - /* */ - /* <Output> */ - /* buffer :: The address of target buffer. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_any( TT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ) - { - FT_Error error; - FT_Stream stream; - TT_Table table; - FT_ULong size; - - - if ( tag != 0 ) - { - /* look for tag in font directory */ - table = tt_face_lookup_table( face, tag ); - if ( !table ) - { - error = SFNT_Err_Table_Missing; - goto Exit; - } - - offset += table->Offset; - size = table->Length; - } - else - /* tag == 0 -- the user wants to access the font file directly */ - size = face->root.stream->size; - - if ( length && *length == 0 ) - { - *length = size; - - return SFNT_Err_Ok; - } - - if ( length ) - size = *length; - - stream = face->root.stream; - /* the `if' is syntactic sugar for picky compilers */ - if ( FT_STREAM_READ_AT( offset, buffer, size ) ) - goto Exit; - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_generic_header */ - /* */ - /* <Description> */ - /* Loads the TrueType table `head' or `bhed'. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - tt_face_load_generic_header( TT_Face face, - FT_Stream stream, - FT_ULong tag ) - { - FT_Error error; - TT_Header* header; - - static const FT_Frame_Field header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_Header - - FT_FRAME_START( 54 ), - FT_FRAME_ULONG ( Table_Version ), - FT_FRAME_ULONG ( Font_Revision ), - FT_FRAME_LONG ( CheckSum_Adjust ), - FT_FRAME_LONG ( Magic_Number ), - FT_FRAME_USHORT( Flags ), - FT_FRAME_USHORT( Units_Per_EM ), - FT_FRAME_LONG ( Created[0] ), - FT_FRAME_LONG ( Created[1] ), - FT_FRAME_LONG ( Modified[0] ), - FT_FRAME_LONG ( Modified[1] ), - FT_FRAME_SHORT ( xMin ), - FT_FRAME_SHORT ( yMin ), - FT_FRAME_SHORT ( xMax ), - FT_FRAME_SHORT ( yMax ), - FT_FRAME_USHORT( Mac_Style ), - FT_FRAME_USHORT( Lowest_Rec_PPEM ), - FT_FRAME_SHORT ( Font_Direction ), - FT_FRAME_SHORT ( Index_To_Loc_Format ), - FT_FRAME_SHORT ( Glyph_Data_Format ), - FT_FRAME_END - }; - - - FT_TRACE2(( "tt_face_load_generic_header: " - "%08p, looking up font table `%c%c%c%c'.\n", - face, - (FT_Char)( tag >> 24 ), - (FT_Char)( tag >> 16 ), - (FT_Char)( tag >> 8 ), - (FT_Char)( tag ) )); - - error = face->goto_table( face, tag, stream, 0 ); - if ( error ) - { - FT_TRACE2(( "tt_face_load_generic_header: Font table is missing!\n" )); - goto Exit; - } - - header = &face->header; - - if ( FT_STREAM_READ_FIELDS( header_fields, header ) ) - goto Exit; - - FT_TRACE2(( " Units per EM: %8u\n", header->Units_Per_EM )); - FT_TRACE2(( " IndexToLoc: %8d\n", header->Index_To_Loc_Format )); - FT_TRACE2(( "tt_face_load_generic_header: Font table loaded.\n" )); - - Exit: - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - tt_face_load_header( TT_Face face, - FT_Stream stream ) - { - return tt_face_load_generic_header( face, stream, TTAG_head ); - } - - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - FT_LOCAL_DEF( FT_Error ) - tt_face_load_bitmap_header( TT_Face face, - FT_Stream stream ) - { - return tt_face_load_generic_header( face, stream, TTAG_bhed ); - } - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_max_profile */ - /* */ - /* <Description> */ - /* Loads the maximum profile into a face object. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_max_profile( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - TT_MaxProfile* maxProfile = &face->max_profile; - - const FT_Frame_Field maxp_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_MaxProfile - - FT_FRAME_START( 6 ), - FT_FRAME_LONG ( version ), - FT_FRAME_USHORT( numGlyphs ), - FT_FRAME_END - }; - - const FT_Frame_Field maxp_fields_extra[] = - { - FT_FRAME_START( 26 ), - FT_FRAME_USHORT( maxPoints ), - FT_FRAME_USHORT( maxContours ), - FT_FRAME_USHORT( maxCompositePoints ), - FT_FRAME_USHORT( maxCompositeContours ), - FT_FRAME_USHORT( maxZones ), - FT_FRAME_USHORT( maxTwilightPoints ), - FT_FRAME_USHORT( maxStorage ), - FT_FRAME_USHORT( maxFunctionDefs ), - FT_FRAME_USHORT( maxInstructionDefs ), - FT_FRAME_USHORT( maxStackElements ), - FT_FRAME_USHORT( maxSizeOfInstructions ), - FT_FRAME_USHORT( maxComponentElements ), - FT_FRAME_USHORT( maxComponentDepth ), - FT_FRAME_END - }; - - - FT_TRACE2(( "Load_TT_MaxProfile: %08p\n", face )); - - error = face->goto_table( face, TTAG_maxp, stream, 0 ); - if ( error ) - goto Exit; - - if ( FT_STREAM_READ_FIELDS( maxp_fields, maxProfile ) ) - goto Exit; - - face->root.num_glyphs = maxProfile->numGlyphs; - - maxProfile->maxPoints = 0; - maxProfile->maxContours = 0; - maxProfile->maxCompositePoints = 0; - maxProfile->maxCompositeContours = 0; - maxProfile->maxZones = 0; - maxProfile->maxTwilightPoints = 0; - maxProfile->maxStorage = 0; - maxProfile->maxFunctionDefs = 0; - maxProfile->maxInstructionDefs = 0; - maxProfile->maxStackElements = 0; - maxProfile->maxSizeOfInstructions = 0; - maxProfile->maxComponentElements = 0; - maxProfile->maxComponentDepth = 0; - - if ( maxProfile->version >= 0x10000L ) - { - if ( FT_STREAM_READ_FIELDS( maxp_fields_extra, maxProfile ) ) - goto Exit; - - /* XXX: an adjustment that is necessary to load certain */ - /* broken fonts like `Keystrokes MT' :-( */ - /* */ - /* We allocate 64 function entries by default when */ - /* the maxFunctionDefs field is null. */ - - if ( maxProfile->maxFunctionDefs == 0 ) - maxProfile->maxFunctionDefs = 64; - - face->root.internal->max_points = - (FT_UShort)FT_MAX( maxProfile->maxCompositePoints, - maxProfile->maxPoints ); - - face->root.internal->max_contours = - (FT_Short)FT_MAX( maxProfile->maxCompositeContours, - maxProfile->maxContours ); - - face->max_components = (FT_ULong)maxProfile->maxComponentElements + - maxProfile->maxComponentDepth; - - /* XXX: some fonts have maxComponents set to 0; we will */ - /* then use 16 of them by default. */ - if ( face->max_components == 0 ) - face->max_components = 16; - - /* We also increase maxPoints and maxContours in order to support */ - /* some broken fonts. */ - face->root.internal->max_points += (FT_UShort)8; - face->root.internal->max_contours += (FT_Short) 4; - } - - FT_TRACE2(( "MAXP loaded.\n" )); - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_metrics */ - /* */ - /* <Description> */ - /* Loads the horizontal or vertical metrics table into a face object. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* vertical :: A boolean flag. If set, load vertical metrics. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - tt_face_load_metrics( TT_Face face, - FT_Stream stream, - FT_Bool vertical ) - { - FT_Error error; - FT_Memory memory = stream->memory; - - FT_ULong table_len; - FT_Long num_shorts, num_longs, num_shorts_checked; - - TT_LongMetrics * longs; - TT_ShortMetrics** shorts; - - - FT_TRACE2(( "TT_Load_%s_Metrics: %08p\n", vertical ? "Vertical" - : "Horizontal", - face )); - - if ( vertical ) - { - /* The table is optional, quit silently if it wasn't found */ - /* */ - /* XXX: Some fonts have a valid vertical header with a non-null */ - /* `number_of_VMetrics' fields, but no corresponding `vmtx' */ - /* table to get the metrics from (e.g. mingliu). */ - /* */ - /* For safety, we set the field to 0! */ - /* */ - error = face->goto_table( face, TTAG_vmtx, stream, &table_len ); - if ( error ) - { - /* Set number_Of_VMetrics to 0! */ - FT_TRACE2(( " no vertical header in file.\n" )); - face->vertical.number_Of_VMetrics = 0; - error = SFNT_Err_Ok; - goto Exit; - } - - num_longs = face->vertical.number_Of_VMetrics; - longs = (TT_LongMetrics *)&face->vertical.long_metrics; - shorts = (TT_ShortMetrics**)&face->vertical.short_metrics; - } - else - { - error = face->goto_table( face, TTAG_hmtx, stream, &table_len ); - if ( error ) - { - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - /* If this is an incrementally loaded font and there are */ - /* overriding metrics tolerate a missing 'hmtx' table. */ - if ( face->root.internal->incremental_interface && - face->root.internal->incremental_interface->funcs-> - get_glyph_metrics ) - { - face->horizontal.number_Of_HMetrics = 0; - error = SFNT_Err_Ok; - goto Exit; - } -#endif - - FT_ERROR(( " no horizontal metrics in file!\n" )); - error = SFNT_Err_Hmtx_Table_Missing; - goto Exit; - } - - num_longs = face->horizontal.number_Of_HMetrics; - longs = (TT_LongMetrics *)&face->horizontal.long_metrics; - shorts = (TT_ShortMetrics**)&face->horizontal.short_metrics; - } - - /* never trust derived values */ - - num_shorts = face->max_profile.numGlyphs - num_longs; - num_shorts_checked = ( table_len - num_longs * 4L ) / 2; - - if ( num_shorts < 0 ) - { - FT_ERROR(( "TT_Load_%s_Metrics: more metrics than glyphs!\n", - vertical ? "Vertical" - : "Horizontal" )); - - error = vertical ? SFNT_Err_Invalid_Vert_Metrics - : SFNT_Err_Invalid_Horiz_Metrics; - goto Exit; - } - - if ( FT_QNEW_ARRAY( *longs, num_longs ) || - FT_QNEW_ARRAY( *shorts, num_shorts ) ) - goto Exit; - - if ( FT_FRAME_ENTER( table_len ) ) - goto Exit; - - { - TT_LongMetrics cur = *longs; - TT_LongMetrics limit = cur + num_longs; - - - for ( ; cur < limit; cur++ ) - { - cur->advance = FT_GET_USHORT(); - cur->bearing = FT_GET_SHORT(); - } - } - - /* do we have an inconsistent number of metric values? */ - { - TT_ShortMetrics* cur = *shorts; - TT_ShortMetrics* limit = cur + - FT_MIN( num_shorts, num_shorts_checked ); - - - for ( ; cur < limit; cur++ ) - *cur = FT_GET_SHORT(); - - /* we fill up the missing left side bearings with the */ - /* last valid value. Since this will occur for buggy CJK */ - /* fonts usually only, nothing serious will happen */ - if ( num_shorts > num_shorts_checked && num_shorts_checked > 0 ) - { - FT_Short val = (*shorts)[num_shorts_checked - 1]; - - - limit = *shorts + num_shorts; - for ( ; cur < limit; cur++ ) - *cur = val; - } - } - - FT_FRAME_EXIT(); - - FT_TRACE2(( "loaded\n" )); - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_metrics_header */ - /* */ - /* <Description> */ - /* Loads the horizontal or vertical header in a face object. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* vertical :: A boolean flag. If set, load vertical metrics. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_metrics_header( TT_Face face, - FT_Stream stream, - FT_Bool vertical ) - { - FT_Error error; - TT_HoriHeader* header; - - const FT_Frame_Field metrics_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_HoriHeader - - FT_FRAME_START( 36 ), - FT_FRAME_ULONG ( Version ), - FT_FRAME_SHORT ( Ascender ), - FT_FRAME_SHORT ( Descender ), - FT_FRAME_SHORT ( Line_Gap ), - FT_FRAME_USHORT( advance_Width_Max ), - FT_FRAME_SHORT ( min_Left_Side_Bearing ), - FT_FRAME_SHORT ( min_Right_Side_Bearing ), - FT_FRAME_SHORT ( xMax_Extent ), - FT_FRAME_SHORT ( caret_Slope_Rise ), - FT_FRAME_SHORT ( caret_Slope_Run ), - FT_FRAME_SHORT ( caret_Offset ), - FT_FRAME_SHORT ( Reserved[0] ), - FT_FRAME_SHORT ( Reserved[1] ), - FT_FRAME_SHORT ( Reserved[2] ), - FT_FRAME_SHORT ( Reserved[3] ), - FT_FRAME_SHORT ( metric_Data_Format ), - FT_FRAME_USHORT( number_Of_HMetrics ), - FT_FRAME_END - }; - - - FT_TRACE2(( vertical ? "Vertical header " : "Horizontal header " )); - - if ( vertical ) - { - face->vertical_info = 0; - - /* The vertical header table is optional, so return quietly if */ - /* we don't find it. */ - error = face->goto_table( face, TTAG_vhea, stream, 0 ); - if ( error ) - { - error = SFNT_Err_Ok; - goto Exit; - } - - face->vertical_info = 1; - header = (TT_HoriHeader*)&face->vertical; - } - else - { - /* The horizontal header is mandatory; return an error if we */ - /* don't find it. */ - error = face->goto_table( face, TTAG_hhea, stream, 0 ); - if ( error ) - { - error = SFNT_Err_Horiz_Header_Missing; - goto Exit; - } - - header = &face->horizontal; - } - - if ( FT_STREAM_READ_FIELDS( metrics_header_fields, header ) ) - goto Exit; - - header->long_metrics = NULL; - header->short_metrics = NULL; - - FT_TRACE2(( "loaded\n" )); - - /* Now try to load the corresponding metrics */ - - error = tt_face_load_metrics( face, stream, vertical ); - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_names */ - /* */ - /* <Description> */ - /* Loads the name records. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_names( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_ULong table_pos, table_len; - FT_ULong storage_start, storage_limit; - FT_UInt count; - TT_NameTable table; - - static const FT_Frame_Field name_table_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_NameTableRec - - FT_FRAME_START( 6 ), - FT_FRAME_USHORT( format ), - FT_FRAME_USHORT( numNameRecords ), - FT_FRAME_USHORT( storageOffset ), - FT_FRAME_END - }; - - static const FT_Frame_Field name_record_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_NameEntryRec - - /* no FT_FRAME_START */ - FT_FRAME_USHORT( platformID ), - FT_FRAME_USHORT( encodingID ), - FT_FRAME_USHORT( languageID ), - FT_FRAME_USHORT( nameID ), - FT_FRAME_USHORT( stringLength ), - FT_FRAME_USHORT( stringOffset ), - FT_FRAME_END - }; - - - table = &face->name_table; - table->stream = stream; - - FT_TRACE2(( "Names " )); - - error = face->goto_table( face, TTAG_name, stream, &table_len ); - if ( error ) - { - /* The name table is required so indicate failure. */ - FT_TRACE2(( "is missing!\n" )); - error = SFNT_Err_Name_Table_Missing; - goto Exit; - } - - table_pos = FT_STREAM_POS(); - - - if ( FT_STREAM_READ_FIELDS( name_table_fields, table ) ) - goto Exit; - - /* Some popular Asian fonts have an invalid `storageOffset' value */ - /* (it should be at least "6 + 12*num_names"). However, the string */ - /* offsets, computed as "storageOffset + entry->stringOffset", are */ - /* valid pointers within the name table... */ - /* */ - /* We thus can't check `storageOffset' right now. */ - /* */ - storage_start = table_pos + 6 + 12*table->numNameRecords; - storage_limit = table_pos + table_len; - - if ( storage_start > storage_limit ) - { - FT_ERROR(( "tt_face_load_names: invalid `name' table\n" )); - error = SFNT_Err_Name_Table_Missing; - goto Exit; - } - - /* Allocate the array of name records. */ - count = table->numNameRecords; - table->numNameRecords = 0; - - if ( FT_NEW_ARRAY( table->names, count ) || - FT_FRAME_ENTER( count * 12 ) ) - goto Exit; - - /* Load the name records and determine how much storage is needed */ - /* to hold the strings themselves. */ - { - TT_NameEntryRec* entry = table->names; - - - for ( ; count > 0; count-- ) - { - if ( FT_STREAM_READ_FIELDS( name_record_fields, entry ) ) - continue; - - /* check that the name is not empty */ - if ( entry->stringLength == 0 ) - continue; - - /* check that the name string is within the table */ - entry->stringOffset += table_pos + table->storageOffset; - if ( entry->stringOffset < storage_start || - entry->stringOffset + entry->stringLength > storage_limit ) - { - /* invalid entry - ignore it */ - entry->stringOffset = 0; - entry->stringLength = 0; - continue; - } - - entry++; - } - - table->numNameRecords = (FT_UInt)( entry - table->names ); - } - - FT_FRAME_EXIT(); - - FT_TRACE2(( "loaded\n" )); - - /* everything went well, update face->num_names */ - face->num_names = (FT_UShort) table->numNameRecords; - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_free_names */ - /* */ - /* <Description> */ - /* Frees the name records. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - FT_LOCAL_DEF( void ) - tt_face_free_names( TT_Face face ) - { - FT_Memory memory = face->root.driver->root.memory; - TT_NameTable table = &face->name_table; - TT_NameEntry entry = table->names; - FT_UInt count = table->numNameRecords; - - - if ( table->names ) - { - for ( ; count > 0; count--, entry++ ) - { - FT_FREE( entry->string ); - entry->stringLength = 0; - } - - /* free strings table */ - FT_FREE( table->names ); - } - - table->numNameRecords = 0; - table->format = 0; - table->storageOffset = 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_cmap */ - /* */ - /* <Description> */ - /* Loads the cmap directory in a face object. The cmaps itselves are */ - /* loaded on demand in the `ttcmap.c' module. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: A handle to the input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - - FT_LOCAL_DEF( FT_Error ) - tt_face_load_cmap( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - - - error = face->goto_table( face, TTAG_cmap, stream, &face->cmap_size ); - if ( error ) - { - FT_TRACE2(( "No `cmap' table in font !\n" )); - error = SFNT_Err_CMap_Table_Missing; - goto Exit; - } - - if ( !FT_FRAME_EXTRACT( face->cmap_size, face->cmap_table ) ) - FT_TRACE2(( "`cmap' table loaded\n" )); - else - { - FT_ERROR(( "`cmap' table is too short!\n" )); - face->cmap_size = 0; - } - - Exit: - return error; - } - - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_os2 */ - /* */ - /* <Description> */ - /* Loads the OS2 table. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: A handle to the input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_os2( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - TT_OS2* os2; - - const FT_Frame_Field os2_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_OS2 - - FT_FRAME_START( 78 ), - FT_FRAME_USHORT( version ), - FT_FRAME_SHORT ( xAvgCharWidth ), - FT_FRAME_USHORT( usWeightClass ), - FT_FRAME_USHORT( usWidthClass ), - FT_FRAME_SHORT ( fsType ), - FT_FRAME_SHORT ( ySubscriptXSize ), - FT_FRAME_SHORT ( ySubscriptYSize ), - FT_FRAME_SHORT ( ySubscriptXOffset ), - FT_FRAME_SHORT ( ySubscriptYOffset ), - FT_FRAME_SHORT ( ySuperscriptXSize ), - FT_FRAME_SHORT ( ySuperscriptYSize ), - FT_FRAME_SHORT ( ySuperscriptXOffset ), - FT_FRAME_SHORT ( ySuperscriptYOffset ), - FT_FRAME_SHORT ( yStrikeoutSize ), - FT_FRAME_SHORT ( yStrikeoutPosition ), - FT_FRAME_SHORT ( sFamilyClass ), - FT_FRAME_BYTE ( panose[0] ), - FT_FRAME_BYTE ( panose[1] ), - FT_FRAME_BYTE ( panose[2] ), - FT_FRAME_BYTE ( panose[3] ), - FT_FRAME_BYTE ( panose[4] ), - FT_FRAME_BYTE ( panose[5] ), - FT_FRAME_BYTE ( panose[6] ), - FT_FRAME_BYTE ( panose[7] ), - FT_FRAME_BYTE ( panose[8] ), - FT_FRAME_BYTE ( panose[9] ), - FT_FRAME_ULONG ( ulUnicodeRange1 ), - FT_FRAME_ULONG ( ulUnicodeRange2 ), - FT_FRAME_ULONG ( ulUnicodeRange3 ), - FT_FRAME_ULONG ( ulUnicodeRange4 ), - FT_FRAME_BYTE ( achVendID[0] ), - FT_FRAME_BYTE ( achVendID[1] ), - FT_FRAME_BYTE ( achVendID[2] ), - FT_FRAME_BYTE ( achVendID[3] ), - - FT_FRAME_USHORT( fsSelection ), - FT_FRAME_USHORT( usFirstCharIndex ), - FT_FRAME_USHORT( usLastCharIndex ), - FT_FRAME_SHORT ( sTypoAscender ), - FT_FRAME_SHORT ( sTypoDescender ), - FT_FRAME_SHORT ( sTypoLineGap ), - FT_FRAME_USHORT( usWinAscent ), - FT_FRAME_USHORT( usWinDescent ), - FT_FRAME_END - }; - - const FT_Frame_Field os2_fields_extra[] = - { - FT_FRAME_START( 8 ), - FT_FRAME_ULONG( ulCodePageRange1 ), - FT_FRAME_ULONG( ulCodePageRange2 ), - FT_FRAME_END - }; - - const FT_Frame_Field os2_fields_extra2[] = - { - FT_FRAME_START( 10 ), - FT_FRAME_SHORT ( sxHeight ), - FT_FRAME_SHORT ( sCapHeight ), - FT_FRAME_USHORT( usDefaultChar ), - FT_FRAME_USHORT( usBreakChar ), - FT_FRAME_USHORT( usMaxContext ), - FT_FRAME_END - }; - - - FT_TRACE2(( "OS/2 Table " )); - - /* We now support old Mac fonts where the OS/2 table doesn't */ - /* exist. Simply put, we set the `version' field to 0xFFFF */ - /* and test this value each time we need to access the table. */ - error = face->goto_table( face, TTAG_OS2, stream, 0 ); - if ( error ) - { - FT_TRACE2(( "is missing!\n" )); - face->os2.version = 0xFFFFU; - error = SFNT_Err_Ok; - goto Exit; - } - - os2 = &face->os2; - - if ( FT_STREAM_READ_FIELDS( os2_fields, os2 ) ) - goto Exit; - - os2->ulCodePageRange1 = 0; - os2->ulCodePageRange2 = 0; - os2->sxHeight = 0; - os2->sCapHeight = 0; - os2->usDefaultChar = 0; - os2->usBreakChar = 0; - os2->usMaxContext = 0; - - if ( os2->version >= 0x0001 ) - { - /* only version 1 tables */ - if ( FT_STREAM_READ_FIELDS( os2_fields_extra, os2 ) ) - goto Exit; - - if ( os2->version >= 0x0002 ) - { - /* only version 2 tables */ - if ( FT_STREAM_READ_FIELDS( os2_fields_extra2, os2 ) ) - goto Exit; - } - } - - FT_TRACE2(( "loaded\n" )); - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_postscript */ - /* */ - /* <Description> */ - /* Loads the Postscript table. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: A handle to the input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_postscript( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - TT_Postscript* post = &face->postscript; - - static const FT_Frame_Field post_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_Postscript - - FT_FRAME_START( 32 ), - FT_FRAME_ULONG( FormatType ), - FT_FRAME_ULONG( italicAngle ), - FT_FRAME_SHORT( underlinePosition ), - FT_FRAME_SHORT( underlineThickness ), - FT_FRAME_ULONG( isFixedPitch ), - FT_FRAME_ULONG( minMemType42 ), - FT_FRAME_ULONG( maxMemType42 ), - FT_FRAME_ULONG( minMemType1 ), - FT_FRAME_ULONG( maxMemType1 ), - FT_FRAME_END - }; - - - FT_TRACE2(( "PostScript " )); - - error = face->goto_table( face, TTAG_post, stream, 0 ); - if ( error ) - return SFNT_Err_Post_Table_Missing; - - if ( FT_STREAM_READ_FIELDS( post_fields, post ) ) - return error; - - /* we don't load the glyph names, we do that in another */ - /* module (ttpost). */ - FT_TRACE2(( "loaded\n" )); - - return SFNT_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_pclt */ - /* */ - /* <Description> */ - /* Loads the PCL 5 Table. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: A handle to the input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_pclt( TT_Face face, - FT_Stream stream ) - { - static const FT_Frame_Field pclt_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_PCLT - - FT_FRAME_START( 54 ), - FT_FRAME_ULONG ( Version ), - FT_FRAME_ULONG ( FontNumber ), - FT_FRAME_USHORT( Pitch ), - FT_FRAME_USHORT( xHeight ), - FT_FRAME_USHORT( Style ), - FT_FRAME_USHORT( TypeFamily ), - FT_FRAME_USHORT( CapHeight ), - FT_FRAME_BYTES ( TypeFace, 16 ), - FT_FRAME_BYTES ( CharacterComplement, 8 ), - FT_FRAME_BYTES ( FileName, 6 ), - FT_FRAME_CHAR ( StrokeWeight ), - FT_FRAME_CHAR ( WidthType ), - FT_FRAME_BYTE ( SerifStyle ), - FT_FRAME_BYTE ( Reserved ), - FT_FRAME_END - }; - - FT_Error error; - TT_PCLT* pclt = &face->pclt; - - - FT_TRACE2(( "PCLT " )); - - /* optional table */ - error = face->goto_table( face, TTAG_PCLT, stream, 0 ); - if ( error ) - { - FT_TRACE2(( "missing (optional)\n" )); - pclt->Version = 0; - return SFNT_Err_Ok; - } - - if ( FT_STREAM_READ_FIELDS( pclt_fields, pclt ) ) - goto Exit; - - FT_TRACE2(( "loaded\n" )); - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_gasp */ - /* */ - /* <Description> */ - /* Loads the `gasp' table into a face object. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_gasp( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - - FT_UInt j,num_ranges; - TT_GaspRange gaspranges; - - - FT_TRACE2(( "tt_face_load_gasp: %08p\n", face )); - - /* the gasp table is optional */ - error = face->goto_table( face, TTAG_gasp, stream, 0 ); - if ( error ) - return SFNT_Err_Ok; - - if ( FT_FRAME_ENTER( 4L ) ) - goto Exit; - - face->gasp.version = FT_GET_USHORT(); - face->gasp.numRanges = FT_GET_USHORT(); - - FT_FRAME_EXIT(); - - num_ranges = face->gasp.numRanges; - FT_TRACE3(( "number of ranges = %d\n", num_ranges )); - - if ( FT_QNEW_ARRAY( gaspranges, num_ranges ) || - FT_FRAME_ENTER( num_ranges * 4L ) ) - goto Exit; - - face->gasp.gaspRanges = gaspranges; - - for ( j = 0; j < num_ranges; j++ ) - { - gaspranges[j].maxPPEM = FT_GET_USHORT(); - gaspranges[j].gaspFlag = FT_GET_USHORT(); - - FT_TRACE3(( " [max:%d flag:%d]", - gaspranges[j].maxPPEM, - gaspranges[j].gaspFlag )); - } - FT_TRACE3(( "\n" )); - - FT_FRAME_EXIT(); - FT_TRACE2(( "GASP loaded\n" )); - - Exit: - return error; - } - - - FT_CALLBACK_DEF( int ) - tt_kern_pair_compare( const void* a, - const void* b ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_kern */ - /* */ - /* <Description> */ - /* Loads the first kerning table with format 0 in the font. Only */ - /* accepts the first horizontal kerning table. Developers should use */ - /* the `ftxkern' extension to access other kerning tables in the font */ - /* file, if they really want to. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - -#undef TT_KERN_INDEX -#define TT_KERN_INDEX( g1, g2 ) ( ( (FT_ULong)g1 << 16 ) | g2 ) - - - FT_LOCAL_DEF( FT_Error ) - tt_face_load_kern( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - - FT_UInt n, num_tables; - - - /* the kern table is optional; exit silently if it is missing */ - error = face->goto_table( face, TTAG_kern, stream, 0 ); - if ( error ) - return SFNT_Err_Ok; - - if ( FT_FRAME_ENTER( 4L ) ) - goto Exit; - - (void)FT_GET_USHORT(); /* version */ - num_tables = FT_GET_USHORT(); - - FT_FRAME_EXIT(); - - for ( n = 0; n < num_tables; n++ ) - { - FT_UInt coverage; - FT_UInt length; - - - if ( FT_FRAME_ENTER( 6L ) ) - goto Exit; - - (void)FT_GET_USHORT(); /* version */ - length = FT_GET_USHORT() - 6; /* substract header length */ - coverage = FT_GET_USHORT(); - - FT_FRAME_EXIT(); - - if ( coverage == 0x0001 ) - { - FT_UInt num_pairs; - TT_Kern0_Pair pair; - TT_Kern0_Pair limit; - - - /* found a horizontal format 0 kerning table! */ - if ( FT_FRAME_ENTER( 8L ) ) - goto Exit; - - num_pairs = FT_GET_USHORT(); - - /* skip the rest */ - - FT_FRAME_EXIT(); - - /* allocate array of kerning pairs */ - if ( FT_QNEW_ARRAY( face->kern_pairs, num_pairs ) || - FT_FRAME_ENTER( 6L * num_pairs ) ) - goto Exit; - - pair = face->kern_pairs; - limit = pair + num_pairs; - for ( ; pair < limit; pair++ ) - { - pair->left = FT_GET_USHORT(); - pair->right = FT_GET_USHORT(); - pair->value = FT_GET_USHORT(); - } - - FT_FRAME_EXIT(); - - face->num_kern_pairs = num_pairs; - face->kern_table_index = n; - - /* ensure that the kerning pair table is sorted (yes, some */ - /* fonts have unsorted tables!) */ - -#if 1 - if ( num_pairs > 0 ) - { - TT_Kern0_Pair pair0 = face->kern_pairs; - FT_ULong prev = TT_KERN_INDEX( pair0->left, pair0->right ); - - - for ( pair0++; pair0 < limit; pair0++ ) - { - FT_ULong next = TT_KERN_INDEX( pair0->left, pair0->right ); - - - if ( next < prev ) - goto SortIt; - - prev = next; - } - goto Exit; - - SortIt: - ft_qsort( (void*)face->kern_pairs, (int)num_pairs, - sizeof ( TT_Kern0_PairRec ), tt_kern_pair_compare ); - } -#else - { - TT_Kern0_Pair pair0 = face->kern_pairs; - FT_UInt i; - - - for ( i = 1; i < num_pairs; i++, pair0++ ) - { - if ( tt_kern_pair_compare( pair0, pair0 + 1 ) != -1 ) - { - ft_qsort( (void*)face->kern_pairs, (int)num_pairs, - sizeof ( TT_Kern0_PairRec ), tt_kern_pair_compare ); - break; - } - } - } -#endif - - goto Exit; - } - - if ( FT_STREAM_SKIP( length ) ) - goto Exit; - } - - /* no kern table found -- doesn't matter */ - face->kern_table_index = -1; - face->num_kern_pairs = 0; - face->kern_pairs = NULL; - - Exit: - return error; - } - - - FT_CALLBACK_DEF( int ) - tt_kern_pair_compare( const void* a, - const void* b ) - { - TT_Kern0_Pair pair1 = (TT_Kern0_Pair)a; - TT_Kern0_Pair pair2 = (TT_Kern0_Pair)b; - - FT_ULong index1 = TT_KERN_INDEX( pair1->left, pair1->right ); - FT_ULong index2 = TT_KERN_INDEX( pair2->left, pair2->right ); - - - return ( index1 < index2 ? -1 : - ( index1 > index2 ? 1 : 0 )); - } - - -#undef TT_KERN_INDEX - - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_hdmx */ - /* */ - /* <Description> */ - /* Loads the horizontal device metrics table. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* stream :: A handle to the input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_hdmx( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - - TT_Hdmx hdmx = &face->hdmx; - FT_Short num_records; - FT_Long num_glyphs; - FT_Long record_size; - - - hdmx->version = 0; - hdmx->num_records = 0; - hdmx->records = 0; - - /* this table is optional */ - error = face->goto_table( face, TTAG_hdmx, stream, 0 ); - if ( error ) - return SFNT_Err_Ok; - - if ( FT_FRAME_ENTER( 8L ) ) - goto Exit; - - hdmx->version = FT_GET_USHORT(); - num_records = FT_GET_SHORT(); - record_size = FT_GET_LONG(); - - FT_FRAME_EXIT(); - - /* Only recognize format 0 */ - if ( hdmx->version != 0 ) - goto Exit; - - if ( FT_QNEW_ARRAY( hdmx->records, num_records ) ) - goto Exit; - - hdmx->num_records = num_records; - num_glyphs = face->root.num_glyphs; - record_size -= num_glyphs + 2; - - { - TT_HdmxEntry cur = hdmx->records; - TT_HdmxEntry limit = cur + hdmx->num_records; - - - for ( ; cur < limit; cur++ ) - { - /* read record */ - if ( FT_READ_BYTE( cur->ppem ) || - FT_READ_BYTE( cur->max_width ) ) - goto Exit; - - if ( FT_QALLOC( cur->widths, num_glyphs ) || - FT_STREAM_READ( cur->widths, num_glyphs ) ) - goto Exit; - - /* skip padding bytes */ - if ( record_size > 0 && FT_STREAM_SKIP( record_size ) ) - goto Exit; - } - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_free_hdmx */ - /* */ - /* <Description> */ - /* Frees the horizontal device metrics table. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - FT_LOCAL_DEF( void ) - tt_face_free_hdmx( TT_Face face ) - { - if ( face ) - { - FT_Int n; - FT_Memory memory = face->root.driver->root.memory; - - - for ( n = 0; n < face->hdmx.num_records; n++ ) - FT_FREE( face->hdmx.records[n].widths ); - - FT_FREE( face->hdmx.records ); - face->hdmx.num_records = 0; - } - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/ttload.h b/nx-X11/extras/freetype2/src/sfnt/ttload.h deleted file mode 100644 index 27c41b50b..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/ttload.h +++ /dev/null @@ -1,137 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttload.h */ -/* */ -/* Load the basic TrueType tables, i.e., tables that can be either in */ -/* TTF or OTF fonts (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTLOAD_H__ -#define __TTLOAD_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_TRUETYPE_TYPES_H - - -FT_BEGIN_HEADER - - - FT_LOCAL( TT_Table ) - tt_face_lookup_table( TT_Face face, - FT_ULong tag ); - - FT_LOCAL( FT_Error ) - tt_face_goto_table( TT_Face face, - FT_ULong tag, - FT_Stream stream, - FT_ULong* length ); - - - FT_LOCAL( FT_Error ) - tt_face_load_sfnt_header( TT_Face face, - FT_Stream stream, - FT_Long face_index, - SFNT_Header sfnt ); - - FT_LOCAL( FT_Error ) - tt_face_load_directory( TT_Face face, - FT_Stream stream, - SFNT_Header sfnt ); - - FT_LOCAL( FT_Error ) - tt_face_load_any( TT_Face face, - FT_ULong tag, - FT_Long offset, - FT_Byte* buffer, - FT_ULong* length ); - - - FT_LOCAL( FT_Error ) - tt_face_load_header( TT_Face face, - FT_Stream stream ); - - - FT_LOCAL( FT_Error ) - tt_face_load_metrics_header( TT_Face face, - FT_Stream stream, - FT_Bool vertical ); - - - FT_LOCAL( FT_Error ) - tt_face_load_cmap( TT_Face face, - FT_Stream stream ); - - - FT_LOCAL( FT_Error ) - tt_face_load_max_profile( TT_Face face, - FT_Stream stream ); - - - FT_LOCAL( FT_Error ) - tt_face_load_names( TT_Face face, - FT_Stream stream ); - - - FT_LOCAL( FT_Error ) - tt_face_load_os2( TT_Face face, - FT_Stream stream ); - - - FT_LOCAL( FT_Error ) - tt_face_load_postscript( TT_Face face, - FT_Stream stream ); - - - FT_LOCAL( FT_Error ) - tt_face_load_hdmx( TT_Face face, - FT_Stream stream ); - - FT_LOCAL( FT_Error ) - tt_face_load_pclt( TT_Face face, - FT_Stream stream ); - - FT_LOCAL( void ) - tt_face_free_names( TT_Face face ); - - - FT_LOCAL( void ) - tt_face_free_hdmx ( TT_Face face ); - - - FT_LOCAL( FT_Error ) - tt_face_load_kern( TT_Face face, - FT_Stream stream ); - - - FT_LOCAL( FT_Error ) - tt_face_load_gasp( TT_Face face, - FT_Stream stream ); - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - FT_LOCAL( FT_Error ) - tt_face_load_bitmap_header( TT_Face face, - FT_Stream stream ); - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - -FT_END_HEADER - -#endif /* __TTLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/ttpost.c b/nx-X11/extras/freetype2/src/sfnt/ttpost.c deleted file mode 100644 index 3d526db4c..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/ttpost.c +++ /dev/null @@ -1,521 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttpost.c */ -/* */ -/* Postcript name table processing for TrueType and OpenType fonts */ -/* (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* The post table is not completely loaded by the core engine. This */ - /* file loads the missing PS glyph names and implements an API to access */ - /* them. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H -#include "ttpost.h" -#include "ttload.h" - -#include "sferrors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttpost - - - /* If this configuration macro is defined, we rely on the `PSNames' */ - /* module to grab the glyph names. */ - -#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES - - -#include FT_SERVICE_POSTSCRIPT_CMAPS_H - -#define MAC_NAME( x ) ( (FT_String*)psnames->macintosh_name( x ) ) - - -#else /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */ - - - /* Otherwise, we ignore the `PSNames' module, and provide our own */ - /* table of Mac names. Thus, it is possible to build a version of */ - /* FreeType without the Type 1 driver & PSNames module. */ - -#define MAC_NAME( x ) tt_post_default_names[x] - - /* the 258 default Mac PS glyph names */ - - static const FT_String* tt_post_default_names[258] = - { - /* 0 */ - ".notdef", ".null", "CR", "space", "exclam", - "quotedbl", "numbersign", "dollar", "percent", "ampersand", - /* 10 */ - "quotesingle", "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", "zero", - /* 20 */ - "one", "two", "three", "four", "five", - "six", "seven", "eight", "nine", "colon", - /* 30 */ - "semicolon", "less", "equal", "greater", "question", - "at", "A", "B", "C", "D", - /* 40 */ - "E", "F", "G", "H", "I", - "J", "K", "L", "M", "N", - /* 50 */ - "O", "P", "Q", "R", "S", - "T", "U", "V", "W", "X", - /* 60 */ - "Y", "Z", "bracketleft", "backslash", "bracketright", - "asciicircum", "underscore", "grave", "a", "b", - /* 70 */ - "c", "d", "e", "f", "g", - "h", "i", "j", "k", "l", - /* 80 */ - "m", "n", "o", "p", "q", - "r", "s", "t", "u", "v", - /* 90 */ - "w", "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", "Adieresis", "Aring", - /* 100 */ - "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", - "aacute", "agrave", "acircumflex", "adieresis", "atilde", - /* 110 */ - "aring", "ccedilla", "eacute", "egrave", "ecircumflex", - "edieresis", "iacute", "igrave", "icircumflex", "idieresis", - /* 120 */ - "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", - "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", - /* 130 */ - "dagger", "degree", "cent", "sterling", "section", - "bullet", "paragraph", "germandbls", "registered", "copyright", - /* 140 */ - "trademark", "acute", "dieresis", "notequal", "AE", - "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", - /* 150 */ - "yen", "mu", "partialdiff", "summation", "product", - "pi", "integral", "ordfeminine", "ordmasculine", "Omega", - /* 160 */ - "ae", "oslash", "questiondown", "exclamdown", "logicalnot", - "radical", "florin", "approxequal", "Delta", "guillemotleft", - /* 170 */ - "guillemotright", "ellipsis", "nbspace", "Agrave", "Atilde", - "Otilde", "OE", "oe", "endash", "emdash", - /* 180 */ - "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", - "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", - /* 190 */ - "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", - "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", "Acircumflex", - /* 200 */ - "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", - "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", - /* 210 */ - "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", - "dotlessi", "circumflex", "tilde", "macron", "breve", - /* 220 */ - "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", - "caron", "Lslash", "lslash", "Scaron", "scaron", - /* 230 */ - "Zcaron", "zcaron", "brokenbar", "Eth", "eth", - "Yacute", "yacute", "Thorn", "thorn", "minus", - /* 240 */ - "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", - "onequarter", "threequarters", "franc", "Gbreve", "gbreve", - /* 250 */ - "Idot", "Scedilla", "scedilla", "Cacute", "cacute", - "Ccaron", "ccaron", "dmacron", - }; - - -#endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */ - - - static FT_Error - load_format_20( TT_Face face, - FT_Stream stream ) - { - FT_Memory memory = stream->memory; - FT_Error error; - - FT_Int num_glyphs; - FT_UShort num_names; - - FT_UShort* glyph_indices = 0; - FT_Char** name_strings = 0; - - - if ( FT_READ_USHORT( num_glyphs ) ) - goto Exit; - - /* UNDOCUMENTED! The number of glyphs in this table can be smaller */ - /* than the value in the maxp table (cf. cyberbit.ttf). */ - - /* There already exist fonts which have more than 32768 glyph names */ - /* in this table, so the test for this threshold has been dropped. */ - - if ( num_glyphs > face->root.num_glyphs ) - { - error = SFNT_Err_Invalid_File_Format; - goto Exit; - } - - /* load the indices */ - { - FT_Int n; - - - if ( FT_NEW_ARRAY ( glyph_indices, num_glyphs ) || - FT_FRAME_ENTER( num_glyphs * 2L ) ) - goto Fail; - - for ( n = 0; n < num_glyphs; n++ ) - glyph_indices[n] = FT_GET_USHORT(); - - FT_FRAME_EXIT(); - } - - /* compute number of names stored in table */ - { - FT_Int n; - - - num_names = 0; - - for ( n = 0; n < num_glyphs; n++ ) - { - FT_Int idx; - - - idx = glyph_indices[n]; - if ( idx >= 258 ) - { - idx -= 257; - if ( idx > num_names ) - num_names = (FT_UShort)idx; - } - } - } - - /* now load the name strings */ - { - FT_UShort n; - - - if ( FT_NEW_ARRAY( name_strings, num_names ) ) - goto Fail; - - for ( n = 0; n < num_names; n++ ) - { - FT_UInt len; - - - if ( FT_READ_BYTE ( len ) || - FT_NEW_ARRAY( name_strings[n], len + 1 ) || - FT_STREAM_READ ( name_strings[n], len ) ) - goto Fail1; - - name_strings[n][len] = '\0'; - } - } - - /* all right, set table fields and exit successfuly */ - { - TT_Post_20 table = &face->postscript_names.names.format_20; - - - table->num_glyphs = (FT_UShort)num_glyphs; - table->num_names = (FT_UShort)num_names; - table->glyph_indices = glyph_indices; - table->glyph_names = name_strings; - } - return SFNT_Err_Ok; - - Fail1: - { - FT_UShort n; - - - for ( n = 0; n < num_names; n++ ) - FT_FREE( name_strings[n] ); - } - - Fail: - FT_FREE( name_strings ); - FT_FREE( glyph_indices ); - - Exit: - return error; - } - - - static FT_Error - load_format_25( TT_Face face, - FT_Stream stream ) - { - FT_Memory memory = stream->memory; - FT_Error error; - - FT_Int num_glyphs; - FT_Char* offset_table = 0; - - - /* UNDOCUMENTED! This value appears only in the Apple TT specs. */ - if ( FT_READ_USHORT( num_glyphs ) ) - goto Exit; - - /* check the number of glyphs */ - if ( num_glyphs > face->root.num_glyphs || num_glyphs > 258 ) - { - error = SFNT_Err_Invalid_File_Format; - goto Exit; - } - - if ( FT_ALLOC( offset_table, num_glyphs ) || - FT_STREAM_READ( offset_table, num_glyphs ) ) - goto Fail; - - /* now check the offset table */ - { - FT_Int n; - - - for ( n = 0; n < num_glyphs; n++ ) - { - FT_Long idx = (FT_Long)n + offset_table[n]; - - - if ( idx < 0 || idx > num_glyphs ) - { - error = SFNT_Err_Invalid_File_Format; - goto Fail; - } - } - } - - /* OK, set table fields and exit successfuly */ - { - TT_Post_25 table = &face->postscript_names.names.format_25; - - - table->num_glyphs = (FT_UShort)num_glyphs; - table->offsets = offset_table; - } - - return SFNT_Err_Ok; - - Fail: - FT_FREE( offset_table ); - - Exit: - return error; - } - - - static FT_Error - load_post_names( TT_Face face ) - { - FT_Stream stream; - FT_Error error; - FT_Fixed format; - - - /* get a stream for the face's resource */ - stream = face->root.stream; - - /* seek to the beginning of the PS names table */ - error = face->goto_table( face, TTAG_post, stream, 0 ); - if ( error ) - goto Exit; - - format = face->postscript.FormatType; - - /* go to beginning of subtable */ - if ( FT_STREAM_SKIP( 32 ) ) - goto Exit; - - /* now read postscript table */ - if ( format == 0x00020000L ) - error = load_format_20( face, stream ); - else if ( format == 0x00028000L ) - error = load_format_25( face, stream ); - else - error = SFNT_Err_Invalid_File_Format; - - face->postscript_names.loaded = 1; - - Exit: - return error; - } - - - FT_LOCAL_DEF( void ) - tt_face_free_ps_names( TT_Face face ) - { - FT_Memory memory = face->root.memory; - TT_Post_Names names = &face->postscript_names; - FT_Fixed format; - - - if ( names->loaded ) - { - format = face->postscript.FormatType; - - if ( format == 0x00020000L ) - { - TT_Post_20 table = &names->names.format_20; - FT_UShort n; - - - FT_FREE( table->glyph_indices ); - table->num_glyphs = 0; - - for ( n = 0; n < table->num_names; n++ ) - FT_FREE( table->glyph_names[n] ); - - FT_FREE( table->glyph_names ); - table->num_names = 0; - } - else if ( format == 0x00028000L ) - { - TT_Post_25 table = &names->names.format_25; - - - FT_FREE( table->offsets ); - table->num_glyphs = 0; - } - } - names->loaded = 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_get_ps_name */ - /* */ - /* <Description> */ - /* Gets the PostScript glyph name of a glyph. */ - /* */ - /* <Input> */ - /* face :: A handle to the parent face. */ - /* */ - /* idx :: The glyph index. */ - /* */ - /* PSname :: The address of a string pointer. Will be NULL in case */ - /* of error, otherwise it is a pointer to the glyph name. */ - /* */ - /* You must not modify the returned string! */ - /* */ - /* <Output> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_get_ps_name( TT_Face face, - FT_UInt idx, - FT_String** PSname ) - { - FT_Error error; - TT_Post_Names names; - FT_Fixed format; - -#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES - FT_Service_PsCMaps psnames; -#endif - - - if ( !face ) - return SFNT_Err_Invalid_Face_Handle; - - if ( idx >= (FT_UInt)face->root.num_glyphs ) - return SFNT_Err_Invalid_Glyph_Index; - -#ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES - psnames = (FT_Service_PsCMaps)face->psnames; - if ( !psnames ) - return SFNT_Err_Unimplemented_Feature; -#endif - - names = &face->postscript_names; - - /* `.notdef' by default */ - *PSname = MAC_NAME( 0 ); - - format = face->postscript.FormatType; - - if ( format == 0x00010000L ) - { - if ( idx < 258 ) /* paranoid checking */ - *PSname = MAC_NAME( idx ); - } - else if ( format == 0x00020000L ) - { - TT_Post_20 table = &names->names.format_20; - - - if ( !names->loaded ) - { - error = load_post_names( face ); - if ( error ) - goto End; - } - - if ( idx < (FT_UInt)table->num_glyphs ) - { - FT_UShort name_index = table->glyph_indices[idx]; - - - if ( name_index < 258 ) - *PSname = MAC_NAME( name_index ); - else - *PSname = (FT_String*)table->glyph_names[name_index - 258]; - } - } - else if ( format == 0x00028000L ) - { - TT_Post_25 table = &names->names.format_25; - - - if ( !names->loaded ) - { - error = load_post_names( face ); - if ( error ) - goto End; - } - - if ( idx < (FT_UInt)table->num_glyphs ) /* paranoid checking */ - { - idx += table->offsets[idx]; - *PSname = MAC_NAME( idx ); - } - } - - /* nothing to do for format == 0x00030000L */ - - End: - return SFNT_Err_Ok; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/ttpost.h b/nx-X11/extras/freetype2/src/sfnt/ttpost.h deleted file mode 100644 index 6f06d75a7..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/ttpost.h +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttpost.h */ -/* */ -/* Postcript name table processing for TrueType and OpenType fonts */ -/* (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTPOST_H__ -#define __TTPOST_H__ - - -#include <ft2build.h> -#include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_TRUETYPE_TYPES_H - - -FT_BEGIN_HEADER - - - FT_LOCAL( FT_Error ) - tt_face_get_ps_name( TT_Face face, - FT_UInt idx, - FT_String** PSname ); - - FT_LOCAL( void ) - tt_face_free_ps_names( TT_Face face ); - - -FT_END_HEADER - -#endif /* __TTPOST_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/ttsbit.c b/nx-X11/extras/freetype2/src/sfnt/ttsbit.c deleted file mode 100644 index 444c27acc..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/ttsbit.c +++ /dev/null @@ -1,1467 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttsbit.c */ -/* */ -/* TrueType and OpenType embedded bitmap support (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H -#include "ttsbit.h" - -#include "sferrors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttsbit - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* blit_sbit */ - /* */ - /* <Description> */ - /* Blits a bitmap from an input stream into a given target. Supports */ - /* x and y offsets as well as byte padded lines. */ - /* */ - /* <Input> */ - /* target :: The target bitmap/pixmap. */ - /* */ - /* source :: The input packed bitmap data. */ - /* */ - /* line_bits :: The number of bits per line. */ - /* */ - /* byte_padded :: A flag which is true if lines are byte-padded. */ - /* */ - /* x_offset :: The horizontal offset. */ - /* */ - /* y_offset :: The vertical offset. */ - /* */ - /* <Note> */ - /* IMPORTANT: The x and y offsets are relative to the top corner of */ - /* the target bitmap (unlike the normal TrueType */ - /* convention). A positive y offset indicates a downwards */ - /* direction! */ - /* */ - static void - blit_sbit( FT_Bitmap* target, - FT_Byte* source, - FT_Int line_bits, - FT_Bool byte_padded, - FT_Int x_offset, - FT_Int y_offset ) - { - FT_Byte* line_buff; - FT_Int line_incr; - FT_Int height; - - FT_UShort acc; - FT_UInt loaded; - - - /* first of all, compute starting write position */ - line_incr = target->pitch; - line_buff = target->buffer; - - if ( line_incr < 0 ) - line_buff -= line_incr * ( target->rows - 1 ); - - line_buff += ( x_offset >> 3 ) + y_offset * line_incr; - - /***********************************************************************/ - /* */ - /* We use the extra-classic `accumulator' trick to extract the bits */ - /* from the source byte stream. */ - /* */ - /* Namely, the variable `acc' is a 16-bit accumulator containing the */ - /* last `loaded' bits from the input stream. The bits are shifted to */ - /* the upmost position in `acc'. */ - /* */ - /***********************************************************************/ - - acc = 0; /* clear accumulator */ - loaded = 0; /* no bits were loaded */ - - for ( height = target->rows; height > 0; height-- ) - { - FT_Byte* cur = line_buff; /* current write cursor */ - FT_Int count = line_bits; /* # of bits to extract per line */ - FT_Byte shift = (FT_Byte)( x_offset & 7 ); /* current write shift */ - FT_Byte space = (FT_Byte)( 8 - shift ); - - - /* first of all, read individual source bytes */ - if ( count >= 8 ) - { - count -= 8; - { - do - { - FT_Byte val; - - - /* ensure that there are at least 8 bits in the accumulator */ - if ( loaded < 8 ) - { - acc |= (FT_UShort)((FT_UShort)*source++ << ( 8 - loaded )); - loaded += 8; - } - - /* now write one byte */ - val = (FT_Byte)( acc >> 8 ); - if ( shift ) - { - cur[0] |= (FT_Byte)( val >> shift ); - cur[1] |= (FT_Byte)( val << space ); - } - else - cur[0] |= val; - - cur++; - acc <<= 8; /* remove bits from accumulator */ - loaded -= 8; - count -= 8; - - } while ( count >= 0 ); - } - - /* restore `count' to correct value */ - count += 8; - } - - /* now write remaining bits (count < 8) */ - if ( count > 0 ) - { - FT_Byte val; - - - /* ensure that there are at least `count' bits in the accumulator */ - if ( (FT_Int)loaded < count ) - { - acc |= (FT_UShort)((FT_UShort)*source++ << ( 8 - loaded )); - loaded += 8; - } - - /* now write remaining bits */ - val = (FT_Byte)( ( (FT_Byte)( acc >> 8 ) ) & ~( 0xFF >> count ) ); - cur[0] |= (FT_Byte)( val >> shift ); - - if ( count > space ) - cur[1] |= (FT_Byte)( val << space ); - - acc <<= count; - loaded -= count; - } - - /* now, skip to next line */ - if ( byte_padded ) - { - acc = 0; - loaded = 0; /* clear accumulator on byte-padded lines */ - } - - line_buff += line_incr; - } - } - - - const FT_Frame_Field sbit_metrics_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_SBit_MetricsRec - - FT_FRAME_START( 8 ), - FT_FRAME_BYTE( height ), - FT_FRAME_BYTE( width ), - - FT_FRAME_CHAR( horiBearingX ), - FT_FRAME_CHAR( horiBearingY ), - FT_FRAME_BYTE( horiAdvance ), - - FT_FRAME_CHAR( vertBearingX ), - FT_FRAME_CHAR( vertBearingY ), - FT_FRAME_BYTE( vertAdvance ), - FT_FRAME_END - }; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Load_SBit_Const_Metrics */ - /* */ - /* <Description> */ - /* Loads the metrics for `EBLC' index tables format 2 and 5. */ - /* */ - /* <Input> */ - /* range :: The target range. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - Load_SBit_Const_Metrics( TT_SBit_Range range, - FT_Stream stream ) - { - FT_Error error; - - - if ( FT_READ_ULONG( range->image_size ) ) - return error; - - return FT_STREAM_READ_FIELDS( sbit_metrics_fields, &range->metrics ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Load_SBit_Range_Codes */ - /* */ - /* <Description> */ - /* Loads the range codes for `EBLC' index tables format 4 and 5. */ - /* */ - /* <Input> */ - /* range :: The target range. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* load_offsets :: A flag whether to load the glyph offset table. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - Load_SBit_Range_Codes( TT_SBit_Range range, - FT_Stream stream, - FT_Bool load_offsets ) - { - FT_Error error; - FT_ULong count, n, size; - FT_Memory memory = stream->memory; - - - if ( FT_READ_ULONG( count ) ) - goto Exit; - - range->num_glyphs = count; - - /* Allocate glyph offsets table if needed */ - if ( load_offsets ) - { - if ( FT_NEW_ARRAY( range->glyph_offsets, count ) ) - goto Exit; - - size = count * 4L; - } - else - size = count * 2L; - - /* Allocate glyph codes table and access frame */ - if ( FT_NEW_ARRAY ( range->glyph_codes, count ) || - FT_FRAME_ENTER( size ) ) - goto Exit; - - for ( n = 0; n < count; n++ ) - { - range->glyph_codes[n] = FT_GET_USHORT(); - - if ( load_offsets ) - range->glyph_offsets[n] = (FT_ULong)range->image_offset + - FT_GET_USHORT(); - } - - FT_FRAME_EXIT(); - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Load_SBit_Range */ - /* */ - /* <Description> */ - /* Loads a given `EBLC' index/range table. */ - /* */ - /* <Input> */ - /* range :: The target range. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - Load_SBit_Range( TT_SBit_Range range, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - - - switch( range->index_format ) - { - case 1: /* variable metrics with 4-byte offsets */ - case 3: /* variable metrics with 2-byte offsets */ - { - FT_ULong num_glyphs, n; - FT_Int size_elem; - FT_Bool large = FT_BOOL( range->index_format == 1 ); - - - num_glyphs = range->last_glyph - range->first_glyph + 1L; - range->num_glyphs = num_glyphs; - num_glyphs++; /* XXX: BEWARE - see spec */ - - size_elem = large ? 4 : 2; - - if ( FT_NEW_ARRAY( range->glyph_offsets, num_glyphs ) || - FT_FRAME_ENTER( num_glyphs * size_elem ) ) - goto Exit; - - for ( n = 0; n < num_glyphs; n++ ) - range->glyph_offsets[n] = (FT_ULong)( range->image_offset + - ( large ? FT_GET_ULONG() - : FT_GET_USHORT() ) ); - FT_FRAME_EXIT(); - } - break; - - case 2: /* all glyphs have identical metrics */ - error = Load_SBit_Const_Metrics( range, stream ); - break; - - case 4: - error = Load_SBit_Range_Codes( range, stream, 1 ); - break; - - case 5: - error = Load_SBit_Const_Metrics( range, stream ) || - Load_SBit_Range_Codes( range, stream, 0 ); - break; - - default: - error = SFNT_Err_Invalid_File_Format; - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_sbit_strikes */ - /* */ - /* <Description> */ - /* Loads the table of embedded bitmap sizes for this face. */ - /* */ - /* <Input> */ - /* face :: The target face object. */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_sbit_strikes( TT_Face face, - FT_Stream stream ) - { - FT_Error error = 0; - FT_Memory memory = stream->memory; - FT_Fixed version; - FT_ULong num_strikes; - FT_ULong table_base; - - const FT_Frame_Field sbit_line_metrics_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_SBit_LineMetricsRec - - /* no FT_FRAME_START */ - FT_FRAME_CHAR( ascender ), - FT_FRAME_CHAR( descender ), - FT_FRAME_BYTE( max_width ), - - FT_FRAME_CHAR( caret_slope_numerator ), - FT_FRAME_CHAR( caret_slope_denominator ), - FT_FRAME_CHAR( caret_offset ), - - FT_FRAME_CHAR( min_origin_SB ), - FT_FRAME_CHAR( min_advance_SB ), - FT_FRAME_CHAR( max_before_BL ), - FT_FRAME_CHAR( min_after_BL ), - FT_FRAME_CHAR( pads[0] ), - FT_FRAME_CHAR( pads[1] ), - FT_FRAME_END - }; - - const FT_Frame_Field strike_start_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_SBit_StrikeRec - - /* no FT_FRAME_START */ - FT_FRAME_ULONG( ranges_offset ), - FT_FRAME_SKIP_LONG, - FT_FRAME_ULONG( num_ranges ), - FT_FRAME_ULONG( color_ref ), - FT_FRAME_END - }; - - const FT_Frame_Field strike_end_fields[] = - { - /* no FT_FRAME_START */ - FT_FRAME_USHORT( start_glyph ), - FT_FRAME_USHORT( end_glyph ), - FT_FRAME_BYTE ( x_ppem ), - FT_FRAME_BYTE ( y_ppem ), - FT_FRAME_BYTE ( bit_depth ), - FT_FRAME_CHAR ( flags ), - FT_FRAME_END - }; - - - face->num_sbit_strikes = 0; - - /* this table is optional */ - error = face->goto_table( face, TTAG_EBLC, stream, 0 ); - if ( error ) - error = face->goto_table( face, TTAG_bloc, stream, 0 ); - if ( error ) - goto Exit; - - table_base = FT_STREAM_POS(); - if ( FT_FRAME_ENTER( 8L ) ) - goto Exit; - - version = FT_GET_LONG(); - num_strikes = FT_GET_ULONG(); - - FT_FRAME_EXIT(); - - /* check version number and strike count */ - if ( version != 0x00020000L || - num_strikes >= 0x10000L ) - { - FT_ERROR(( "tt_face_load_sbit_strikes: invalid table version!\n" )); - error = SFNT_Err_Invalid_File_Format; - - goto Exit; - } - - /* allocate the strikes table */ - if ( FT_NEW_ARRAY( face->sbit_strikes, num_strikes ) ) - goto Exit; - - face->num_sbit_strikes = num_strikes; - - /* now read each strike table separately */ - { - TT_SBit_Strike strike = face->sbit_strikes; - FT_ULong count = num_strikes; - - - if ( FT_FRAME_ENTER( 48L * num_strikes ) ) - goto Exit; - - while ( count > 0 ) - { - if ( FT_STREAM_READ_FIELDS( strike_start_fields, strike ) || - FT_STREAM_READ_FIELDS( sbit_line_metrics_fields, &strike->hori ) || - FT_STREAM_READ_FIELDS( sbit_line_metrics_fields, &strike->vert ) || - FT_STREAM_READ_FIELDS( strike_end_fields, strike ) ) - break; - - count--; - strike++; - } - - FT_FRAME_EXIT(); - } - - /* allocate the index ranges for each strike table */ - { - TT_SBit_Strike strike = face->sbit_strikes; - FT_ULong count = num_strikes; - - - while ( count > 0 ) - { - TT_SBit_Range range; - FT_ULong count2 = strike->num_ranges; - - - if ( FT_NEW_ARRAY( strike->sbit_ranges, strike->num_ranges ) ) - goto Exit; - - /* read each range */ - if ( FT_STREAM_SEEK( table_base + strike->ranges_offset ) || - FT_FRAME_ENTER( strike->num_ranges * 8L ) ) - goto Exit; - - range = strike->sbit_ranges; - while ( count2 > 0 ) - { - range->first_glyph = FT_GET_USHORT(); - range->last_glyph = FT_GET_USHORT(); - range->table_offset = table_base + strike->ranges_offset + - FT_GET_ULONG(); - count2--; - range++; - } - - FT_FRAME_EXIT(); - - /* Now, read each index table */ - count2 = strike->num_ranges; - range = strike->sbit_ranges; - while ( count2 > 0 ) - { - /* Read the header */ - if ( FT_STREAM_SEEK( range->table_offset ) || - FT_FRAME_ENTER( 8L ) ) - goto Exit; - - range->index_format = FT_GET_USHORT(); - range->image_format = FT_GET_USHORT(); - range->image_offset = FT_GET_ULONG(); - - FT_FRAME_EXIT(); - - error = Load_SBit_Range( range, stream ); - if ( error ) - goto Exit; - - count2--; - range++; - } - - count--; - strike++; - } - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_free_sbit_strikes */ - /* */ - /* <Description> */ - /* Releases the embedded bitmap tables. */ - /* */ - /* <Input> */ - /* face :: The target face object. */ - /* */ - FT_LOCAL_DEF( void ) - tt_face_free_sbit_strikes( TT_Face face ) - { - FT_Memory memory = face->root.memory; - TT_SBit_Strike strike = face->sbit_strikes; - TT_SBit_Strike strike_limit = strike + face->num_sbit_strikes; - - - if ( strike ) - { - for ( ; strike < strike_limit; strike++ ) - { - TT_SBit_Range range = strike->sbit_ranges; - TT_SBit_Range range_limit = range + strike->num_ranges; - - - if ( range ) - { - for ( ; range < range_limit; range++ ) - { - /* release the glyph offsets and codes tables */ - /* where appropriate */ - FT_FREE( range->glyph_offsets ); - FT_FREE( range->glyph_codes ); - } - } - FT_FREE( strike->sbit_ranges ); - strike->num_ranges = 0; - } - FT_FREE( face->sbit_strikes ); - } - face->num_sbit_strikes = 0; - } - - - FT_LOCAL_DEF( FT_Error ) - tt_face_set_sbit_strike( TT_Face face, - FT_UInt x_ppem, - FT_UInt y_ppem, - FT_ULong *astrike_index ) - { - FT_ULong i; - - - if ( x_ppem > 255 || - y_ppem < 1 || y_ppem > 255 ) - return SFNT_Err_Invalid_PPem; - - for ( i = 0; i < face->num_sbit_strikes; i++ ) - { - if ( ( (FT_UInt)face->sbit_strikes[i].y_ppem == y_ppem ) && - ( ( x_ppem == 0 ) || - ( (FT_UInt)face->sbit_strikes[i].x_ppem == x_ppem ) ) ) - { - *astrike_index = i; - return SFNT_Err_Ok; - } - } - - return SFNT_Err_Invalid_PPem; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* find_sbit_range */ - /* */ - /* <Description> */ - /* Scans a given strike's ranges and return, for a given glyph */ - /* index, the corresponding sbit range, and `EBDT' offset. */ - /* */ - /* <Input> */ - /* glyph_index :: The glyph index. */ - /* */ - /* strike :: The source/current sbit strike. */ - /* */ - /* <Output> */ - /* arange :: The sbit range containing the glyph index. */ - /* */ - /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means the glyph index was found. */ - /* */ - static FT_Error - find_sbit_range( FT_UInt glyph_index, - TT_SBit_Strike strike, - TT_SBit_Range *arange, - FT_ULong *aglyph_offset ) - { - TT_SBit_RangeRec *range, *range_limit; - - - /* check whether the glyph index is within this strike's */ - /* glyph range */ - if ( glyph_index < (FT_UInt)strike->start_glyph || - glyph_index > (FT_UInt)strike->end_glyph ) - goto Fail; - - /* scan all ranges in strike */ - range = strike->sbit_ranges; - range_limit = range + strike->num_ranges; - if ( !range ) - goto Fail; - - for ( ; range < range_limit; range++ ) - { - if ( glyph_index >= (FT_UInt)range->first_glyph && - glyph_index <= (FT_UInt)range->last_glyph ) - { - FT_UShort delta = (FT_UShort)( glyph_index - range->first_glyph ); - - - switch ( range->index_format ) - { - case 1: - case 3: - *aglyph_offset = range->glyph_offsets[delta]; - break; - - case 2: - *aglyph_offset = range->image_offset + - range->image_size * delta; - break; - - case 4: - case 5: - { - FT_ULong n; - - - for ( n = 0; n < range->num_glyphs; n++ ) - { - if ( (FT_UInt)range->glyph_codes[n] == glyph_index ) - { - if ( range->index_format == 4 ) - *aglyph_offset = range->glyph_offsets[n]; - else - *aglyph_offset = range->image_offset + - n * range->image_size; - goto Found; - } - } - } - - /* fall-through */ - default: - goto Fail; - } - - Found: - /* return successfully! */ - *arange = range; - return 0; - } - } - - Fail: - *arange = 0; - *aglyph_offset = 0; - - return SFNT_Err_Invalid_Argument; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_find_sbit_image */ - /* */ - /* <Description> */ - /* Checks whether an embedded bitmap (an `sbit') exists for a given */ - /* glyph, at a given strike. */ - /* */ - /* <Input> */ - /* face :: The target face object. */ - /* */ - /* glyph_index :: The glyph index. */ - /* */ - /* strike_index :: The current strike index. */ - /* */ - /* <Output> */ - /* arange :: The SBit range containing the glyph index. */ - /* */ - /* astrike :: The SBit strike containing the glyph index. */ - /* */ - /* aglyph_offset :: The offset of the glyph data in `EBDT' table. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. Returns */ - /* SFNT_Err_Invalid_Argument if no sbit exists for the requested */ - /* glyph. */ - /* */ - FT_LOCAL( FT_Error ) - tt_find_sbit_image( TT_Face face, - FT_UInt glyph_index, - FT_ULong strike_index, - TT_SBit_Range *arange, - TT_SBit_Strike *astrike, - FT_ULong *aglyph_offset ) - { - FT_Error error; - TT_SBit_Strike strike; - - - if ( !face->sbit_strikes || - ( face->num_sbit_strikes <= strike_index ) ) - goto Fail; - - strike = &face->sbit_strikes[strike_index]; - - error = find_sbit_range( glyph_index, strike, - arange, aglyph_offset ); - if ( error ) - goto Fail; - - *astrike = strike; - - return SFNT_Err_Ok; - - Fail: - /* no embedded bitmap for this glyph in face */ - *arange = 0; - *astrike = 0; - *aglyph_offset = 0; - - return SFNT_Err_Invalid_Argument; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_load_sbit_metrics */ - /* */ - /* <Description> */ - /* Gets the big metrics for a given SBit. */ - /* */ - /* <Input> */ - /* stream :: The input stream. */ - /* */ - /* range :: The SBit range containing the glyph. */ - /* */ - /* <Output> */ - /* big_metrics :: A big SBit metrics structure for the glyph. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* The stream cursor must be positioned at the glyph's offset within */ - /* the `EBDT' table before the call. */ - /* */ - /* If the image format uses variable metrics, the stream cursor is */ - /* positioned just after the metrics header in the `EBDT' table on */ - /* function exit. */ - /* */ - FT_LOCAL( FT_Error ) - tt_load_sbit_metrics( FT_Stream stream, - TT_SBit_Range range, - TT_SBit_Metrics metrics ) - { - FT_Error error = SFNT_Err_Ok; - - - switch ( range->image_format ) - { - case 1: - case 2: - case 8: - /* variable small metrics */ - { - TT_SBit_SmallMetricsRec smetrics; - - const FT_Frame_Field sbit_small_metrics_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE TT_SBit_SmallMetricsRec - - FT_FRAME_START( 5 ), - FT_FRAME_BYTE( height ), - FT_FRAME_BYTE( width ), - FT_FRAME_CHAR( bearingX ), - FT_FRAME_CHAR( bearingY ), - FT_FRAME_BYTE( advance ), - FT_FRAME_END - }; - - - /* read small metrics */ - if ( FT_STREAM_READ_FIELDS( sbit_small_metrics_fields, &smetrics ) ) - goto Exit; - - /* convert it to a big metrics */ - metrics->height = smetrics.height; - metrics->width = smetrics.width; - metrics->horiBearingX = smetrics.bearingX; - metrics->horiBearingY = smetrics.bearingY; - metrics->horiAdvance = smetrics.advance; - - /* these metrics are made up at a higher level when */ - /* needed. */ - metrics->vertBearingX = 0; - metrics->vertBearingY = 0; - metrics->vertAdvance = 0; - } - break; - - case 6: - case 7: - case 9: - /* variable big metrics */ - if ( FT_STREAM_READ_FIELDS( sbit_metrics_fields, metrics ) ) - goto Exit; - break; - - case 5: - default: /* constant metrics */ - if ( range->index_format == 2 || range->index_format == 5 ) - *metrics = range->metrics; - else - return SFNT_Err_Invalid_File_Format; - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* crop_bitmap */ - /* */ - /* <Description> */ - /* Crops a bitmap to its tightest bounding box, and adjusts its */ - /* metrics. */ - /* */ - /* <InOut> */ - /* map :: The bitmap. */ - /* */ - /* metrics :: The corresponding metrics structure. */ - /* */ - static void - crop_bitmap( FT_Bitmap* map, - TT_SBit_Metrics metrics ) - { - /***********************************************************************/ - /* */ - /* In this situation, some bounding boxes of embedded bitmaps are too */ - /* large. We need to crop it to a reasonable size. */ - /* */ - /* --------- */ - /* | | ----- */ - /* | *** | |***| */ - /* | * | | * | */ - /* | * | ------> | * | */ - /* | * | | * | */ - /* | * | | * | */ - /* | *** | |***| */ - /* --------- ----- */ - /* */ - /***********************************************************************/ - - FT_Int rows, count; - FT_Long line_len; - FT_Byte* line; - - - /***********************************************************************/ - /* */ - /* first of all, check the top-most lines of the bitmap, and remove */ - /* them if they're empty. */ - /* */ - { - line = (FT_Byte*)map->buffer; - rows = map->rows; - line_len = map->pitch; - - - for ( count = 0; count < rows; count++ ) - { - FT_Byte* cur = line; - FT_Byte* limit = line + line_len; - - - for ( ; cur < limit; cur++ ) - if ( cur[0] ) - goto Found_Top; - - /* the current line was empty - skip to next one */ - line = limit; - } - - Found_Top: - /* check that we have at least one filled line */ - if ( count >= rows ) - goto Empty_Bitmap; - - /* now, crop the empty upper lines */ - if ( count > 0 ) - { - line = (FT_Byte*)map->buffer; - - FT_MEM_MOVE( line, line + count * line_len, - ( rows - count ) * line_len ); - - metrics->height = (FT_Byte)( metrics->height - count ); - metrics->horiBearingY = (FT_Char)( metrics->horiBearingY - count ); - metrics->vertBearingY = (FT_Char)( metrics->vertBearingY - count ); - - map->rows -= count; - rows -= count; - } - } - - /***********************************************************************/ - /* */ - /* second, crop the lower lines */ - /* */ - { - line = (FT_Byte*)map->buffer + ( rows - 1 ) * line_len; - - for ( count = 0; count < rows; count++ ) - { - FT_Byte* cur = line; - FT_Byte* limit = line + line_len; - - - for ( ; cur < limit; cur++ ) - if ( cur[0] ) - goto Found_Bottom; - - /* the current line was empty - skip to previous one */ - line -= line_len; - } - - Found_Bottom: - if ( count > 0 ) - { - metrics->height = (FT_Byte)( metrics->height - count ); - rows -= count; - map->rows -= count; - } - } - - /***********************************************************************/ - /* */ - /* third, get rid of the space on the left side of the glyph */ - /* */ - do - { - FT_Byte* limit; - - - line = (FT_Byte*)map->buffer; - limit = line + rows * line_len; - - for ( ; line < limit; line += line_len ) - if ( line[0] & 0x80 ) - goto Found_Left; - - /* shift the whole glyph one pixel to the left */ - line = (FT_Byte*)map->buffer; - limit = line + rows * line_len; - - for ( ; line < limit; line += line_len ) - { - FT_Int n, width = map->width; - FT_Byte old; - FT_Byte* cur = line; - - - old = (FT_Byte)(cur[0] << 1); - for ( n = 8; n < width; n += 8 ) - { - FT_Byte val; - - - val = cur[1]; - cur[0] = (FT_Byte)( old | ( val >> 7 ) ); - old = (FT_Byte)( val << 1 ); - cur++; - } - cur[0] = old; - } - - map->width--; - metrics->horiBearingX++; - metrics->vertBearingX++; - metrics->width--; - - } while ( map->width > 0 ); - - Found_Left: - - /***********************************************************************/ - /* */ - /* finally, crop the bitmap width to get rid of the space on the right */ - /* side of the glyph. */ - /* */ - do - { - FT_Int right = map->width - 1; - FT_Byte* limit; - FT_Byte mask; - - - line = (FT_Byte*)map->buffer + ( right >> 3 ); - limit = line + rows * line_len; - mask = (FT_Byte)( 0x80 >> ( right & 7 ) ); - - for ( ; line < limit; line += line_len ) - if ( line[0] & mask ) - goto Found_Right; - - /* crop the whole glyph to the right */ - map->width--; - metrics->width--; - - } while ( map->width > 0 ); - - Found_Right: - /* all right, the bitmap was cropped */ - return; - - Empty_Bitmap: - map->width = 0; - map->rows = 0; - map->pitch = 0; - map->pixel_mode = FT_PIXEL_MODE_MONO; - } - - - static FT_Error - Load_SBit_Single( FT_Bitmap* map, - FT_Int x_offset, - FT_Int y_offset, - FT_Int pix_bits, - FT_UShort image_format, - TT_SBit_Metrics metrics, - FT_Stream stream ) - { - FT_Error error; - - - /* check that the source bitmap fits into the target pixmap */ - if ( x_offset < 0 || x_offset + metrics->width > map->width || - y_offset < 0 || y_offset + metrics->height > map->rows ) - { - error = SFNT_Err_Invalid_Argument; - - goto Exit; - } - - { - FT_Int glyph_width = metrics->width; - FT_Int glyph_height = metrics->height; - FT_Int glyph_size; - FT_Int line_bits = pix_bits * glyph_width; - FT_Bool pad_bytes = 0; - - - /* compute size of glyph image */ - switch ( image_format ) - { - case 1: /* byte-padded formats */ - case 6: - { - FT_Int line_length; - - - switch ( pix_bits ) - { - case 1: - line_length = ( glyph_width + 7 ) >> 3; - break; - case 2: - line_length = ( glyph_width + 3 ) >> 2; - break; - case 4: - line_length = ( glyph_width + 1 ) >> 1; - break; - default: - line_length = glyph_width; - } - - glyph_size = glyph_height * line_length; - pad_bytes = 1; - } - break; - - case 2: - case 5: - case 7: - line_bits = glyph_width * pix_bits; - glyph_size = ( glyph_height * line_bits + 7 ) >> 3; - break; - - default: /* invalid format */ - return SFNT_Err_Invalid_File_Format; - } - - /* Now read data and draw glyph into target pixmap */ - if ( FT_FRAME_ENTER( glyph_size ) ) - goto Exit; - - /* don't forget to multiply `x_offset' by `map->pix_bits' as */ - /* the sbit blitter doesn't make a difference between pixmap */ - /* depths. */ - blit_sbit( map, (FT_Byte*)stream->cursor, line_bits, pad_bytes, - x_offset * pix_bits, y_offset ); - - FT_FRAME_EXIT(); - } - - Exit: - return error; - } - - - static FT_Error - Load_SBit_Image( TT_SBit_Strike strike, - TT_SBit_Range range, - FT_ULong ebdt_pos, - FT_ULong glyph_offset, - FT_GlyphSlot slot, - FT_Int x_offset, - FT_Int y_offset, - FT_Stream stream, - TT_SBit_Metrics metrics, - FT_Int depth ) - { - FT_Memory memory = stream->memory; - FT_Bitmap* map = &slot->bitmap; - FT_Error error; - - - /* place stream at beginning of glyph data and read metrics */ - if ( FT_STREAM_SEEK( ebdt_pos + glyph_offset ) ) - goto Exit; - - error = tt_load_sbit_metrics( stream, range, metrics ); - if ( error ) - goto Exit; - - /* This function is recursive. At the top-level call, we */ - /* compute the dimensions of the higher-level glyph to */ - /* allocate the final pixmap buffer. */ - if ( depth == 0 ) - { - FT_Long size; - - - map->width = metrics->width; - map->rows = metrics->height; - - switch ( strike->bit_depth ) - { - case 1: - map->pixel_mode = FT_PIXEL_MODE_MONO; - map->pitch = ( map->width + 7 ) >> 3; - break; - - case 2: - map->pixel_mode = FT_PIXEL_MODE_GRAY2; - map->pitch = ( map->width + 3 ) >> 2; - break; - - case 4: - map->pixel_mode = FT_PIXEL_MODE_GRAY4; - map->pitch = ( map->width + 1 ) >> 1; - break; - - case 8: - map->pixel_mode = FT_PIXEL_MODE_GRAY; - map->pitch = map->width; - break; - - default: - return SFNT_Err_Invalid_File_Format; - } - - size = map->rows * map->pitch; - - /* check that there is no empty image */ - if ( size == 0 ) - goto Exit; /* exit successfully! */ - - error = ft_glyphslot_alloc_bitmap( slot, size ); - if (error) - goto Exit; - } - - switch ( range->image_format ) - { - case 1: /* single sbit image - load it */ - case 2: - case 5: - case 6: - case 7: - return Load_SBit_Single( map, x_offset, y_offset, strike->bit_depth, - range->image_format, metrics, stream ); - - case 8: /* compound format */ - FT_Stream_Skip( stream, 1L ); - /* fallthrough */ - - case 9: - break; - - default: /* invalid image format */ - return SFNT_Err_Invalid_File_Format; - } - - /* All right, we have a compound format. First of all, read */ - /* the array of elements. */ - { - TT_SBit_Component components; - TT_SBit_Component comp; - FT_UShort num_components, count; - - - if ( FT_READ_USHORT( num_components ) || - FT_NEW_ARRAY( components, num_components ) ) - goto Exit; - - count = num_components; - - if ( FT_FRAME_ENTER( 4L * num_components ) ) - goto Fail_Memory; - - for ( comp = components; count > 0; count--, comp++ ) - { - comp->glyph_code = FT_GET_USHORT(); - comp->x_offset = FT_GET_CHAR(); - comp->y_offset = FT_GET_CHAR(); - } - - FT_FRAME_EXIT(); - - /* Now recursively load each element glyph */ - count = num_components; - comp = components; - for ( ; count > 0; count--, comp++ ) - { - TT_SBit_Range elem_range; - TT_SBit_MetricsRec elem_metrics; - FT_ULong elem_offset; - - - /* find the range for this element */ - error = find_sbit_range( comp->glyph_code, - strike, - &elem_range, - &elem_offset ); - if ( error ) - goto Fail_Memory; - - /* now load the element, recursively */ - error = Load_SBit_Image( strike, - elem_range, - ebdt_pos, - elem_offset, - slot, - x_offset + comp->x_offset, - y_offset + comp->y_offset, - stream, - &elem_metrics, - depth + 1 ); - if ( error ) - goto Fail_Memory; - } - - Fail_Memory: - FT_FREE( components ); - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_sbit_image */ - /* */ - /* <Description> */ - /* Loads a given glyph sbit image from the font resource. This also */ - /* returns its metrics. */ - /* */ - /* <Input> */ - /* face :: The target face object. */ - /* */ - /* strike_index :: The current strike index. */ - /* */ - /* glyph_index :: The current glyph index. */ - /* */ - /* load_flags :: The glyph load flags (the code checks for the flag */ - /* FT_LOAD_CROP_BITMAP). */ - /* */ - /* stream :: The input stream. */ - /* */ - /* <Output> */ - /* map :: The target pixmap. */ - /* */ - /* metrics :: A big sbit metrics structure for the glyph image. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. Returns an error if no */ - /* glyph sbit exists for the index. */ - /* */ - /* <Note> */ - /* The `map.buffer' field is always freed before the glyph is loaded. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_sbit_image( TT_Face face, - FT_ULong strike_index, - FT_UInt glyph_index, - FT_UInt load_flags, - FT_Stream stream, - FT_Bitmap *map, - TT_SBit_MetricsRec *metrics ) - { - FT_Error error; - FT_ULong ebdt_pos, glyph_offset; - - TT_SBit_Strike strike; - TT_SBit_Range range; - - - /* Check whether there is a glyph sbit for the current index */ - error = tt_find_sbit_image( face, glyph_index, strike_index, - &range, &strike, &glyph_offset ); - if ( error ) - goto Exit; - - /* now, find the location of the `EBDT' table in */ - /* the font file */ - error = face->goto_table( face, TTAG_EBDT, stream, 0 ); - if ( error ) - error = face->goto_table( face, TTAG_bdat, stream, 0 ); - if (error) - goto Exit; - - ebdt_pos = FT_STREAM_POS(); - - error = Load_SBit_Image( strike, range, ebdt_pos, glyph_offset, - face->root.glyph, 0, 0, stream, metrics, 0 ); - if ( error ) - goto Exit; - - /* setup vertical metrics if needed */ - if ( strike->flags & 1 ) - { - /* in case of a horizontal strike only */ - FT_Int advance; - - - advance = strike->hori.ascender - strike->hori.descender; - - /* some heuristic values */ - - metrics->vertBearingX = (FT_Char)(-metrics->width / 2 ); - metrics->vertBearingY = (FT_Char)( advance / 10 ); - metrics->vertAdvance = (FT_Char)( advance * 12 / 10 ); - } - - /* Crop the bitmap now, unless specified otherwise */ - if ( load_flags & FT_LOAD_CROP_BITMAP ) - crop_bitmap( map, metrics ); - - Exit: - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/sfnt/ttsbit.h b/nx-X11/extras/freetype2/src/sfnt/ttsbit.h deleted file mode 100644 index f1b63b7ec..000000000 --- a/nx-X11/extras/freetype2/src/sfnt/ttsbit.h +++ /dev/null @@ -1,72 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttsbit.h */ -/* */ -/* TrueType and OpenType embedded bitmap support (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTSBIT_H__ -#define __TTSBIT_H__ - - -#include <ft2build.h> -#include "ttload.h" - - -FT_BEGIN_HEADER - - - FT_LOCAL( FT_Error ) - tt_face_load_sbit_strikes( TT_Face face, - FT_Stream stream ); - - FT_LOCAL( void ) - tt_face_free_sbit_strikes( TT_Face face ); - - - FT_LOCAL( FT_Error ) - tt_face_set_sbit_strike( TT_Face face, - FT_UInt x_ppem, - FT_UInt y_ppem, - FT_ULong *astrike_index ); - - FT_LOCAL( FT_Error ) - tt_find_sbit_image( TT_Face face, - FT_UInt glyph_index, - FT_ULong strike_index, - TT_SBit_Range *arange, - TT_SBit_Strike *astrike, - FT_ULong *aglyph_offset ); - - FT_LOCAL( FT_Error ) - tt_load_sbit_metrics( FT_Stream stream, - TT_SBit_Range range, - TT_SBit_Metrics metrics ); - - FT_LOCAL( FT_Error ) - tt_face_load_sbit_image( TT_Face face, - FT_ULong strike_index, - FT_UInt glyph_index, - FT_UInt load_flags, - FT_Stream stream, - FT_Bitmap *map, - TT_SBit_MetricsRec *metrics ); - - -FT_END_HEADER - -#endif /* __TTSBIT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/smooth/Jamfile b/nx-X11/extras/freetype2/src/smooth/Jamfile deleted file mode 100644 index 5ab9b60c7..000000000 --- a/nx-X11/extras/freetype2/src/smooth/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/smooth Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) smooth ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ftgrays ftsmooth ; - } - else - { - _sources = smooth ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/smooth Jamfile diff --git a/nx-X11/extras/freetype2/src/smooth/descrip.mms b/nx-X11/extras/freetype2/src/smooth/descrip.mms deleted file mode 100644 index 9ebc7ff22..000000000 --- a/nx-X11/extras/freetype2/src/smooth/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 smooth renderer module compilation rules for VMS -# - - -# Copyright 2001 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.smooth]) - -OBJS=smooth.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/smooth/ftgrays.c b/nx-X11/extras/freetype2/src/smooth/ftgrays.c deleted file mode 100644 index 499cc8cb5..000000000 --- a/nx-X11/extras/freetype2/src/smooth/ftgrays.c +++ /dev/null @@ -1,2159 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgrays.c */ -/* */ -/* A new `perfect' anti-aliasing renderer (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - /*************************************************************************/ - /* */ - /* This file can be compiled without the rest of the FreeType engine, by */ - /* defining the _STANDALONE_ macro when compiling it. You also need to */ - /* put the files `ftgrays.h' and `ftimage.h' into the current */ - /* compilation directory. Typically, you could do something like */ - /* */ - /* - copy `src/smooth/ftgrays.c' (this file) to your current directory */ - /* */ - /* - copy `include/freetype/ftimage.h' and `src/smooth/ftgrays.h' to the */ - /* same directory */ - /* */ - /* - compile `ftgrays' with the _STANDALONE_ macro defined, as in */ - /* */ - /* cc -c -D_STANDALONE_ ftgrays.c */ - /* */ - /* The renderer can be initialized with a call to */ - /* `ft_gray_raster.raster_new'; an anti-aliased bitmap can be generated */ - /* with a call to `ft_gray_raster.raster_render'. */ - /* */ - /* See the comments and documentation in the file `ftimage.h' for more */ - /* details on how the raster works. */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* This is a new anti-aliasing scan-converter for FreeType 2. The */ - /* algorithm used here is _very_ different from the one in the standard */ - /* `ftraster' module. Actually, `ftgrays' computes the _exact_ */ - /* coverage of the outline on each pixel cell. */ - /* */ - /* It is based on ideas that I initially found in Raph Levien's */ - /* excellent LibArt graphics library (see http://www.levien.com/libart */ - /* for more information, though the web pages do not tell anything */ - /* about the renderer; you'll have to dive into the source code to */ - /* understand how it works). */ - /* */ - /* Note, however, that this is a _very_ different implementation */ - /* compared to Raph's. Coverage information is stored in a very */ - /* different way, and I don't use sorted vector paths. Also, it doesn't */ - /* use floating point values. */ - /* */ - /* This renderer has the following advantages: */ - /* */ - /* - It doesn't need an intermediate bitmap. Instead, one can supply a */ - /* callback function that will be called by the renderer to draw gray */ - /* spans on any target surface. You can thus do direct composition on */ - /* any kind of bitmap, provided that you give the renderer the right */ - /* callback. */ - /* */ - /* - A perfect anti-aliaser, i.e., it computes the _exact_ coverage on */ - /* each pixel cell. */ - /* */ - /* - It performs a single pass on the outline (the `standard' FT2 */ - /* renderer makes two passes). */ - /* */ - /* - It can easily be modified to render to _any_ number of gray levels */ - /* cheaply. */ - /* */ - /* - For small (< 20) pixel sizes, it is faster than the standard */ - /* renderer. */ - /* */ - /*************************************************************************/ - - - -/* experimental support for gamma correction within the rasterizer */ -#define xxxGRAYS_USE_GAMMA - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_smooth - - -#define ErrRaster_MemoryOverflow -4 - - -#ifdef _STANDALONE_ - -#include <string.h> /* for ft_memcpy() */ -#include <setjmp.h> -#include <limits.h> -#define FT_UINT_MAX UINT_MAX - -#define ft_memset memset - -#define ft_setjmp setjmp -#define ft_longjmp longjmp -#define ft_jmp_buf jmp_buf - - -#define ErrRaster_Invalid_Mode -2 -#define ErrRaster_Invalid_Outline -1 - -#define FT_BEGIN_HEADER -#define FT_END_HEADER - -#include "ftimage.h" -#include "ftgrays.h" - - /* This macro is used to indicate that a function parameter is unused. */ - /* Its purpose is simply to reduce compiler warnings. Note also that */ - /* simply defining it as `(void)x' doesn't avoid warnings with certain */ - /* ANSI compilers (e.g. LCC). */ -#define FT_UNUSED( x ) (x) = (x) - - /* Disable the tracing mechanism for simplicity -- developers can */ - /* activate it easily by redefining these two macros. */ -#ifndef FT_ERROR -#define FT_ERROR( x ) do ; while ( 0 ) /* nothing */ -#endif - -#ifndef FT_TRACE -#define FT_TRACE( x ) do ; while ( 0 ) /* nothing */ -#endif - - -#else /* _STANDALONE_ */ - - -#include <ft2build.h> -#include "ftgrays.h" -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_OUTLINE_H - -#include "ftsmerrs.h" - -#define ErrRaster_Invalid_Mode Smooth_Err_Cannot_Render_Glyph -#define ErrRaster_Invalid_Outline Smooth_Err_Invalid_Outline - - -#endif /* _STANDALONE_ */ - - -#ifndef FT_MEM_SET -#define FT_MEM_SET( d, s, c ) ft_memset( d, s, c ) -#endif - -#ifndef FT_MEM_ZERO -#define FT_MEM_ZERO( dest, count ) FT_MEM_SET( dest, 0, count ) -#endif - - /* define this to dump debugging information */ -#define xxxDEBUG_GRAYS - - /* as usual, for the speed hungry :-) */ - -#ifndef FT_STATIC_RASTER - - -#define RAS_ARG PRaster raster -#define RAS_ARG_ PRaster raster, - -#define RAS_VAR raster -#define RAS_VAR_ raster, - -#define ras (*raster) - - -#else /* FT_STATIC_RASTER */ - - -#define RAS_ARG /* empty */ -#define RAS_ARG_ /* empty */ -#define RAS_VAR /* empty */ -#define RAS_VAR_ /* empty */ - - static TRaster ras; - - -#endif /* FT_STATIC_RASTER */ - - - /* must be at least 6 bits! */ -#define PIXEL_BITS 8 - -#define ONE_PIXEL ( 1L << PIXEL_BITS ) -#define PIXEL_MASK ( -1L << PIXEL_BITS ) -#define TRUNC( x ) ( (TCoord)((x) >> PIXEL_BITS) ) -#define SUBPIXELS( x ) ( (TPos)(x) << PIXEL_BITS ) -#define FLOOR( x ) ( (x) & -ONE_PIXEL ) -#define CEILING( x ) ( ( (x) + ONE_PIXEL - 1 ) & -ONE_PIXEL ) -#define ROUND( x ) ( ( (x) + ONE_PIXEL / 2 ) & -ONE_PIXEL ) - -#if PIXEL_BITS >= 6 -#define UPSCALE( x ) ( (x) << ( PIXEL_BITS - 6 ) ) -#define DOWNSCALE( x ) ( (x) >> ( PIXEL_BITS - 6 ) ) -#else -#define UPSCALE( x ) ( (x) >> ( 6 - PIXEL_BITS ) ) -#define DOWNSCALE( x ) ( (x) << ( 6 - PIXEL_BITS ) ) -#endif - - /* Define this if you want to use a more compact storage scheme. This */ - /* increases the number of cells available in the render pool but slows */ - /* down the rendering a bit. It is useful if you have a really tiny */ - /* render pool. */ -#undef GRAYS_COMPACT - - - /*************************************************************************/ - /* */ - /* TYPE DEFINITIONS */ - /* */ - - /* don't change the following types to FT_Int or FT_Pos, since we might */ - /* need to define them to "float" or "double" when experimenting with */ - /* new algorithms */ - - typedef int TCoord; /* integer scanline/pixel coordinate */ - typedef long TPos; /* sub-pixel coordinate */ - - /* determine the type used to store cell areas. This normally takes at */ - /* least PIXEL_BYTES*2 + 1. On 16-bit systems, we need to use `long' */ - /* instead of `int', otherwise bad things happen */ - -#if PIXEL_BITS <= 7 - - typedef int TArea; - -#else /* PIXEL_BITS >= 8 */ - - /* approximately determine the size of integers using an ANSI-C header */ -#if FT_UINT_MAX == 0xFFFFU - typedef long TArea; -#else - typedef int TArea; -#endif - -#endif /* PIXEL_BITS >= 8 */ - - - /* maximal number of gray spans in a call to the span callback */ -#define FT_MAX_GRAY_SPANS 32 - - -#ifdef GRAYS_COMPACT - - typedef struct TCell_ - { - short x : 14; - short y : 14; - int cover : PIXEL_BITS + 2; - int area : PIXEL_BITS * 2 + 2; - - } TCell, *PCell; - -#else /* GRAYS_COMPACT */ - - typedef struct TCell_ - { - TCoord x; - TCoord y; - int cover; - TArea area; - - } TCell, *PCell; - -#endif /* GRAYS_COMPACT */ - - - typedef struct TRaster_ - { - PCell cells; - int max_cells; - int num_cells; - - TPos min_ex, max_ex; - TPos min_ey, max_ey; - - TArea area; - int cover; - int invalid; - - TCoord ex, ey; - TCoord cx, cy; - TPos x, y; - - TPos last_ey; - - FT_Vector bez_stack[32 * 3 + 1]; - int lev_stack[32]; - - FT_Outline outline; - FT_Bitmap target; - FT_BBox clip_box; - - FT_Span gray_spans[FT_MAX_GRAY_SPANS]; - int num_gray_spans; - - FT_Raster_Span_Func render_span; - void* render_span_data; - int span_y; - - int band_size; - int band_shoot; - int conic_level; - int cubic_level; - - void* memory; - ft_jmp_buf jump_buffer; - -#ifdef GRAYS_USE_GAMMA - unsigned char gamma[257]; -#endif - - } TRaster, *PRaster; - - - /*************************************************************************/ - /* */ - /* Initialize the cells table. */ - /* */ - static void - gray_init_cells( RAS_ARG_ void* buffer, - long byte_size ) - { - ras.cells = (PCell)buffer; - ras.max_cells = (int)( byte_size / sizeof ( TCell ) ); - ras.num_cells = 0; - ras.area = 0; - ras.cover = 0; - ras.invalid = 1; - } - - - /*************************************************************************/ - /* */ - /* Compute the outline bounding box. */ - /* */ - static void - gray_compute_cbox( RAS_ARG ) - { - FT_Outline* outline = &ras.outline; - FT_Vector* vec = outline->points; - FT_Vector* limit = vec + outline->n_points; - - - if ( outline->n_points <= 0 ) - { - ras.min_ex = ras.max_ex = 0; - ras.min_ey = ras.max_ey = 0; - return; - } - - ras.min_ex = ras.max_ex = vec->x; - ras.min_ey = ras.max_ey = vec->y; - - vec++; - - for ( ; vec < limit; vec++ ) - { - TPos x = vec->x; - TPos y = vec->y; - - - if ( x < ras.min_ex ) ras.min_ex = x; - if ( x > ras.max_ex ) ras.max_ex = x; - if ( y < ras.min_ey ) ras.min_ey = y; - if ( y > ras.max_ey ) ras.max_ey = y; - } - - /* truncate the bounding box to integer pixels */ - ras.min_ex = ras.min_ex >> 6; - ras.min_ey = ras.min_ey >> 6; - ras.max_ex = ( ras.max_ex + 63 ) >> 6; - ras.max_ey = ( ras.max_ey + 63 ) >> 6; - } - - - /*************************************************************************/ - /* */ - /* Record the current cell in the table. */ - /* */ - static void - gray_record_cell( RAS_ARG ) - { - PCell cell; - - - if ( !ras.invalid && ( ras.area | ras.cover ) ) - { - if ( ras.num_cells >= ras.max_cells ) - ft_longjmp( ras.jump_buffer, 1 ); - - cell = ras.cells + ras.num_cells++; - cell->x = (TCoord)(ras.ex - ras.min_ex); - cell->y = (TCoord)(ras.ey - ras.min_ey); - cell->area = ras.area; - cell->cover = ras.cover; - } - } - - - /*************************************************************************/ - /* */ - /* Set the current cell to a new position. */ - /* */ - static void - gray_set_cell( RAS_ARG_ TCoord ex, - TCoord ey ) - { - int invalid, record, clean; - - - /* Move the cell pointer to a new position. We set the `invalid' */ - /* flag to indicate that the cell isn't part of those we're interested */ - /* in during the render phase. This means that: */ - /* */ - /* . the new vertical position must be within min_ey..max_ey-1. */ - /* . the new horizontal position must be strictly less than max_ex */ - /* */ - /* Note that if a cell is to the left of the clipping region, it is */ - /* actually set to the (min_ex-1) horizontal position. */ - - record = 0; - clean = 1; - - invalid = ( ey < ras.min_ey || ey >= ras.max_ey || ex >= ras.max_ex ); - if ( !invalid ) - { - /* All cells that are on the left of the clipping region go to the */ - /* min_ex - 1 horizontal position. */ - if ( ex < ras.min_ex ) - ex = (TCoord)(ras.min_ex - 1); - - /* if our position is new, then record the previous cell */ - if ( ex != ras.ex || ey != ras.ey ) - record = 1; - else - clean = ras.invalid; /* do not clean if we didn't move from */ - /* a valid cell */ - } - - /* record the previous cell if needed (i.e., if we changed the cell */ - /* position, of changed the `invalid' flag) */ - if ( ras.invalid != invalid || record ) - gray_record_cell( RAS_VAR ); - - if ( clean ) - { - ras.area = 0; - ras.cover = 0; - } - - ras.invalid = invalid; - ras.ex = ex; - ras.ey = ey; - } - - - /*************************************************************************/ - /* */ - /* Start a new contour at a given cell. */ - /* */ - static void - gray_start_cell( RAS_ARG_ TCoord ex, - TCoord ey ) - { - if ( ex < ras.min_ex ) - ex = (TCoord)(ras.min_ex - 1); - - ras.area = 0; - ras.cover = 0; - ras.ex = ex; - ras.ey = ey; - ras.last_ey = SUBPIXELS( ey ); - ras.invalid = 0; - - gray_set_cell( RAS_VAR_ ex, ey ); - } - - - /*************************************************************************/ - /* */ - /* Render a scanline as one or more cells. */ - /* */ - static void - gray_render_scanline( RAS_ARG_ TCoord ey, - TPos x1, - TCoord y1, - TPos x2, - TCoord y2 ) - { - TCoord ex1, ex2, fx1, fx2, delta; - long p, first, dx; - int incr, lift, mod, rem; - - - dx = x2 - x1; - - ex1 = TRUNC( x1 ); /* if (ex1 >= ras.max_ex) ex1 = ras.max_ex-1; */ - ex2 = TRUNC( x2 ); /* if (ex2 >= ras.max_ex) ex2 = ras.max_ex-1; */ - fx1 = (TCoord)( x1 - SUBPIXELS( ex1 ) ); - fx2 = (TCoord)( x2 - SUBPIXELS( ex2 ) ); - - /* trivial case. Happens often */ - if ( y1 == y2 ) - { - gray_set_cell( RAS_VAR_ ex2, ey ); - return; - } - - /* everything is located in a single cell. That is easy! */ - /* */ - if ( ex1 == ex2 ) - { - delta = y2 - y1; - ras.area += (TArea)( fx1 + fx2 ) * delta; - ras.cover += delta; - return; - } - - /* ok, we'll have to render a run of adjacent cells on the same */ - /* scanline... */ - /* */ - p = ( ONE_PIXEL - fx1 ) * ( y2 - y1 ); - first = ONE_PIXEL; - incr = 1; - - if ( dx < 0 ) - { - p = fx1 * ( y2 - y1 ); - first = 0; - incr = -1; - dx = -dx; - } - - delta = (TCoord)( p / dx ); - mod = (TCoord)( p % dx ); - if ( mod < 0 ) - { - delta--; - mod += (TCoord)dx; - } - - ras.area += (TArea)( fx1 + first ) * delta; - ras.cover += delta; - - ex1 += incr; - gray_set_cell( RAS_VAR_ ex1, ey ); - y1 += delta; - - if ( ex1 != ex2 ) - { - p = ONE_PIXEL * ( y2 - y1 + delta ); - lift = (TCoord)( p / dx ); - rem = (TCoord)( p % dx ); - if ( rem < 0 ) - { - lift--; - rem += (TCoord)dx; - } - - mod -= (int)dx; - - while ( ex1 != ex2 ) - { - delta = lift; - mod += rem; - if ( mod >= 0 ) - { - mod -= (TCoord)dx; - delta++; - } - - ras.area += (TArea)ONE_PIXEL * delta; - ras.cover += delta; - y1 += delta; - ex1 += incr; - gray_set_cell( RAS_VAR_ ex1, ey ); - } - } - - delta = y2 - y1; - ras.area += (TArea)( fx2 + ONE_PIXEL - first ) * delta; - ras.cover += delta; - } - - - /*************************************************************************/ - /* */ - /* Render a given line as a series of scanlines. */ - /* */ - static void - gray_render_line( RAS_ARG_ TPos to_x, - TPos to_y ) - { - TCoord ey1, ey2, fy1, fy2; - TPos dx, dy, x, x2; - long p, first; - int delta, rem, mod, lift, incr; - - - ey1 = TRUNC( ras.last_ey ); - ey2 = TRUNC( to_y ); /* if (ey2 >= ras.max_ey) ey2 = ras.max_ey-1; */ - fy1 = (TCoord)( ras.y - ras.last_ey ); - fy2 = (TCoord)( to_y - SUBPIXELS( ey2 ) ); - - dx = to_x - ras.x; - dy = to_y - ras.y; - - /* XXX: we should do something about the trivial case where dx == 0, */ - /* as it happens very often! */ - - /* perform vertical clipping */ - { - TCoord min, max; - - - min = ey1; - max = ey2; - if ( ey1 > ey2 ) - { - min = ey2; - max = ey1; - } - if ( min >= ras.max_ey || max < ras.min_ey ) - goto End; - } - - /* everything is on a single scanline */ - if ( ey1 == ey2 ) - { - gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, to_x, fy2 ); - goto End; - } - - /* vertical line - avoid calling gray_render_scanline */ - incr = 1; - - if ( dx == 0 ) - { - TCoord ex = TRUNC( ras.x ); - TCoord two_fx = (TCoord)( ( ras.x - SUBPIXELS( ex ) ) << 1 ); - TPos area; - - - first = ONE_PIXEL; - if ( dy < 0 ) - { - first = 0; - incr = -1; - } - - delta = (int)( first - fy1 ); - ras.area += (TArea)two_fx * delta; - ras.cover += delta; - ey1 += incr; - - gray_set_cell( raster, ex, ey1 ); - - delta = (int)( first + first - ONE_PIXEL ); - area = (TArea)two_fx * delta; - while ( ey1 != ey2 ) - { - ras.area += area; - ras.cover += delta; - ey1 += incr; - gray_set_cell( raster, ex, ey1 ); - } - - delta = (int)( fy2 - ONE_PIXEL + first ); - ras.area += (TArea)two_fx * delta; - ras.cover += delta; - goto End; - } - - /* ok, we have to render several scanlines */ - p = ( ONE_PIXEL - fy1 ) * dx; - first = ONE_PIXEL; - incr = 1; - - if ( dy < 0 ) - { - p = fy1 * dx; - first = 0; - incr = -1; - dy = -dy; - } - - delta = (int)( p / dy ); - mod = (int)( p % dy ); - if ( mod < 0 ) - { - delta--; - mod += (TCoord)dy; - } - - x = ras.x + delta; - gray_render_scanline( RAS_VAR_ ey1, ras.x, fy1, x, (TCoord)first ); - - ey1 += incr; - gray_set_cell( RAS_VAR_ TRUNC( x ), ey1 ); - - if ( ey1 != ey2 ) - { - p = ONE_PIXEL * dx; - lift = (int)( p / dy ); - rem = (int)( p % dy ); - if ( rem < 0 ) - { - lift--; - rem += (int)dy; - } - mod -= (int)dy; - - while ( ey1 != ey2 ) - { - delta = lift; - mod += rem; - if ( mod >= 0 ) - { - mod -= (int)dy; - delta++; - } - - x2 = x + delta; - gray_render_scanline( RAS_VAR_ ey1, x, - (TCoord)( ONE_PIXEL - first ), x2, - (TCoord)first ); - x = x2; - - ey1 += incr; - gray_set_cell( RAS_VAR_ TRUNC( x ), ey1 ); - } - } - - gray_render_scanline( RAS_VAR_ ey1, x, - (TCoord)( ONE_PIXEL - first ), to_x, - fy2 ); - - End: - ras.x = to_x; - ras.y = to_y; - ras.last_ey = SUBPIXELS( ey2 ); - } - - - static void - gray_split_conic( FT_Vector* base ) - { - TPos a, b; - - - base[4].x = base[2].x; - b = base[1].x; - a = base[3].x = ( base[2].x + b ) / 2; - b = base[1].x = ( base[0].x + b ) / 2; - base[2].x = ( a + b ) / 2; - - base[4].y = base[2].y; - b = base[1].y; - a = base[3].y = ( base[2].y + b ) / 2; - b = base[1].y = ( base[0].y + b ) / 2; - base[2].y = ( a + b ) / 2; - } - - - static void - gray_render_conic( RAS_ARG_ FT_Vector* control, - FT_Vector* to ) - { - TPos dx, dy; - int top, level; - int* levels; - FT_Vector* arc; - - - dx = DOWNSCALE( ras.x ) + to->x - ( control->x << 1 ); - if ( dx < 0 ) - dx = -dx; - dy = DOWNSCALE( ras.y ) + to->y - ( control->y << 1 ); - if ( dy < 0 ) - dy = -dy; - if ( dx < dy ) - dx = dy; - - level = 1; - dx = dx / ras.conic_level; - while ( dx > 0 ) - { - dx >>= 2; - level++; - } - - /* a shortcut to speed things up */ - if ( level <= 1 ) - { - /* we compute the mid-point directly in order to avoid */ - /* calling gray_split_conic() */ - TPos to_x, to_y, mid_x, mid_y; - - - to_x = UPSCALE( to->x ); - to_y = UPSCALE( to->y ); - mid_x = ( ras.x + to_x + 2 * UPSCALE( control->x ) ) / 4; - mid_y = ( ras.y + to_y + 2 * UPSCALE( control->y ) ) / 4; - - gray_render_line( RAS_VAR_ mid_x, mid_y ); - gray_render_line( RAS_VAR_ to_x, to_y ); - return; - } - - arc = ras.bez_stack; - levels = ras.lev_stack; - top = 0; - levels[0] = level; - - arc[0].x = UPSCALE( to->x ); - arc[0].y = UPSCALE( to->y ); - arc[1].x = UPSCALE( control->x ); - arc[1].y = UPSCALE( control->y ); - arc[2].x = ras.x; - arc[2].y = ras.y; - - while ( top >= 0 ) - { - level = levels[top]; - if ( level > 1 ) - { - /* check that the arc crosses the current band */ - TPos min, max, y; - - - min = max = arc[0].y; - - y = arc[1].y; - if ( y < min ) min = y; - if ( y > max ) max = y; - - y = arc[2].y; - if ( y < min ) min = y; - if ( y > max ) max = y; - - if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < ras.min_ey ) - goto Draw; - - gray_split_conic( arc ); - arc += 2; - top++; - levels[top] = levels[top - 1] = level - 1; - continue; - } - - Draw: - { - TPos to_x, to_y, mid_x, mid_y; - - - to_x = arc[0].x; - to_y = arc[0].y; - mid_x = ( ras.x + to_x + 2 * arc[1].x ) / 4; - mid_y = ( ras.y + to_y + 2 * arc[1].y ) / 4; - - gray_render_line( RAS_VAR_ mid_x, mid_y ); - gray_render_line( RAS_VAR_ to_x, to_y ); - - top--; - arc -= 2; - } - } - return; - } - - - static void - gray_split_cubic( FT_Vector* base ) - { - TPos a, b, c, d; - - - base[6].x = base[3].x; - c = base[1].x; - d = base[2].x; - base[1].x = a = ( base[0].x + c ) / 2; - base[5].x = b = ( base[3].x + d ) / 2; - c = ( c + d ) / 2; - base[2].x = a = ( a + c ) / 2; - base[4].x = b = ( b + c ) / 2; - base[3].x = ( a + b ) / 2; - - base[6].y = base[3].y; - c = base[1].y; - d = base[2].y; - base[1].y = a = ( base[0].y + c ) / 2; - base[5].y = b = ( base[3].y + d ) / 2; - c = ( c + d ) / 2; - base[2].y = a = ( a + c ) / 2; - base[4].y = b = ( b + c ) / 2; - base[3].y = ( a + b ) / 2; - } - - - static void - gray_render_cubic( RAS_ARG_ FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to ) - { - TPos dx, dy, da, db; - int top, level; - int* levels; - FT_Vector* arc; - - - dx = DOWNSCALE( ras.x ) + to->x - ( control1->x << 1 ); - if ( dx < 0 ) - dx = -dx; - dy = DOWNSCALE( ras.y ) + to->y - ( control1->y << 1 ); - if ( dy < 0 ) - dy = -dy; - if ( dx < dy ) - dx = dy; - da = dx; - - dx = DOWNSCALE( ras.x ) + to->x - 3 * ( control1->x + control2->x ); - if ( dx < 0 ) - dx = -dx; - dy = DOWNSCALE( ras.y ) + to->y - 3 * ( control1->x + control2->y ); - if ( dy < 0 ) - dy = -dy; - if ( dx < dy ) - dx = dy; - db = dx; - - level = 1; - da = da / ras.cubic_level; - db = db / ras.conic_level; - while ( da > 0 || db > 0 ) - { - da >>= 2; - db >>= 3; - level++; - } - - if ( level <= 1 ) - { - TPos to_x, to_y, mid_x, mid_y; - - - to_x = UPSCALE( to->x ); - to_y = UPSCALE( to->y ); - mid_x = ( ras.x + to_x + - 3 * UPSCALE( control1->x + control2->x ) ) / 8; - mid_y = ( ras.y + to_y + - 3 * UPSCALE( control1->y + control2->y ) ) / 8; - - gray_render_line( RAS_VAR_ mid_x, mid_y ); - gray_render_line( RAS_VAR_ to_x, to_y ); - return; - } - - arc = ras.bez_stack; - arc[0].x = UPSCALE( to->x ); - arc[0].y = UPSCALE( to->y ); - arc[1].x = UPSCALE( control2->x ); - arc[1].y = UPSCALE( control2->y ); - arc[2].x = UPSCALE( control1->x ); - arc[2].y = UPSCALE( control1->y ); - arc[3].x = ras.x; - arc[3].y = ras.y; - - levels = ras.lev_stack; - top = 0; - levels[0] = level; - - while ( top >= 0 ) - { - level = levels[top]; - if ( level > 1 ) - { - /* check that the arc crosses the current band */ - TPos min, max, y; - - - min = max = arc[0].y; - y = arc[1].y; - if ( y < min ) min = y; - if ( y > max ) max = y; - y = arc[2].y; - if ( y < min ) min = y; - if ( y > max ) max = y; - y = arc[3].y; - if ( y < min ) min = y; - if ( y > max ) max = y; - if ( TRUNC( min ) >= ras.max_ey || TRUNC( max ) < 0 ) - goto Draw; - gray_split_cubic( arc ); - arc += 3; - top ++; - levels[top] = levels[top - 1] = level - 1; - continue; - } - - Draw: - { - TPos to_x, to_y, mid_x, mid_y; - - - to_x = arc[0].x; - to_y = arc[0].y; - mid_x = ( ras.x + to_x + 3 * ( arc[1].x + arc[2].x ) ) / 8; - mid_y = ( ras.y + to_y + 3 * ( arc[1].y + arc[2].y ) ) / 8; - - gray_render_line( RAS_VAR_ mid_x, mid_y ); - gray_render_line( RAS_VAR_ to_x, to_y ); - top --; - arc -= 3; - } - } - return; - } - - - /* a macro comparing two cell pointers. Returns true if a <= b. */ -#if 1 - -#define PACK( a ) ( ( (long)(a)->y << 16 ) + (a)->x ) -#define LESS_THAN( a, b ) ( PACK( a ) < PACK( b ) ) - -#else /* 1 */ - -#define LESS_THAN( a, b ) ( (a)->y < (b)->y || \ - ( (a)->y == (b)->y && (a)->x < (b)->x ) ) - -#endif /* 1 */ - -#define SWAP_CELLS( a, b, temp ) do \ - { \ - temp = *(a); \ - *(a) = *(b); \ - *(b) = temp; \ - } while ( 0 ) -#define DEBUG_SORT -#define QUICK_SORT - -#ifdef SHELL_SORT - - /* a simple shell sort algorithm that works directly on our */ - /* cells table */ - static void - gray_shell_sort ( PCell cells, - int count ) - { - PCell i, j, limit = cells + count; - TCell temp; - int gap; - - - /* compute initial gap */ - for ( gap = 0; ++gap < count; gap *= 3 ) - ; - - while ( gap /= 3 ) - { - for ( i = cells + gap; i < limit; i++ ) - { - for ( j = i - gap; ; j -= gap ) - { - PCell k = j + gap; - - - if ( LESS_THAN( j, k ) ) - break; - - SWAP_CELLS( j, k, temp ); - - if ( j < cells + gap ) - break; - } - } - } - } - -#endif /* SHELL_SORT */ - - -#ifdef QUICK_SORT - - /* This is a non-recursive quicksort that directly process our cells */ - /* array. It should be faster than calling the stdlib qsort(), and we */ - /* can even tailor our insertion threshold... */ - -#define QSORT_THRESHOLD 9 /* below this size, a sub-array will be sorted */ - /* through a normal insertion sort */ - - static void - gray_quick_sort( PCell cells, - int count ) - { - PCell stack[40]; /* should be enough ;-) */ - PCell* top; /* top of stack */ - PCell base, limit; - TCell temp; - - - limit = cells + count; - base = cells; - top = stack; - - for (;;) - { - int len = (int)( limit - base ); - PCell i, j, pivot; - - - if ( len > QSORT_THRESHOLD ) - { - /* we use base + len/2 as the pivot */ - pivot = base + len / 2; - SWAP_CELLS( base, pivot, temp ); - - i = base + 1; - j = limit - 1; - - /* now ensure that *i <= *base <= *j */ - if ( LESS_THAN( j, i ) ) - SWAP_CELLS( i, j, temp ); - - if ( LESS_THAN( base, i ) ) - SWAP_CELLS( base, i, temp ); - - if ( LESS_THAN( j, base ) ) - SWAP_CELLS( base, j, temp ); - - for (;;) - { - do i++; while ( LESS_THAN( i, base ) ); - do j--; while ( LESS_THAN( base, j ) ); - - if ( i > j ) - break; - - SWAP_CELLS( i, j, temp ); - } - - SWAP_CELLS( base, j, temp ); - - /* now, push the largest sub-array */ - if ( j - base > limit - i ) - { - top[0] = base; - top[1] = j; - base = i; - } - else - { - top[0] = i; - top[1] = limit; - limit = j; - } - top += 2; - } - else - { - /* the sub-array is small, perform insertion sort */ - j = base; - i = j + 1; - - for ( ; i < limit; j = i, i++ ) - { - for ( ; LESS_THAN( j + 1, j ); j-- ) - { - SWAP_CELLS( j + 1, j, temp ); - if ( j == base ) - break; - } - } - if ( top > stack ) - { - top -= 2; - base = top[0]; - limit = top[1]; - } - else - break; - } - } - } - -#endif /* QUICK_SORT */ - - -#ifdef DEBUG_GRAYS -#ifdef DEBUG_SORT - - static int - gray_check_sort( PCell cells, - int count ) - { - PCell p, q; - - - for ( p = cells + count - 2; p >= cells; p-- ) - { - q = p + 1; - if ( !LESS_THAN( p, q ) ) - return 0; - } - return 1; - } - -#endif /* DEBUG_SORT */ -#endif /* DEBUG_GRAYS */ - - - static int - gray_move_to( FT_Vector* to, - FT_Raster raster ) - { - TPos x, y; - - - /* record current cell, if any */ - gray_record_cell( (PRaster)raster ); - - /* start to a new position */ - x = UPSCALE( to->x ); - y = UPSCALE( to->y ); - - gray_start_cell( (PRaster)raster, TRUNC( x ), TRUNC( y ) ); - - ((PRaster)raster)->x = x; - ((PRaster)raster)->y = y; - return 0; - } - - - static int - gray_line_to( FT_Vector* to, - FT_Raster raster ) - { - gray_render_line( (PRaster)raster, - UPSCALE( to->x ), UPSCALE( to->y ) ); - return 0; - } - - - static int - gray_conic_to( FT_Vector* control, - FT_Vector* to, - FT_Raster raster ) - { - gray_render_conic( (PRaster)raster, control, to ); - return 0; - } - - - static int - gray_cubic_to( FT_Vector* control1, - FT_Vector* control2, - FT_Vector* to, - FT_Raster raster ) - { - gray_render_cubic( (PRaster)raster, control1, control2, to ); - return 0; - } - - - static void - gray_render_span( int y, - int count, - FT_Span* spans, - PRaster raster ) - { - unsigned char* p; - FT_Bitmap* map = &raster->target; - - - /* first of all, compute the scanline offset */ - p = (unsigned char*)map->buffer - y * map->pitch; - if ( map->pitch >= 0 ) - p += ( map->rows - 1 ) * map->pitch; - - for ( ; count > 0; count--, spans++ ) - { - unsigned char coverage = spans->coverage; - - -#ifdef GRAYS_USE_GAMMA - coverage = raster->gamma[coverage]; -#endif - - if ( coverage ) -#if 1 - FT_MEM_SET( p + spans->x, (unsigned char)coverage, spans->len ); -#else /* 1 */ - { - q = p + spans->x; - limit = q + spans->len; - for ( ; q < limit; q++ ) - q[0] = (unsigned char)coverage; - } -#endif /* 1 */ - } - } - - -#ifdef DEBUG_GRAYS - -#include <stdio.h> - - static void - gray_dump_cells( RAS_ARG ) - { - PCell cell, limit; - int y = -1; - - - cell = ras.cells; - limit = cell + ras.num_cells; - - for ( ; cell < limit; cell++ ) - { - if ( cell->y != y ) - { - fprintf( stderr, "\n%2d: ", cell->y ); - y = cell->y; - } - fprintf( stderr, "[%d %d %d]", - cell->x, cell->area, cell->cover ); - } - fprintf(stderr, "\n" ); - } - -#endif /* DEBUG_GRAYS */ - - - static void - gray_hline( RAS_ARG_ TCoord x, - TCoord y, - TPos area, - int acount ) - { - FT_Span* span; - int count; - int coverage; - - - /* compute the coverage line's coverage, depending on the */ - /* outline fill rule */ - /* */ - /* the coverage percentage is area/(PIXEL_BITS*PIXEL_BITS*2) */ - /* */ - coverage = (int)( area >> ( PIXEL_BITS * 2 + 1 - 8 ) ); - /* use range 0..256 */ - if ( coverage < 0 ) - coverage = -coverage; - - if ( ras.outline.flags & FT_OUTLINE_EVEN_ODD_FILL ) - { - coverage &= 511; - - if ( coverage > 256 ) - coverage = 512 - coverage; - else if ( coverage == 256 ) - coverage = 255; - } - else - { - /* normal non-zero winding rule */ - if ( coverage >= 256 ) - coverage = 255; - } - - y += (TCoord)ras.min_ey; - x += (TCoord)ras.min_ex; - - if ( coverage ) - { - /* see if we can add this span to the current list */ - count = ras.num_gray_spans; - span = ras.gray_spans + count - 1; - if ( count > 0 && - ras.span_y == y && - (int)span->x + span->len == (int)x && - span->coverage == coverage ) - { - span->len = (unsigned short)( span->len + acount ); - return; - } - - if ( ras.span_y != y || count >= FT_MAX_GRAY_SPANS ) - { - if ( ras.render_span && count > 0 ) - ras.render_span( ras.span_y, count, ras.gray_spans, - ras.render_span_data ); - /* ras.render_span( span->y, ras.gray_spans, count ); */ - -#ifdef DEBUG_GRAYS - - if ( ras.span_y >= 0 ) - { - int n; - - - fprintf( stderr, "y=%3d ", ras.span_y ); - span = ras.gray_spans; - for ( n = 0; n < count; n++, span++ ) - fprintf( stderr, "[%d..%d]:%02x ", - span->x, span->x + span->len - 1, span->coverage ); - fprintf( stderr, "\n" ); - } - -#endif /* DEBUG_GRAYS */ - - ras.num_gray_spans = 0; - ras.span_y = y; - - count = 0; - span = ras.gray_spans; - } - else - span++; - - /* add a gray span to the current list */ - span->x = (short)x; - span->len = (unsigned short)acount; - span->coverage = (unsigned char)coverage; - ras.num_gray_spans++; - } - } - - - static void - gray_sweep( RAS_ARG_ FT_Bitmap* target ) - { - TCoord x, y, cover; - TArea area; - PCell start, cur, limit; - - FT_UNUSED( target ); - - - if ( ras.num_cells == 0 ) - return; - - cur = ras.cells; - limit = cur + ras.num_cells; - - cover = 0; - ras.span_y = -1; - ras.num_gray_spans = 0; - - for (;;) - { - start = cur; - y = start->y; - x = start->x; - - area = start->area; - cover += start->cover; - - /* accumulate all start cells */ - for (;;) - { - ++cur; - if ( cur >= limit || cur->y != start->y || cur->x != start->x ) - break; - - area += cur->area; - cover += cur->cover; - } - - /* if the start cell has a non-null area, we must draw an */ - /* individual gray pixel there */ - if ( area && x >= 0 ) - { - gray_hline( RAS_VAR_ x, y, cover * ( ONE_PIXEL * 2 ) - area, 1 ); - x++; - } - - if ( x < 0 ) - x = 0; - - if ( cur < limit && start->y == cur->y ) - { - /* draw a gray span between the start cell and the current one */ - if ( cur->x > x ) - gray_hline( RAS_VAR_ x, y, - cover * ( ONE_PIXEL * 2 ), cur->x - x ); - } - else - { - /* draw a gray span until the end of the clipping region */ - if ( cover && x < ras.max_ex - ras.min_ex ) - gray_hline( RAS_VAR_ x, y, - cover * ( ONE_PIXEL * 2 ), - (int)( ras.max_ex - x - ras.min_ex ) ); - cover = 0; - } - - if ( cur >= limit ) - break; - } - - if ( ras.render_span && ras.num_gray_spans > 0 ) - ras.render_span( ras.span_y, ras.num_gray_spans, - ras.gray_spans, ras.render_span_data ); - -#ifdef DEBUG_GRAYS - - { - int n; - FT_Span* span; - - - fprintf( stderr, "y=%3d ", ras.span_y ); - span = ras.gray_spans; - for ( n = 0; n < ras.num_gray_spans; n++, span++ ) - fprintf( stderr, "[%d..%d]:%02x ", - span->x, span->x + span->len - 1, span->coverage ); - fprintf( stderr, "\n" ); - } - -#endif /* DEBUG_GRAYS */ - - } - - -#ifdef _STANDALONE_ - - /*************************************************************************/ - /* */ - /* The following function should only compile in stand_alone mode, */ - /* i.e., when building this component without the rest of FreeType. */ - /* */ - /*************************************************************************/ - - /*************************************************************************/ - /* */ - /* <Function> */ - /* FT_Outline_Decompose */ - /* */ - /* <Description> */ - /* Walks over an outline's structure to decompose it into individual */ - /* segments and Bezier arcs. This function is also able to emit */ - /* `move to' and `close to' operations to indicate the start and end */ - /* of new contours in the outline. */ - /* */ - /* <Input> */ - /* outline :: A pointer to the source target. */ - /* */ - /* func_interface :: A table of `emitters', i.e,. function pointers */ - /* called during decomposition to indicate path */ - /* operations. */ - /* */ - /* user :: A typeless pointer which is passed to each */ - /* emitter during the decomposition. It can be */ - /* used to store the state during the */ - /* decomposition. */ - /* */ - /* <Return> */ - /* Error code. 0 means sucess. */ - /* */ - static - int FT_Outline_Decompose( FT_Outline* outline, - const FT_Outline_Funcs* func_interface, - void* user ) - { -#undef SCALED -#if 0 -#define SCALED( x ) ( ( (x) << shift ) - delta ) -#else -#define SCALED( x ) (x) -#endif - - FT_Vector v_last; - FT_Vector v_control; - FT_Vector v_start; - - FT_Vector* point; - FT_Vector* limit; - char* tags; - - int n; /* index of contour in outline */ - int first; /* index of first point in contour */ - int error; - char tag; /* current point's state */ - -#if 0 - int shift = func_interface->shift; - TPos delta = func_interface->delta; -#endif - - - first = 0; - - for ( n = 0; n < outline->n_contours; n++ ) - { - int last; /* index of last point in contour */ - - - last = outline->contours[n]; - limit = outline->points + last; - - v_start = outline->points[first]; - v_last = outline->points[last]; - - v_start.x = SCALED( v_start.x ); v_start.y = SCALED( v_start.y ); - v_last.x = SCALED( v_last.x ); v_last.y = SCALED( v_last.y ); - - v_control = v_start; - - point = outline->points + first; - tags = outline->tags + first; - tag = FT_CURVE_TAG( tags[0] ); - - /* A contour cannot start with a cubic control point! */ - if ( tag == FT_CURVE_TAG_CUBIC ) - goto Invalid_Outline; - - /* check first point to determine origin */ - if ( tag == FT_CURVE_TAG_CONIC ) - { - /* first point is conic control. Yes, this happens. */ - if ( FT_CURVE_TAG( outline->tags[last] ) == FT_CURVE_TAG_ON ) - { - /* start at last point if it is on the curve */ - v_start = v_last; - limit--; - } - else - { - /* if both first and last points are conic, */ - /* start at their middle and record its position */ - /* for closure */ - v_start.x = ( v_start.x + v_last.x ) / 2; - v_start.y = ( v_start.y + v_last.y ) / 2; - - v_last = v_start; - } - point--; - tags--; - } - - error = func_interface->move_to( &v_start, user ); - if ( error ) - goto Exit; - - while ( point < limit ) - { - point++; - tags++; - - tag = FT_CURVE_TAG( tags[0] ); - switch ( tag ) - { - case FT_CURVE_TAG_ON: /* emit a single line_to */ - { - FT_Vector vec; - - - vec.x = SCALED( point->x ); - vec.y = SCALED( point->y ); - - error = func_interface->line_to( &vec, user ); - if ( error ) - goto Exit; - continue; - } - - case FT_CURVE_TAG_CONIC: /* consume conic arcs */ - { - v_control.x = SCALED( point->x ); - v_control.y = SCALED( point->y ); - - Do_Conic: - if ( point < limit ) - { - FT_Vector vec; - FT_Vector v_middle; - - - point++; - tags++; - tag = FT_CURVE_TAG( tags[0] ); - - vec.x = SCALED( point->x ); - vec.y = SCALED( point->y ); - - if ( tag == FT_CURVE_TAG_ON ) - { - error = func_interface->conic_to( &v_control, &vec, user ); - if ( error ) - goto Exit; - continue; - } - - if ( tag != FT_CURVE_TAG_CONIC ) - goto Invalid_Outline; - - v_middle.x = ( v_control.x + vec.x ) / 2; - v_middle.y = ( v_control.y + vec.y ) / 2; - - error = func_interface->conic_to( &v_control, &v_middle, user ); - if ( error ) - goto Exit; - - v_control = vec; - goto Do_Conic; - } - - error = func_interface->conic_to( &v_control, &v_start, user ); - goto Close; - } - - default: /* FT_CURVE_TAG_CUBIC */ - { - FT_Vector vec1, vec2; - - - if ( point + 1 > limit || - FT_CURVE_TAG( tags[1] ) != FT_CURVE_TAG_CUBIC ) - goto Invalid_Outline; - - point += 2; - tags += 2; - - vec1.x = SCALED( point[-2].x ); vec1.y = SCALED( point[-2].y ); - vec2.x = SCALED( point[-1].x ); vec2.y = SCALED( point[-1].y ); - - if ( point <= limit ) - { - FT_Vector vec; - - - vec.x = SCALED( point->x ); - vec.y = SCALED( point->y ); - - error = func_interface->cubic_to( &vec1, &vec2, &vec, user ); - if ( error ) - goto Exit; - continue; - } - - error = func_interface->cubic_to( &vec1, &vec2, &v_start, user ); - goto Close; - } - } - } - - /* close the contour with a line segment */ - error = func_interface->line_to( &v_start, user ); - - Close: - if ( error ) - goto Exit; - - first = last + 1; - } - - return 0; - - Exit: - return error; - - Invalid_Outline: - return ErrRaster_Invalid_Outline; - } - -#endif /* _STANDALONE_ */ - - - typedef struct TBand_ - { - TPos min, max; - - } TBand; - - - static int - gray_convert_glyph_inner( RAS_ARG ) - { - static - const FT_Outline_Funcs func_interface = - { - (FT_Outline_MoveTo_Func) gray_move_to, - (FT_Outline_LineTo_Func) gray_line_to, - (FT_Outline_ConicTo_Func)gray_conic_to, - (FT_Outline_CubicTo_Func)gray_cubic_to, - 0, - 0 - }; - - volatile int error = 0; - - if ( ft_setjmp( ras.jump_buffer ) == 0 ) - { - error = FT_Outline_Decompose( &ras.outline, &func_interface, &ras ); - gray_record_cell( RAS_VAR ); - } - else - { - error = ErrRaster_MemoryOverflow; - } - - return error; - } - - - static int - gray_convert_glyph( RAS_ARG ) - { - TBand bands[40]; - TBand* volatile band; - int volatile n, num_bands; - TPos volatile min, max, max_y; - FT_BBox* clip; - - - /* Set up state in the raster object */ - gray_compute_cbox( RAS_VAR ); - - /* clip to target bitmap, exit if nothing to do */ - clip = &ras.clip_box; - - if ( ras.max_ex <= clip->xMin || ras.min_ex >= clip->xMax || - ras.max_ey <= clip->yMin || ras.min_ey >= clip->yMax ) - return 0; - - if ( ras.min_ex < clip->xMin ) ras.min_ex = clip->xMin; - if ( ras.min_ey < clip->yMin ) ras.min_ey = clip->yMin; - - if ( ras.max_ex > clip->xMax ) ras.max_ex = clip->xMax; - if ( ras.max_ey > clip->yMax ) ras.max_ey = clip->yMax; - - /* simple heuristic used to speed-up the bezier decomposition -- see */ - /* the code in gray_render_conic() and gray_render_cubic() for more */ - /* details */ - ras.conic_level = 32; - ras.cubic_level = 16; - - { - int level = 0; - - - if ( ras.max_ex > 24 || ras.max_ey > 24 ) - level++; - if ( ras.max_ex > 120 || ras.max_ey > 120 ) - level++; - - ras.conic_level <<= level; - ras.cubic_level <<= level; - } - - /* setup vertical bands */ - num_bands = (int)( ( ras.max_ey - ras.min_ey ) / ras.band_size ); - if ( num_bands == 0 ) num_bands = 1; - if ( num_bands >= 39 ) num_bands = 39; - - ras.band_shoot = 0; - - min = ras.min_ey; - max_y = ras.max_ey; - - for ( n = 0; n < num_bands; n++, min = max ) - { - max = min + ras.band_size; - if ( n == num_bands - 1 || max > max_y ) - max = max_y; - - bands[0].min = min; - bands[0].max = max; - band = bands; - - while ( band >= bands ) - { - TPos bottom, top, middle; - int error; - - - ras.num_cells = 0; - ras.invalid = 1; - ras.min_ey = band->min; - ras.max_ey = band->max; - -#if 1 - error = gray_convert_glyph_inner( RAS_VAR ); -#else - error = FT_Outline_Decompose( outline, &func_interface, &ras ) || - gray_record_cell( RAS_VAR ); -#endif - - if ( !error ) - { -#ifdef SHELL_SORT - gray_shell_sort( ras.cells, ras.num_cells ); -#else - gray_quick_sort( ras.cells, ras.num_cells ); -#endif - -#ifdef DEBUG_GRAYS - gray_check_sort( ras.cells, ras.num_cells ); - gray_dump_cells( RAS_VAR ); -#endif - - gray_sweep( RAS_VAR_ &ras.target ); - band--; - continue; - } - else if ( error != ErrRaster_MemoryOverflow ) - return 1; - - /* render pool overflow, we will reduce the render band by half */ - bottom = band->min; - top = band->max; - middle = bottom + ( ( top - bottom ) >> 1 ); - - /* waoow! This is too complex for a single scanline, something */ - /* must be really rotten here! */ - if ( middle == bottom ) - { -#ifdef DEBUG_GRAYS - fprintf( stderr, "Rotten glyph!\n" ); -#endif - return 1; - } - - if ( bottom-top >= ras.band_size ) - ras.band_shoot++; - - band[1].min = bottom; - band[1].max = middle; - band[0].min = middle; - band[0].max = top; - band++; - } - } - - if ( ras.band_shoot > 8 && ras.band_size > 16 ) - ras.band_size = ras.band_size / 2; - - return 0; - } - - - extern int - gray_raster_render( PRaster raster, - FT_Raster_Params* params ) - { - FT_Outline* outline = (FT_Outline*)params->source; - FT_Bitmap* target_map = params->target; - - - if ( !raster || !raster->cells || !raster->max_cells ) - return -1; - - /* return immediately if the outline is empty */ - if ( outline->n_points == 0 || outline->n_contours <= 0 ) - return 0; - - if ( !outline || !outline->contours || !outline->points ) - return ErrRaster_Invalid_Outline; - - if ( outline->n_points != - outline->contours[outline->n_contours - 1] + 1 ) - return ErrRaster_Invalid_Outline; - - /* if direct mode is not set, we must have a target bitmap */ - if ( ( params->flags & FT_RASTER_FLAG_DIRECT ) == 0 && - ( !target_map || !target_map->buffer ) ) - return -1; - - /* this version does not support monochrome rendering */ - if ( !( params->flags & FT_RASTER_FLAG_AA ) ) - return ErrRaster_Invalid_Mode; - - /* compute clipping box */ - if ( ( params->flags & FT_RASTER_FLAG_DIRECT ) == 0 ) - { - /* compute clip box from target pixmap */ - ras.clip_box.xMin = 0; - ras.clip_box.yMin = 0; - ras.clip_box.xMax = target_map->width; - ras.clip_box.yMax = target_map->rows; - } - else if ( params->flags & FT_RASTER_FLAG_CLIP ) - { - ras.clip_box = params->clip_box; - } - else - { - ras.clip_box.xMin = -32768L; - ras.clip_box.yMin = -32768L; - ras.clip_box.xMax = 32767L; - ras.clip_box.yMax = 32767L; - } - - ras.outline = *outline; - ras.num_cells = 0; - ras.invalid = 1; - - if ( target_map ) - ras.target = *target_map; - - ras.render_span = (FT_Raster_Span_Func)gray_render_span; - ras.render_span_data = &ras; - - if ( params->flags & FT_RASTER_FLAG_DIRECT ) - { - ras.render_span = (FT_Raster_Span_Func)params->gray_spans; - ras.render_span_data = params->user; - } - - return gray_convert_glyph( (PRaster)raster ); - } - - - /**** RASTER OBJECT CREATION: In standalone mode, we simply use *****/ - /**** a static object. *****/ - -#ifdef GRAYS_USE_GAMMA - - /* initialize the "gamma" table. Yes, this is really a crummy function */ - /* but the results look pretty good for something that simple. */ - /* */ -#define M_MAX 255 -#define M_X 128 -#define M_Y 192 - - static void - grays_init_gamma( PRaster raster ) - { - unsigned int x, a; - - - for ( x = 0; x < 256; x++ ) - { - if ( x <= M_X ) - a = ( x * M_Y + M_X / 2) / M_X; - else - a = M_Y + ( ( x - M_X ) * ( M_MAX - M_Y ) + - ( M_MAX - M_X ) / 2 ) / ( M_MAX - M_X ); - - raster->gamma[x] = (unsigned char)a; - } - } - -#endif /* GRAYS_USE_GAMMA */ - -#ifdef _STANDALONE_ - - static int - gray_raster_new( void* memory, - FT_Raster* araster ) - { - static TRaster the_raster; - - FT_UNUSED( memory ); - - - *araster = (FT_Raster)&the_raster; - FT_MEM_ZERO( &the_raster, sizeof ( the_raster ) ); - -#ifdef GRAYS_USE_GAMMA - grays_init_gamma( (PRaster)*araster ); -#endif - - return 0; - } - - - static void - gray_raster_done( FT_Raster raster ) - { - /* nothing */ - FT_UNUSED( raster ); - } - -#else /* _STANDALONE_ */ - - static int - gray_raster_new( FT_Memory memory, - FT_Raster* araster ) - { - FT_Error error; - PRaster raster; - - - *araster = 0; - if ( !FT_ALLOC( raster, sizeof ( TRaster ) ) ) - { - raster->memory = memory; - *araster = (FT_Raster)raster; - -#ifdef GRAYS_USE_GAMMA - grays_init_gamma( raster ); -#endif - } - - return error; - } - - - static void - gray_raster_done( FT_Raster raster ) - { - FT_Memory memory = (FT_Memory)((PRaster)raster)->memory; - - - FT_FREE( raster ); - } - -#endif /* _STANDALONE_ */ - - - static void - gray_raster_reset( FT_Raster raster, - const char* pool_base, - long pool_size ) - { - PRaster rast = (PRaster)raster; - - - if ( raster && pool_base && pool_size >= 4096 ) - gray_init_cells( rast, (char*)pool_base, pool_size ); - - rast->band_size = (int)( ( pool_size / sizeof ( TCell ) ) / 8 ); - } - - - const FT_Raster_Funcs ft_grays_raster = - { - FT_GLYPH_FORMAT_OUTLINE, - - (FT_Raster_New_Func) gray_raster_new, - (FT_Raster_Reset_Func) gray_raster_reset, - (FT_Raster_Set_Mode_Func)0, - (FT_Raster_Render_Func) gray_raster_render, - (FT_Raster_Done_Func) gray_raster_done - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/smooth/ftgrays.h b/nx-X11/extras/freetype2/src/smooth/ftgrays.h deleted file mode 100644 index 2d409543d..000000000 --- a/nx-X11/extras/freetype2/src/smooth/ftgrays.h +++ /dev/null @@ -1,57 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftgrays.h */ -/* */ -/* FreeType smooth renderer declaration */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTGRAYS_H__ -#define __FTGRAYS_H__ - -#ifdef __cplusplus - extern "C" { -#endif - - -#ifdef _STANDALONE_ -#include "ftimage.h" -#else -#include <ft2build.h> -#include FT_IMAGE_H -#endif - - - /*************************************************************************/ - /* */ - /* To make ftgrays.h independent from configuration files we check */ - /* whether FT_EXPORT_VAR has been defined already. */ - /* */ - /* On some systems and compilers (Win32 mostly), an extra keyword is */ - /* necessary to compile the library as a DLL. */ - /* */ -#ifndef FT_EXPORT_VAR -#define FT_EXPORT_VAR( x ) extern x -#endif - - FT_EXPORT_VAR( const FT_Raster_Funcs ) ft_grays_raster; - - -#ifdef __cplusplus - } -#endif - -#endif /* __FTGRAYS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/smooth/ftsmerrs.h b/nx-X11/extras/freetype2/src/smooth/ftsmerrs.h deleted file mode 100644 index 0c2a2ecd9..000000000 --- a/nx-X11/extras/freetype2/src/smooth/ftsmerrs.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsmerrs.h */ -/* */ -/* smooth renderer error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the smooth renderer error enumeration */ - /* constants. */ - /* */ - /*************************************************************************/ - -#ifndef __FTSMERRS_H__ -#define __FTSMERRS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX Smooth_Err_ -#define FT_ERR_BASE FT_Mod_Err_Smooth - -#include FT_ERRORS_H - -#endif /* __FTSMERRS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/smooth/ftsmooth.c b/nx-X11/extras/freetype2/src/smooth/ftsmooth.c deleted file mode 100644 index af8783e29..000000000 --- a/nx-X11/extras/freetype2/src/smooth/ftsmooth.c +++ /dev/null @@ -1,374 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsmooth.c */ -/* */ -/* Anti-aliasing renderer interface (body). */ -/* */ -/* Copyright 2000-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_OUTLINE_H -#include "ftsmooth.h" -#include "ftgrays.h" - -#include "ftsmerrs.h" - - - /* initialize renderer -- init its raster */ - static FT_Error - ft_smooth_init( FT_Renderer render ) - { - FT_Library library = FT_MODULE_LIBRARY( render ); - - - render->clazz->raster_class->raster_reset( render->raster, - library->raster_pool, - library->raster_pool_size ); - - return 0; - } - - - /* sets render-specific mode */ - static FT_Error - ft_smooth_set_mode( FT_Renderer render, - FT_ULong mode_tag, - FT_Pointer data ) - { - /* we simply pass it to the raster */ - return render->clazz->raster_class->raster_set_mode( render->raster, - mode_tag, - data ); - } - - /* transform a given glyph image */ - static FT_Error - ft_smooth_transform( FT_Renderer render, - FT_GlyphSlot slot, - FT_Matrix* matrix, - FT_Vector* delta ) - { - FT_Error error = Smooth_Err_Ok; - - - if ( slot->format != render->glyph_format ) - { - error = Smooth_Err_Invalid_Argument; - goto Exit; - } - - if ( matrix ) - FT_Outline_Transform( &slot->outline, matrix ); - - if ( delta ) - FT_Outline_Translate( &slot->outline, delta->x, delta->y ); - - Exit: - return error; - } - - - /* return the glyph's control box */ - static void - ft_smooth_get_cbox( FT_Renderer render, - FT_GlyphSlot slot, - FT_BBox* cbox ) - { - FT_MEM_ZERO( cbox, sizeof ( *cbox ) ); - - if ( slot->format == render->glyph_format ) - FT_Outline_Get_CBox( &slot->outline, cbox ); - } - - - /* convert a slot's glyph image into a bitmap */ - static FT_Error - ft_smooth_render_generic( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - FT_Vector* origin, - FT_Render_Mode required_mode, - FT_Int hmul, - FT_Int vmul ) - { - FT_Error error; - FT_Outline* outline = NULL; - FT_BBox cbox; - FT_UInt width, height, pitch; - FT_Bitmap* bitmap; - FT_Memory memory; - - FT_Raster_Params params; - - - /* check glyph image format */ - if ( slot->format != render->glyph_format ) - { - error = Smooth_Err_Invalid_Argument; - goto Exit; - } - - /* check mode */ - if ( mode != required_mode ) - return Smooth_Err_Cannot_Render_Glyph; - - outline = &slot->outline; - - /* translate the outline to the new origin if needed */ - if ( origin ) - FT_Outline_Translate( outline, origin->x, origin->y ); - - /* compute the control box, and grid fit it */ - FT_Outline_Get_CBox( outline, &cbox ); - - cbox.xMin = FT_PIX_FLOOR( cbox.xMin ); - cbox.yMin = FT_PIX_FLOOR( cbox.yMin ); - cbox.xMax = FT_PIX_CEIL( cbox.xMax ); - cbox.yMax = FT_PIX_CEIL( cbox.yMax ); - - width = (FT_UInt)( ( cbox.xMax - cbox.xMin ) >> 6 ); - height = (FT_UInt)( ( cbox.yMax - cbox.yMin ) >> 6 ); - bitmap = &slot->bitmap; - memory = render->root.memory; - - /* release old bitmap buffer */ - if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) - { - FT_FREE( bitmap->buffer ); - slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP; - } - - /* allocate new one, depends on pixel format */ - pitch = width; - if ( hmul ) - { - width = width * hmul; - pitch = FT_PAD_CEIL( width, 4 ); - } - - if ( vmul ) - height *= vmul; - - bitmap->pixel_mode = FT_PIXEL_MODE_GRAY; - bitmap->num_grays = 256; - bitmap->width = width; - bitmap->rows = height; - bitmap->pitch = pitch; - - if ( FT_ALLOC( bitmap->buffer, (FT_ULong)pitch * height ) ) - goto Exit; - - slot->internal->flags |= FT_GLYPH_OWN_BITMAP; - - /* translate outline to render it into the bitmap */ - FT_Outline_Translate( outline, -cbox.xMin, -cbox.yMin ); - - /* set up parameters */ - params.target = bitmap; - params.source = outline; - params.flags = FT_RASTER_FLAG_AA; - - /* implode outline if needed */ - { - FT_Int n; - FT_Vector* vec; - - - if ( hmul ) - for ( vec = outline->points, n = 0; n < outline->n_points; n++, vec++ ) - vec->x *= hmul; - - if ( vmul ) - for ( vec = outline->points, n = 0; n < outline->n_points; n++, vec++ ) - vec->y *= vmul; - } - - /* render outline into the bitmap */ - error = render->raster_render( render->raster, ¶ms ); - - /* deflate outline if needed */ - { - FT_Int n; - FT_Vector* vec; - - - if ( hmul ) - for ( vec = outline->points, n = 0; n < outline->n_points; n++, vec++ ) - vec->x /= hmul; - - if ( vmul ) - for ( vec = outline->points, n = 0; n < outline->n_points; n++, vec++ ) - vec->y /= vmul; - } - - FT_Outline_Translate( outline, cbox.xMin, cbox.yMin ); - - if ( error ) - goto Exit; - - slot->format = FT_GLYPH_FORMAT_BITMAP; - slot->bitmap_left = (FT_Int)( cbox.xMin >> 6 ); - slot->bitmap_top = (FT_Int)( cbox.yMax >> 6 ); - - Exit: - if ( outline && origin ) - FT_Outline_Translate( outline, -origin->x, -origin->y ); - - return error; - } - - - /* convert a slot's glyph image into a bitmap */ - static FT_Error - ft_smooth_render( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - FT_Vector* origin ) - { - if ( mode == FT_RENDER_MODE_LIGHT ) - mode = FT_RENDER_MODE_NORMAL; - - return ft_smooth_render_generic( render, slot, mode, origin, - FT_RENDER_MODE_NORMAL, - 0, 0 ); - } - - - /* convert a slot's glyph image into a horizontal LCD bitmap */ - static FT_Error - ft_smooth_render_lcd( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - FT_Vector* origin ) - { - FT_Error error; - - error = ft_smooth_render_generic( render, slot, mode, origin, - FT_RENDER_MODE_LCD, - 3, 0 ); - if ( !error ) - slot->bitmap.pixel_mode = FT_PIXEL_MODE_LCD; - - return error; - } - - - /* convert a slot's glyph image into a vertical LCD bitmap */ - static FT_Error - ft_smooth_render_lcd_v( FT_Renderer render, - FT_GlyphSlot slot, - FT_Render_Mode mode, - FT_Vector* origin ) - { - FT_Error error; - - error = ft_smooth_render_generic( render, slot, mode, origin, - FT_RENDER_MODE_LCD_V, - 0, 3 ); - if ( !error ) - slot->bitmap.pixel_mode = FT_PIXEL_MODE_LCD_V; - - return error; - } - - - FT_CALLBACK_TABLE_DEF - const FT_Renderer_Class ft_smooth_renderer_class = - { - { - FT_MODULE_RENDERER, - sizeof( FT_RendererRec ), - - "smooth", - 0x10000L, - 0x20000L, - - 0, /* module specific interface */ - - (FT_Module_Constructor)ft_smooth_init, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 - }, - - FT_GLYPH_FORMAT_OUTLINE, - - (FT_Renderer_RenderFunc) ft_smooth_render, - (FT_Renderer_TransformFunc)ft_smooth_transform, - (FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox, - (FT_Renderer_SetModeFunc) ft_smooth_set_mode, - - (FT_Raster_Funcs*) &ft_grays_raster - }; - - - FT_CALLBACK_TABLE_DEF - const FT_Renderer_Class ft_smooth_lcd_renderer_class = - { - { - FT_MODULE_RENDERER, - sizeof( FT_RendererRec ), - - "smooth-lcd", - 0x10000L, - 0x20000L, - - 0, /* module specific interface */ - - (FT_Module_Constructor)ft_smooth_init, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 - }, - - FT_GLYPH_FORMAT_OUTLINE, - - (FT_Renderer_RenderFunc) ft_smooth_render_lcd, - (FT_Renderer_TransformFunc)ft_smooth_transform, - (FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox, - (FT_Renderer_SetModeFunc) ft_smooth_set_mode, - - (FT_Raster_Funcs*) &ft_grays_raster - }; - - - - FT_CALLBACK_TABLE_DEF - const FT_Renderer_Class ft_smooth_lcdv_renderer_class = - { - { - FT_MODULE_RENDERER, - sizeof( FT_RendererRec ), - - "smooth-lcdv", - 0x10000L, - 0x20000L, - - 0, /* module specific interface */ - - (FT_Module_Constructor)ft_smooth_init, - (FT_Module_Destructor) 0, - (FT_Module_Requester) 0 - }, - - FT_GLYPH_FORMAT_OUTLINE, - - (FT_Renderer_RenderFunc) ft_smooth_render_lcd_v, - (FT_Renderer_TransformFunc)ft_smooth_transform, - (FT_Renderer_GetCBoxFunc) ft_smooth_get_cbox, - (FT_Renderer_SetModeFunc) ft_smooth_set_mode, - - (FT_Raster_Funcs*) &ft_grays_raster - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/smooth/ftsmooth.h b/nx-X11/extras/freetype2/src/smooth/ftsmooth.h deleted file mode 100644 index 62cced448..000000000 --- a/nx-X11/extras/freetype2/src/smooth/ftsmooth.h +++ /dev/null @@ -1,49 +0,0 @@ -/***************************************************************************/ -/* */ -/* ftsmooth.h */ -/* */ -/* Anti-aliasing renderer interface (specification). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __FTSMOOTH_H__ -#define __FTSMOOTH_H__ - - -#include <ft2build.h> -#include FT_RENDER_H - - -FT_BEGIN_HEADER - - -#ifndef FT_CONFIG_OPTION_NO_STD_RASTER - FT_EXPORT_VAR( const FT_Renderer_Class ) ft_std_renderer_class; -#endif - -#ifndef FT_CONFIG_OPTION_NO_SMOOTH_RASTER - FT_EXPORT_VAR( const FT_Renderer_Class ) ft_smooth_renderer_class; - - FT_EXPORT_VAR( const FT_Renderer_Class ) ft_smooth_lcd_renderer_class; - - FT_EXPORT_VAR( const FT_Renderer_Class ) ft_smooth_lcd_v_renderer_class; -#endif - - - -FT_END_HEADER - -#endif /* __FTSMOOTH_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/smooth/module.mk b/nx-X11/extras/freetype2/src/smooth/module.mk deleted file mode 100644 index ead77cf30..000000000 --- a/nx-X11/extras/freetype2/src/smooth/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 smooth renderer module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_smooth_renderer - -add_smooth_renderer: - $(OPEN_DRIVER)ft_smooth_renderer_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)smooth $(ECHO_DRIVER_DESC)anti-aliased bitmap renderer$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/smooth/rules.mk b/nx-X11/extras/freetype2/src/smooth/rules.mk deleted file mode 100644 index 4f27f01db..000000000 --- a/nx-X11/extras/freetype2/src/smooth/rules.mk +++ /dev/null @@ -1,69 +0,0 @@ -# -# FreeType 2 smooth renderer module build rules -# - - -# Copyright 1996-2000, 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# smooth driver directory -# -SMOOTH_DIR := $(SRC_DIR)/smooth - -# compilation flags for the driver -# -SMOOTH_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(SMOOTH_DIR)) - - -# smooth driver sources (i.e., C files) -# -SMOOTH_DRV_SRC := $(SMOOTH_DIR)/ftgrays.c \ - $(SMOOTH_DIR)/ftsmooth.c - - -# smooth driver headers -# -SMOOTH_DRV_H := $(SMOOTH_DRV_SRC:%c=%h) \ - $(SMOOTH_DIR)/ftsmerrs.h - - -# smooth driver object(s) -# -# SMOOTH_DRV_OBJ_M is used during `multi' builds. -# SMOOTH_DRV_OBJ_S is used during `single' builds. -# -SMOOTH_DRV_OBJ_M := $(SMOOTH_DRV_SRC:$(SMOOTH_DIR)/%.c=$(OBJ_DIR)/%.$O) -SMOOTH_DRV_OBJ_S := $(OBJ_DIR)/smooth.$O - -# smooth driver source file for single build -# -SMOOTH_DRV_SRC_S := $(SMOOTH_DIR)/smooth.c - - -# smooth driver - single object -# -$(SMOOTH_DRV_OBJ_S): $(SMOOTH_DRV_SRC_S) $(SMOOTH_DRV_SRC) \ - $(FREETYPE_H) $(SMOOTH_DRV_H) - $(SMOOTH_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(SMOOTH_DRV_SRC_S)) - - -# smooth driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(SMOOTH_DIR)/%.c $(FREETYPE_H) $(SMOOTH_DRV_H) - $(SMOOTH_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(SMOOTH_DRV_OBJ_S) -DRV_OBJS_M += $(SMOOTH_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/smooth/smooth.c b/nx-X11/extras/freetype2/src/smooth/smooth.c deleted file mode 100644 index ff6be3e40..000000000 --- a/nx-X11/extras/freetype2/src/smooth/smooth.c +++ /dev/null @@ -1,26 +0,0 @@ -/***************************************************************************/ -/* */ -/* smooth.c */ -/* */ -/* FreeType anti-aliasing rasterer module component (body only). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "ftgrays.c" -#include "ftsmooth.c" - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/tools/cordic.py b/nx-X11/extras/freetype2/src/tools/cordic.py deleted file mode 100644 index 1906b6b1f..000000000 --- a/nx-X11/extras/freetype2/src/tools/cordic.py +++ /dev/null @@ -1,79 +0,0 @@ -# compute arctangent table for CORDIC computations in fttrigon.c -import sys, math - -#units = 64*65536.0 # don't change !! -units = 256 -scale = units/math.pi -shrink = 1.0 -comma = "" - -def calc_val( x ): - global units, shrink - angle = math.atan(x) - shrink = shrink * math.cos(angle) - return angle/math.pi * units - -def print_val( n, x ): - global comma - - lo = int(x) - hi = lo + 1 - alo = math.atan(lo) - ahi = math.atan(hi) - ax = math.atan(2.0**n) - - errlo = abs( alo - ax ) - errhi = abs( ahi - ax ) - - if ( errlo < errhi ): - hi = lo - - sys.stdout.write( comma + repr( int(hi) ) ) - comma = ", " - - -print "" -print "table of arctan( 1/2^n ) for PI = " + repr(units/65536.0) + " units" - -# compute range of "i" -r = [-1] -r = r + range(32) - -for n in r: - - if n >= 0: - x = 1.0/(2.0**n) # tangent value - else: - x = 2.0**(-n) - - angle = math.atan(x) # arctangent - angle2 = angle*scale # arctangent in FT_Angle units - - # determine which integer value for angle gives the best tangent - lo = int(angle2) - hi = lo + 1 - tlo = math.tan(lo/scale) - thi = math.tan(hi/scale) - - errlo = abs( tlo - x ) - errhi = abs( thi - x ) - - angle2 = hi - if errlo < errhi: - angle2 = lo - - if angle2 <= 0: - break - - sys.stdout.write( comma + repr( int(angle2) ) ) - comma = ", " - - shrink = shrink * math.cos( angle2/scale) - - -print -print "shrink factor = " + repr( shrink ) -print "shrink factor 2 = " + repr( shrink * (2.0**32) ) -print "expansion factor = " + repr(1/shrink) -print "" - \ No newline at end of file diff --git a/nx-X11/extras/freetype2/src/tools/docmaker/.cvsignore b/nx-X11/extras/freetype2/src/tools/docmaker/.cvsignore deleted file mode 100644 index 0d20b6487..000000000 --- a/nx-X11/extras/freetype2/src/tools/docmaker/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -*.pyc diff --git a/nx-X11/extras/freetype2/src/tools/docmaker/content.py b/nx-X11/extras/freetype2/src/tools/docmaker/content.py deleted file mode 100644 index ebfeb8bf4..000000000 --- a/nx-X11/extras/freetype2/src/tools/docmaker/content.py +++ /dev/null @@ -1,585 +0,0 @@ -# -# this file contains routines used to parse the content of documentation -# comment block and build a more structured objects out of them -# - -from sources import * -from utils import * -import string, re - - -# this regular expresion is used to detect code sequences. these -# are simply code fragments embedded in '{' and '}' like in: -# -# { -# x = y + z; -# if ( zookoo == 2 ) -# { -# foobar(); -# } -# } -# -# note that identation of the starting and ending accolades must be -# exactly the same. the code sequence can contain accolades at greater -# indentation -# -re_code_start = re.compile( r"(\s*){\s*$" ) -re_code_end = re.compile( r"(\s*)}\s*$" ) - - -# this regular expression is used to isolate identifiers from -# other text -# -re_identifier = re.compile( r'(\w*)' ) - - -############################################################################# -# -# The DocCode class is used to store source code lines. -# -# 'self.lines' contains a set of source code lines that will be dumped as -# HTML in a <PRE> tag. -# -# The object is filled line by line by the parser; it strips the leading -# "margin" space from each input line before storing it in 'self.lines'. -# -class DocCode: - - def __init__( self, margin, lines ): - self.lines = [] - self.words = None - - # remove margin spaces - for l in lines: - if string.strip( l[:margin] ) == "": - l = l[margin:] - self.lines.append( l ) - - def dump( self, prefix = "", width=60 ): - lines = self.dump_lines( 0, width ) - for l in lines: - print prefix + l - - def dump_lines( self, margin=0, width=60 ): - result = [] - for l in self.lines: - result.append( " "*margin + l ) - return result - - - -############################################################################# -# -# The DocPara class is used to store "normal" text paragraph. -# -# 'self.words' contains the list of words that make up the paragraph -# -class DocPara: - - def __init__( self, lines ): - self.lines = None - self.words = [] - for l in lines: - l = string.strip(l) - self.words.extend( string.split( l ) ) - - def dump( self, prefix = "", width = 60 ): - lines = self.dump_lines( 0, width ) - for l in lines: - print prefix + l - - def dump_lines( self, margin=0, width = 60 ): - cur = "" # current line - col = 0 # current width - result = [] - - for word in self.words: - ln = len(word) - if col > 0: - ln = ln+1 - - if col + ln > width: - result.append( " "*margin + cur ) - cur = word - col = len(word) - else: - if col > 0: - cur = cur + " " - cur = cur + word - col = col + ln - - if col > 0: - result.append( " "*margin + cur ) - - return result - - - - -############################################################################# -# -# The DocField class is used to store a list containing either DocPara or -# DocCode objects. Each DocField also has an optional "name" which is used -# when the object corresponds to a field of value definition -# -class DocField: - - def __init__( self, name, lines ): - - self.name = name # can be None for normal paragraphs/sources - self.items = [] # list of items - - mode_none = 0 # start parsing mode - mode_code = 1 # parsing code sequences - mode_para = 3 # parsing normal paragraph - - margin = -1 # current code sequence indentation - cur_lines = [] - - # now analyze the markup lines to see if they contain paragraphs, - # code sequences or fields definitions - # - start = 0 - mode = mode_none - for l in lines: - - # are we parsing a code sequence ? - if mode == mode_code: - - m = re_code_end.match( l ) - if m and len(m.group(1)) <= margin: - # that's it, we finised the code sequence - code = DocCode( 0, cur_lines ) - self.items.append( code ) - margin = -1 - cur_lines = [] - mode = mode_none - else: - # nope, continue the code sequence - cur_lines.append( l[margin:] ) - else: - # start of code sequence ? - m = re_code_start.match( l ) - if m: - # save current lines - if cur_lines: - para = DocPara( cur_lines ) - self.items.append( para ) - cur_lines = [] - - # switch to code extraction mode - margin = len(m.group(1)) - mode = mode_code - - else: - if not string.split( l ) and cur_lines: - # if the line is empty, we end the current paragraph, - # if any - para = DocPara( cur_lines ) - self.items.append( para ) - cur_lines = [] - else: - # otherwise, simply add the line to the current - # paragraph - cur_lines.append( l ) - - if mode == mode_code: - # unexpected end of code sequence - code = DocCode( margin, cur_lines ) - self.items.append( code ) - - elif cur_lines: - para = DocPara( cur_lines ) - self.items.append( para ) - - def dump( self, prefix = "" ): - if self.field: - print prefix + self.field + " ::" - prefix = prefix + "----" - - first = 1 - for p in self.items: - if not first: - print "" - p.dump( prefix ) - first = 0 - - def dump_lines( self, margin=0, width=60 ): - result = [] - nl = None - for p in self.items: - if nl: - result.append( "" ) - - result.extend( p.dump_lines( margin, width ) ) - nl = 1 - - return result - -# this regular expression is used to detect field definitions -# -re_field = re.compile( r"\s*(\w*)\s*::" ) - - - -class DocMarkup: - - def __init__( self, tag, lines ): - self.tag = string.lower(tag) - self.fields = [] - - cur_lines = [] - field = None - mode = 0 - - for l in lines: - m = re_field.match( l ) - if m: - # we detected the start of a new field definition - - # first, save the current one - if cur_lines: - f = DocField( field, cur_lines ) - self.fields.append( f ) - cur_lines = [] - field = None - - field = m.group(1) # record field name - ln = len(m.group(0)) - l = " "*ln + l[ln:] - cur_lines = [ l ] - else: - cur_lines.append( l ) - - if field or cur_lines: - f = DocField( field, cur_lines ) - self.fields.append( f ) - - def get_name( self ): - try: - return self.fields[0].items[0].words[0] - - except: - return None - - def get_start( self ): - try: - result = "" - for word in self.fields[0].items[0].words: - result = result + " " + word - return result[1:] - - except: - return "ERROR" - - def dump( self, margin ): - print " "*margin + "<" + self.tag + ">" - for f in self.fields: - f.dump( " " ) - print " "*margin + "</" + self.tag + ">" - - - - -class DocChapter: - - def __init__( self, block ): - self.block = block - self.sections = [] - if block: - self.name = block.name - self.title = block.get_markup_words( "title" ) - self.order = block.get_markup_words( "sections" ) - else: - self.name = "Other" - self.title = string.split( "Miscellaneous" ) - self.order = [] - - - -class DocSection: - - def __init__( self, name = "Other" ): - self.name = name - self.blocks = {} - self.block_names = [] # ordered block names in section - self.defs = [] - self.abstract = "" - self.description = "" - self.order = [] - self.title = "ERROR" - self.chapter = None - - def add_def( self, block ): - self.defs.append( block ) - - def add_block( self, block ): - self.block_names.append( block.name ) - self.blocks[ block.name ] = block - - def process( self ): - # lookup one block that contains a valid section description - for block in self.defs: - title = block.get_markup_text( "Title" ) - if title: - self.title = title - self.abstract = block.get_markup_words( "abstract" ) - self.description = block.get_markup_items( "description" ) - self.order = block.get_markup_words( "order" ) - return - - def reorder( self ): - - self.block_names = sort_order_list( self.block_names, self.order ) - - -class ContentProcessor: - - def __init__( self ): - """initialize a block content processor""" - self.reset() - - self.sections = {} # dictionary of documentation sections - self.section = None # current documentation section - - self.chapters = [] # list of chapters - - def set_section( self, section_name ): - """set current section during parsing""" - if not self.sections.has_key( section_name ): - section = DocSection( section_name ) - self.sections[ section_name ] = section - self.section = section - else: - self.section = self.sections[ section_name ] - - def add_chapter( self, block ): - chapter = DocChapter( block ) - self.chapters.append( chapter ) - - - def reset( self ): - """reset the content processor for a new block""" - self.markups = [] - self.markup = None - self.markup_lines = [] - - def add_markup( self ): - """add a new markup section""" - if self.markup and self.markup_lines: - - # get rid of last line of markup if it's empty - marks = self.markup_lines - if len(marks) > 0 and not string.strip(marks[-1]): - self.markup_lines = marks[:-1] - - m = DocMarkup( self.markup, self.markup_lines ) - - self.markups.append( m ) - - self.markup = None - self.markup_lines = [] - - - def process_content( self, content ): - """process a block content and return a list of DocMarkup objects - corresponding to it""" - markup = None - markup_lines = [] - first = 1 - - for line in content: - found = None - for t in re_markup_tags: - m = t.match( line ) - if m: - found = string.lower(m.group(1)) - prefix = len(m.group(0)) - line = " "*prefix + line[prefix:] # remove markup from line - break - - # is it the start of a new markup section ? - if found: - first = 0 - self.add_markup() # add current markup content - self.markup = found - if len(string.strip( line )) > 0: - self.markup_lines.append( line ) - elif first == 0: - self.markup_lines.append( line ) - - self.add_markup() - - return self.markups - - - def parse_sources( self, source_processor ): - blocks = source_processor.blocks - count = len(blocks) - for n in range(count): - - source = blocks[n] - if source.content: - # this is a documentation comment, we need to catch - # all following normal blocks in the "follow" list - # - follow = [] - m = n+1 - while m < count and not blocks[m].content: - follow.append( blocks[m] ) - m = m+1 - - doc_block = DocBlock( source, follow, self ) - - - def finish( self ): - - # process all sections to extract their abstract, description - # and ordered list of items - # - for sec in self.sections.values(): - sec.process() - - # process chapters to check that all sections are correctly - # listed there - for chap in self.chapters: - for sec in chap.order: - if self.sections.has_key(sec): - section = self.sections[ sec ] - section.chapter = chap - section.reorder() - chap.sections.append( section ) - else: - sys.stderr.write( "WARNING: chapter '" + - chap.name + "' in " + chap.block.location() + \ - " lists unknown section '" + sec + "'\n" ) - - # check that all sections are in a chapter - # - others = [] - for sec in self.sections.values(): - if not sec.chapter: - others.append(sec) - - # create a new special chapter for all remaining sections - # when necessary - # - if others: - chap = DocChapter( None ) - chap.sections = others - self.chapters.append( chap ) - - - -class DocBlock: - - def __init__( self, source, follow, processor ): - - processor.reset() - - self.source = source - self.code = [] - self.type = "ERRTYPE" - self.name = "ERRNAME" - self.section = processor.section - self.markups = processor.process_content( source.content ) - - # compute block type from first markup tag - try: - self.type = self.markups[0].tag - except: - pass - - - # compute block name from first markup paragraph - try: - markup = self.markups[0] - para = markup.fields[0].items[0] - name = para.words[0] - m = re_identifier.match( name ) - if m: - name = m.group(1) - self.name = name - except: - pass - - # detect new section starts - if self.type == "section": - processor.set_section( self.name ) - processor.section.add_def( self ) - - # detect new chapter - elif self.type == "chapter": - processor.add_chapter( self ) - - else: - processor.section.add_block( self ) - - # now, compute the source lines relevant to this documentation - # block. We keep normal comments in for obvious reasons (??) - source = [] - for b in follow: - if b.format: - break - for l in b.lines: - # we use "/* */" as a separator - if re_source_sep.match( l ): - break - source.append( l ) - - # now strip the leading and trailing empty lines from the sources - start = 0 - end = len( source )-1 - - while start < end and not string.strip( source[start] ): - start = start + 1 - - while start < end and not string.strip( source[end] ): - end = end - 1 - - source = source[start:end+1] - - self.code = source - - - def location( self ): - return self.source.location() - - - - def get_markup( self, tag_name ): - """return the DocMarkup corresponding to a given tag in a block""" - for m in self.markups: - if m.tag == string.lower(tag_name): - return m - return None - - - def get_markup_name( self, tag_name ): - """return the name of a given primary markup in a block""" - try: - m = self.get_markup( tag_name ) - return m.get_name() - except: - return None - - - def get_markup_words( self, tag_name ): - try: - m = self.get_markup( tag_name ) - return m.fields[0].items[0].words - except: - return [] - - - def get_markup_text( self, tag_name ): - result = self.get_markup_words( tag_name ) - return string.join( result ) - - - def get_markup_items( self, tag_name ): - try: - m = self.get_markup( tag_name ) - return m.fields[0].items - except: - return None diff --git a/nx-X11/extras/freetype2/src/tools/docmaker/docbeauty.py b/nx-X11/extras/freetype2/src/tools/docmaker/docbeauty.py deleted file mode 100644 index 94b266b6d..000000000 --- a/nx-X11/extras/freetype2/src/tools/docmaker/docbeauty.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env python -# -# DocBeauty (c) 2003, 2004 David Turner <david@freetype.org> -# -# This program is used to beautify the documentation comments used -# in the FreeType 2 public headers. -# - -from sources import * -from content import * -from utils import * - -import utils - -import sys, os, time, string, getopt - -content_processor = ContentProcessor() - - -def beautify_block( block ): - if block.content: - content_processor.reset() - - markups = content_processor.process_content( block.content ) - text = [] - first = 1 - - for markup in markups: - text.extend( markup.beautify( first ) ) - first = 0 - - # now beautify the documentation "borders" themselves - lines = [ " /*************************************************************************" ] - for l in text: - lines.append( " *" + l ) - lines.append( " */" ) - - block.lines = lines - - -def usage(): - print "\nDocBeauty 0.1 Usage information\n" - print " docbeauty [options] file1 [ file2 ... ]\n" - print "using the following options:\n" - print " -h : print this page" - print " -b : backup original files with the 'orig' extension" - print "" - print " --backup : same as -b" - - -def main( argv ): - """main program loop""" - - global output_dir - - try: - opts, args = getopt.getopt( sys.argv[1:], - "hb", - [ "help", "backup" ] ) - - except getopt.GetoptError: - usage() - sys.exit( 2 ) - - if args == []: - usage() - sys.exit( 1 ) - - # process options - # - output_dir = None - do_backup = None - - for opt in opts: - if opt[0] in ( "-h", "--help" ): - usage() - sys.exit( 0 ) - - if opt[0] in ( "-b", "--backup" ): - do_backup = 1 - - # create context and processor - source_processor = SourceProcessor() - - # retrieve the list of files to process - file_list = make_file_list( args ) - for filename in file_list: - source_processor.parse_file( filename ) - for block in source_processor.blocks: - beautify_block( block ) - new_name = filename + ".new" - ok = None - try: - file = open( new_name, "wt" ) - for block in source_processor.blocks: - for line in block.lines: - file.write( line ) - file.write( "\n" ) - file.close() - except: - ok = 0 - -# if called from the command line -# -if __name__ == '__main__': - main( sys.argv ) - - -# eof diff --git a/nx-X11/extras/freetype2/src/tools/docmaker/docmaker.py b/nx-X11/extras/freetype2/src/tools/docmaker/docmaker.py deleted file mode 100644 index 9da4bbf8e..000000000 --- a/nx-X11/extras/freetype2/src/tools/docmaker/docmaker.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env python -# -# DocMaker (c) 2002, 2004 David Turner <david@freetype.org> -# -# This program is a re-write of the original DocMaker took used -# to generate the API Reference of the FreeType font engine -# by converting in-source comments into structured HTML. -# -# This new version is capable of outputting XML data, as well -# as accepts more liberal formatting options. -# -# It also uses regular expression matching and substitution -# to speed things significantly. -# - -from sources import * -from content import * -from utils import * -from formatter import * -from tohtml import * - -import utils - -import sys, os, time, string, glob, getopt - - -def usage(): - print "\nDocMaker Usage information\n" - print " docmaker [options] file1 [ file2 ... ]\n" - print "using the following options:\n" - print " -h : print this page" - print " -t : set project title, as in '-t \"My Project\"'" - print " -o : set output directory, as in '-o mydir'" - print " -p : set documentation prefix, as in '-p ft2'" - print "" - print " --title : same as -t, as in '--title=\"My Project\"'" - print " --output : same as -o, as in '--output=mydir'" - print " --prefix : same as -p, as in '--prefix=ft2'" - - -def main( argv ): - """main program loop""" - - global output_dir - - try: - opts, args = getopt.getopt( sys.argv[1:], - "ht:o:p:", - [ "help", "title=", "output=", "prefix=" ] ) - - except getopt.GetoptError: - usage() - sys.exit( 2 ) - - if args == []: - usage() - sys.exit( 1 ) - - # process options - # - project_title = "Project" - project_prefix = None - output_dir = None - - for opt in opts: - if opt[0] in ( "-h", "--help" ): - usage() - sys.exit( 0 ) - - if opt[0] in ( "-t", "--title" ): - project_title = opt[1] - - if opt[0] in ( "-o", "--output" ): - utils.output_dir = opt[1] - - if opt[0] in ( "-p", "--prefix" ): - project_prefix = opt[1] - - check_output( ) - - # create context and processor - source_processor = SourceProcessor() - content_processor = ContentProcessor() - - # retrieve the list of files to process - file_list = make_file_list( args ) - for filename in file_list: - source_processor.parse_file( filename ) - content_processor.parse_sources( source_processor ) - - # process sections - content_processor.finish() - - formatter = HtmlFormatter( content_processor, project_title, project_prefix ) - - formatter.toc_dump() - formatter.index_dump() - formatter.section_dump_all() - - -# if called from the command line -# -if __name__ == '__main__': - main( sys.argv ) - - -# eof diff --git a/nx-X11/extras/freetype2/src/tools/docmaker/formatter.py b/nx-X11/extras/freetype2/src/tools/docmaker/formatter.py deleted file mode 100644 index 63ecddc97..000000000 --- a/nx-X11/extras/freetype2/src/tools/docmaker/formatter.py +++ /dev/null @@ -1,203 +0,0 @@ -from sources import * -from content import * -from utils import * - -# This is the base Formatter class. its purpose is to convert -# a content processor's data into specific documents (i.e. table of -# contents, global index, and individual API reference indices). -# -# You'll need to sub-class it to output anything sensible. For example, -# the file tohtml.py contains the definition of the HtmlFormatter sub-class -# used to output, you guessed it, HTML. -# - -class Formatter: - - def __init__( self, processor ): - - self.processor = processor - self.identifiers = {} - self.chapters = processor.chapters - self.sections = processor.sections.values() - self.block_index = [] - - # store all blocks in a dictionary - self.blocks = [] - for section in self.sections: - for block in section.blocks.values(): - self.add_identifier( block.name, block ) - - # add enumeration values to the index, since this is useful - for markup in block.markups: - if markup.tag == 'values': - for field in markup.fields: - self.add_identifier( field.name, block ) - - - self.block_index = self.identifiers.keys() - self.block_index.sort( index_sort ) - - - def add_identifier( self, name, block ): - if self.identifiers.has_key( name ): - # duplicate name !! - sys.stderr.write( \ - "WARNING: duplicate definition for '" + name + "' in " + \ - block.location() + ", previous definition in " + \ - self.identifiers[ name ].location() + "\n" ) - else: - self.identifiers[name] = block - - - # - # Formatting the table of contents - # - - def toc_enter( self ): - pass - - def toc_chapter_enter( self, chapter ): - pass - - def toc_section_enter( self, section ): - pass - - def toc_section_exit( self, section ): - pass - - def toc_chapter_exit( self, chapter ): - pass - - def toc_index( self, index_filename ): - pass - - def toc_exit( self ): - pass - - def toc_dump( self, toc_filename = None, index_filename = None ): - - output = None - if toc_filename: - output = open_output( toc_filename ) - - self.toc_enter() - - for chap in self.processor.chapters: - - self.toc_chapter_enter( chap ) - - for section in chap.sections: - self.toc_section_enter( section ) - self.toc_section_exit( section ) - - self.toc_chapter_exit ( chap ) - - self.toc_index( index_filename ) - - self.toc_exit() - - if output: - close_output( output ) - - # - # Formatting the index - # - - def index_enter( self ): - pass - - def index_name_enter( self, name ): - pass - - def index_name_exit( self, name ): - pass - - def index_exit( self ): - pass - - def index_dump( self, index_filename = None ): - - output = None - if index_filename: - output = open_output( index_filename ) - - self.index_enter() - - for name in self.block_index: - self.index_name_enter( name ) - self.index_name_exit ( name ) - - self.index_exit() - - if output: - close_output( output ) - - # - # Formatting a section - # - def section_enter( self, section ): - pass - - def block_enter( self, block ): - pass - - def markup_enter( self, markup, block = None ): - pass - - def field_enter( self, field, markup = None, block = None ): - pass - - def field_exit( self, field, markup = None, block = None ): - pass - - def markup_exit( self, markup, block = None ): - pass - - def block_exit( self, block ): - pass - - def section_exit( self, section ): - pass - - - def section_dump( self, section, section_filename = None ): - - output = None - if section_filename: - output = open_output( section_filename ) - - self.section_enter( section ) - - for name in section.block_names: - block = self.identifiers[ name ] - self.block_enter( block ) - - for markup in block.markups[1:]: # always ignore first markup !! - self.markup_enter( markup, block ) - - for field in markup.fields: - self.field_enter( field, markup, block ) - - self.field_exit ( field, markup, block ) - - self.markup_exit( markup, block ) - - self.block_exit( block ) - - self.section_exit ( section ) - - if output: - close_output( output ) - - - def section_dump_all( self ): - for section in self.sections: - self.section_dump( section ) - - # - # Formatting a block - # - - - - diff --git a/nx-X11/extras/freetype2/src/tools/docmaker/sources.py b/nx-X11/extras/freetype2/src/tools/docmaker/sources.py deleted file mode 100644 index 492300562..000000000 --- a/nx-X11/extras/freetype2/src/tools/docmaker/sources.py +++ /dev/null @@ -1,355 +0,0 @@ -# -# this file contains definitions of classes needed to decompose -# C sources files into a series of multi-line "blocks". There are -# two kinds of blocks: -# -# - normal blocks, which contain source code or ordinary comments -# -# - documentation blocks, which have restricted formatting, and -# whose text always start with a documentation markup tag like -# "<Function>", "<Type>", etc.. -# -# the routines used to process the content of documentation blocks -# are not contained here, but in "content.py" -# -# the classes and methods found here only deal with text parsing -# and basic documentation block extraction -# -import fileinput, re, sys, os, string - - - - - - -################################################################ -## -## BLOCK FORMAT PATTERN -## -## A simple class containing compiled regular expressions used -## to detect potential documentation format block comments within -## C source code -## -## note that the 'column' pattern must contain a group that will -## be used to "unbox" the content of documentation comment blocks -## -class SourceBlockFormat: - - def __init__( self, id, start, column, end ): - """create a block pattern, used to recognize special documentation blocks""" - - self.id = id - self.start = re.compile( start, re.VERBOSE ) - self.column = re.compile( column, re.VERBOSE ) - self.end = re.compile( end, re.VERBOSE ) - - - -# -# format 1 documentation comment blocks look like the following: -# -# /************************************/ -# /* */ -# /* */ -# /* */ -# /************************************/ -# -# we define a few regular expressions here to detect them -# - -start = r''' - \s* # any number of whitespace - /\*{2,}/ # followed by '/' and at least two asterisks then '/' - \s*$ # eventually followed by whitespace -''' - -column = r''' - \s* # any number of whitespace - /\*{1} # followed by '/' and precisely one asterisk - ([^*].*) # followed by anything (group 1) - \*{1}/ # followed by one asterisk and a '/' - \s*$ # enventually followed by whitespace -''' - -re_source_block_format1 = SourceBlockFormat( 1, start, column, start ) - -# -# format 2 documentation comment blocks look like the following: -# -# /************************************ (at least 2 asterisks) -# * -# * -# * -# * -# **/ (1 or more asterisks at the end) -# -# we define a few regular expressions here to detect them -# -start = r''' - \s* # any number of whitespace - /\*{2,} # followed by '/' and at least two asterisks - \s*$ # eventually followed by whitespace -''' - -column = r''' - \s* # any number of whitespace - \*{1} # followed by precisely one asterisk - (.*) # then anything (group1) -''' - -end = r''' - \s* # any number of whitespace - \*+/ # followed by at least one asterisk, then '/' -''' - -re_source_block_format2 = SourceBlockFormat( 2, start, column, end ) - -# -# the list of supported documentation block formats, we could add new ones -# relatively easily -# -re_source_block_formats = [ re_source_block_format1, re_source_block_format2 ] - - -# -# the following regular expressions corresponds to markup tags -# within the documentation comment blocks. they're equivalent -# despite their different syntax -# -# notice how each markup tag _must_ begin a new line -# -re_markup_tag1 = re.compile( r'''\s*<(\w*)>''' ) # <xxxx> format -re_markup_tag2 = re.compile( r'''\s*@(\w*):''' ) # @xxxx: format - -# -# the list of supported markup tags, we could add new ones relatively -# easily -# -re_markup_tags = [ re_markup_tag1, re_markup_tag2 ] - -# -# used to detect a cross-reference, after markup tags have been stripped -# -re_crossref = re.compile( r'@(\w*)(.*)' ) - -# -# used to detect italic and bold styles in paragraph text -# -re_italic = re.compile( r'_(\w+)_' ) -re_bold = re.compile( r'\*(\w+)\*' ) - -# -# used to detect the end of commented source lines -# -re_source_sep = re.compile( r'\s*/\*\s*\*/' ) - -# -# used to perform cross-reference within source output -# -re_source_crossref = re.compile( r'(\W*)(\w*)' ) - -# -# a list of reserved source keywords -# -re_source_keywords = re.compile( '''( typedef | - struct | - enum | - union | - const | - char | - int | - short | - long | - void | - signed | - unsigned | - \#include | - \#define | - \#undef | - \#if | - \#ifdef | - \#ifndef | - \#else | - \#endif )''', re.VERBOSE ) - -################################################################ -## -## SOURCE BLOCK CLASS -## -## A SourceProcessor is in charge or reading a C source file -## and decomposing it into a series of different "SourceBlocks". -## each one of these blocks can be made of the following data: -## -## - A documentation comment block that starts with "/**" and -## whose exact format will be discussed later -## -## - normal sources lines, include comments -## -## the important fields in a text block are the following ones: -## -## self.lines : a list of text lines for the corresponding block -## -## self.content : for documentation comment blocks only, this is the -## block content that has been "unboxed" from its -## decoration. This is None for all other blocks -## (i.e. sources or ordinary comments with no starting -## markup tag) -## -class SourceBlock: - def __init__( self, processor, filename, lineno, lines ): - self.processor = processor - self.filename = filename - self.lineno = lineno - self.lines = lines[:] - self.format = processor.format - self.content = [] - - if self.format == None: - return - - words = [] - - # extract comment lines - lines = [] - - for line0 in self.lines: - m = self.format.column.match( line0 ) - if m: - lines.append( m.group(1) ) - - # now, look for a markup tag - for l in lines: - l = string.strip(l) - if len(l) > 0: - for tag in re_markup_tags: - if tag.match( l ): - self.content = lines - return - - def location( self ): - return "(" + self.filename + ":" + repr(self.lineno) + ")" - - - # debugging only - not used in normal operations - def dump( self ): - - if self.content: - print "{{{content start---" - for l in self.content: - print l - print "---content end}}}" - return - - fmt = "" - if self.format: - fmt = repr(self.format.id) + " " - - for line in self.lines: - print line - - -################################################################ -## -## SOURCE PROCESSOR CLASS -## -## The SourceProcessor is in charge or reading a C source file -## and decomposing it into a series of different "SourceBlock" -## objects. -## -## each one of these blocks can be made of the following data: -## -## - A documentation comment block that starts with "/**" and -## whose exact format will be discussed later -## -## - normal sources lines, include comments -## -## -class SourceProcessor: - - def __init__( self ): - """initialize a source processor""" - self.blocks = [] - self.filename = None - self.format = None - self.lines = [] - - def reset( self ): - """reset a block processor, clean all its blocks""" - self.blocks = [] - self.format = None - - - def parse_file( self, filename ): - """parse a C source file, and adds its blocks to the processor's list""" - - self.reset() - - self.filename = filename - - fileinput.close() - self.format = None - self.lineno = 0 - self.lines = [] - - for line in fileinput.input( filename ): - - # strip trailing newlines, important on Windows machines !! - if line[-1] == '\012': - line = line[0:-1] - - if self.format == None: - self.process_normal_line( line ) - - else: - if self.format.end.match( line ): - # that's a normal block end, add it to lines and - # create a new block - self.lines.append( line ) - self.add_block_lines() - - elif self.format.column.match( line ): - # that's a normal column line, add it to 'lines' - self.lines.append( line ) - - else: - # humm.. this is an unexcepted block end, - # create a new block, but don't process the line - self.add_block_lines() - - # we need to process the line again - self.process_normal_line( line ) - - # record the last lines - self.add_block_lines() - - - - def process_normal_line( self, line ): - """process a normal line and check if it's the start of a new block""" - for f in re_source_block_formats: - if f.start.match( line ): - self.add_block_lines() - self.format = f - self.lineno = fileinput.filelineno() - - self.lines.append( line ) - - - - def add_block_lines( self ): - """add the current accumulated lines, and create a new block""" - if self.lines != []: - block = SourceBlock( self, self.filename, self.lineno, self.lines ) - - self.blocks.append( block ) - self.format = None - self.lines = [] - - - # debugging only, not used in normal operations - def dump( self ): - """print all blocks in a processor""" - for b in self.blocks: - b.dump() - -# eof diff --git a/nx-X11/extras/freetype2/src/tools/docmaker/tohtml.py b/nx-X11/extras/freetype2/src/tools/docmaker/tohtml.py deleted file mode 100644 index 2a3cf239b..000000000 --- a/nx-X11/extras/freetype2/src/tools/docmaker/tohtml.py +++ /dev/null @@ -1,489 +0,0 @@ -from sources import * -from content import * -from formatter import * - -import time - -# The following defines the HTML header used by all generated pages. -# -html_header_1 = """\ -<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN" -"http://www.w3.org/TR/html4/loose.dtd"> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> -<title>""" - -html_header_2= """ API Reference</title> -<style type="text/css"> - body { font-family: Verdana, Geneva, Arial, Helvetica, serif; - color: #000000; - background: #FFFFFF; } - - p { text-align: justify; } - h1 { text-align: center; } - li { text-align: justify; } - - a:link { color: #0000EF; } - a:visited { color: #51188E; } - a:hover { color: #FF0000; } - - span.keyword { font-family: monospace; - text-align: left; - white-space: pre; - color: darkblue; } - - pre.colored { color: blue; } - - ul.empty { list-style-type: none; } -</style> -</head> -<body> -<center><h1>""" - -html_header_3=""" API Reference</h1></center> -""" - - - -# The HTML footer used by all generated pages. -# -html_footer = """\ -</body> -</html>""" - -# The header and footer used for each section. -# -section_title_header = "<center><h1>" -section_title_footer = "</h1></center>" - -# The header and footer used for code segments. -# -code_header = '<pre class="colored">' -code_footer = '</pre>' - -# Paragraph header and footer. -# -para_header = "<p>" -para_footer = "</p>" - -# Block header and footer. -# -block_header = '<table align=center width="75%"><tr><td>' -block_footer = '</td></tr></table><hr width="75%">' - -# Description header/footer. -# -description_header = '<table align=center width="87%"><tr><td>' -description_footer = "</td></tr></table><br>" - -# Marker header/inter/footer combination. -# -marker_header = '<table align=center width="87%" cellpadding=5><tr bgcolor="#EEEEFF"><td><em><b>' -marker_inter = "</b></em></td></tr><tr><td>" -marker_footer = "</td></tr></table>" - -# Source code extracts header/footer. -# -source_header = '<table align=center width="87%"><tr bgcolor="#D6E8FF"><td><pre>\n' -source_footer = "\n</pre></table><br>" - -# Chapter header/inter/footer. -# -chapter_header = '<br><table align=center width="75%"><tr><td><h2>' -chapter_inter = '</h2><ul class="empty"><li>' -chapter_footer = '</li></ul></td></tr></table>' - - -# source language keyword coloration/styling -# -keyword_prefix = '<span class="keyword">' -keyword_suffix = '</span>' - -section_synopsis_header = '<h2>Synopsis</h2>' -section_synopsis_footer = '' - -# Translate a single line of source to HTML. This will convert -# a "<" into "<.", ">" into ">.", etc. -# -def html_quote( line ): - result = string.replace( line, "&", "&" ) - result = string.replace( result, "<", "<" ) - result = string.replace( result, ">", ">" ) - return result - - -# same as 'html_quote', but ignores left and right brackets -# -def html_quote0( line ): - return string.replace( line, "&", "&" ) - - -def dump_html_code( lines, prefix = "" ): - # clean the last empty lines - # - l = len( self.lines ) - while l > 0 and string.strip( self.lines[l - 1] ) == "": - l = l - 1 - - # The code footer should be directly appended to the last code - # line to avoid an additional blank line. - # - print prefix + code_header, - for line in self.lines[0 : l+1]: - print '\n' + prefix + html_quote(line), - print prefix + code_footer, - - - -class HtmlFormatter(Formatter): - - def __init__( self, processor, project_title, file_prefix ): - - Formatter.__init__( self, processor ) - - global html_header_1, html_header_2, html_header_3, html_footer - - if file_prefix: - file_prefix = file_prefix + "-" - else: - file_prefix = "" - - self.project_title = project_title - self.file_prefix = file_prefix - self.html_header = html_header_1 + project_title + html_header_2 + \ - project_title + html_header_3 - - self.html_footer = "<center><font size=""-2"">generated on " + \ - time.asctime( time.localtime( time.time() ) ) + \ - "</font></center>" + html_footer - - self.columns = 3 - - def make_section_url( self, section ): - return self.file_prefix + section.name + ".html" - - - def make_block_url( self, block ): - return self.make_section_url( block.section ) + "#" + block.name - - - def make_html_words( self, words ): - """ convert a series of simple words into some HTML text """ - line = "" - if words: - line = html_quote( words[0] ) - for w in words[1:]: - line = line + " " + html_quote( w ) - - return line - - - def make_html_word( self, word ): - """analyze a simple word to detect cross-references and styling""" - # look for cross-references - # - m = re_crossref.match( word ) - if m: - try: - name = m.group(1) - rest = m.group(2) - block = self.identifiers[ name ] - url = self.make_block_url( block ) - return '<a href="' + url + '">' + name + '</a>' + rest - except: - return '?' + name + '?' + rest - - # look for italics and bolds - m = re_italic.match( word ) - if m: - name = m.group(1) - return '<i>'+name+'</i>' - - m = re_bold.match( word ) - if m: - name = m.group(1) - return '<b>'+name+'</b>' - - return html_quote(word) - - - def make_html_para( self, words ): - """ convert a paragraph's words into tagged HTML text, handle xrefs """ - line = "" - if words: - line = self.make_html_word( words[0] ) - for word in words[1:]: - line = line + " " + self.make_html_word( word ) - - return "<p>" + line + "</p>" - - - def make_html_code( self, lines ): - """ convert a code sequence to HTML """ - line = code_header + '\n' - for l in lines: - line = line + html_quote( l ) + '\n' - - return line + code_footer - - - def make_html_items( self, items ): - """ convert a field's content into some valid HTML """ - lines = [] - for item in items: - if item.lines: - lines.append( self.make_html_code( item.lines ) ) - else: - lines.append( self.make_html_para( item.words ) ) - - return string.join( lines, '\n' ) - - - def print_html_items( self, items ): - print self.make_html_items( items ) - - - def print_html_field( self, field ): - if field.name: - print "<table><tr valign=top><td><b>"+field.name+"</b></td><td>" - - print self.make_html_items( field.items ) - - if field.name: - print "</td></tr></table>" - - - def html_source_quote( self, line, block_name = None ): - result = "" - while line: - m = re_source_crossref.match( line ) - if m: - name = m.group(2) - prefix = html_quote( m.group(1) ) - length = len( m.group(0) ) - - if name == block_name: - # this is the current block name, if any - result = result + prefix + '<b>' + name + '</b>' - - elif re_source_keywords.match(name): - # this is a C keyword - result = result + prefix + keyword_prefix + name + keyword_suffix - - elif self.identifiers.has_key(name): - # this is a known identifier - block = self.identifiers[name] - result = result + prefix + '<a href="' + \ - self.make_block_url(block) + '">' + name + '</a>' - else: - result = result + html_quote(line[ : length ]) - - line = line[ length : ] - else: - result = result + html_quote(line) - line = [] - - return result - - - def print_html_field_list( self, fields ): - print "<table cellpadding=3>" - for field in fields: - print "<tr valign=top><td><b>" + field.name + "</b></td><td>" - self.print_html_items( field.items ) - print "</td></tr>" - print "</table>" - - - def print_html_markup( self, markup ): - table_fields = [] - for field in markup.fields: - if field.name: - # we begin a new series of field or value definitions, we - # will record them in the 'table_fields' list before outputting - # all of them as a single table - # - table_fields.append( field ) - - else: - if table_fields: - self.print_html_field_list( table_fields ) - table_fields = [] - - self.print_html_items( field.items ) - - if table_fields: - self.print_html_field_list( table_fields ) - - # - # Formatting the index - # - - def index_enter( self ): - print self.html_header - self.index_items = {} - - def index_name_enter( self, name ): - block = self.identifiers[ name ] - url = self.make_block_url( block ) - self.index_items[ name ] = url - - def index_exit( self ): - - # block_index already contains the sorted list of index names - count = len( self.block_index ) - rows = (count + self.columns - 1)/self.columns - - print "<table align=center border=0 cellpadding=0 cellspacing=0>" - for r in range(rows): - line = "<tr>" - for c in range(self.columns): - i = r + c*rows - if i < count: - bname = self.block_index[ r + c*rows ] - url = self.index_items[ bname ] - line = line + '<td><a href="' + url + '">' + bname + '</a></td>' - else: - line = line + '<td></td>' - line = line + "</tr>" - print line - - print "</table>" - print self.html_footer - self.index_items = {} - - def index_dump( self, index_filename = None ): - - if index_filename == None: - index_filename = self.file_prefix + "index.html" - - Formatter.index_dump( self, index_filename ) - - # - # Formatting the table of content - # - def toc_enter( self ): - print self.html_header - print "<center><h1>Table of Contents</h1></center>" - - def toc_chapter_enter( self, chapter ): - print chapter_header + string.join(chapter.title) + chapter_inter - print "<table cellpadding=5>" - - def toc_section_enter( self, section ): - print "<tr valign=top><td>" - print '<a href="' + self.make_section_url( section ) + '">' + \ - section.title + '</a></td><td>' - - print self.make_html_para( section.abstract ) - - def toc_section_exit( self, section ): - print "</td></tr>" - - def toc_chapter_exit( self, chapter ): - print "</table>" - print chapter_footer - - def toc_index( self, index_filename ): - print chapter_header + '<a href="' + index_filename + '">Global Index</a>' + chapter_inter + chapter_footer - - def toc_exit( self ): - print self.html_footer - - def toc_dump( self, toc_filename = None, index_filename = None ): - if toc_filename == None: - toc_filename = self.file_prefix + "toc.html" - - if index_filename == None: - index_filename = self.file_prefix + "index.html" - - Formatter.toc_dump( self, toc_filename, index_filename ) - - # - # Formatting sections - # - def section_enter( self, section ): - print self.html_header - - print section_title_header - print section.title - print section_title_footer - - # print section synopsys - print section_synopsis_header - print "<table align=center cellspacing=5 cellpadding=0 border=0>" - - maxwidth = 0 - for b in section.blocks.values(): - if len(b.name) > maxwidth: - maxwidth = len(b.name) - - width = 70 # XXX magic number - columns = width / maxwidth - if columns < 1: - columns = 1 - - count = len(section.block_names) - rows = (count + columns-1)/columns - for r in range(rows): - line = "<tr>" - for c in range(columns): - i = r + c*rows - line = line + '<td></td><td>' - if i < count: - name = section.block_names[i] - line = line + '<a href="#' + name + '">' + name + '</a>' - - line = line + '</td>' - line = line + "</tr>" - print line - - print "</table><br><br>" - print section_synopsis_footer - - print description_header - print self.make_html_items( section.description ) - print description_footer - - def block_enter( self, block ): - print block_header - - # place html anchor if needed - if block.name: - print '<h4><a name="' + block.name + '">' + block.name + '</a></h4>' - - # dump the block C source lines now - if block.code: - print source_header - for l in block.code: - print self.html_source_quote( l, block.name ) - print source_footer - - - def markup_enter( self, markup, block ): - if markup.tag == "description": - print description_header - else: - print marker_header + markup.tag + marker_inter - - self.print_html_markup( markup ) - - def markup_exit( self, markup, block ): - if markup.tag == "description": - print description_footer - else: - print marker_footer - - def block_exit( self, block ): - print block_footer - - - def section_exit( self, section ): - print html_footer - - - def section_dump_all( self ): - for section in self.sections: - self.section_dump( section, self.file_prefix + section.name + '.html' ) - diff --git a/nx-X11/extras/freetype2/src/tools/docmaker/utils.py b/nx-X11/extras/freetype2/src/tools/docmaker/utils.py deleted file mode 100644 index c3e9e2700..000000000 --- a/nx-X11/extras/freetype2/src/tools/docmaker/utils.py +++ /dev/null @@ -1,128 +0,0 @@ -import string, sys, os, glob - -# current output directory -# -output_dir = None - - -# This function is used to sort the index. It is a simple lexicographical -# sort, except that it places capital letters before lowercase ones. -# -def index_sort( s1, s2 ): - if not s1: - return -1 - - if not s2: - return 1 - - l1 = len( s1 ) - l2 = len( s2 ) - m1 = string.lower( s1 ) - m2 = string.lower( s2 ) - - for i in range( l1 ): - if i >= l2 or m1[i] > m2[i]: - return 1 - - if m1[i] < m2[i]: - return -1 - - if s1[i] < s2[i]: - return -1 - - if s1[i] > s2[i]: - return 1 - - if l2 > l1: - return -1 - - return 0 - -# Sort input_list, placing the elements of order_list in front. -# -def sort_order_list( input_list, order_list ): - new_list = order_list[:] - for id in input_list: - if not id in order_list: - new_list.append( id ) - return new_list - - - -# Open the standard output to a given project documentation file. Use -# "output_dir" to determine the filename location if necessary and save the -# old stdout in a tuple that is returned by this function. -# -def open_output( filename ): - global output_dir - - if output_dir and output_dir != "": - filename = output_dir + os.sep + filename - - old_stdout = sys.stdout - new_file = open( filename, "w" ) - sys.stdout = new_file - - return ( new_file, old_stdout ) - - -# Close the output that was returned by "close_output". -# -def close_output( output ): - output[0].close() - sys.stdout = output[1] - - -# Check output directory. -# -def check_output( ): - global output_dir - if output_dir: - if output_dir != "": - if not os.path.isdir( output_dir ): - sys.stderr.write( "argument" + " '" + output_dir + "' " + - "is not a valid directory" ) - sys.exit( 2 ) - else: - output_dir = None - -def file_exists( pathname ): - """checks that a given file exists""" - result = 1 - try: - file = open( pathname, "r" ) - file.close() - except: - result = None - sys.stderr.write( pathname + " couldn't be accessed\n" ) - - return result - - -def make_file_list( args = None ): - """builds a list of input files from command-line arguments""" - - file_list = [] - # sys.stderr.write( repr( sys.argv[1 :] ) + '\n' ) - - if not args: - args = sys.argv[1 :] - - for pathname in args: - if string.find( pathname, '*' ) >= 0: - newpath = glob.glob( pathname ) - newpath.sort() # sort files -- this is important because - # of the order of files - else: - newpath = [pathname] - - file_list.extend( newpath ) - - if len( file_list ) == 0: - file_list = None - else: - # now filter the file list to remove non-existing ones - file_list = filter( file_exists, file_list ) - - return file_list - diff --git a/nx-X11/extras/freetype2/src/tools/glnames.py b/nx-X11/extras/freetype2/src/tools/glnames.py deleted file mode 100644 index e8e80ec6c..000000000 --- a/nx-X11/extras/freetype2/src/tools/glnames.py +++ /dev/null @@ -1,4954 +0,0 @@ -#!/usr/bin/env python -# - -# -# FreeType 2 glyph name builder -# - - -# Copyright 1996-2000, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -"""\ - -usage: %s <output-file> - - This very simple python script is used to generate the glyph names - tables defined in the PSNames module. - - Its single argument is the name of the header file to be created. -""" - - -import sys, string - - -# This table is used to name the glyphs according to the Macintosh -# specification. It is used by the TrueType Postscript names table. -# -# See http://fonts.apple.com/TTRefMan/RM06/Chap6post.html -# for the official list. -# -mac_standard_names = \ -[ - # 0 - ".notdef", ".null", "nonmarkingreturn", "space", "exclam", - "quotedbl", "numbersign", "dollar", "percent", "ampersand", - - # 10 - "quotesingle", "parenleft", "parenright", "asterisk", "plus", - "comma", "hyphen", "period", "slash", "zero", - - # 20 - "one", "two", "three", "four", "five", - "six", "seven", "eight", "nine", "colon", - - # 30 - "semicolon", "less", "equal", "greater", "question", - "at", "A", "B", "C", "D", - - # 40 - "E", "F", "G", "H", "I", - "J", "K", "L", "M", "N", - - # 50 - "O", "P", "Q", "R", "S", - "T", "U", "V", "W", "X", - - # 60 - "Y", "Z", "bracketleft", "backslash", "bracketright", - "asciicircum", "underscore", "grave", "a", "b", - - # 70 - "c", "d", "e", "f", "g", - "h", "i", "j", "k", "l", - - # 80 - "m", "n", "o", "p", "q", - "r", "s", "t", "u", "v", - - # 90 - "w", "x", "y", "z", "braceleft", - "bar", "braceright", "asciitilde", "Adieresis", "Aring", - - # 100 - "Ccedilla", "Eacute", "Ntilde", "Odieresis", "Udieresis", - "aacute", "agrave", "acircumflex", "adieresis", "atilde", - - # 110 - "aring", "ccedilla", "eacute", "egrave", "ecircumflex", - "edieresis", "iacute", "igrave", "icircumflex", "idieresis", - - # 120 - "ntilde", "oacute", "ograve", "ocircumflex", "odieresis", - "otilde", "uacute", "ugrave", "ucircumflex", "udieresis", - - # 130 - "dagger", "degree", "cent", "sterling", "section", - "bullet", "paragraph", "germandbls", "registered", "copyright", - - # 140 - "trademark", "acute", "dieresis", "notequal", "AE", - "Oslash", "infinity", "plusminus", "lessequal", "greaterequal", - - # 150 - "yen", "mu", "partialdiff", "summation", "product", - "pi", "integral", "ordfeminine", "ordmasculine", "Omega", - - # 160 - "ae", "oslash", "questiondown", "exclamdown", "logicalnot", - "radical", "florin", "approxequal", "Delta", "guillemotleft", - - # 170 - "guillemotright", "ellipsis", "nonbreakingspace", "Agrave", "Atilde", - "Otilde", "OE", "oe", "endash", "emdash", - - # 180 - "quotedblleft", "quotedblright", "quoteleft", "quoteright", "divide", - "lozenge", "ydieresis", "Ydieresis", "fraction", "currency", - - # 190 - "guilsinglleft", "guilsinglright", "fi", "fl", "daggerdbl", - "periodcentered", "quotesinglbase", "quotedblbase", "perthousand", - "Acircumflex", - - # 200 - "Ecircumflex", "Aacute", "Edieresis", "Egrave", "Iacute", - "Icircumflex", "Idieresis", "Igrave", "Oacute", "Ocircumflex", - - # 210 - "apple", "Ograve", "Uacute", "Ucircumflex", "Ugrave", - "dotlessi", "circumflex", "tilde", "macron", "breve", - - # 220 - "dotaccent", "ring", "cedilla", "hungarumlaut", "ogonek", - "caron", "Lslash", "lslash", "Scaron", "scaron", - - # 230 - "Zcaron", "zcaron", "brokenbar", "Eth", "eth", - "Yacute", "yacute", "Thorn", "thorn", "minus", - - # 240 - "multiply", "onesuperior", "twosuperior", "threesuperior", "onehalf", - "onequarter", "threequarters", "franc", "Gbreve", "gbreve", - - # 250 - "Idotaccent", "Scedilla", "scedilla", "Cacute", "cacute", - "Ccaron", "ccaron", "dcroat" -] - - -# The list of standard "SID" glyph names. For the official list, -# see Annex A of document at -# http://partners.adobe.com/asn/developer/pdfs/tn/5176.CFF.pdf. -# -sid_standard_names = \ -[ - # 0 - ".notdef", "space", "exclam", "quotedbl", "numbersign", - "dollar", "percent", "ampersand", "quoteright", "parenleft", - - # 10 - "parenright", "asterisk", "plus", "comma", "hyphen", - "period", "slash", "zero", "one", "two", - - # 20 - "three", "four", "five", "six", "seven", - "eight", "nine", "colon", "semicolon", "less", - - # 30 - "equal", "greater", "question", "at", "A", - "B", "C", "D", "E", "F", - - # 40 - "G", "H", "I", "J", "K", - "L", "M", "N", "O", "P", - - # 50 - "Q", "R", "S", "T", "U", - "V", "W", "X", "Y", "Z", - - # 60 - "bracketleft", "backslash", "bracketright", "asciicircum", "underscore", - "quoteleft", "a", "b", "c", "d", - - # 70 - "e", "f", "g", "h", "i", - "j", "k", "l", "m", "n", - - # 80 - "o", "p", "q", "r", "s", - "t", "u", "v", "w", "x", - - # 90 - "y", "z", "braceleft", "bar", "braceright", - "asciitilde", "exclamdown", "cent", "sterling", "fraction", - - # 100 - "yen", "florin", "section", "currency", "quotesingle", - "quotedblleft", "guillemotleft", "guilsinglleft", "guilsinglright", "fi", - - # 110 - "fl", "endash", "dagger", "daggerdbl", "periodcentered", - "paragraph", "bullet", "quotesinglbase", "quotedblbase", "quotedblright", - - # 120 - "guillemotright", "ellipsis", "perthousand", "questiondown", "grave", - "acute", "circumflex", "tilde", "macron", "breve", - - # 130 - "dotaccent", "dieresis", "ring", "cedilla", "hungarumlaut", - "ogonek", "caron", "emdash", "AE", "ordfeminine", - - # 140 - "Lslash", "Oslash", "OE", "ordmasculine", "ae", - "dotlessi", "lslash", "oslash", "oe", "germandbls", - - # 150 - "onesuperior", "logicalnot", "mu", "trademark", "Eth", - "onehalf", "plusminus", "Thorn", "onequarter", "divide", - - # 160 - "brokenbar", "degree", "thorn", "threequarters", "twosuperior", - "registered", "minus", "eth", "multiply", "threesuperior", - - # 170 - "copyright", "Aacute", "Acircumflex", "Adieresis", "Agrave", - "Aring", "Atilde", "Ccedilla", "Eacute", "Ecircumflex", - - # 180 - "Edieresis", "Egrave", "Iacute", "Icircumflex", "Idieresis", - "Igrave", "Ntilde", "Oacute", "Ocircumflex", "Odieresis", - - # 190 - "Ograve", "Otilde", "Scaron", "Uacute", "Ucircumflex", - "Udieresis", "Ugrave", "Yacute", "Ydieresis", "Zcaron", - - # 200 - "aacute", "acircumflex", "adieresis", "agrave", "aring", - "atilde", "ccedilla", "eacute", "ecircumflex", "edieresis", - - # 210 - "egrave", "iacute", "icircumflex", "idieresis", "igrave", - "ntilde", "oacute", "ocircumflex", "odieresis", "ograve", - - # 220 - "otilde", "scaron", "uacute", "ucircumflex", "udieresis", - "ugrave", "yacute", "ydieresis", "zcaron", "exclamsmall", - - # 230 - "Hungarumlautsmall", "dollaroldstyle", "dollarsuperior", "ampersandsmall", - "Acutesmall", - "parenleftsuperior", "parenrightsuperior", "twodotenleader", - "onedotenleader", "zerooldstyle", - - # 240 - "oneoldstyle", "twooldstyle", "threeoldstyle", "fouroldstyle", - "fiveoldstyle", - "sixoldstyle", "sevenoldstyle", "eightoldstyle", "nineoldstyle", - "commasuperior", - - # 250 - "threequartersemdash", "periodsuperior", "questionsmall", "asuperior", - "bsuperior", - "centsuperior", "dsuperior", "esuperior", "isuperior", "lsuperior", - - # 260 - "msuperior", "nsuperior", "osuperior", "rsuperior", "ssuperior", - "tsuperior", "ff", "ffi", "ffl", "parenleftinferior", - - # 270 - "parenrightinferior", "Circumflexsmall", "hyphensuperior", "Gravesmall", - "Asmall", - "Bsmall", "Csmall", "Dsmall", "Esmall", "Fsmall", - - # 280 - "Gsmall", "Hsmall", "Ismall", "Jsmall", "Ksmall", - "Lsmall", "Msmall", "Nsmall", "Osmall", "Psmall", - - # 290 - "Qsmall", "Rsmall", "Ssmall", "Tsmall", "Usmall", - "Vsmall", "Wsmall", "Xsmall", "Ysmall", "Zsmall", - - # 300 - "colonmonetary", "onefitted", "rupiah", "Tildesmall", "exclamdownsmall", - "centoldstyle", "Lslashsmall", "Scaronsmall", "Zcaronsmall", - "Dieresissmall", - - # 310 - "Brevesmall", "Caronsmall", "Dotaccentsmall", "Macronsmall", "figuredash", - "hypheninferior", "Ogoneksmall", "Ringsmall", "Cedillasmall", - "questiondownsmall", - - # 320 - "oneeighth", "threeeighths", "fiveeighths", "seveneighths", "onethird", - "twothirds", "zerosuperior", "foursuperior", "fivesuperior", - "sixsuperior", - - # 330 - "sevensuperior", "eightsuperior", "ninesuperior", "zeroinferior", - "oneinferior", - "twoinferior", "threeinferior", "fourinferior", "fiveinferior", - "sixinferior", - - # 340 - "seveninferior", "eightinferior", "nineinferior", "centinferior", - "dollarinferior", - "periodinferior", "commainferior", "Agravesmall", "Aacutesmall", - "Acircumflexsmall", - - # 350 - "Atildesmall", "Adieresissmall", "Aringsmall", "AEsmall", "Ccedillasmall", - "Egravesmall", "Eacutesmall", "Ecircumflexsmall", "Edieresissmall", - "Igravesmall", - - # 360 - "Iacutesmall", "Icircumflexsmall", "Idieresissmall", "Ethsmall", - "Ntildesmall", - "Ogravesmall", "Oacutesmall", "Ocircumflexsmall", "Otildesmall", - "Odieresissmall", - - # 370 - "OEsmall", "Oslashsmall", "Ugravesmall", "Uacutesmall", - "Ucircumflexsmall", - "Udieresissmall", "Yacutesmall", "Thornsmall", "Ydieresissmall", - "001.000", - - # 380 - "001.001", "001.002", "001.003", "Black", "Bold", - "Book", "Light", "Medium", "Regular", "Roman", - - # 390 - "Semibold" -] - - -# This table maps character codes of the Adobe Standard Type 1 -# encoding to glyph indices in the sid_standard_names table. -# -t1_standard_encoding = \ -[ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 0, 111, 112, 113, - 114, 0, 115, 116, 117, 118, 119, 120, 121, 122, - 0, 123, 0, 124, 125, 126, 127, 128, 129, 130, - - 131, 0, 132, 133, 0, 134, 135, 136, 137, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 138, 0, 139, 0, 0, - 0, 0, 140, 141, 142, 143, 0, 0, 0, 0, - 0, 144, 0, 0, 0, 145, 0, 0, 146, 147, - - 148, 149, 0, 0, 0, 0 -] - - -# This table maps character codes of the Adobe Expert Type 1 -# encoding to glyph indices in the sid_standard_names table. -# -t1_expert_encoding = \ -[ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 229, 230, 0, 231, 232, 233, 234, - 235, 236, 237, 238, 13, 14, 15, 99, 239, 240, - - 241, 242, 243, 244, 245, 246, 247, 248, 27, 28, - 249, 250, 251, 252, 0, 253, 254, 255, 256, 257, - 0, 0, 0, 258, 0, 0, 259, 260, 261, 262, - 0, 0, 263, 264, 265, 0, 266, 109, 110, 267, - 268, 269, 0, 270, 271, 272, 273, 274, 275, 276, - - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 304, 305, 306, 0, 0, 307, 308, 309, 310, - 311, 0, 312, 0, 0, 313, 0, 0, 314, 315, - 0, 0, 316, 317, 318, 0, 0, 0, 158, 155, - 163, 319, 320, 321, 322, 323, 324, 325, 0, 0, - - 326, 150, 164, 169, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - - 373, 374, 375, 376, 377, 378 -] - - -# This data has been taken literally from the file `glyphlist.txt', -# version 2.0, 22 Sept 2002. It is available from -# -# http://partners.adobe.com/asn/developer/typeforum/unicodegn.html -# -adobe_glyph_list = """\ -A;0041 -AE;00C6 -AEacute;01FC -AEmacron;01E2 -AEsmall;F7E6 -Aacute;00C1 -Aacutesmall;F7E1 -Abreve;0102 -Abreveacute;1EAE -Abrevecyrillic;04D0 -Abrevedotbelow;1EB6 -Abrevegrave;1EB0 -Abrevehookabove;1EB2 -Abrevetilde;1EB4 -Acaron;01CD -Acircle;24B6 -Acircumflex;00C2 -Acircumflexacute;1EA4 -Acircumflexdotbelow;1EAC -Acircumflexgrave;1EA6 -Acircumflexhookabove;1EA8 -Acircumflexsmall;F7E2 -Acircumflextilde;1EAA -Acute;F6C9 -Acutesmall;F7B4 -Acyrillic;0410 -Adblgrave;0200 -Adieresis;00C4 -Adieresiscyrillic;04D2 -Adieresismacron;01DE -Adieresissmall;F7E4 -Adotbelow;1EA0 -Adotmacron;01E0 -Agrave;00C0 -Agravesmall;F7E0 -Ahookabove;1EA2 -Aiecyrillic;04D4 -Ainvertedbreve;0202 -Alpha;0391 -Alphatonos;0386 -Amacron;0100 -Amonospace;FF21 -Aogonek;0104 -Aring;00C5 -Aringacute;01FA -Aringbelow;1E00 -Aringsmall;F7E5 -Asmall;F761 -Atilde;00C3 -Atildesmall;F7E3 -Aybarmenian;0531 -B;0042 -Bcircle;24B7 -Bdotaccent;1E02 -Bdotbelow;1E04 -Becyrillic;0411 -Benarmenian;0532 -Beta;0392 -Bhook;0181 -Blinebelow;1E06 -Bmonospace;FF22 -Brevesmall;F6F4 -Bsmall;F762 -Btopbar;0182 -C;0043 -Caarmenian;053E -Cacute;0106 -Caron;F6CA -Caronsmall;F6F5 -Ccaron;010C -Ccedilla;00C7 -Ccedillaacute;1E08 -Ccedillasmall;F7E7 -Ccircle;24B8 -Ccircumflex;0108 -Cdot;010A -Cdotaccent;010A -Cedillasmall;F7B8 -Chaarmenian;0549 -Cheabkhasiancyrillic;04BC -Checyrillic;0427 -Chedescenderabkhasiancyrillic;04BE -Chedescendercyrillic;04B6 -Chedieresiscyrillic;04F4 -Cheharmenian;0543 -Chekhakassiancyrillic;04CB -Cheverticalstrokecyrillic;04B8 -Chi;03A7 -Chook;0187 -Circumflexsmall;F6F6 -Cmonospace;FF23 -Coarmenian;0551 -Csmall;F763 -D;0044 -DZ;01F1 -DZcaron;01C4 -Daarmenian;0534 -Dafrican;0189 -Dcaron;010E -Dcedilla;1E10 -Dcircle;24B9 -Dcircumflexbelow;1E12 -Dcroat;0110 -Ddotaccent;1E0A -Ddotbelow;1E0C -Decyrillic;0414 -Deicoptic;03EE -Delta;2206 -Deltagreek;0394 -Dhook;018A -Dieresis;F6CB -DieresisAcute;F6CC -DieresisGrave;F6CD -Dieresissmall;F7A8 -Digammagreek;03DC -Djecyrillic;0402 -Dlinebelow;1E0E -Dmonospace;FF24 -Dotaccentsmall;F6F7 -Dslash;0110 -Dsmall;F764 -Dtopbar;018B -Dz;01F2 -Dzcaron;01C5 -Dzeabkhasiancyrillic;04E0 -Dzecyrillic;0405 -Dzhecyrillic;040F -E;0045 -Eacute;00C9 -Eacutesmall;F7E9 -Ebreve;0114 -Ecaron;011A -Ecedillabreve;1E1C -Echarmenian;0535 -Ecircle;24BA -Ecircumflex;00CA -Ecircumflexacute;1EBE -Ecircumflexbelow;1E18 -Ecircumflexdotbelow;1EC6 -Ecircumflexgrave;1EC0 -Ecircumflexhookabove;1EC2 -Ecircumflexsmall;F7EA -Ecircumflextilde;1EC4 -Ecyrillic;0404 -Edblgrave;0204 -Edieresis;00CB -Edieresissmall;F7EB -Edot;0116 -Edotaccent;0116 -Edotbelow;1EB8 -Efcyrillic;0424 -Egrave;00C8 -Egravesmall;F7E8 -Eharmenian;0537 -Ehookabove;1EBA -Eightroman;2167 -Einvertedbreve;0206 -Eiotifiedcyrillic;0464 -Elcyrillic;041B -Elevenroman;216A -Emacron;0112 -Emacronacute;1E16 -Emacrongrave;1E14 -Emcyrillic;041C -Emonospace;FF25 -Encyrillic;041D -Endescendercyrillic;04A2 -Eng;014A -Enghecyrillic;04A4 -Enhookcyrillic;04C7 -Eogonek;0118 -Eopen;0190 -Epsilon;0395 -Epsilontonos;0388 -Ercyrillic;0420 -Ereversed;018E -Ereversedcyrillic;042D -Escyrillic;0421 -Esdescendercyrillic;04AA -Esh;01A9 -Esmall;F765 -Eta;0397 -Etarmenian;0538 -Etatonos;0389 -Eth;00D0 -Ethsmall;F7F0 -Etilde;1EBC -Etildebelow;1E1A -Euro;20AC -Ezh;01B7 -Ezhcaron;01EE -Ezhreversed;01B8 -F;0046 -Fcircle;24BB -Fdotaccent;1E1E -Feharmenian;0556 -Feicoptic;03E4 -Fhook;0191 -Fitacyrillic;0472 -Fiveroman;2164 -Fmonospace;FF26 -Fourroman;2163 -Fsmall;F766 -G;0047 -GBsquare;3387 -Gacute;01F4 -Gamma;0393 -Gammaafrican;0194 -Gangiacoptic;03EA -Gbreve;011E -Gcaron;01E6 -Gcedilla;0122 -Gcircle;24BC -Gcircumflex;011C -Gcommaaccent;0122 -Gdot;0120 -Gdotaccent;0120 -Gecyrillic;0413 -Ghadarmenian;0542 -Ghemiddlehookcyrillic;0494 -Ghestrokecyrillic;0492 -Gheupturncyrillic;0490 -Ghook;0193 -Gimarmenian;0533 -Gjecyrillic;0403 -Gmacron;1E20 -Gmonospace;FF27 -Grave;F6CE -Gravesmall;F760 -Gsmall;F767 -Gsmallhook;029B -Gstroke;01E4 -H;0048 -H18533;25CF -H18543;25AA -H18551;25AB -H22073;25A1 -HPsquare;33CB -Haabkhasiancyrillic;04A8 -Hadescendercyrillic;04B2 -Hardsigncyrillic;042A -Hbar;0126 -Hbrevebelow;1E2A -Hcedilla;1E28 -Hcircle;24BD -Hcircumflex;0124 -Hdieresis;1E26 -Hdotaccent;1E22 -Hdotbelow;1E24 -Hmonospace;FF28 -Hoarmenian;0540 -Horicoptic;03E8 -Hsmall;F768 -Hungarumlaut;F6CF -Hungarumlautsmall;F6F8 -Hzsquare;3390 -I;0049 -IAcyrillic;042F -IJ;0132 -IUcyrillic;042E -Iacute;00CD -Iacutesmall;F7ED -Ibreve;012C -Icaron;01CF -Icircle;24BE -Icircumflex;00CE -Icircumflexsmall;F7EE -Icyrillic;0406 -Idblgrave;0208 -Idieresis;00CF -Idieresisacute;1E2E -Idieresiscyrillic;04E4 -Idieresissmall;F7EF -Idot;0130 -Idotaccent;0130 -Idotbelow;1ECA -Iebrevecyrillic;04D6 -Iecyrillic;0415 -Ifraktur;2111 -Igrave;00CC -Igravesmall;F7EC -Ihookabove;1EC8 -Iicyrillic;0418 -Iinvertedbreve;020A -Iishortcyrillic;0419 -Imacron;012A -Imacroncyrillic;04E2 -Imonospace;FF29 -Iniarmenian;053B -Iocyrillic;0401 -Iogonek;012E -Iota;0399 -Iotaafrican;0196 -Iotadieresis;03AA -Iotatonos;038A -Ismall;F769 -Istroke;0197 -Itilde;0128 -Itildebelow;1E2C -Izhitsacyrillic;0474 -Izhitsadblgravecyrillic;0476 -J;004A -Jaarmenian;0541 -Jcircle;24BF -Jcircumflex;0134 -Jecyrillic;0408 -Jheharmenian;054B -Jmonospace;FF2A -Jsmall;F76A -K;004B -KBsquare;3385 -KKsquare;33CD -Kabashkircyrillic;04A0 -Kacute;1E30 -Kacyrillic;041A -Kadescendercyrillic;049A -Kahookcyrillic;04C3 -Kappa;039A -Kastrokecyrillic;049E -Kaverticalstrokecyrillic;049C -Kcaron;01E8 -Kcedilla;0136 -Kcircle;24C0 -Kcommaaccent;0136 -Kdotbelow;1E32 -Keharmenian;0554 -Kenarmenian;053F -Khacyrillic;0425 -Kheicoptic;03E6 -Khook;0198 -Kjecyrillic;040C -Klinebelow;1E34 -Kmonospace;FF2B -Koppacyrillic;0480 -Koppagreek;03DE -Ksicyrillic;046E -Ksmall;F76B -L;004C -LJ;01C7 -LL;F6BF -Lacute;0139 -Lambda;039B -Lcaron;013D -Lcedilla;013B -Lcircle;24C1 -Lcircumflexbelow;1E3C -Lcommaaccent;013B -Ldot;013F -Ldotaccent;013F -Ldotbelow;1E36 -Ldotbelowmacron;1E38 -Liwnarmenian;053C -Lj;01C8 -Ljecyrillic;0409 -Llinebelow;1E3A -Lmonospace;FF2C -Lslash;0141 -Lslashsmall;F6F9 -Lsmall;F76C -M;004D -MBsquare;3386 -Macron;F6D0 -Macronsmall;F7AF -Macute;1E3E -Mcircle;24C2 -Mdotaccent;1E40 -Mdotbelow;1E42 -Menarmenian;0544 -Mmonospace;FF2D -Msmall;F76D -Mturned;019C -Mu;039C -N;004E -NJ;01CA -Nacute;0143 -Ncaron;0147 -Ncedilla;0145 -Ncircle;24C3 -Ncircumflexbelow;1E4A -Ncommaaccent;0145 -Ndotaccent;1E44 -Ndotbelow;1E46 -Nhookleft;019D -Nineroman;2168 -Nj;01CB -Njecyrillic;040A -Nlinebelow;1E48 -Nmonospace;FF2E -Nowarmenian;0546 -Nsmall;F76E -Ntilde;00D1 -Ntildesmall;F7F1 -Nu;039D -O;004F -OE;0152 -OEsmall;F6FA -Oacute;00D3 -Oacutesmall;F7F3 -Obarredcyrillic;04E8 -Obarreddieresiscyrillic;04EA -Obreve;014E -Ocaron;01D1 -Ocenteredtilde;019F -Ocircle;24C4 -Ocircumflex;00D4 -Ocircumflexacute;1ED0 -Ocircumflexdotbelow;1ED8 -Ocircumflexgrave;1ED2 -Ocircumflexhookabove;1ED4 -Ocircumflexsmall;F7F4 -Ocircumflextilde;1ED6 -Ocyrillic;041E -Odblacute;0150 -Odblgrave;020C -Odieresis;00D6 -Odieresiscyrillic;04E6 -Odieresissmall;F7F6 -Odotbelow;1ECC -Ogoneksmall;F6FB -Ograve;00D2 -Ogravesmall;F7F2 -Oharmenian;0555 -Ohm;2126 -Ohookabove;1ECE -Ohorn;01A0 -Ohornacute;1EDA -Ohorndotbelow;1EE2 -Ohorngrave;1EDC -Ohornhookabove;1EDE -Ohorntilde;1EE0 -Ohungarumlaut;0150 -Oi;01A2 -Oinvertedbreve;020E -Omacron;014C -Omacronacute;1E52 -Omacrongrave;1E50 -Omega;2126 -Omegacyrillic;0460 -Omegagreek;03A9 -Omegaroundcyrillic;047A -Omegatitlocyrillic;047C -Omegatonos;038F -Omicron;039F -Omicrontonos;038C -Omonospace;FF2F -Oneroman;2160 -Oogonek;01EA -Oogonekmacron;01EC -Oopen;0186 -Oslash;00D8 -Oslashacute;01FE -Oslashsmall;F7F8 -Osmall;F76F -Ostrokeacute;01FE -Otcyrillic;047E -Otilde;00D5 -Otildeacute;1E4C -Otildedieresis;1E4E -Otildesmall;F7F5 -P;0050 -Pacute;1E54 -Pcircle;24C5 -Pdotaccent;1E56 -Pecyrillic;041F -Peharmenian;054A -Pemiddlehookcyrillic;04A6 -Phi;03A6 -Phook;01A4 -Pi;03A0 -Piwrarmenian;0553 -Pmonospace;FF30 -Psi;03A8 -Psicyrillic;0470 -Psmall;F770 -Q;0051 -Qcircle;24C6 -Qmonospace;FF31 -Qsmall;F771 -R;0052 -Raarmenian;054C -Racute;0154 -Rcaron;0158 -Rcedilla;0156 -Rcircle;24C7 -Rcommaaccent;0156 -Rdblgrave;0210 -Rdotaccent;1E58 -Rdotbelow;1E5A -Rdotbelowmacron;1E5C -Reharmenian;0550 -Rfraktur;211C -Rho;03A1 -Ringsmall;F6FC -Rinvertedbreve;0212 -Rlinebelow;1E5E -Rmonospace;FF32 -Rsmall;F772 -Rsmallinverted;0281 -Rsmallinvertedsuperior;02B6 -S;0053 -SF010000;250C -SF020000;2514 -SF030000;2510 -SF040000;2518 -SF050000;253C -SF060000;252C -SF070000;2534 -SF080000;251C -SF090000;2524 -SF100000;2500 -SF110000;2502 -SF190000;2561 -SF200000;2562 -SF210000;2556 -SF220000;2555 -SF230000;2563 -SF240000;2551 -SF250000;2557 -SF260000;255D -SF270000;255C -SF280000;255B -SF360000;255E -SF370000;255F -SF380000;255A -SF390000;2554 -SF400000;2569 -SF410000;2566 -SF420000;2560 -SF430000;2550 -SF440000;256C -SF450000;2567 -SF460000;2568 -SF470000;2564 -SF480000;2565 -SF490000;2559 -SF500000;2558 -SF510000;2552 -SF520000;2553 -SF530000;256B -SF540000;256A -Sacute;015A -Sacutedotaccent;1E64 -Sampigreek;03E0 -Scaron;0160 -Scarondotaccent;1E66 -Scaronsmall;F6FD -Scedilla;015E -Schwa;018F -Schwacyrillic;04D8 -Schwadieresiscyrillic;04DA -Scircle;24C8 -Scircumflex;015C -Scommaaccent;0218 -Sdotaccent;1E60 -Sdotbelow;1E62 -Sdotbelowdotaccent;1E68 -Seharmenian;054D -Sevenroman;2166 -Shaarmenian;0547 -Shacyrillic;0428 -Shchacyrillic;0429 -Sheicoptic;03E2 -Shhacyrillic;04BA -Shimacoptic;03EC -Sigma;03A3 -Sixroman;2165 -Smonospace;FF33 -Softsigncyrillic;042C -Ssmall;F773 -Stigmagreek;03DA -T;0054 -Tau;03A4 -Tbar;0166 -Tcaron;0164 -Tcedilla;0162 -Tcircle;24C9 -Tcircumflexbelow;1E70 -Tcommaaccent;0162 -Tdotaccent;1E6A -Tdotbelow;1E6C -Tecyrillic;0422 -Tedescendercyrillic;04AC -Tenroman;2169 -Tetsecyrillic;04B4 -Theta;0398 -Thook;01AC -Thorn;00DE -Thornsmall;F7FE -Threeroman;2162 -Tildesmall;F6FE -Tiwnarmenian;054F -Tlinebelow;1E6E -Tmonospace;FF34 -Toarmenian;0539 -Tonefive;01BC -Tonesix;0184 -Tonetwo;01A7 -Tretroflexhook;01AE -Tsecyrillic;0426 -Tshecyrillic;040B -Tsmall;F774 -Twelveroman;216B -Tworoman;2161 -U;0055 -Uacute;00DA -Uacutesmall;F7FA -Ubreve;016C -Ucaron;01D3 -Ucircle;24CA -Ucircumflex;00DB -Ucircumflexbelow;1E76 -Ucircumflexsmall;F7FB -Ucyrillic;0423 -Udblacute;0170 -Udblgrave;0214 -Udieresis;00DC -Udieresisacute;01D7 -Udieresisbelow;1E72 -Udieresiscaron;01D9 -Udieresiscyrillic;04F0 -Udieresisgrave;01DB -Udieresismacron;01D5 -Udieresissmall;F7FC -Udotbelow;1EE4 -Ugrave;00D9 -Ugravesmall;F7F9 -Uhookabove;1EE6 -Uhorn;01AF -Uhornacute;1EE8 -Uhorndotbelow;1EF0 -Uhorngrave;1EEA -Uhornhookabove;1EEC -Uhorntilde;1EEE -Uhungarumlaut;0170 -Uhungarumlautcyrillic;04F2 -Uinvertedbreve;0216 -Ukcyrillic;0478 -Umacron;016A -Umacroncyrillic;04EE -Umacrondieresis;1E7A -Umonospace;FF35 -Uogonek;0172 -Upsilon;03A5 -Upsilon1;03D2 -Upsilonacutehooksymbolgreek;03D3 -Upsilonafrican;01B1 -Upsilondieresis;03AB -Upsilondieresishooksymbolgreek;03D4 -Upsilonhooksymbol;03D2 -Upsilontonos;038E -Uring;016E -Ushortcyrillic;040E -Usmall;F775 -Ustraightcyrillic;04AE -Ustraightstrokecyrillic;04B0 -Utilde;0168 -Utildeacute;1E78 -Utildebelow;1E74 -V;0056 -Vcircle;24CB -Vdotbelow;1E7E -Vecyrillic;0412 -Vewarmenian;054E -Vhook;01B2 -Vmonospace;FF36 -Voarmenian;0548 -Vsmall;F776 -Vtilde;1E7C -W;0057 -Wacute;1E82 -Wcircle;24CC -Wcircumflex;0174 -Wdieresis;1E84 -Wdotaccent;1E86 -Wdotbelow;1E88 -Wgrave;1E80 -Wmonospace;FF37 -Wsmall;F777 -X;0058 -Xcircle;24CD -Xdieresis;1E8C -Xdotaccent;1E8A -Xeharmenian;053D -Xi;039E -Xmonospace;FF38 -Xsmall;F778 -Y;0059 -Yacute;00DD -Yacutesmall;F7FD -Yatcyrillic;0462 -Ycircle;24CE -Ycircumflex;0176 -Ydieresis;0178 -Ydieresissmall;F7FF -Ydotaccent;1E8E -Ydotbelow;1EF4 -Yericyrillic;042B -Yerudieresiscyrillic;04F8 -Ygrave;1EF2 -Yhook;01B3 -Yhookabove;1EF6 -Yiarmenian;0545 -Yicyrillic;0407 -Yiwnarmenian;0552 -Ymonospace;FF39 -Ysmall;F779 -Ytilde;1EF8 -Yusbigcyrillic;046A -Yusbigiotifiedcyrillic;046C -Yuslittlecyrillic;0466 -Yuslittleiotifiedcyrillic;0468 -Z;005A -Zaarmenian;0536 -Zacute;0179 -Zcaron;017D -Zcaronsmall;F6FF -Zcircle;24CF -Zcircumflex;1E90 -Zdot;017B -Zdotaccent;017B -Zdotbelow;1E92 -Zecyrillic;0417 -Zedescendercyrillic;0498 -Zedieresiscyrillic;04DE -Zeta;0396 -Zhearmenian;053A -Zhebrevecyrillic;04C1 -Zhecyrillic;0416 -Zhedescendercyrillic;0496 -Zhedieresiscyrillic;04DC -Zlinebelow;1E94 -Zmonospace;FF3A -Zsmall;F77A -Zstroke;01B5 -a;0061 -aabengali;0986 -aacute;00E1 -aadeva;0906 -aagujarati;0A86 -aagurmukhi;0A06 -aamatragurmukhi;0A3E -aarusquare;3303 -aavowelsignbengali;09BE -aavowelsigndeva;093E -aavowelsigngujarati;0ABE -abbreviationmarkarmenian;055F -abbreviationsigndeva;0970 -abengali;0985 -abopomofo;311A -abreve;0103 -abreveacute;1EAF -abrevecyrillic;04D1 -abrevedotbelow;1EB7 -abrevegrave;1EB1 -abrevehookabove;1EB3 -abrevetilde;1EB5 -acaron;01CE -acircle;24D0 -acircumflex;00E2 -acircumflexacute;1EA5 -acircumflexdotbelow;1EAD -acircumflexgrave;1EA7 -acircumflexhookabove;1EA9 -acircumflextilde;1EAB -acute;00B4 -acutebelowcmb;0317 -acutecmb;0301 -acutecomb;0301 -acutedeva;0954 -acutelowmod;02CF -acutetonecmb;0341 -acyrillic;0430 -adblgrave;0201 -addakgurmukhi;0A71 -adeva;0905 -adieresis;00E4 -adieresiscyrillic;04D3 -adieresismacron;01DF -adotbelow;1EA1 -adotmacron;01E1 -ae;00E6 -aeacute;01FD -aekorean;3150 -aemacron;01E3 -afii00208;2015 -afii08941;20A4 -afii10017;0410 -afii10018;0411 -afii10019;0412 -afii10020;0413 -afii10021;0414 -afii10022;0415 -afii10023;0401 -afii10024;0416 -afii10025;0417 -afii10026;0418 -afii10027;0419 -afii10028;041A -afii10029;041B -afii10030;041C -afii10031;041D -afii10032;041E -afii10033;041F -afii10034;0420 -afii10035;0421 -afii10036;0422 -afii10037;0423 -afii10038;0424 -afii10039;0425 -afii10040;0426 -afii10041;0427 -afii10042;0428 -afii10043;0429 -afii10044;042A -afii10045;042B -afii10046;042C -afii10047;042D -afii10048;042E -afii10049;042F -afii10050;0490 -afii10051;0402 -afii10052;0403 -afii10053;0404 -afii10054;0405 -afii10055;0406 -afii10056;0407 -afii10057;0408 -afii10058;0409 -afii10059;040A -afii10060;040B -afii10061;040C -afii10062;040E -afii10063;F6C4 -afii10064;F6C5 -afii10065;0430 -afii10066;0431 -afii10067;0432 -afii10068;0433 -afii10069;0434 -afii10070;0435 -afii10071;0451 -afii10072;0436 -afii10073;0437 -afii10074;0438 -afii10075;0439 -afii10076;043A -afii10077;043B -afii10078;043C -afii10079;043D -afii10080;043E -afii10081;043F -afii10082;0440 -afii10083;0441 -afii10084;0442 -afii10085;0443 -afii10086;0444 -afii10087;0445 -afii10088;0446 -afii10089;0447 -afii10090;0448 -afii10091;0449 -afii10092;044A -afii10093;044B -afii10094;044C -afii10095;044D -afii10096;044E -afii10097;044F -afii10098;0491 -afii10099;0452 -afii10100;0453 -afii10101;0454 -afii10102;0455 -afii10103;0456 -afii10104;0457 -afii10105;0458 -afii10106;0459 -afii10107;045A -afii10108;045B -afii10109;045C -afii10110;045E -afii10145;040F -afii10146;0462 -afii10147;0472 -afii10148;0474 -afii10192;F6C6 -afii10193;045F -afii10194;0463 -afii10195;0473 -afii10196;0475 -afii10831;F6C7 -afii10832;F6C8 -afii10846;04D9 -afii299;200E -afii300;200F -afii301;200D -afii57381;066A -afii57388;060C -afii57392;0660 -afii57393;0661 -afii57394;0662 -afii57395;0663 -afii57396;0664 -afii57397;0665 -afii57398;0666 -afii57399;0667 -afii57400;0668 -afii57401;0669 -afii57403;061B -afii57407;061F -afii57409;0621 -afii57410;0622 -afii57411;0623 -afii57412;0624 -afii57413;0625 -afii57414;0626 -afii57415;0627 -afii57416;0628 -afii57417;0629 -afii57418;062A -afii57419;062B -afii57420;062C -afii57421;062D -afii57422;062E -afii57423;062F -afii57424;0630 -afii57425;0631 -afii57426;0632 -afii57427;0633 -afii57428;0634 -afii57429;0635 -afii57430;0636 -afii57431;0637 -afii57432;0638 -afii57433;0639 -afii57434;063A -afii57440;0640 -afii57441;0641 -afii57442;0642 -afii57443;0643 -afii57444;0644 -afii57445;0645 -afii57446;0646 -afii57448;0648 -afii57449;0649 -afii57450;064A -afii57451;064B -afii57452;064C -afii57453;064D -afii57454;064E -afii57455;064F -afii57456;0650 -afii57457;0651 -afii57458;0652 -afii57470;0647 -afii57505;06A4 -afii57506;067E -afii57507;0686 -afii57508;0698 -afii57509;06AF -afii57511;0679 -afii57512;0688 -afii57513;0691 -afii57514;06BA -afii57519;06D2 -afii57534;06D5 -afii57636;20AA -afii57645;05BE -afii57658;05C3 -afii57664;05D0 -afii57665;05D1 -afii57666;05D2 -afii57667;05D3 -afii57668;05D4 -afii57669;05D5 -afii57670;05D6 -afii57671;05D7 -afii57672;05D8 -afii57673;05D9 -afii57674;05DA -afii57675;05DB -afii57676;05DC -afii57677;05DD -afii57678;05DE -afii57679;05DF -afii57680;05E0 -afii57681;05E1 -afii57682;05E2 -afii57683;05E3 -afii57684;05E4 -afii57685;05E5 -afii57686;05E6 -afii57687;05E7 -afii57688;05E8 -afii57689;05E9 -afii57690;05EA -afii57694;FB2A -afii57695;FB2B -afii57700;FB4B -afii57705;FB1F -afii57716;05F0 -afii57717;05F1 -afii57718;05F2 -afii57723;FB35 -afii57793;05B4 -afii57794;05B5 -afii57795;05B6 -afii57796;05BB -afii57797;05B8 -afii57798;05B7 -afii57799;05B0 -afii57800;05B2 -afii57801;05B1 -afii57802;05B3 -afii57803;05C2 -afii57804;05C1 -afii57806;05B9 -afii57807;05BC -afii57839;05BD -afii57841;05BF -afii57842;05C0 -afii57929;02BC -afii61248;2105 -afii61289;2113 -afii61352;2116 -afii61573;202C -afii61574;202D -afii61575;202E -afii61664;200C -afii63167;066D -afii64937;02BD -agrave;00E0 -agujarati;0A85 -agurmukhi;0A05 -ahiragana;3042 -ahookabove;1EA3 -aibengali;0990 -aibopomofo;311E -aideva;0910 -aiecyrillic;04D5 -aigujarati;0A90 -aigurmukhi;0A10 -aimatragurmukhi;0A48 -ainarabic;0639 -ainfinalarabic;FECA -aininitialarabic;FECB -ainmedialarabic;FECC -ainvertedbreve;0203 -aivowelsignbengali;09C8 -aivowelsigndeva;0948 -aivowelsigngujarati;0AC8 -akatakana;30A2 -akatakanahalfwidth;FF71 -akorean;314F -alef;05D0 -alefarabic;0627 -alefdageshhebrew;FB30 -aleffinalarabic;FE8E -alefhamzaabovearabic;0623 -alefhamzaabovefinalarabic;FE84 -alefhamzabelowarabic;0625 -alefhamzabelowfinalarabic;FE88 -alefhebrew;05D0 -aleflamedhebrew;FB4F -alefmaddaabovearabic;0622 -alefmaddaabovefinalarabic;FE82 -alefmaksuraarabic;0649 -alefmaksurafinalarabic;FEF0 -alefmaksurainitialarabic;FEF3 -alefmaksuramedialarabic;FEF4 -alefpatahhebrew;FB2E -alefqamatshebrew;FB2F -aleph;2135 -allequal;224C -alpha;03B1 -alphatonos;03AC -amacron;0101 -amonospace;FF41 -ampersand;0026 -ampersandmonospace;FF06 -ampersandsmall;F726 -amsquare;33C2 -anbopomofo;3122 -angbopomofo;3124 -angkhankhuthai;0E5A -angle;2220 -anglebracketleft;3008 -anglebracketleftvertical;FE3F -anglebracketright;3009 -anglebracketrightvertical;FE40 -angleleft;2329 -angleright;232A -angstrom;212B -anoteleia;0387 -anudattadeva;0952 -anusvarabengali;0982 -anusvaradeva;0902 -anusvaragujarati;0A82 -aogonek;0105 -apaatosquare;3300 -aparen;249C -apostrophearmenian;055A -apostrophemod;02BC -apple;F8FF -approaches;2250 -approxequal;2248 -approxequalorimage;2252 -approximatelyequal;2245 -araeaekorean;318E -araeakorean;318D -arc;2312 -arighthalfring;1E9A -aring;00E5 -aringacute;01FB -aringbelow;1E01 -arrowboth;2194 -arrowdashdown;21E3 -arrowdashleft;21E0 -arrowdashright;21E2 -arrowdashup;21E1 -arrowdblboth;21D4 -arrowdbldown;21D3 -arrowdblleft;21D0 -arrowdblright;21D2 -arrowdblup;21D1 -arrowdown;2193 -arrowdownleft;2199 -arrowdownright;2198 -arrowdownwhite;21E9 -arrowheaddownmod;02C5 -arrowheadleftmod;02C2 -arrowheadrightmod;02C3 -arrowheadupmod;02C4 -arrowhorizex;F8E7 -arrowleft;2190 -arrowleftdbl;21D0 -arrowleftdblstroke;21CD -arrowleftoverright;21C6 -arrowleftwhite;21E6 -arrowright;2192 -arrowrightdblstroke;21CF -arrowrightheavy;279E -arrowrightoverleft;21C4 -arrowrightwhite;21E8 -arrowtableft;21E4 -arrowtabright;21E5 -arrowup;2191 -arrowupdn;2195 -arrowupdnbse;21A8 -arrowupdownbase;21A8 -arrowupleft;2196 -arrowupleftofdown;21C5 -arrowupright;2197 -arrowupwhite;21E7 -arrowvertex;F8E6 -asciicircum;005E -asciicircummonospace;FF3E -asciitilde;007E -asciitildemonospace;FF5E -ascript;0251 -ascriptturned;0252 -asmallhiragana;3041 -asmallkatakana;30A1 -asmallkatakanahalfwidth;FF67 -asterisk;002A -asteriskaltonearabic;066D -asteriskarabic;066D -asteriskmath;2217 -asteriskmonospace;FF0A -asterisksmall;FE61 -asterism;2042 -asuperior;F6E9 -asymptoticallyequal;2243 -at;0040 -atilde;00E3 -atmonospace;FF20 -atsmall;FE6B -aturned;0250 -aubengali;0994 -aubopomofo;3120 -audeva;0914 -augujarati;0A94 -augurmukhi;0A14 -aulengthmarkbengali;09D7 -aumatragurmukhi;0A4C -auvowelsignbengali;09CC -auvowelsigndeva;094C -auvowelsigngujarati;0ACC -avagrahadeva;093D -aybarmenian;0561 -ayin;05E2 -ayinaltonehebrew;FB20 -ayinhebrew;05E2 -b;0062 -babengali;09AC -backslash;005C -backslashmonospace;FF3C -badeva;092C -bagujarati;0AAC -bagurmukhi;0A2C -bahiragana;3070 -bahtthai;0E3F -bakatakana;30D0 -bar;007C -barmonospace;FF5C -bbopomofo;3105 -bcircle;24D1 -bdotaccent;1E03 -bdotbelow;1E05 -beamedsixteenthnotes;266C -because;2235 -becyrillic;0431 -beharabic;0628 -behfinalarabic;FE90 -behinitialarabic;FE91 -behiragana;3079 -behmedialarabic;FE92 -behmeeminitialarabic;FC9F -behmeemisolatedarabic;FC08 -behnoonfinalarabic;FC6D -bekatakana;30D9 -benarmenian;0562 -bet;05D1 -beta;03B2 -betasymbolgreek;03D0 -betdagesh;FB31 -betdageshhebrew;FB31 -bethebrew;05D1 -betrafehebrew;FB4C -bhabengali;09AD -bhadeva;092D -bhagujarati;0AAD -bhagurmukhi;0A2D -bhook;0253 -bihiragana;3073 -bikatakana;30D3 -bilabialclick;0298 -bindigurmukhi;0A02 -birusquare;3331 -blackcircle;25CF -blackdiamond;25C6 -blackdownpointingtriangle;25BC -blackleftpointingpointer;25C4 -blackleftpointingtriangle;25C0 -blacklenticularbracketleft;3010 -blacklenticularbracketleftvertical;FE3B -blacklenticularbracketright;3011 -blacklenticularbracketrightvertical;FE3C -blacklowerlefttriangle;25E3 -blacklowerrighttriangle;25E2 -blackrectangle;25AC -blackrightpointingpointer;25BA -blackrightpointingtriangle;25B6 -blacksmallsquare;25AA -blacksmilingface;263B -blacksquare;25A0 -blackstar;2605 -blackupperlefttriangle;25E4 -blackupperrighttriangle;25E5 -blackuppointingsmalltriangle;25B4 -blackuppointingtriangle;25B2 -blank;2423 -blinebelow;1E07 -block;2588 -bmonospace;FF42 -bobaimaithai;0E1A -bohiragana;307C -bokatakana;30DC -bparen;249D -bqsquare;33C3 -braceex;F8F4 -braceleft;007B -braceleftbt;F8F3 -braceleftmid;F8F2 -braceleftmonospace;FF5B -braceleftsmall;FE5B -bracelefttp;F8F1 -braceleftvertical;FE37 -braceright;007D -bracerightbt;F8FE -bracerightmid;F8FD -bracerightmonospace;FF5D -bracerightsmall;FE5C -bracerighttp;F8FC -bracerightvertical;FE38 -bracketleft;005B -bracketleftbt;F8F0 -bracketleftex;F8EF -bracketleftmonospace;FF3B -bracketlefttp;F8EE -bracketright;005D -bracketrightbt;F8FB -bracketrightex;F8FA -bracketrightmonospace;FF3D -bracketrighttp;F8F9 -breve;02D8 -brevebelowcmb;032E -brevecmb;0306 -breveinvertedbelowcmb;032F -breveinvertedcmb;0311 -breveinverteddoublecmb;0361 -bridgebelowcmb;032A -bridgeinvertedbelowcmb;033A -brokenbar;00A6 -bstroke;0180 -bsuperior;F6EA -btopbar;0183 -buhiragana;3076 -bukatakana;30D6 -bullet;2022 -bulletinverse;25D8 -bulletoperator;2219 -bullseye;25CE -c;0063 -caarmenian;056E -cabengali;099A -cacute;0107 -cadeva;091A -cagujarati;0A9A -cagurmukhi;0A1A -calsquare;3388 -candrabindubengali;0981 -candrabinducmb;0310 -candrabindudeva;0901 -candrabindugujarati;0A81 -capslock;21EA -careof;2105 -caron;02C7 -caronbelowcmb;032C -caroncmb;030C -carriagereturn;21B5 -cbopomofo;3118 -ccaron;010D -ccedilla;00E7 -ccedillaacute;1E09 -ccircle;24D2 -ccircumflex;0109 -ccurl;0255 -cdot;010B -cdotaccent;010B -cdsquare;33C5 -cedilla;00B8 -cedillacmb;0327 -cent;00A2 -centigrade;2103 -centinferior;F6DF -centmonospace;FFE0 -centoldstyle;F7A2 -centsuperior;F6E0 -chaarmenian;0579 -chabengali;099B -chadeva;091B -chagujarati;0A9B -chagurmukhi;0A1B -chbopomofo;3114 -cheabkhasiancyrillic;04BD -checkmark;2713 -checyrillic;0447 -chedescenderabkhasiancyrillic;04BF -chedescendercyrillic;04B7 -chedieresiscyrillic;04F5 -cheharmenian;0573 -chekhakassiancyrillic;04CC -cheverticalstrokecyrillic;04B9 -chi;03C7 -chieuchacirclekorean;3277 -chieuchaparenkorean;3217 -chieuchcirclekorean;3269 -chieuchkorean;314A -chieuchparenkorean;3209 -chochangthai;0E0A -chochanthai;0E08 -chochingthai;0E09 -chochoethai;0E0C -chook;0188 -cieucacirclekorean;3276 -cieucaparenkorean;3216 -cieuccirclekorean;3268 -cieuckorean;3148 -cieucparenkorean;3208 -cieucuparenkorean;321C -circle;25CB -circlemultiply;2297 -circleot;2299 -circleplus;2295 -circlepostalmark;3036 -circlewithlefthalfblack;25D0 -circlewithrighthalfblack;25D1 -circumflex;02C6 -circumflexbelowcmb;032D -circumflexcmb;0302 -clear;2327 -clickalveolar;01C2 -clickdental;01C0 -clicklateral;01C1 -clickretroflex;01C3 -club;2663 -clubsuitblack;2663 -clubsuitwhite;2667 -cmcubedsquare;33A4 -cmonospace;FF43 -cmsquaredsquare;33A0 -coarmenian;0581 -colon;003A -colonmonetary;20A1 -colonmonospace;FF1A -colonsign;20A1 -colonsmall;FE55 -colontriangularhalfmod;02D1 -colontriangularmod;02D0 -comma;002C -commaabovecmb;0313 -commaaboverightcmb;0315 -commaaccent;F6C3 -commaarabic;060C -commaarmenian;055D -commainferior;F6E1 -commamonospace;FF0C -commareversedabovecmb;0314 -commareversedmod;02BD -commasmall;FE50 -commasuperior;F6E2 -commaturnedabovecmb;0312 -commaturnedmod;02BB -compass;263C -congruent;2245 -contourintegral;222E -control;2303 -controlACK;0006 -controlBEL;0007 -controlBS;0008 -controlCAN;0018 -controlCR;000D -controlDC1;0011 -controlDC2;0012 -controlDC3;0013 -controlDC4;0014 -controlDEL;007F -controlDLE;0010 -controlEM;0019 -controlENQ;0005 -controlEOT;0004 -controlESC;001B -controlETB;0017 -controlETX;0003 -controlFF;000C -controlFS;001C -controlGS;001D -controlHT;0009 -controlLF;000A -controlNAK;0015 -controlRS;001E -controlSI;000F -controlSO;000E -controlSOT;0002 -controlSTX;0001 -controlSUB;001A -controlSYN;0016 -controlUS;001F -controlVT;000B -copyright;00A9 -copyrightsans;F8E9 -copyrightserif;F6D9 -cornerbracketleft;300C -cornerbracketlefthalfwidth;FF62 -cornerbracketleftvertical;FE41 -cornerbracketright;300D -cornerbracketrighthalfwidth;FF63 -cornerbracketrightvertical;FE42 -corporationsquare;337F -cosquare;33C7 -coverkgsquare;33C6 -cparen;249E -cruzeiro;20A2 -cstretched;0297 -curlyand;22CF -curlyor;22CE -currency;00A4 -cyrBreve;F6D1 -cyrFlex;F6D2 -cyrbreve;F6D4 -cyrflex;F6D5 -d;0064 -daarmenian;0564 -dabengali;09A6 -dadarabic;0636 -dadeva;0926 -dadfinalarabic;FEBE -dadinitialarabic;FEBF -dadmedialarabic;FEC0 -dagesh;05BC -dageshhebrew;05BC -dagger;2020 -daggerdbl;2021 -dagujarati;0AA6 -dagurmukhi;0A26 -dahiragana;3060 -dakatakana;30C0 -dalarabic;062F -dalet;05D3 -daletdagesh;FB33 -daletdageshhebrew;FB33 -dalethatafpatah;05D3 05B2 -dalethatafpatahhebrew;05D3 05B2 -dalethatafsegol;05D3 05B1 -dalethatafsegolhebrew;05D3 05B1 -dalethebrew;05D3 -dalethiriq;05D3 05B4 -dalethiriqhebrew;05D3 05B4 -daletholam;05D3 05B9 -daletholamhebrew;05D3 05B9 -daletpatah;05D3 05B7 -daletpatahhebrew;05D3 05B7 -daletqamats;05D3 05B8 -daletqamatshebrew;05D3 05B8 -daletqubuts;05D3 05BB -daletqubutshebrew;05D3 05BB -daletsegol;05D3 05B6 -daletsegolhebrew;05D3 05B6 -daletsheva;05D3 05B0 -daletshevahebrew;05D3 05B0 -dalettsere;05D3 05B5 -dalettserehebrew;05D3 05B5 -dalfinalarabic;FEAA -dammaarabic;064F -dammalowarabic;064F -dammatanaltonearabic;064C -dammatanarabic;064C -danda;0964 -dargahebrew;05A7 -dargalefthebrew;05A7 -dasiapneumatacyrilliccmb;0485 -dblGrave;F6D3 -dblanglebracketleft;300A -dblanglebracketleftvertical;FE3D -dblanglebracketright;300B -dblanglebracketrightvertical;FE3E -dblarchinvertedbelowcmb;032B -dblarrowleft;21D4 -dblarrowright;21D2 -dbldanda;0965 -dblgrave;F6D6 -dblgravecmb;030F -dblintegral;222C -dbllowline;2017 -dbllowlinecmb;0333 -dbloverlinecmb;033F -dblprimemod;02BA -dblverticalbar;2016 -dblverticallineabovecmb;030E -dbopomofo;3109 -dbsquare;33C8 -dcaron;010F -dcedilla;1E11 -dcircle;24D3 -dcircumflexbelow;1E13 -dcroat;0111 -ddabengali;09A1 -ddadeva;0921 -ddagujarati;0AA1 -ddagurmukhi;0A21 -ddalarabic;0688 -ddalfinalarabic;FB89 -dddhadeva;095C -ddhabengali;09A2 -ddhadeva;0922 -ddhagujarati;0AA2 -ddhagurmukhi;0A22 -ddotaccent;1E0B -ddotbelow;1E0D -decimalseparatorarabic;066B -decimalseparatorpersian;066B -decyrillic;0434 -degree;00B0 -dehihebrew;05AD -dehiragana;3067 -deicoptic;03EF -dekatakana;30C7 -deleteleft;232B -deleteright;2326 -delta;03B4 -deltaturned;018D -denominatorminusonenumeratorbengali;09F8 -dezh;02A4 -dhabengali;09A7 -dhadeva;0927 -dhagujarati;0AA7 -dhagurmukhi;0A27 -dhook;0257 -dialytikatonos;0385 -dialytikatonoscmb;0344 -diamond;2666 -diamondsuitwhite;2662 -dieresis;00A8 -dieresisacute;F6D7 -dieresisbelowcmb;0324 -dieresiscmb;0308 -dieresisgrave;F6D8 -dieresistonos;0385 -dihiragana;3062 -dikatakana;30C2 -dittomark;3003 -divide;00F7 -divides;2223 -divisionslash;2215 -djecyrillic;0452 -dkshade;2593 -dlinebelow;1E0F -dlsquare;3397 -dmacron;0111 -dmonospace;FF44 -dnblock;2584 -dochadathai;0E0E -dodekthai;0E14 -dohiragana;3069 -dokatakana;30C9 -dollar;0024 -dollarinferior;F6E3 -dollarmonospace;FF04 -dollaroldstyle;F724 -dollarsmall;FE69 -dollarsuperior;F6E4 -dong;20AB -dorusquare;3326 -dotaccent;02D9 -dotaccentcmb;0307 -dotbelowcmb;0323 -dotbelowcomb;0323 -dotkatakana;30FB -dotlessi;0131 -dotlessj;F6BE -dotlessjstrokehook;0284 -dotmath;22C5 -dottedcircle;25CC -doubleyodpatah;FB1F -doubleyodpatahhebrew;FB1F -downtackbelowcmb;031E -downtackmod;02D5 -dparen;249F -dsuperior;F6EB -dtail;0256 -dtopbar;018C -duhiragana;3065 -dukatakana;30C5 -dz;01F3 -dzaltone;02A3 -dzcaron;01C6 -dzcurl;02A5 -dzeabkhasiancyrillic;04E1 -dzecyrillic;0455 -dzhecyrillic;045F -e;0065 -eacute;00E9 -earth;2641 -ebengali;098F -ebopomofo;311C -ebreve;0115 -ecandradeva;090D -ecandragujarati;0A8D -ecandravowelsigndeva;0945 -ecandravowelsigngujarati;0AC5 -ecaron;011B -ecedillabreve;1E1D -echarmenian;0565 -echyiwnarmenian;0587 -ecircle;24D4 -ecircumflex;00EA -ecircumflexacute;1EBF -ecircumflexbelow;1E19 -ecircumflexdotbelow;1EC7 -ecircumflexgrave;1EC1 -ecircumflexhookabove;1EC3 -ecircumflextilde;1EC5 -ecyrillic;0454 -edblgrave;0205 -edeva;090F -edieresis;00EB -edot;0117 -edotaccent;0117 -edotbelow;1EB9 -eegurmukhi;0A0F -eematragurmukhi;0A47 -efcyrillic;0444 -egrave;00E8 -egujarati;0A8F -eharmenian;0567 -ehbopomofo;311D -ehiragana;3048 -ehookabove;1EBB -eibopomofo;311F -eight;0038 -eightarabic;0668 -eightbengali;09EE -eightcircle;2467 -eightcircleinversesansserif;2791 -eightdeva;096E -eighteencircle;2471 -eighteenparen;2485 -eighteenperiod;2499 -eightgujarati;0AEE -eightgurmukhi;0A6E -eighthackarabic;0668 -eighthangzhou;3028 -eighthnotebeamed;266B -eightideographicparen;3227 -eightinferior;2088 -eightmonospace;FF18 -eightoldstyle;F738 -eightparen;247B -eightperiod;248F -eightpersian;06F8 -eightroman;2177 -eightsuperior;2078 -eightthai;0E58 -einvertedbreve;0207 -eiotifiedcyrillic;0465 -ekatakana;30A8 -ekatakanahalfwidth;FF74 -ekonkargurmukhi;0A74 -ekorean;3154 -elcyrillic;043B -element;2208 -elevencircle;246A -elevenparen;247E -elevenperiod;2492 -elevenroman;217A -ellipsis;2026 -ellipsisvertical;22EE -emacron;0113 -emacronacute;1E17 -emacrongrave;1E15 -emcyrillic;043C -emdash;2014 -emdashvertical;FE31 -emonospace;FF45 -emphasismarkarmenian;055B -emptyset;2205 -enbopomofo;3123 -encyrillic;043D -endash;2013 -endashvertical;FE32 -endescendercyrillic;04A3 -eng;014B -engbopomofo;3125 -enghecyrillic;04A5 -enhookcyrillic;04C8 -enspace;2002 -eogonek;0119 -eokorean;3153 -eopen;025B -eopenclosed;029A -eopenreversed;025C -eopenreversedclosed;025E -eopenreversedhook;025D -eparen;24A0 -epsilon;03B5 -epsilontonos;03AD -equal;003D -equalmonospace;FF1D -equalsmall;FE66 -equalsuperior;207C -equivalence;2261 -erbopomofo;3126 -ercyrillic;0440 -ereversed;0258 -ereversedcyrillic;044D -escyrillic;0441 -esdescendercyrillic;04AB -esh;0283 -eshcurl;0286 -eshortdeva;090E -eshortvowelsigndeva;0946 -eshreversedloop;01AA -eshsquatreversed;0285 -esmallhiragana;3047 -esmallkatakana;30A7 -esmallkatakanahalfwidth;FF6A -estimated;212E -esuperior;F6EC -eta;03B7 -etarmenian;0568 -etatonos;03AE -eth;00F0 -etilde;1EBD -etildebelow;1E1B -etnahtafoukhhebrew;0591 -etnahtafoukhlefthebrew;0591 -etnahtahebrew;0591 -etnahtalefthebrew;0591 -eturned;01DD -eukorean;3161 -euro;20AC -evowelsignbengali;09C7 -evowelsigndeva;0947 -evowelsigngujarati;0AC7 -exclam;0021 -exclamarmenian;055C -exclamdbl;203C -exclamdown;00A1 -exclamdownsmall;F7A1 -exclammonospace;FF01 -exclamsmall;F721 -existential;2203 -ezh;0292 -ezhcaron;01EF -ezhcurl;0293 -ezhreversed;01B9 -ezhtail;01BA -f;0066 -fadeva;095E -fagurmukhi;0A5E -fahrenheit;2109 -fathaarabic;064E -fathalowarabic;064E -fathatanarabic;064B -fbopomofo;3108 -fcircle;24D5 -fdotaccent;1E1F -feharabic;0641 -feharmenian;0586 -fehfinalarabic;FED2 -fehinitialarabic;FED3 -fehmedialarabic;FED4 -feicoptic;03E5 -female;2640 -ff;FB00 -ffi;FB03 -ffl;FB04 -fi;FB01 -fifteencircle;246E -fifteenparen;2482 -fifteenperiod;2496 -figuredash;2012 -filledbox;25A0 -filledrect;25AC -finalkaf;05DA -finalkafdagesh;FB3A -finalkafdageshhebrew;FB3A -finalkafhebrew;05DA -finalkafqamats;05DA 05B8 -finalkafqamatshebrew;05DA 05B8 -finalkafsheva;05DA 05B0 -finalkafshevahebrew;05DA 05B0 -finalmem;05DD -finalmemhebrew;05DD -finalnun;05DF -finalnunhebrew;05DF -finalpe;05E3 -finalpehebrew;05E3 -finaltsadi;05E5 -finaltsadihebrew;05E5 -firsttonechinese;02C9 -fisheye;25C9 -fitacyrillic;0473 -five;0035 -fivearabic;0665 -fivebengali;09EB -fivecircle;2464 -fivecircleinversesansserif;278E -fivedeva;096B -fiveeighths;215D -fivegujarati;0AEB -fivegurmukhi;0A6B -fivehackarabic;0665 -fivehangzhou;3025 -fiveideographicparen;3224 -fiveinferior;2085 -fivemonospace;FF15 -fiveoldstyle;F735 -fiveparen;2478 -fiveperiod;248C -fivepersian;06F5 -fiveroman;2174 -fivesuperior;2075 -fivethai;0E55 -fl;FB02 -florin;0192 -fmonospace;FF46 -fmsquare;3399 -fofanthai;0E1F -fofathai;0E1D -fongmanthai;0E4F -forall;2200 -four;0034 -fourarabic;0664 -fourbengali;09EA -fourcircle;2463 -fourcircleinversesansserif;278D -fourdeva;096A -fourgujarati;0AEA -fourgurmukhi;0A6A -fourhackarabic;0664 -fourhangzhou;3024 -fourideographicparen;3223 -fourinferior;2084 -fourmonospace;FF14 -fournumeratorbengali;09F7 -fouroldstyle;F734 -fourparen;2477 -fourperiod;248B -fourpersian;06F4 -fourroman;2173 -foursuperior;2074 -fourteencircle;246D -fourteenparen;2481 -fourteenperiod;2495 -fourthai;0E54 -fourthtonechinese;02CB -fparen;24A1 -fraction;2044 -franc;20A3 -g;0067 -gabengali;0997 -gacute;01F5 -gadeva;0917 -gafarabic;06AF -gaffinalarabic;FB93 -gafinitialarabic;FB94 -gafmedialarabic;FB95 -gagujarati;0A97 -gagurmukhi;0A17 -gahiragana;304C -gakatakana;30AC -gamma;03B3 -gammalatinsmall;0263 -gammasuperior;02E0 -gangiacoptic;03EB -gbopomofo;310D -gbreve;011F -gcaron;01E7 -gcedilla;0123 -gcircle;24D6 -gcircumflex;011D -gcommaaccent;0123 -gdot;0121 -gdotaccent;0121 -gecyrillic;0433 -gehiragana;3052 -gekatakana;30B2 -geometricallyequal;2251 -gereshaccenthebrew;059C -gereshhebrew;05F3 -gereshmuqdamhebrew;059D -germandbls;00DF -gershayimaccenthebrew;059E -gershayimhebrew;05F4 -getamark;3013 -ghabengali;0998 -ghadarmenian;0572 -ghadeva;0918 -ghagujarati;0A98 -ghagurmukhi;0A18 -ghainarabic;063A -ghainfinalarabic;FECE -ghaininitialarabic;FECF -ghainmedialarabic;FED0 -ghemiddlehookcyrillic;0495 -ghestrokecyrillic;0493 -gheupturncyrillic;0491 -ghhadeva;095A -ghhagurmukhi;0A5A -ghook;0260 -ghzsquare;3393 -gihiragana;304E -gikatakana;30AE -gimarmenian;0563 -gimel;05D2 -gimeldagesh;FB32 -gimeldageshhebrew;FB32 -gimelhebrew;05D2 -gjecyrillic;0453 -glottalinvertedstroke;01BE -glottalstop;0294 -glottalstopinverted;0296 -glottalstopmod;02C0 -glottalstopreversed;0295 -glottalstopreversedmod;02C1 -glottalstopreversedsuperior;02E4 -glottalstopstroke;02A1 -glottalstopstrokereversed;02A2 -gmacron;1E21 -gmonospace;FF47 -gohiragana;3054 -gokatakana;30B4 -gparen;24A2 -gpasquare;33AC -gradient;2207 -grave;0060 -gravebelowcmb;0316 -gravecmb;0300 -gravecomb;0300 -gravedeva;0953 -gravelowmod;02CE -gravemonospace;FF40 -gravetonecmb;0340 -greater;003E -greaterequal;2265 -greaterequalorless;22DB -greatermonospace;FF1E -greaterorequivalent;2273 -greaterorless;2277 -greateroverequal;2267 -greatersmall;FE65 -gscript;0261 -gstroke;01E5 -guhiragana;3050 -guillemotleft;00AB -guillemotright;00BB -guilsinglleft;2039 -guilsinglright;203A -gukatakana;30B0 -guramusquare;3318 -gysquare;33C9 -h;0068 -haabkhasiancyrillic;04A9 -haaltonearabic;06C1 -habengali;09B9 -hadescendercyrillic;04B3 -hadeva;0939 -hagujarati;0AB9 -hagurmukhi;0A39 -haharabic;062D -hahfinalarabic;FEA2 -hahinitialarabic;FEA3 -hahiragana;306F -hahmedialarabic;FEA4 -haitusquare;332A -hakatakana;30CF -hakatakanahalfwidth;FF8A -halantgurmukhi;0A4D -hamzaarabic;0621 -hamzadammaarabic;0621 064F -hamzadammatanarabic;0621 064C -hamzafathaarabic;0621 064E -hamzafathatanarabic;0621 064B -hamzalowarabic;0621 -hamzalowkasraarabic;0621 0650 -hamzalowkasratanarabic;0621 064D -hamzasukunarabic;0621 0652 -hangulfiller;3164 -hardsigncyrillic;044A -harpoonleftbarbup;21BC -harpoonrightbarbup;21C0 -hasquare;33CA -hatafpatah;05B2 -hatafpatah16;05B2 -hatafpatah23;05B2 -hatafpatah2f;05B2 -hatafpatahhebrew;05B2 -hatafpatahnarrowhebrew;05B2 -hatafpatahquarterhebrew;05B2 -hatafpatahwidehebrew;05B2 -hatafqamats;05B3 -hatafqamats1b;05B3 -hatafqamats28;05B3 -hatafqamats34;05B3 -hatafqamatshebrew;05B3 -hatafqamatsnarrowhebrew;05B3 -hatafqamatsquarterhebrew;05B3 -hatafqamatswidehebrew;05B3 -hatafsegol;05B1 -hatafsegol17;05B1 -hatafsegol24;05B1 -hatafsegol30;05B1 -hatafsegolhebrew;05B1 -hatafsegolnarrowhebrew;05B1 -hatafsegolquarterhebrew;05B1 -hatafsegolwidehebrew;05B1 -hbar;0127 -hbopomofo;310F -hbrevebelow;1E2B -hcedilla;1E29 -hcircle;24D7 -hcircumflex;0125 -hdieresis;1E27 -hdotaccent;1E23 -hdotbelow;1E25 -he;05D4 -heart;2665 -heartsuitblack;2665 -heartsuitwhite;2661 -hedagesh;FB34 -hedageshhebrew;FB34 -hehaltonearabic;06C1 -heharabic;0647 -hehebrew;05D4 -hehfinalaltonearabic;FBA7 -hehfinalalttwoarabic;FEEA -hehfinalarabic;FEEA -hehhamzaabovefinalarabic;FBA5 -hehhamzaaboveisolatedarabic;FBA4 -hehinitialaltonearabic;FBA8 -hehinitialarabic;FEEB -hehiragana;3078 -hehmedialaltonearabic;FBA9 -hehmedialarabic;FEEC -heiseierasquare;337B -hekatakana;30D8 -hekatakanahalfwidth;FF8D -hekutaarusquare;3336 -henghook;0267 -herutusquare;3339 -het;05D7 -hethebrew;05D7 -hhook;0266 -hhooksuperior;02B1 -hieuhacirclekorean;327B -hieuhaparenkorean;321B -hieuhcirclekorean;326D -hieuhkorean;314E -hieuhparenkorean;320D -hihiragana;3072 -hikatakana;30D2 -hikatakanahalfwidth;FF8B -hiriq;05B4 -hiriq14;05B4 -hiriq21;05B4 -hiriq2d;05B4 -hiriqhebrew;05B4 -hiriqnarrowhebrew;05B4 -hiriqquarterhebrew;05B4 -hiriqwidehebrew;05B4 -hlinebelow;1E96 -hmonospace;FF48 -hoarmenian;0570 -hohipthai;0E2B -hohiragana;307B -hokatakana;30DB -hokatakanahalfwidth;FF8E -holam;05B9 -holam19;05B9 -holam26;05B9 -holam32;05B9 -holamhebrew;05B9 -holamnarrowhebrew;05B9 -holamquarterhebrew;05B9 -holamwidehebrew;05B9 -honokhukthai;0E2E -hookabovecomb;0309 -hookcmb;0309 -hookpalatalizedbelowcmb;0321 -hookretroflexbelowcmb;0322 -hoonsquare;3342 -horicoptic;03E9 -horizontalbar;2015 -horncmb;031B -hotsprings;2668 -house;2302 -hparen;24A3 -hsuperior;02B0 -hturned;0265 -huhiragana;3075 -huiitosquare;3333 -hukatakana;30D5 -hukatakanahalfwidth;FF8C -hungarumlaut;02DD -hungarumlautcmb;030B -hv;0195 -hyphen;002D -hypheninferior;F6E5 -hyphenmonospace;FF0D -hyphensmall;FE63 -hyphensuperior;F6E6 -hyphentwo;2010 -i;0069 -iacute;00ED -iacyrillic;044F -ibengali;0987 -ibopomofo;3127 -ibreve;012D -icaron;01D0 -icircle;24D8 -icircumflex;00EE -icyrillic;0456 -idblgrave;0209 -ideographearthcircle;328F -ideographfirecircle;328B -ideographicallianceparen;323F -ideographiccallparen;323A -ideographiccentrecircle;32A5 -ideographicclose;3006 -ideographiccomma;3001 -ideographiccommaleft;FF64 -ideographiccongratulationparen;3237 -ideographiccorrectcircle;32A3 -ideographicearthparen;322F -ideographicenterpriseparen;323D -ideographicexcellentcircle;329D -ideographicfestivalparen;3240 -ideographicfinancialcircle;3296 -ideographicfinancialparen;3236 -ideographicfireparen;322B -ideographichaveparen;3232 -ideographichighcircle;32A4 -ideographiciterationmark;3005 -ideographiclaborcircle;3298 -ideographiclaborparen;3238 -ideographicleftcircle;32A7 -ideographiclowcircle;32A6 -ideographicmedicinecircle;32A9 -ideographicmetalparen;322E -ideographicmoonparen;322A -ideographicnameparen;3234 -ideographicperiod;3002 -ideographicprintcircle;329E -ideographicreachparen;3243 -ideographicrepresentparen;3239 -ideographicresourceparen;323E -ideographicrightcircle;32A8 -ideographicsecretcircle;3299 -ideographicselfparen;3242 -ideographicsocietyparen;3233 -ideographicspace;3000 -ideographicspecialparen;3235 -ideographicstockparen;3231 -ideographicstudyparen;323B -ideographicsunparen;3230 -ideographicsuperviseparen;323C -ideographicwaterparen;322C -ideographicwoodparen;322D -ideographiczero;3007 -ideographmetalcircle;328E -ideographmooncircle;328A -ideographnamecircle;3294 -ideographsuncircle;3290 -ideographwatercircle;328C -ideographwoodcircle;328D -ideva;0907 -idieresis;00EF -idieresisacute;1E2F -idieresiscyrillic;04E5 -idotbelow;1ECB -iebrevecyrillic;04D7 -iecyrillic;0435 -ieungacirclekorean;3275 -ieungaparenkorean;3215 -ieungcirclekorean;3267 -ieungkorean;3147 -ieungparenkorean;3207 -igrave;00EC -igujarati;0A87 -igurmukhi;0A07 -ihiragana;3044 -ihookabove;1EC9 -iibengali;0988 -iicyrillic;0438 -iideva;0908 -iigujarati;0A88 -iigurmukhi;0A08 -iimatragurmukhi;0A40 -iinvertedbreve;020B -iishortcyrillic;0439 -iivowelsignbengali;09C0 -iivowelsigndeva;0940 -iivowelsigngujarati;0AC0 -ij;0133 -ikatakana;30A4 -ikatakanahalfwidth;FF72 -ikorean;3163 -ilde;02DC -iluyhebrew;05AC -imacron;012B -imacroncyrillic;04E3 -imageorapproximatelyequal;2253 -imatragurmukhi;0A3F -imonospace;FF49 -increment;2206 -infinity;221E -iniarmenian;056B -integral;222B -integralbottom;2321 -integralbt;2321 -integralex;F8F5 -integraltop;2320 -integraltp;2320 -intersection;2229 -intisquare;3305 -invbullet;25D8 -invcircle;25D9 -invsmileface;263B -iocyrillic;0451 -iogonek;012F -iota;03B9 -iotadieresis;03CA -iotadieresistonos;0390 -iotalatin;0269 -iotatonos;03AF -iparen;24A4 -irigurmukhi;0A72 -ismallhiragana;3043 -ismallkatakana;30A3 -ismallkatakanahalfwidth;FF68 -issharbengali;09FA -istroke;0268 -isuperior;F6ED -iterationhiragana;309D -iterationkatakana;30FD -itilde;0129 -itildebelow;1E2D -iubopomofo;3129 -iucyrillic;044E -ivowelsignbengali;09BF -ivowelsigndeva;093F -ivowelsigngujarati;0ABF -izhitsacyrillic;0475 -izhitsadblgravecyrillic;0477 -j;006A -jaarmenian;0571 -jabengali;099C -jadeva;091C -jagujarati;0A9C -jagurmukhi;0A1C -jbopomofo;3110 -jcaron;01F0 -jcircle;24D9 -jcircumflex;0135 -jcrossedtail;029D -jdotlessstroke;025F -jecyrillic;0458 -jeemarabic;062C -jeemfinalarabic;FE9E -jeeminitialarabic;FE9F -jeemmedialarabic;FEA0 -jeharabic;0698 -jehfinalarabic;FB8B -jhabengali;099D -jhadeva;091D -jhagujarati;0A9D -jhagurmukhi;0A1D -jheharmenian;057B -jis;3004 -jmonospace;FF4A -jparen;24A5 -jsuperior;02B2 -k;006B -kabashkircyrillic;04A1 -kabengali;0995 -kacute;1E31 -kacyrillic;043A -kadescendercyrillic;049B -kadeva;0915 -kaf;05DB -kafarabic;0643 -kafdagesh;FB3B -kafdageshhebrew;FB3B -kaffinalarabic;FEDA -kafhebrew;05DB -kafinitialarabic;FEDB -kafmedialarabic;FEDC -kafrafehebrew;FB4D -kagujarati;0A95 -kagurmukhi;0A15 -kahiragana;304B -kahookcyrillic;04C4 -kakatakana;30AB -kakatakanahalfwidth;FF76 -kappa;03BA -kappasymbolgreek;03F0 -kapyeounmieumkorean;3171 -kapyeounphieuphkorean;3184 -kapyeounpieupkorean;3178 -kapyeounssangpieupkorean;3179 -karoriisquare;330D -kashidaautoarabic;0640 -kashidaautonosidebearingarabic;0640 -kasmallkatakana;30F5 -kasquare;3384 -kasraarabic;0650 -kasratanarabic;064D -kastrokecyrillic;049F -katahiraprolongmarkhalfwidth;FF70 -kaverticalstrokecyrillic;049D -kbopomofo;310E -kcalsquare;3389 -kcaron;01E9 -kcedilla;0137 -kcircle;24DA -kcommaaccent;0137 -kdotbelow;1E33 -keharmenian;0584 -kehiragana;3051 -kekatakana;30B1 -kekatakanahalfwidth;FF79 -kenarmenian;056F -kesmallkatakana;30F6 -kgreenlandic;0138 -khabengali;0996 -khacyrillic;0445 -khadeva;0916 -khagujarati;0A96 -khagurmukhi;0A16 -khaharabic;062E -khahfinalarabic;FEA6 -khahinitialarabic;FEA7 -khahmedialarabic;FEA8 -kheicoptic;03E7 -khhadeva;0959 -khhagurmukhi;0A59 -khieukhacirclekorean;3278 -khieukhaparenkorean;3218 -khieukhcirclekorean;326A -khieukhkorean;314B -khieukhparenkorean;320A -khokhaithai;0E02 -khokhonthai;0E05 -khokhuatthai;0E03 -khokhwaithai;0E04 -khomutthai;0E5B -khook;0199 -khorakhangthai;0E06 -khzsquare;3391 -kihiragana;304D -kikatakana;30AD -kikatakanahalfwidth;FF77 -kiroguramusquare;3315 -kiromeetorusquare;3316 -kirosquare;3314 -kiyeokacirclekorean;326E -kiyeokaparenkorean;320E -kiyeokcirclekorean;3260 -kiyeokkorean;3131 -kiyeokparenkorean;3200 -kiyeoksioskorean;3133 -kjecyrillic;045C -klinebelow;1E35 -klsquare;3398 -kmcubedsquare;33A6 -kmonospace;FF4B -kmsquaredsquare;33A2 -kohiragana;3053 -kohmsquare;33C0 -kokaithai;0E01 -kokatakana;30B3 -kokatakanahalfwidth;FF7A -kooposquare;331E -koppacyrillic;0481 -koreanstandardsymbol;327F -koroniscmb;0343 -kparen;24A6 -kpasquare;33AA -ksicyrillic;046F -ktsquare;33CF -kturned;029E -kuhiragana;304F -kukatakana;30AF -kukatakanahalfwidth;FF78 -kvsquare;33B8 -kwsquare;33BE -l;006C -labengali;09B2 -lacute;013A -ladeva;0932 -lagujarati;0AB2 -lagurmukhi;0A32 -lakkhangyaothai;0E45 -lamaleffinalarabic;FEFC -lamalefhamzaabovefinalarabic;FEF8 -lamalefhamzaaboveisolatedarabic;FEF7 -lamalefhamzabelowfinalarabic;FEFA -lamalefhamzabelowisolatedarabic;FEF9 -lamalefisolatedarabic;FEFB -lamalefmaddaabovefinalarabic;FEF6 -lamalefmaddaaboveisolatedarabic;FEF5 -lamarabic;0644 -lambda;03BB -lambdastroke;019B -lamed;05DC -lameddagesh;FB3C -lameddageshhebrew;FB3C -lamedhebrew;05DC -lamedholam;05DC 05B9 -lamedholamdagesh;05DC 05B9 05BC -lamedholamdageshhebrew;05DC 05B9 05BC -lamedholamhebrew;05DC 05B9 -lamfinalarabic;FEDE -lamhahinitialarabic;FCCA -laminitialarabic;FEDF -lamjeeminitialarabic;FCC9 -lamkhahinitialarabic;FCCB -lamlamhehisolatedarabic;FDF2 -lammedialarabic;FEE0 -lammeemhahinitialarabic;FD88 -lammeeminitialarabic;FCCC -lammeemjeeminitialarabic;FEDF FEE4 FEA0 -lammeemkhahinitialarabic;FEDF FEE4 FEA8 -largecircle;25EF -lbar;019A -lbelt;026C -lbopomofo;310C -lcaron;013E -lcedilla;013C -lcircle;24DB -lcircumflexbelow;1E3D -lcommaaccent;013C -ldot;0140 -ldotaccent;0140 -ldotbelow;1E37 -ldotbelowmacron;1E39 -leftangleabovecmb;031A -lefttackbelowcmb;0318 -less;003C -lessequal;2264 -lessequalorgreater;22DA -lessmonospace;FF1C -lessorequivalent;2272 -lessorgreater;2276 -lessoverequal;2266 -lesssmall;FE64 -lezh;026E -lfblock;258C -lhookretroflex;026D -lira;20A4 -liwnarmenian;056C -lj;01C9 -ljecyrillic;0459 -ll;F6C0 -lladeva;0933 -llagujarati;0AB3 -llinebelow;1E3B -llladeva;0934 -llvocalicbengali;09E1 -llvocalicdeva;0961 -llvocalicvowelsignbengali;09E3 -llvocalicvowelsigndeva;0963 -lmiddletilde;026B -lmonospace;FF4C -lmsquare;33D0 -lochulathai;0E2C -logicaland;2227 -logicalnot;00AC -logicalnotreversed;2310 -logicalor;2228 -lolingthai;0E25 -longs;017F -lowlinecenterline;FE4E -lowlinecmb;0332 -lowlinedashed;FE4D -lozenge;25CA -lparen;24A7 -lslash;0142 -lsquare;2113 -lsuperior;F6EE -ltshade;2591 -luthai;0E26 -lvocalicbengali;098C -lvocalicdeva;090C -lvocalicvowelsignbengali;09E2 -lvocalicvowelsigndeva;0962 -lxsquare;33D3 -m;006D -mabengali;09AE -macron;00AF -macronbelowcmb;0331 -macroncmb;0304 -macronlowmod;02CD -macronmonospace;FFE3 -macute;1E3F -madeva;092E -magujarati;0AAE -magurmukhi;0A2E -mahapakhhebrew;05A4 -mahapakhlefthebrew;05A4 -mahiragana;307E -maichattawalowleftthai;F895 -maichattawalowrightthai;F894 -maichattawathai;0E4B -maichattawaupperleftthai;F893 -maieklowleftthai;F88C -maieklowrightthai;F88B -maiekthai;0E48 -maiekupperleftthai;F88A -maihanakatleftthai;F884 -maihanakatthai;0E31 -maitaikhuleftthai;F889 -maitaikhuthai;0E47 -maitholowleftthai;F88F -maitholowrightthai;F88E -maithothai;0E49 -maithoupperleftthai;F88D -maitrilowleftthai;F892 -maitrilowrightthai;F891 -maitrithai;0E4A -maitriupperleftthai;F890 -maiyamokthai;0E46 -makatakana;30DE -makatakanahalfwidth;FF8F -male;2642 -mansyonsquare;3347 -maqafhebrew;05BE -mars;2642 -masoracirclehebrew;05AF -masquare;3383 -mbopomofo;3107 -mbsquare;33D4 -mcircle;24DC -mcubedsquare;33A5 -mdotaccent;1E41 -mdotbelow;1E43 -meemarabic;0645 -meemfinalarabic;FEE2 -meeminitialarabic;FEE3 -meemmedialarabic;FEE4 -meemmeeminitialarabic;FCD1 -meemmeemisolatedarabic;FC48 -meetorusquare;334D -mehiragana;3081 -meizierasquare;337E -mekatakana;30E1 -mekatakanahalfwidth;FF92 -mem;05DE -memdagesh;FB3E -memdageshhebrew;FB3E -memhebrew;05DE -menarmenian;0574 -merkhahebrew;05A5 -merkhakefulahebrew;05A6 -merkhakefulalefthebrew;05A6 -merkhalefthebrew;05A5 -mhook;0271 -mhzsquare;3392 -middledotkatakanahalfwidth;FF65 -middot;00B7 -mieumacirclekorean;3272 -mieumaparenkorean;3212 -mieumcirclekorean;3264 -mieumkorean;3141 -mieumpansioskorean;3170 -mieumparenkorean;3204 -mieumpieupkorean;316E -mieumsioskorean;316F -mihiragana;307F -mikatakana;30DF -mikatakanahalfwidth;FF90 -minus;2212 -minusbelowcmb;0320 -minuscircle;2296 -minusmod;02D7 -minusplus;2213 -minute;2032 -miribaarusquare;334A -mirisquare;3349 -mlonglegturned;0270 -mlsquare;3396 -mmcubedsquare;33A3 -mmonospace;FF4D -mmsquaredsquare;339F -mohiragana;3082 -mohmsquare;33C1 -mokatakana;30E2 -mokatakanahalfwidth;FF93 -molsquare;33D6 -momathai;0E21 -moverssquare;33A7 -moverssquaredsquare;33A8 -mparen;24A8 -mpasquare;33AB -mssquare;33B3 -msuperior;F6EF -mturned;026F -mu;00B5 -mu1;00B5 -muasquare;3382 -muchgreater;226B -muchless;226A -mufsquare;338C -mugreek;03BC -mugsquare;338D -muhiragana;3080 -mukatakana;30E0 -mukatakanahalfwidth;FF91 -mulsquare;3395 -multiply;00D7 -mumsquare;339B -munahhebrew;05A3 -munahlefthebrew;05A3 -musicalnote;266A -musicalnotedbl;266B -musicflatsign;266D -musicsharpsign;266F -mussquare;33B2 -muvsquare;33B6 -muwsquare;33BC -mvmegasquare;33B9 -mvsquare;33B7 -mwmegasquare;33BF -mwsquare;33BD -n;006E -nabengali;09A8 -nabla;2207 -nacute;0144 -nadeva;0928 -nagujarati;0AA8 -nagurmukhi;0A28 -nahiragana;306A -nakatakana;30CA -nakatakanahalfwidth;FF85 -napostrophe;0149 -nasquare;3381 -nbopomofo;310B -nbspace;00A0 -ncaron;0148 -ncedilla;0146 -ncircle;24DD -ncircumflexbelow;1E4B -ncommaaccent;0146 -ndotaccent;1E45 -ndotbelow;1E47 -nehiragana;306D -nekatakana;30CD -nekatakanahalfwidth;FF88 -newsheqelsign;20AA -nfsquare;338B -ngabengali;0999 -ngadeva;0919 -ngagujarati;0A99 -ngagurmukhi;0A19 -ngonguthai;0E07 -nhiragana;3093 -nhookleft;0272 -nhookretroflex;0273 -nieunacirclekorean;326F -nieunaparenkorean;320F -nieuncieuckorean;3135 -nieuncirclekorean;3261 -nieunhieuhkorean;3136 -nieunkorean;3134 -nieunpansioskorean;3168 -nieunparenkorean;3201 -nieunsioskorean;3167 -nieuntikeutkorean;3166 -nihiragana;306B -nikatakana;30CB -nikatakanahalfwidth;FF86 -nikhahitleftthai;F899 -nikhahitthai;0E4D -nine;0039 -ninearabic;0669 -ninebengali;09EF -ninecircle;2468 -ninecircleinversesansserif;2792 -ninedeva;096F -ninegujarati;0AEF -ninegurmukhi;0A6F -ninehackarabic;0669 -ninehangzhou;3029 -nineideographicparen;3228 -nineinferior;2089 -ninemonospace;FF19 -nineoldstyle;F739 -nineparen;247C -nineperiod;2490 -ninepersian;06F9 -nineroman;2178 -ninesuperior;2079 -nineteencircle;2472 -nineteenparen;2486 -nineteenperiod;249A -ninethai;0E59 -nj;01CC -njecyrillic;045A -nkatakana;30F3 -nkatakanahalfwidth;FF9D -nlegrightlong;019E -nlinebelow;1E49 -nmonospace;FF4E -nmsquare;339A -nnabengali;09A3 -nnadeva;0923 -nnagujarati;0AA3 -nnagurmukhi;0A23 -nnnadeva;0929 -nohiragana;306E -nokatakana;30CE -nokatakanahalfwidth;FF89 -nonbreakingspace;00A0 -nonenthai;0E13 -nonuthai;0E19 -noonarabic;0646 -noonfinalarabic;FEE6 -noonghunnaarabic;06BA -noonghunnafinalarabic;FB9F -noonhehinitialarabic;FEE7 FEEC -nooninitialarabic;FEE7 -noonjeeminitialarabic;FCD2 -noonjeemisolatedarabic;FC4B -noonmedialarabic;FEE8 -noonmeeminitialarabic;FCD5 -noonmeemisolatedarabic;FC4E -noonnoonfinalarabic;FC8D -notcontains;220C -notelement;2209 -notelementof;2209 -notequal;2260 -notgreater;226F -notgreaternorequal;2271 -notgreaternorless;2279 -notidentical;2262 -notless;226E -notlessnorequal;2270 -notparallel;2226 -notprecedes;2280 -notsubset;2284 -notsucceeds;2281 -notsuperset;2285 -nowarmenian;0576 -nparen;24A9 -nssquare;33B1 -nsuperior;207F -ntilde;00F1 -nu;03BD -nuhiragana;306C -nukatakana;30CC -nukatakanahalfwidth;FF87 -nuktabengali;09BC -nuktadeva;093C -nuktagujarati;0ABC -nuktagurmukhi;0A3C -numbersign;0023 -numbersignmonospace;FF03 -numbersignsmall;FE5F -numeralsigngreek;0374 -numeralsignlowergreek;0375 -numero;2116 -nun;05E0 -nundagesh;FB40 -nundageshhebrew;FB40 -nunhebrew;05E0 -nvsquare;33B5 -nwsquare;33BB -nyabengali;099E -nyadeva;091E -nyagujarati;0A9E -nyagurmukhi;0A1E -o;006F -oacute;00F3 -oangthai;0E2D -obarred;0275 -obarredcyrillic;04E9 -obarreddieresiscyrillic;04EB -obengali;0993 -obopomofo;311B -obreve;014F -ocandradeva;0911 -ocandragujarati;0A91 -ocandravowelsigndeva;0949 -ocandravowelsigngujarati;0AC9 -ocaron;01D2 -ocircle;24DE -ocircumflex;00F4 -ocircumflexacute;1ED1 -ocircumflexdotbelow;1ED9 -ocircumflexgrave;1ED3 -ocircumflexhookabove;1ED5 -ocircumflextilde;1ED7 -ocyrillic;043E -odblacute;0151 -odblgrave;020D -odeva;0913 -odieresis;00F6 -odieresiscyrillic;04E7 -odotbelow;1ECD -oe;0153 -oekorean;315A -ogonek;02DB -ogonekcmb;0328 -ograve;00F2 -ogujarati;0A93 -oharmenian;0585 -ohiragana;304A -ohookabove;1ECF -ohorn;01A1 -ohornacute;1EDB -ohorndotbelow;1EE3 -ohorngrave;1EDD -ohornhookabove;1EDF -ohorntilde;1EE1 -ohungarumlaut;0151 -oi;01A3 -oinvertedbreve;020F -okatakana;30AA -okatakanahalfwidth;FF75 -okorean;3157 -olehebrew;05AB -omacron;014D -omacronacute;1E53 -omacrongrave;1E51 -omdeva;0950 -omega;03C9 -omega1;03D6 -omegacyrillic;0461 -omegalatinclosed;0277 -omegaroundcyrillic;047B -omegatitlocyrillic;047D -omegatonos;03CE -omgujarati;0AD0 -omicron;03BF -omicrontonos;03CC -omonospace;FF4F -one;0031 -onearabic;0661 -onebengali;09E7 -onecircle;2460 -onecircleinversesansserif;278A -onedeva;0967 -onedotenleader;2024 -oneeighth;215B -onefitted;F6DC -onegujarati;0AE7 -onegurmukhi;0A67 -onehackarabic;0661 -onehalf;00BD -onehangzhou;3021 -oneideographicparen;3220 -oneinferior;2081 -onemonospace;FF11 -onenumeratorbengali;09F4 -oneoldstyle;F731 -oneparen;2474 -oneperiod;2488 -onepersian;06F1 -onequarter;00BC -oneroman;2170 -onesuperior;00B9 -onethai;0E51 -onethird;2153 -oogonek;01EB -oogonekmacron;01ED -oogurmukhi;0A13 -oomatragurmukhi;0A4B -oopen;0254 -oparen;24AA -openbullet;25E6 -option;2325 -ordfeminine;00AA -ordmasculine;00BA -orthogonal;221F -oshortdeva;0912 -oshortvowelsigndeva;094A -oslash;00F8 -oslashacute;01FF -osmallhiragana;3049 -osmallkatakana;30A9 -osmallkatakanahalfwidth;FF6B -ostrokeacute;01FF -osuperior;F6F0 -otcyrillic;047F -otilde;00F5 -otildeacute;1E4D -otildedieresis;1E4F -oubopomofo;3121 -overline;203E -overlinecenterline;FE4A -overlinecmb;0305 -overlinedashed;FE49 -overlinedblwavy;FE4C -overlinewavy;FE4B -overscore;00AF -ovowelsignbengali;09CB -ovowelsigndeva;094B -ovowelsigngujarati;0ACB -p;0070 -paampssquare;3380 -paasentosquare;332B -pabengali;09AA -pacute;1E55 -padeva;092A -pagedown;21DF -pageup;21DE -pagujarati;0AAA -pagurmukhi;0A2A -pahiragana;3071 -paiyannoithai;0E2F -pakatakana;30D1 -palatalizationcyrilliccmb;0484 -palochkacyrillic;04C0 -pansioskorean;317F -paragraph;00B6 -parallel;2225 -parenleft;0028 -parenleftaltonearabic;FD3E -parenleftbt;F8ED -parenleftex;F8EC -parenleftinferior;208D -parenleftmonospace;FF08 -parenleftsmall;FE59 -parenleftsuperior;207D -parenlefttp;F8EB -parenleftvertical;FE35 -parenright;0029 -parenrightaltonearabic;FD3F -parenrightbt;F8F8 -parenrightex;F8F7 -parenrightinferior;208E -parenrightmonospace;FF09 -parenrightsmall;FE5A -parenrightsuperior;207E -parenrighttp;F8F6 -parenrightvertical;FE36 -partialdiff;2202 -paseqhebrew;05C0 -pashtahebrew;0599 -pasquare;33A9 -patah;05B7 -patah11;05B7 -patah1d;05B7 -patah2a;05B7 -patahhebrew;05B7 -patahnarrowhebrew;05B7 -patahquarterhebrew;05B7 -patahwidehebrew;05B7 -pazerhebrew;05A1 -pbopomofo;3106 -pcircle;24DF -pdotaccent;1E57 -pe;05E4 -pecyrillic;043F -pedagesh;FB44 -pedageshhebrew;FB44 -peezisquare;333B -pefinaldageshhebrew;FB43 -peharabic;067E -peharmenian;057A -pehebrew;05E4 -pehfinalarabic;FB57 -pehinitialarabic;FB58 -pehiragana;307A -pehmedialarabic;FB59 -pekatakana;30DA -pemiddlehookcyrillic;04A7 -perafehebrew;FB4E -percent;0025 -percentarabic;066A -percentmonospace;FF05 -percentsmall;FE6A -period;002E -periodarmenian;0589 -periodcentered;00B7 -periodhalfwidth;FF61 -periodinferior;F6E7 -periodmonospace;FF0E -periodsmall;FE52 -periodsuperior;F6E8 -perispomenigreekcmb;0342 -perpendicular;22A5 -perthousand;2030 -peseta;20A7 -pfsquare;338A -phabengali;09AB -phadeva;092B -phagujarati;0AAB -phagurmukhi;0A2B -phi;03C6 -phi1;03D5 -phieuphacirclekorean;327A -phieuphaparenkorean;321A -phieuphcirclekorean;326C -phieuphkorean;314D -phieuphparenkorean;320C -philatin;0278 -phinthuthai;0E3A -phisymbolgreek;03D5 -phook;01A5 -phophanthai;0E1E -phophungthai;0E1C -phosamphaothai;0E20 -pi;03C0 -pieupacirclekorean;3273 -pieupaparenkorean;3213 -pieupcieuckorean;3176 -pieupcirclekorean;3265 -pieupkiyeokkorean;3172 -pieupkorean;3142 -pieupparenkorean;3205 -pieupsioskiyeokkorean;3174 -pieupsioskorean;3144 -pieupsiostikeutkorean;3175 -pieupthieuthkorean;3177 -pieuptikeutkorean;3173 -pihiragana;3074 -pikatakana;30D4 -pisymbolgreek;03D6 -piwrarmenian;0583 -plus;002B -plusbelowcmb;031F -pluscircle;2295 -plusminus;00B1 -plusmod;02D6 -plusmonospace;FF0B -plussmall;FE62 -plussuperior;207A -pmonospace;FF50 -pmsquare;33D8 -pohiragana;307D -pointingindexdownwhite;261F -pointingindexleftwhite;261C -pointingindexrightwhite;261E -pointingindexupwhite;261D -pokatakana;30DD -poplathai;0E1B -postalmark;3012 -postalmarkface;3020 -pparen;24AB -precedes;227A -prescription;211E -primemod;02B9 -primereversed;2035 -product;220F -projective;2305 -prolongedkana;30FC -propellor;2318 -propersubset;2282 -propersuperset;2283 -proportion;2237 -proportional;221D -psi;03C8 -psicyrillic;0471 -psilipneumatacyrilliccmb;0486 -pssquare;33B0 -puhiragana;3077 -pukatakana;30D7 -pvsquare;33B4 -pwsquare;33BA -q;0071 -qadeva;0958 -qadmahebrew;05A8 -qafarabic;0642 -qaffinalarabic;FED6 -qafinitialarabic;FED7 -qafmedialarabic;FED8 -qamats;05B8 -qamats10;05B8 -qamats1a;05B8 -qamats1c;05B8 -qamats27;05B8 -qamats29;05B8 -qamats33;05B8 -qamatsde;05B8 -qamatshebrew;05B8 -qamatsnarrowhebrew;05B8 -qamatsqatanhebrew;05B8 -qamatsqatannarrowhebrew;05B8 -qamatsqatanquarterhebrew;05B8 -qamatsqatanwidehebrew;05B8 -qamatsquarterhebrew;05B8 -qamatswidehebrew;05B8 -qarneyparahebrew;059F -qbopomofo;3111 -qcircle;24E0 -qhook;02A0 -qmonospace;FF51 -qof;05E7 -qofdagesh;FB47 -qofdageshhebrew;FB47 -qofhatafpatah;05E7 05B2 -qofhatafpatahhebrew;05E7 05B2 -qofhatafsegol;05E7 05B1 -qofhatafsegolhebrew;05E7 05B1 -qofhebrew;05E7 -qofhiriq;05E7 05B4 -qofhiriqhebrew;05E7 05B4 -qofholam;05E7 05B9 -qofholamhebrew;05E7 05B9 -qofpatah;05E7 05B7 -qofpatahhebrew;05E7 05B7 -qofqamats;05E7 05B8 -qofqamatshebrew;05E7 05B8 -qofqubuts;05E7 05BB -qofqubutshebrew;05E7 05BB -qofsegol;05E7 05B6 -qofsegolhebrew;05E7 05B6 -qofsheva;05E7 05B0 -qofshevahebrew;05E7 05B0 -qoftsere;05E7 05B5 -qoftserehebrew;05E7 05B5 -qparen;24AC -quarternote;2669 -qubuts;05BB -qubuts18;05BB -qubuts25;05BB -qubuts31;05BB -qubutshebrew;05BB -qubutsnarrowhebrew;05BB -qubutsquarterhebrew;05BB -qubutswidehebrew;05BB -question;003F -questionarabic;061F -questionarmenian;055E -questiondown;00BF -questiondownsmall;F7BF -questiongreek;037E -questionmonospace;FF1F -questionsmall;F73F -quotedbl;0022 -quotedblbase;201E -quotedblleft;201C -quotedblmonospace;FF02 -quotedblprime;301E -quotedblprimereversed;301D -quotedblright;201D -quoteleft;2018 -quoteleftreversed;201B -quotereversed;201B -quoteright;2019 -quoterightn;0149 -quotesinglbase;201A -quotesingle;0027 -quotesinglemonospace;FF07 -r;0072 -raarmenian;057C -rabengali;09B0 -racute;0155 -radeva;0930 -radical;221A -radicalex;F8E5 -radoverssquare;33AE -radoverssquaredsquare;33AF -radsquare;33AD -rafe;05BF -rafehebrew;05BF -ragujarati;0AB0 -ragurmukhi;0A30 -rahiragana;3089 -rakatakana;30E9 -rakatakanahalfwidth;FF97 -ralowerdiagonalbengali;09F1 -ramiddlediagonalbengali;09F0 -ramshorn;0264 -ratio;2236 -rbopomofo;3116 -rcaron;0159 -rcedilla;0157 -rcircle;24E1 -rcommaaccent;0157 -rdblgrave;0211 -rdotaccent;1E59 -rdotbelow;1E5B -rdotbelowmacron;1E5D -referencemark;203B -reflexsubset;2286 -reflexsuperset;2287 -registered;00AE -registersans;F8E8 -registerserif;F6DA -reharabic;0631 -reharmenian;0580 -rehfinalarabic;FEAE -rehiragana;308C -rehyehaleflamarabic;0631 FEF3 FE8E 0644 -rekatakana;30EC -rekatakanahalfwidth;FF9A -resh;05E8 -reshdageshhebrew;FB48 -reshhatafpatah;05E8 05B2 -reshhatafpatahhebrew;05E8 05B2 -reshhatafsegol;05E8 05B1 -reshhatafsegolhebrew;05E8 05B1 -reshhebrew;05E8 -reshhiriq;05E8 05B4 -reshhiriqhebrew;05E8 05B4 -reshholam;05E8 05B9 -reshholamhebrew;05E8 05B9 -reshpatah;05E8 05B7 -reshpatahhebrew;05E8 05B7 -reshqamats;05E8 05B8 -reshqamatshebrew;05E8 05B8 -reshqubuts;05E8 05BB -reshqubutshebrew;05E8 05BB -reshsegol;05E8 05B6 -reshsegolhebrew;05E8 05B6 -reshsheva;05E8 05B0 -reshshevahebrew;05E8 05B0 -reshtsere;05E8 05B5 -reshtserehebrew;05E8 05B5 -reversedtilde;223D -reviahebrew;0597 -reviamugrashhebrew;0597 -revlogicalnot;2310 -rfishhook;027E -rfishhookreversed;027F -rhabengali;09DD -rhadeva;095D -rho;03C1 -rhook;027D -rhookturned;027B -rhookturnedsuperior;02B5 -rhosymbolgreek;03F1 -rhotichookmod;02DE -rieulacirclekorean;3271 -rieulaparenkorean;3211 -rieulcirclekorean;3263 -rieulhieuhkorean;3140 -rieulkiyeokkorean;313A -rieulkiyeoksioskorean;3169 -rieulkorean;3139 -rieulmieumkorean;313B -rieulpansioskorean;316C -rieulparenkorean;3203 -rieulphieuphkorean;313F -rieulpieupkorean;313C -rieulpieupsioskorean;316B -rieulsioskorean;313D -rieulthieuthkorean;313E -rieultikeutkorean;316A -rieulyeorinhieuhkorean;316D -rightangle;221F -righttackbelowcmb;0319 -righttriangle;22BF -rihiragana;308A -rikatakana;30EA -rikatakanahalfwidth;FF98 -ring;02DA -ringbelowcmb;0325 -ringcmb;030A -ringhalfleft;02BF -ringhalfleftarmenian;0559 -ringhalfleftbelowcmb;031C -ringhalfleftcentered;02D3 -ringhalfright;02BE -ringhalfrightbelowcmb;0339 -ringhalfrightcentered;02D2 -rinvertedbreve;0213 -rittorusquare;3351 -rlinebelow;1E5F -rlongleg;027C -rlonglegturned;027A -rmonospace;FF52 -rohiragana;308D -rokatakana;30ED -rokatakanahalfwidth;FF9B -roruathai;0E23 -rparen;24AD -rrabengali;09DC -rradeva;0931 -rragurmukhi;0A5C -rreharabic;0691 -rrehfinalarabic;FB8D -rrvocalicbengali;09E0 -rrvocalicdeva;0960 -rrvocalicgujarati;0AE0 -rrvocalicvowelsignbengali;09C4 -rrvocalicvowelsigndeva;0944 -rrvocalicvowelsigngujarati;0AC4 -rsuperior;F6F1 -rtblock;2590 -rturned;0279 -rturnedsuperior;02B4 -ruhiragana;308B -rukatakana;30EB -rukatakanahalfwidth;FF99 -rupeemarkbengali;09F2 -rupeesignbengali;09F3 -rupiah;F6DD -ruthai;0E24 -rvocalicbengali;098B -rvocalicdeva;090B -rvocalicgujarati;0A8B -rvocalicvowelsignbengali;09C3 -rvocalicvowelsigndeva;0943 -rvocalicvowelsigngujarati;0AC3 -s;0073 -sabengali;09B8 -sacute;015B -sacutedotaccent;1E65 -sadarabic;0635 -sadeva;0938 -sadfinalarabic;FEBA -sadinitialarabic;FEBB -sadmedialarabic;FEBC -sagujarati;0AB8 -sagurmukhi;0A38 -sahiragana;3055 -sakatakana;30B5 -sakatakanahalfwidth;FF7B -sallallahoualayhewasallamarabic;FDFA -samekh;05E1 -samekhdagesh;FB41 -samekhdageshhebrew;FB41 -samekhhebrew;05E1 -saraaathai;0E32 -saraaethai;0E41 -saraaimaimalaithai;0E44 -saraaimaimuanthai;0E43 -saraamthai;0E33 -saraathai;0E30 -saraethai;0E40 -saraiileftthai;F886 -saraiithai;0E35 -saraileftthai;F885 -saraithai;0E34 -saraothai;0E42 -saraueeleftthai;F888 -saraueethai;0E37 -saraueleftthai;F887 -sarauethai;0E36 -sarauthai;0E38 -sarauuthai;0E39 -sbopomofo;3119 -scaron;0161 -scarondotaccent;1E67 -scedilla;015F -schwa;0259 -schwacyrillic;04D9 -schwadieresiscyrillic;04DB -schwahook;025A -scircle;24E2 -scircumflex;015D -scommaaccent;0219 -sdotaccent;1E61 -sdotbelow;1E63 -sdotbelowdotaccent;1E69 -seagullbelowcmb;033C -second;2033 -secondtonechinese;02CA -section;00A7 -seenarabic;0633 -seenfinalarabic;FEB2 -seeninitialarabic;FEB3 -seenmedialarabic;FEB4 -segol;05B6 -segol13;05B6 -segol1f;05B6 -segol2c;05B6 -segolhebrew;05B6 -segolnarrowhebrew;05B6 -segolquarterhebrew;05B6 -segoltahebrew;0592 -segolwidehebrew;05B6 -seharmenian;057D -sehiragana;305B -sekatakana;30BB -sekatakanahalfwidth;FF7E -semicolon;003B -semicolonarabic;061B -semicolonmonospace;FF1B -semicolonsmall;FE54 -semivoicedmarkkana;309C -semivoicedmarkkanahalfwidth;FF9F -sentisquare;3322 -sentosquare;3323 -seven;0037 -sevenarabic;0667 -sevenbengali;09ED -sevencircle;2466 -sevencircleinversesansserif;2790 -sevendeva;096D -seveneighths;215E -sevengujarati;0AED -sevengurmukhi;0A6D -sevenhackarabic;0667 -sevenhangzhou;3027 -sevenideographicparen;3226 -seveninferior;2087 -sevenmonospace;FF17 -sevenoldstyle;F737 -sevenparen;247A -sevenperiod;248E -sevenpersian;06F7 -sevenroman;2176 -sevensuperior;2077 -seventeencircle;2470 -seventeenparen;2484 -seventeenperiod;2498 -seventhai;0E57 -sfthyphen;00AD -shaarmenian;0577 -shabengali;09B6 -shacyrillic;0448 -shaddaarabic;0651 -shaddadammaarabic;FC61 -shaddadammatanarabic;FC5E -shaddafathaarabic;FC60 -shaddafathatanarabic;0651 064B -shaddakasraarabic;FC62 -shaddakasratanarabic;FC5F -shade;2592 -shadedark;2593 -shadelight;2591 -shademedium;2592 -shadeva;0936 -shagujarati;0AB6 -shagurmukhi;0A36 -shalshelethebrew;0593 -shbopomofo;3115 -shchacyrillic;0449 -sheenarabic;0634 -sheenfinalarabic;FEB6 -sheeninitialarabic;FEB7 -sheenmedialarabic;FEB8 -sheicoptic;03E3 -sheqel;20AA -sheqelhebrew;20AA -sheva;05B0 -sheva115;05B0 -sheva15;05B0 -sheva22;05B0 -sheva2e;05B0 -shevahebrew;05B0 -shevanarrowhebrew;05B0 -shevaquarterhebrew;05B0 -shevawidehebrew;05B0 -shhacyrillic;04BB -shimacoptic;03ED -shin;05E9 -shindagesh;FB49 -shindageshhebrew;FB49 -shindageshshindot;FB2C -shindageshshindothebrew;FB2C -shindageshsindot;FB2D -shindageshsindothebrew;FB2D -shindothebrew;05C1 -shinhebrew;05E9 -shinshindot;FB2A -shinshindothebrew;FB2A -shinsindot;FB2B -shinsindothebrew;FB2B -shook;0282 -sigma;03C3 -sigma1;03C2 -sigmafinal;03C2 -sigmalunatesymbolgreek;03F2 -sihiragana;3057 -sikatakana;30B7 -sikatakanahalfwidth;FF7C -siluqhebrew;05BD -siluqlefthebrew;05BD -similar;223C -sindothebrew;05C2 -siosacirclekorean;3274 -siosaparenkorean;3214 -sioscieuckorean;317E -sioscirclekorean;3266 -sioskiyeokkorean;317A -sioskorean;3145 -siosnieunkorean;317B -siosparenkorean;3206 -siospieupkorean;317D -siostikeutkorean;317C -six;0036 -sixarabic;0666 -sixbengali;09EC -sixcircle;2465 -sixcircleinversesansserif;278F -sixdeva;096C -sixgujarati;0AEC -sixgurmukhi;0A6C -sixhackarabic;0666 -sixhangzhou;3026 -sixideographicparen;3225 -sixinferior;2086 -sixmonospace;FF16 -sixoldstyle;F736 -sixparen;2479 -sixperiod;248D -sixpersian;06F6 -sixroman;2175 -sixsuperior;2076 -sixteencircle;246F -sixteencurrencydenominatorbengali;09F9 -sixteenparen;2483 -sixteenperiod;2497 -sixthai;0E56 -slash;002F -slashmonospace;FF0F -slong;017F -slongdotaccent;1E9B -smileface;263A -smonospace;FF53 -sofpasuqhebrew;05C3 -softhyphen;00AD -softsigncyrillic;044C -sohiragana;305D -sokatakana;30BD -sokatakanahalfwidth;FF7F -soliduslongoverlaycmb;0338 -solidusshortoverlaycmb;0337 -sorusithai;0E29 -sosalathai;0E28 -sosothai;0E0B -sosuathai;0E2A -space;0020 -spacehackarabic;0020 -spade;2660 -spadesuitblack;2660 -spadesuitwhite;2664 -sparen;24AE -squarebelowcmb;033B -squarecc;33C4 -squarecm;339D -squarediagonalcrosshatchfill;25A9 -squarehorizontalfill;25A4 -squarekg;338F -squarekm;339E -squarekmcapital;33CE -squareln;33D1 -squarelog;33D2 -squaremg;338E -squaremil;33D5 -squaremm;339C -squaremsquared;33A1 -squareorthogonalcrosshatchfill;25A6 -squareupperlefttolowerrightfill;25A7 -squareupperrighttolowerleftfill;25A8 -squareverticalfill;25A5 -squarewhitewithsmallblack;25A3 -srsquare;33DB -ssabengali;09B7 -ssadeva;0937 -ssagujarati;0AB7 -ssangcieuckorean;3149 -ssanghieuhkorean;3185 -ssangieungkorean;3180 -ssangkiyeokkorean;3132 -ssangnieunkorean;3165 -ssangpieupkorean;3143 -ssangsioskorean;3146 -ssangtikeutkorean;3138 -ssuperior;F6F2 -sterling;00A3 -sterlingmonospace;FFE1 -strokelongoverlaycmb;0336 -strokeshortoverlaycmb;0335 -subset;2282 -subsetnotequal;228A -subsetorequal;2286 -succeeds;227B -suchthat;220B -suhiragana;3059 -sukatakana;30B9 -sukatakanahalfwidth;FF7D -sukunarabic;0652 -summation;2211 -sun;263C -superset;2283 -supersetnotequal;228B -supersetorequal;2287 -svsquare;33DC -syouwaerasquare;337C -t;0074 -tabengali;09A4 -tackdown;22A4 -tackleft;22A3 -tadeva;0924 -tagujarati;0AA4 -tagurmukhi;0A24 -taharabic;0637 -tahfinalarabic;FEC2 -tahinitialarabic;FEC3 -tahiragana;305F -tahmedialarabic;FEC4 -taisyouerasquare;337D -takatakana;30BF -takatakanahalfwidth;FF80 -tatweelarabic;0640 -tau;03C4 -tav;05EA -tavdages;FB4A -tavdagesh;FB4A -tavdageshhebrew;FB4A -tavhebrew;05EA -tbar;0167 -tbopomofo;310A -tcaron;0165 -tccurl;02A8 -tcedilla;0163 -tcheharabic;0686 -tchehfinalarabic;FB7B -tchehinitialarabic;FB7C -tchehmedialarabic;FB7D -tchehmeeminitialarabic;FB7C FEE4 -tcircle;24E3 -tcircumflexbelow;1E71 -tcommaaccent;0163 -tdieresis;1E97 -tdotaccent;1E6B -tdotbelow;1E6D -tecyrillic;0442 -tedescendercyrillic;04AD -teharabic;062A -tehfinalarabic;FE96 -tehhahinitialarabic;FCA2 -tehhahisolatedarabic;FC0C -tehinitialarabic;FE97 -tehiragana;3066 -tehjeeminitialarabic;FCA1 -tehjeemisolatedarabic;FC0B -tehmarbutaarabic;0629 -tehmarbutafinalarabic;FE94 -tehmedialarabic;FE98 -tehmeeminitialarabic;FCA4 -tehmeemisolatedarabic;FC0E -tehnoonfinalarabic;FC73 -tekatakana;30C6 -tekatakanahalfwidth;FF83 -telephone;2121 -telephoneblack;260E -telishagedolahebrew;05A0 -telishaqetanahebrew;05A9 -tencircle;2469 -tenideographicparen;3229 -tenparen;247D -tenperiod;2491 -tenroman;2179 -tesh;02A7 -tet;05D8 -tetdagesh;FB38 -tetdageshhebrew;FB38 -tethebrew;05D8 -tetsecyrillic;04B5 -tevirhebrew;059B -tevirlefthebrew;059B -thabengali;09A5 -thadeva;0925 -thagujarati;0AA5 -thagurmukhi;0A25 -thalarabic;0630 -thalfinalarabic;FEAC -thanthakhatlowleftthai;F898 -thanthakhatlowrightthai;F897 -thanthakhatthai;0E4C -thanthakhatupperleftthai;F896 -theharabic;062B -thehfinalarabic;FE9A -thehinitialarabic;FE9B -thehmedialarabic;FE9C -thereexists;2203 -therefore;2234 -theta;03B8 -theta1;03D1 -thetasymbolgreek;03D1 -thieuthacirclekorean;3279 -thieuthaparenkorean;3219 -thieuthcirclekorean;326B -thieuthkorean;314C -thieuthparenkorean;320B -thirteencircle;246C -thirteenparen;2480 -thirteenperiod;2494 -thonangmonthothai;0E11 -thook;01AD -thophuthaothai;0E12 -thorn;00FE -thothahanthai;0E17 -thothanthai;0E10 -thothongthai;0E18 -thothungthai;0E16 -thousandcyrillic;0482 -thousandsseparatorarabic;066C -thousandsseparatorpersian;066C -three;0033 -threearabic;0663 -threebengali;09E9 -threecircle;2462 -threecircleinversesansserif;278C -threedeva;0969 -threeeighths;215C -threegujarati;0AE9 -threegurmukhi;0A69 -threehackarabic;0663 -threehangzhou;3023 -threeideographicparen;3222 -threeinferior;2083 -threemonospace;FF13 -threenumeratorbengali;09F6 -threeoldstyle;F733 -threeparen;2476 -threeperiod;248A -threepersian;06F3 -threequarters;00BE -threequartersemdash;F6DE -threeroman;2172 -threesuperior;00B3 -threethai;0E53 -thzsquare;3394 -tihiragana;3061 -tikatakana;30C1 -tikatakanahalfwidth;FF81 -tikeutacirclekorean;3270 -tikeutaparenkorean;3210 -tikeutcirclekorean;3262 -tikeutkorean;3137 -tikeutparenkorean;3202 -tilde;02DC -tildebelowcmb;0330 -tildecmb;0303 -tildecomb;0303 -tildedoublecmb;0360 -tildeoperator;223C -tildeoverlaycmb;0334 -tildeverticalcmb;033E -timescircle;2297 -tipehahebrew;0596 -tipehalefthebrew;0596 -tippigurmukhi;0A70 -titlocyrilliccmb;0483 -tiwnarmenian;057F -tlinebelow;1E6F -tmonospace;FF54 -toarmenian;0569 -tohiragana;3068 -tokatakana;30C8 -tokatakanahalfwidth;FF84 -tonebarextrahighmod;02E5 -tonebarextralowmod;02E9 -tonebarhighmod;02E6 -tonebarlowmod;02E8 -tonebarmidmod;02E7 -tonefive;01BD -tonesix;0185 -tonetwo;01A8 -tonos;0384 -tonsquare;3327 -topatakthai;0E0F -tortoiseshellbracketleft;3014 -tortoiseshellbracketleftsmall;FE5D -tortoiseshellbracketleftvertical;FE39 -tortoiseshellbracketright;3015 -tortoiseshellbracketrightsmall;FE5E -tortoiseshellbracketrightvertical;FE3A -totaothai;0E15 -tpalatalhook;01AB -tparen;24AF -trademark;2122 -trademarksans;F8EA -trademarkserif;F6DB -tretroflexhook;0288 -triagdn;25BC -triaglf;25C4 -triagrt;25BA -triagup;25B2 -ts;02A6 -tsadi;05E6 -tsadidagesh;FB46 -tsadidageshhebrew;FB46 -tsadihebrew;05E6 -tsecyrillic;0446 -tsere;05B5 -tsere12;05B5 -tsere1e;05B5 -tsere2b;05B5 -tserehebrew;05B5 -tserenarrowhebrew;05B5 -tserequarterhebrew;05B5 -tserewidehebrew;05B5 -tshecyrillic;045B -tsuperior;F6F3 -ttabengali;099F -ttadeva;091F -ttagujarati;0A9F -ttagurmukhi;0A1F -tteharabic;0679 -ttehfinalarabic;FB67 -ttehinitialarabic;FB68 -ttehmedialarabic;FB69 -tthabengali;09A0 -tthadeva;0920 -tthagujarati;0AA0 -tthagurmukhi;0A20 -tturned;0287 -tuhiragana;3064 -tukatakana;30C4 -tukatakanahalfwidth;FF82 -tusmallhiragana;3063 -tusmallkatakana;30C3 -tusmallkatakanahalfwidth;FF6F -twelvecircle;246B -twelveparen;247F -twelveperiod;2493 -twelveroman;217B -twentycircle;2473 -twentyhangzhou;5344 -twentyparen;2487 -twentyperiod;249B -two;0032 -twoarabic;0662 -twobengali;09E8 -twocircle;2461 -twocircleinversesansserif;278B -twodeva;0968 -twodotenleader;2025 -twodotleader;2025 -twodotleadervertical;FE30 -twogujarati;0AE8 -twogurmukhi;0A68 -twohackarabic;0662 -twohangzhou;3022 -twoideographicparen;3221 -twoinferior;2082 -twomonospace;FF12 -twonumeratorbengali;09F5 -twooldstyle;F732 -twoparen;2475 -twoperiod;2489 -twopersian;06F2 -tworoman;2171 -twostroke;01BB -twosuperior;00B2 -twothai;0E52 -twothirds;2154 -u;0075 -uacute;00FA -ubar;0289 -ubengali;0989 -ubopomofo;3128 -ubreve;016D -ucaron;01D4 -ucircle;24E4 -ucircumflex;00FB -ucircumflexbelow;1E77 -ucyrillic;0443 -udattadeva;0951 -udblacute;0171 -udblgrave;0215 -udeva;0909 -udieresis;00FC -udieresisacute;01D8 -udieresisbelow;1E73 -udieresiscaron;01DA -udieresiscyrillic;04F1 -udieresisgrave;01DC -udieresismacron;01D6 -udotbelow;1EE5 -ugrave;00F9 -ugujarati;0A89 -ugurmukhi;0A09 -uhiragana;3046 -uhookabove;1EE7 -uhorn;01B0 -uhornacute;1EE9 -uhorndotbelow;1EF1 -uhorngrave;1EEB -uhornhookabove;1EED -uhorntilde;1EEF -uhungarumlaut;0171 -uhungarumlautcyrillic;04F3 -uinvertedbreve;0217 -ukatakana;30A6 -ukatakanahalfwidth;FF73 -ukcyrillic;0479 -ukorean;315C -umacron;016B -umacroncyrillic;04EF -umacrondieresis;1E7B -umatragurmukhi;0A41 -umonospace;FF55 -underscore;005F -underscoredbl;2017 -underscoremonospace;FF3F -underscorevertical;FE33 -underscorewavy;FE4F -union;222A -universal;2200 -uogonek;0173 -uparen;24B0 -upblock;2580 -upperdothebrew;05C4 -upsilon;03C5 -upsilondieresis;03CB -upsilondieresistonos;03B0 -upsilonlatin;028A -upsilontonos;03CD -uptackbelowcmb;031D -uptackmod;02D4 -uragurmukhi;0A73 -uring;016F -ushortcyrillic;045E -usmallhiragana;3045 -usmallkatakana;30A5 -usmallkatakanahalfwidth;FF69 -ustraightcyrillic;04AF -ustraightstrokecyrillic;04B1 -utilde;0169 -utildeacute;1E79 -utildebelow;1E75 -uubengali;098A -uudeva;090A -uugujarati;0A8A -uugurmukhi;0A0A -uumatragurmukhi;0A42 -uuvowelsignbengali;09C2 -uuvowelsigndeva;0942 -uuvowelsigngujarati;0AC2 -uvowelsignbengali;09C1 -uvowelsigndeva;0941 -uvowelsigngujarati;0AC1 -v;0076 -vadeva;0935 -vagujarati;0AB5 -vagurmukhi;0A35 -vakatakana;30F7 -vav;05D5 -vavdagesh;FB35 -vavdagesh65;FB35 -vavdageshhebrew;FB35 -vavhebrew;05D5 -vavholam;FB4B -vavholamhebrew;FB4B -vavvavhebrew;05F0 -vavyodhebrew;05F1 -vcircle;24E5 -vdotbelow;1E7F -vecyrillic;0432 -veharabic;06A4 -vehfinalarabic;FB6B -vehinitialarabic;FB6C -vehmedialarabic;FB6D -vekatakana;30F9 -venus;2640 -verticalbar;007C -verticallineabovecmb;030D -verticallinebelowcmb;0329 -verticallinelowmod;02CC -verticallinemod;02C8 -vewarmenian;057E -vhook;028B -vikatakana;30F8 -viramabengali;09CD -viramadeva;094D -viramagujarati;0ACD -visargabengali;0983 -visargadeva;0903 -visargagujarati;0A83 -vmonospace;FF56 -voarmenian;0578 -voicediterationhiragana;309E -voicediterationkatakana;30FE -voicedmarkkana;309B -voicedmarkkanahalfwidth;FF9E -vokatakana;30FA -vparen;24B1 -vtilde;1E7D -vturned;028C -vuhiragana;3094 -vukatakana;30F4 -w;0077 -wacute;1E83 -waekorean;3159 -wahiragana;308F -wakatakana;30EF -wakatakanahalfwidth;FF9C -wakorean;3158 -wasmallhiragana;308E -wasmallkatakana;30EE -wattosquare;3357 -wavedash;301C -wavyunderscorevertical;FE34 -wawarabic;0648 -wawfinalarabic;FEEE -wawhamzaabovearabic;0624 -wawhamzaabovefinalarabic;FE86 -wbsquare;33DD -wcircle;24E6 -wcircumflex;0175 -wdieresis;1E85 -wdotaccent;1E87 -wdotbelow;1E89 -wehiragana;3091 -weierstrass;2118 -wekatakana;30F1 -wekorean;315E -weokorean;315D -wgrave;1E81 -whitebullet;25E6 -whitecircle;25CB -whitecircleinverse;25D9 -whitecornerbracketleft;300E -whitecornerbracketleftvertical;FE43 -whitecornerbracketright;300F -whitecornerbracketrightvertical;FE44 -whitediamond;25C7 -whitediamondcontainingblacksmalldiamond;25C8 -whitedownpointingsmalltriangle;25BF -whitedownpointingtriangle;25BD -whiteleftpointingsmalltriangle;25C3 -whiteleftpointingtriangle;25C1 -whitelenticularbracketleft;3016 -whitelenticularbracketright;3017 -whiterightpointingsmalltriangle;25B9 -whiterightpointingtriangle;25B7 -whitesmallsquare;25AB -whitesmilingface;263A -whitesquare;25A1 -whitestar;2606 -whitetelephone;260F -whitetortoiseshellbracketleft;3018 -whitetortoiseshellbracketright;3019 -whiteuppointingsmalltriangle;25B5 -whiteuppointingtriangle;25B3 -wihiragana;3090 -wikatakana;30F0 -wikorean;315F -wmonospace;FF57 -wohiragana;3092 -wokatakana;30F2 -wokatakanahalfwidth;FF66 -won;20A9 -wonmonospace;FFE6 -wowaenthai;0E27 -wparen;24B2 -wring;1E98 -wsuperior;02B7 -wturned;028D -wynn;01BF -x;0078 -xabovecmb;033D -xbopomofo;3112 -xcircle;24E7 -xdieresis;1E8D -xdotaccent;1E8B -xeharmenian;056D -xi;03BE -xmonospace;FF58 -xparen;24B3 -xsuperior;02E3 -y;0079 -yaadosquare;334E -yabengali;09AF -yacute;00FD -yadeva;092F -yaekorean;3152 -yagujarati;0AAF -yagurmukhi;0A2F -yahiragana;3084 -yakatakana;30E4 -yakatakanahalfwidth;FF94 -yakorean;3151 -yamakkanthai;0E4E -yasmallhiragana;3083 -yasmallkatakana;30E3 -yasmallkatakanahalfwidth;FF6C -yatcyrillic;0463 -ycircle;24E8 -ycircumflex;0177 -ydieresis;00FF -ydotaccent;1E8F -ydotbelow;1EF5 -yeharabic;064A -yehbarreearabic;06D2 -yehbarreefinalarabic;FBAF -yehfinalarabic;FEF2 -yehhamzaabovearabic;0626 -yehhamzaabovefinalarabic;FE8A -yehhamzaaboveinitialarabic;FE8B -yehhamzaabovemedialarabic;FE8C -yehinitialarabic;FEF3 -yehmedialarabic;FEF4 -yehmeeminitialarabic;FCDD -yehmeemisolatedarabic;FC58 -yehnoonfinalarabic;FC94 -yehthreedotsbelowarabic;06D1 -yekorean;3156 -yen;00A5 -yenmonospace;FFE5 -yeokorean;3155 -yeorinhieuhkorean;3186 -yerahbenyomohebrew;05AA -yerahbenyomolefthebrew;05AA -yericyrillic;044B -yerudieresiscyrillic;04F9 -yesieungkorean;3181 -yesieungpansioskorean;3183 -yesieungsioskorean;3182 -yetivhebrew;059A -ygrave;1EF3 -yhook;01B4 -yhookabove;1EF7 -yiarmenian;0575 -yicyrillic;0457 -yikorean;3162 -yinyang;262F -yiwnarmenian;0582 -ymonospace;FF59 -yod;05D9 -yoddagesh;FB39 -yoddageshhebrew;FB39 -yodhebrew;05D9 -yodyodhebrew;05F2 -yodyodpatahhebrew;FB1F -yohiragana;3088 -yoikorean;3189 -yokatakana;30E8 -yokatakanahalfwidth;FF96 -yokorean;315B -yosmallhiragana;3087 -yosmallkatakana;30E7 -yosmallkatakanahalfwidth;FF6E -yotgreek;03F3 -yoyaekorean;3188 -yoyakorean;3187 -yoyakthai;0E22 -yoyingthai;0E0D -yparen;24B4 -ypogegrammeni;037A -ypogegrammenigreekcmb;0345 -yr;01A6 -yring;1E99 -ysuperior;02B8 -ytilde;1EF9 -yturned;028E -yuhiragana;3086 -yuikorean;318C -yukatakana;30E6 -yukatakanahalfwidth;FF95 -yukorean;3160 -yusbigcyrillic;046B -yusbigiotifiedcyrillic;046D -yuslittlecyrillic;0467 -yuslittleiotifiedcyrillic;0469 -yusmallhiragana;3085 -yusmallkatakana;30E5 -yusmallkatakanahalfwidth;FF6D -yuyekorean;318B -yuyeokorean;318A -yyabengali;09DF -yyadeva;095F -z;007A -zaarmenian;0566 -zacute;017A -zadeva;095B -zagurmukhi;0A5B -zaharabic;0638 -zahfinalarabic;FEC6 -zahinitialarabic;FEC7 -zahiragana;3056 -zahmedialarabic;FEC8 -zainarabic;0632 -zainfinalarabic;FEB0 -zakatakana;30B6 -zaqefgadolhebrew;0595 -zaqefqatanhebrew;0594 -zarqahebrew;0598 -zayin;05D6 -zayindagesh;FB36 -zayindageshhebrew;FB36 -zayinhebrew;05D6 -zbopomofo;3117 -zcaron;017E -zcircle;24E9 -zcircumflex;1E91 -zcurl;0291 -zdot;017C -zdotaccent;017C -zdotbelow;1E93 -zecyrillic;0437 -zedescendercyrillic;0499 -zedieresiscyrillic;04DF -zehiragana;305C -zekatakana;30BC -zero;0030 -zeroarabic;0660 -zerobengali;09E6 -zerodeva;0966 -zerogujarati;0AE6 -zerogurmukhi;0A66 -zerohackarabic;0660 -zeroinferior;2080 -zeromonospace;FF10 -zerooldstyle;F730 -zeropersian;06F0 -zerosuperior;2070 -zerothai;0E50 -zerowidthjoiner;FEFF -zerowidthnonjoiner;200C -zerowidthspace;200B -zeta;03B6 -zhbopomofo;3113 -zhearmenian;056A -zhebrevecyrillic;04C2 -zhecyrillic;0436 -zhedescendercyrillic;0497 -zhedieresiscyrillic;04DD -zihiragana;3058 -zikatakana;30B8 -zinorhebrew;05AE -zlinebelow;1E95 -zmonospace;FF5A -zohiragana;305E -zokatakana;30BE -zparen;24B5 -zretroflexhook;0290 -zstroke;01B6 -zuhiragana;305A -zukatakana;30BA -""" - - -t1_bias = 0 -glyph_list = [] - - -def adobe_glyph_names(): - """return the list of glyph names from the adobe list""" - - lines = string.split( adobe_glyph_list, '\n' ) - glyphs = [] - - for line in lines: - if line: - fields = string.split( line, ';' ) -# print fields[1] + ' - ' + fields[0] - glyphs.append( fields[0] ) - - return glyphs - - -def adobe_glyph_values(): - """return the list of glyph names and their unicode values""" - - lines = string.split( adobe_glyph_list, '\n' ) - glyphs = [] - values = [] - - for line in lines: - if line: - fields = string.split( line, ';' ) -# print fields[1] + ' - ' + fields[0] - subfields = string.split( fields[1], ' ' ) - if len( subfields ) == 1: - glyphs.append( fields[0] ) - values.append( fields[1] ) - - return glyphs, values - - -def filter_glyph_names( alist, filter ): - """filter 'alist' by taking _out_ all glyph names that are in 'filter'""" - - count = 0 - extras = [] - - for name in alist: - try: - filtered_index = filter.index( name ) - except: - extras.append( name ) - - return extras - - -def dump_mac_indices( file, all_glyphs ): - write = file.write - - write( " static const unsigned short mac_standard_names[" + \ - repr( len( mac_standard_names ) + 1 ) + "] =\n" ) - write( " {\n" ) - - for name in mac_standard_names: - write( " " + repr( all_glyphs.index( name ) ) + ",\n" ) - - write( " 0\n" ) - write( " };\n" ) - write( "\n" ) - write( "\n" ) - - -def dump_glyph_list( file, base_list, adobe_list ): - write = file.write - - name_list = [] - - write( " static const char* const ps_glyph_names[] =\n" ) - write( " {\n" ) - - for name in base_list: - write( ' "' + name + '",\n' ) - name_list.append( name ) - - write( "\n" ) - write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) - write( "\n" ) - - for name in adobe_list: - write( ' "' + name + '",\n' ) - name_list.append( name ) - - write( "\n" ) - write( "#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */\n" ) - write( "\n" ) - write( " NULL\n" ) - write( " };\n" ) - write( "\n" ) - write( "\n" ) - - return name_list - - -def dump_unicode_values( file, sid_list, adobe_list ): - """build the glyph names to unicode values table""" - - write = file.write - - agl_names, agl_unicodes = adobe_glyph_values() - - write( "\n" ) - write( " static const unsigned short ps_names_to_unicode[" + \ - repr( len( sid_list ) + len( adobe_list ) + 1 ) + "] =\n" ) - write( " {\n" ) - - for name in sid_list: - try: - index = agl_names.index( name ) - write( " 0x" + agl_unicodes[index] + "U,\n" ) - except: - write( " 0,\n" ) - - write( "\n" ) - write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) - write( "\n" ) - - for name in adobe_list: - try: - index = agl_names.index( name ) - write( " 0x" + agl_unicodes[index] + "U,\n" ) - except: - write( " 0,\n" ) - - write( "\n" ) - write( "#endif /* FT_CONFIG_OPTION_ADOBE_GLYPH_LIST */\n" ) - write( " 0\n" ) - write( " };\n" ) - write( "\n" ) - write( "\n" ) - write( "\n" ) - - -def dump_encoding( file, encoding_name, encoding_list ): - """dumps a given encoding""" - - write = file.write - - write( " static const unsigned short " + encoding_name + "[" + \ - repr( len( encoding_list ) + 1 ) + "] =\n" ) - write( " {\n" ) - - for value in encoding_list: - write( " " + repr( value ) + ",\n" ) - write( " 0\n" ) - write( " };\n" ) - write( "\n" ) - write( "\n" ) - - -def main(): - """main program body""" - - if len( sys.argv ) != 2: - print __doc__ % sys.argv[0] - sys.exit( 1 ) - - file = open( sys.argv[1], "w\n" ) - write = file.write - - count_sid = len( sid_standard_names ) - - # 'mac_extras' contains the list of glyph names in the Macintosh standard - # encoding which are not in either the Adobe Glyph List or the SID - # Standard Names. - # - mac_extras = filter_glyph_names( mac_standard_names, adobe_glyph_names() ) - mac_extras = filter_glyph_names( mac_extras, sid_standard_names ) - - # 'base_list' contains the first names of our final glyph names table. - # It consists of the 'mac_extras' glyph names, followed by the SID - # Standard names. - # - mac_extras_count = len( mac_extras ) - t1_bias = mac_extras_count - base_list = mac_extras + sid_standard_names - - # 'adobe_list' contains the glyph names that are in the AGL, but not in - # the base_list; they will be placed after base_list glyph names in - # our final table. - # - adobe_list = filter_glyph_names( adobe_glyph_names(), base_list ) - adobe_count = len( adobe_list ) - - write( "/***************************************************************************/\n" ) - write( "/* */\n" ) - - write( "/* %-71s*/\n" % sys.argv[1] ) - - write( "/* */\n" ) - write( "/* PostScript glyph names (specification only). */\n" ) - write( "/* */\n" ) - write( "/* Copyright 2000-2001, 2003 by */\n" ) - write( "/* David Turner, Robert Wilhelm, and Werner Lemberg. */\n" ) - write( "/* */\n" ) - write( "/* This file is part of the FreeType project, and may only be used, */\n" ) - write( "/* modified, and distributed under the terms of the FreeType project */\n" ) - write( "/* license, LICENSE.TXT. By continuing to use, modify, or distribute */\n" ) - write( "/* this file you indicate that you have read the license and */\n" ) - write( "/* understand and accept it fully. */\n" ) - write( "/* */\n" ) - write( "/***************************************************************************/\n" ) - write( "\n" ) - write( "\n" ) - write( " /* this file has been generated automatically -- do not edit! */\n" ) - write( "\n" ) - write( "\n" ) - - # dump final glyph list (mac extras + sid standard names + AGL glyph names) - # - name_list = dump_glyph_list( file, base_list, adobe_list ) - - # dump t1_standard_list - write( " static const char* const * const sid_standard_names = " \ - + "ps_glyph_names + " + repr( t1_bias ) + ";\n" ) - write( "\n" ) - write( "\n" ) - - write( "#define NUM_SID_GLYPHS " + repr( len( sid_standard_names ) ) + "\n" ) - write( "\n" ) - write( "#ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST\n" ) - write( "#define NUM_ADOBE_GLYPHS " + \ - repr( len( base_list ) + len( adobe_list ) - t1_bias ) + "\n" ) - write( "#else\n" ) - write( "#define NUM_ADOBE_GLYPHS " + \ - repr( len( base_list ) - t1_bias ) + "\n" ) - write( "#endif\n" ) - write( "\n" ) - write( "\n" ) - - # dump mac indices table - dump_mac_indices( file, name_list ) - - # dump unicode values table - dump_unicode_values( file, sid_standard_names, adobe_list ) - - dump_encoding( file, "t1_standard_encoding", t1_standard_encoding ) - dump_encoding( file, "t1_expert_encoding", t1_expert_encoding ) - - write( "/* END */\n" ) - - -# Now run the main routine -# -main() - - -# END diff --git a/nx-X11/extras/freetype2/src/tools/test_bbox.c b/nx-X11/extras/freetype2/src/tools/test_bbox.c deleted file mode 100644 index e085c5b3d..000000000 --- a/nx-X11/extras/freetype2/src/tools/test_bbox.c +++ /dev/null @@ -1,160 +0,0 @@ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_BBOX_H - - -#include <time.h> /* for clock() */ - -/* SunOS 4.1.* does not define CLOCKS_PER_SEC, so include <sys/param.h> */ -/* to get the HZ macro which is the equivalent. */ -#if defined(__sun__) && !defined(SVR4) && !defined(__SVR4) -#include <sys/param.h> -#define CLOCKS_PER_SEC HZ -#endif - - static long - get_time( void ) - { - return clock() * 10000L / CLOCKS_PER_SEC; - } - - - - - /* test bbox computations */ - -#define XSCALE 65536 -#define XX(x) ((FT_Pos)(x*XSCALE)) -#define XVEC(x,y) { XX(x), XX(y) } -#define XVAL(x) ((x)/(1.0*XSCALE)) - - /* dummy outline #1 */ - static FT_Vector dummy_vec_1[4] = - { -#if 1 - XVEC( 408.9111, 535.3164 ), - XVEC( 455.8887, 634.396 ), - XVEC( -37.8765, 786.2207 ), - XVEC( 164.6074, 535.3164 ) -#else - { (FT_Int32)0x0198E93DL , (FT_Int32)0x021750FFL }, /* 408.9111, 535.3164 */ - { (FT_Int32)0x01C7E312L , (FT_Int32)0x027A6560L }, /* 455.8887, 634.3960 */ - { (FT_Int32)0xFFDA1F9EL , (FT_Int32)0x0312387FL }, /* -37.8765, 786.2207 */ - { (FT_Int32)0x00A49B7EL , (FT_Int32)0x021750FFL } /* 164.6074, 535.3164 */ -#endif - }; - - static char dummy_tag_1[4] = - { - FT_CURVE_TAG_ON, - FT_CURVE_TAG_CUBIC, - FT_CURVE_TAG_CUBIC, - FT_CURVE_TAG_ON - }; - - static short dummy_contour_1[1] = - { - 3 - }; - - static FT_Outline dummy_outline_1 = - { - 1, - 4, - dummy_vec_1, - dummy_tag_1, - dummy_contour_1, - 0 - }; - - - /* dummy outline #2 */ - static FT_Vector dummy_vec_2[4] = - { - XVEC( 100.0, 100.0 ), - XVEC( 100.0, 200.0 ), - XVEC( 200.0, 200.0 ), - XVEC( 200.0, 133.0 ) - }; - - static FT_Outline dummy_outline_2 = - { - 1, - 4, - dummy_vec_2, - dummy_tag_1, - dummy_contour_1, - 0 - }; - - - static void - dump_outline( FT_Outline* outline ) - { - FT_BBox bbox; - - /* compute and display cbox */ - FT_Outline_Get_CBox( outline, &bbox ); - printf( "cbox = [%.2f %.2f %.2f %.2f]\n", - XVAL( bbox.xMin ), - XVAL( bbox.yMin ), - XVAL( bbox.xMax ), - XVAL( bbox.yMax ) ); - - /* compute and display bbox */ - FT_Outline_Get_BBox( outline, &bbox ); - printf( "bbox = [%.2f %.2f %.2f %.2f]\n", - XVAL( bbox.xMin ), - XVAL( bbox.yMin ), - XVAL( bbox.xMax ), - XVAL( bbox.yMax ) ); - } - - - - static void - profile_outline( FT_Outline* outline, - long repeat ) - { - FT_BBox bbox; - long count; - long time0; - - time0 = get_time(); - for ( count = repeat; count > 0; count-- ) - FT_Outline_Get_CBox( outline, &bbox ); - - time0 = get_time() - time0; - printf( "time = %5.2f cbox = [%.2f %.2f %.2f %.2f]\n", - ((double)time0/10000.0), - XVAL( bbox.xMin ), - XVAL( bbox.yMin ), - XVAL( bbox.xMax ), - XVAL( bbox.yMax ) ); - - - time0 = get_time(); - for ( count = repeat; count > 0; count-- ) - FT_Outline_Get_BBox( outline, &bbox ); - - time0 = get_time() - time0; - printf( "time = %5.2f bbox = [%.2f %.2f %.2f %.2f]\n", - ((double)time0/10000.0), - XVAL( bbox.xMin ), - XVAL( bbox.yMin ), - XVAL( bbox.xMax ), - XVAL( bbox.yMax ) ); - } - -#define REPEAT 100000L - - int main( int argc, char** argv ) - { - printf( "outline #1\n" ); - profile_outline( &dummy_outline_1, REPEAT ); - - printf( "outline #2\n" ); - profile_outline( &dummy_outline_2, REPEAT ); - return 0; - } - diff --git a/nx-X11/extras/freetype2/src/tools/test_trig.c b/nx-X11/extras/freetype2/src/tools/test_trig.c deleted file mode 100644 index 8c8a544aa..000000000 --- a/nx-X11/extras/freetype2/src/tools/test_trig.c +++ /dev/null @@ -1,236 +0,0 @@ -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TRIGONOMETRY_H - -#include <math.h> -#include <stdio.h> - -#define PI 3.14159265358979323846 -#define SPI (PI/FT_ANGLE_PI) - -/* the precision in 16.16 fixed float points of the checks. Expect */ -/* between 2 and 5 noise LSB bits during operations, due to */ -/* rounding errors.. */ -#define THRESHOLD 64 - - static error = 0; - - static void - test_cos( void ) - { - FT_Fixed f1, f2; - double d1, d2; - int i; - - for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) - { - f1 = FT_Cos(i); - d1 = f1/65536.0; - d2 = cos( i*SPI ); - f2 = (FT_Fixed)(d2*65536.0); - - if ( abs( f2-f1 ) > THRESHOLD ) - { - error = 1; - printf( "FT_Cos[%3d] = %.7f cos[%3d] = %.7f\n", - (i >> 16), f1/65536.0, (i >> 16), d2 ); - } - } - } - - - - static void - test_sin( void ) - { - FT_Fixed f1, f2; - double d1, d2; - int i; - - for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) - { - f1 = FT_Sin(i); - d1 = f1/65536.0; - d2 = sin( i*SPI ); - f2 = (FT_Fixed)(d2*65536.0); - - if ( abs( f2-f1 ) > THRESHOLD ) - { - error = 1; - printf( "FT_Sin[%3d] = %.7f sin[%3d] = %.7f\n", - (i >> 16), f1/65536.0, (i >> 16), d2 ); - } - } - } - - - static void - test_tan( void ) - { - FT_Fixed f1, f2; - double d1, d2; - int i; - - for ( i = 0; i < FT_ANGLE_PI2-0x2000000; i += 0x10000 ) - { - f1 = FT_Tan(i); - d1 = f1/65536.0; - d2 = tan( i*SPI ); - f2 = (FT_Fixed)(d2*65536.0); - - if ( abs( f2-f1 ) > THRESHOLD ) - { - error = 1; - printf( "FT_Tan[%3d] = %.7f tan[%3d] = %.7f\n", - (i >> 16), f1/65536.0, (i >> 16), d2 ); - } - } - } - - - static void - test_atan2( void ) - { - FT_Fixed c2, s2; - double l, a, c1, s1; - int i, j; - - for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) - { - l = 5.0; - a = i*SPI; - - c1 = l * cos(a); - s1 = l * sin(a); - - c2 = (FT_Fixed)(c1*65536.0); - s2 = (FT_Fixed)(s1*65536.0); - - j = FT_Atan2( c2, s2 ); - if ( j < 0 ) - j += FT_ANGLE_2PI; - - if ( abs( i - j ) > 1 ) - { - printf( "FT_Atan2( %.7f, %.7f ) = %.5f, atan = %.5f\n", - c2/65536.0, s2/65536.0, j/65536.0, i/65536.0 ); - } - } - } - - static void - test_unit( void ) - { - FT_Vector v; - double a, c1, s1; - FT_Fixed c2, s2; - int i; - - for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) - { - FT_Vector_Unit( &v, i ); - a = ( i*SPI ); - c1 = cos(a); - s1 = sin(a); - c2 = (FT_Fixed)(c1*65536.0); - s2 = (FT_Fixed)(s1*65536.0); - - if ( abs( v.x-c2 ) > THRESHOLD || - abs( v.y-s2 ) > THRESHOLD ) - { - error = 1; - printf( "FT_Vector_Unit[%3d] = ( %.7f, %.7f ) vec = ( %.7f, %.7f )\n", - (i >> 16), - v.x/65536.0, v.y/65536.0, - c1, s1 ); - } - } - } - - - static void - test_length( void ) - { - FT_Vector v; - FT_Fixed l, l2; - int i; - - for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) - { - l = (FT_Fixed)(500.0*65536.0); - v.x = (FT_Fixed)( l * cos( i*SPI ) ); - v.y = (FT_Fixed)( l * sin( i*SPI ) ); - l2 = FT_Vector_Length( &v ); - - if ( abs( l2-l ) > THRESHOLD ) - { - error = 1; - printf( "FT_Length( %.7f, %.7f ) = %.5f, length = %.5f\n", - v.x/65536.0, v.y/65536.0, l2/65536.0, l/65536.0 ); - } - } - } - - - static void - test_rotate( void ) - { - FT_Fixed c2, s2, c4, s4; - FT_Vector v; - double l, ra, a, c1, s1, cra, sra, c3, s3; - int i, j, rotate; - - for ( rotate = 0; rotate < FT_ANGLE_2PI; rotate += 0x10000 ) - { - ra = rotate*SPI; - cra = cos( ra ); - sra = sin( ra ); - - for ( i = 0; i < FT_ANGLE_2PI; i += 0x10000 ) - { - l = 500.0; - a = i*SPI; - - c1 = l * cos(a); - s1 = l * sin(a); - - v.x = c2 = (FT_Fixed)(c1*65536.0); - v.y = s2 = (FT_Fixed)(s1*65536.0); - - FT_Vector_Rotate( &v, rotate ); - - c3 = c1 * cra - s1 * sra; - s3 = c1 * sra + s1 * cra; - - c4 = (FT_Fixed)(c3*65536.0); - s4 = (FT_Fixed)(s3*65536.0); - - if ( abs( c4 - v.x ) > THRESHOLD || - abs( s4 - v.y ) > THRESHOLD ) - { - error = 1; - printf( "FT_Rotate( (%.7f,%.7f), %.5f ) = ( %.7f, %.7f ), rot = ( %.7f, %.7f )\n", - c1, s1, ra, - c2/65536.0, s2/65536.0, - c4/65536.0, s4/65536.0 ); - } - } - } - } - - - int main( void ) - { - test_cos(); - test_sin(); - test_tan(); - test_atan2(); - test_unit(); - test_length(); - test_rotate(); - - if (!error) - printf( "trigonometry test ok !\n" ); - - return !error; - } diff --git a/nx-X11/extras/freetype2/src/truetype/Jamfile b/nx-X11/extras/freetype2/src/truetype/Jamfile deleted file mode 100644 index bb7e05e6e..000000000 --- a/nx-X11/extras/freetype2/src/truetype/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/truetype Jamfile (c) 2001, 2004 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) truetype ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = ttdriver ttobjs ttpload ttgload ttinterp ttgxvar ; - } - else - { - _sources = truetype ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/truetype Jamfile diff --git a/nx-X11/extras/freetype2/src/truetype/descrip.mms b/nx-X11/extras/freetype2/src/truetype/descrip.mms deleted file mode 100644 index e30ee1b3f..000000000 --- a/nx-X11/extras/freetype2/src/truetype/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 TrueType driver compilation rules for VMS -# - - -# Copyright 2001, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.truetype]) - -OBJS=truetype.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/truetype/module.mk b/nx-X11/extras/freetype2/src/truetype/module.mk deleted file mode 100644 index bb042beae..000000000 --- a/nx-X11/extras/freetype2/src/truetype/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 TrueType module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_truetype_driver - -add_truetype_driver: - $(OPEN_DRIVER)tt_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)truetype $(ECHO_DRIVER_DESC)Windows/Mac font files with extension *.ttf or *.ttc$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/truetype/rules.mk b/nx-X11/extras/freetype2/src/truetype/rules.mk deleted file mode 100644 index 74684260e..000000000 --- a/nx-X11/extras/freetype2/src/truetype/rules.mk +++ /dev/null @@ -1,72 +0,0 @@ -# -# FreeType 2 TrueType driver configuration rules -# - - -# Copyright 1996-2000, 2001, 2003, 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# TrueType driver directory -# -TT_DIR := $(SRC_DIR)/truetype - - -# compilation flags for the driver -# -TT_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(TT_DIR)) - - -# TrueType driver sources (i.e., C files) -# -TT_DRV_SRC := $(TT_DIR)/ttobjs.c \ - $(TT_DIR)/ttpload.c \ - $(TT_DIR)/ttgload.c \ - $(TT_DIR)/ttinterp.c \ - $(TT_DIR)/ttgxvar.c \ - $(TT_DIR)/ttdriver.c - -# TrueType driver headers -# -TT_DRV_H := $(TT_DRV_SRC:%.c=%.h) \ - $(TT_DIR)/tterrors.h - - -# TrueType driver object(s) -# -# TT_DRV_OBJ_M is used during `multi' builds -# TT_DRV_OBJ_S is used during `single' builds -# -TT_DRV_OBJ_M := $(TT_DRV_SRC:$(TT_DIR)/%.c=$(OBJ_DIR)/%.$O) -TT_DRV_OBJ_S := $(OBJ_DIR)/truetype.$O - -# TrueType driver source file for single build -# -TT_DRV_SRC_S := $(TT_DIR)/truetype.c - - -# TrueType driver - single object -# -$(TT_DRV_OBJ_S): $(TT_DRV_SRC_S) $(TT_DRV_SRC) $(FREETYPE_H) $(TT_DRV_H) - $(TT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(TT_DRV_SRC_S)) - - -# driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(TT_DIR)/%.c $(FREETYPE_H) $(TT_DRV_H) - $(TT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(TT_DRV_OBJ_S) -DRV_OBJS_M += $(TT_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/truetype/truetype.c b/nx-X11/extras/freetype2/src/truetype/truetype.c deleted file mode 100644 index 4abb01ec5..000000000 --- a/nx-X11/extras/freetype2/src/truetype/truetype.c +++ /dev/null @@ -1,36 +0,0 @@ -/***************************************************************************/ -/* */ -/* truetype.c */ -/* */ -/* FreeType TrueType driver component (body only). */ -/* */ -/* Copyright 1996-2001, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "ttdriver.c" /* driver interface */ -#include "ttpload.c" /* tables loader */ -#include "ttgload.c" /* glyph loader */ -#include "ttobjs.c" /* object manager */ - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER -#include "ttinterp.c" -#endif - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include "ttgxvar.c" /* gx distortable font */ -#endif - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttdriver.c b/nx-X11/extras/freetype2/src/truetype/ttdriver.c deleted file mode 100644 index 25948839d..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttdriver.c +++ /dev/null @@ -1,465 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttdriver.c */ -/* */ -/* TrueType font driver implementation (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_TRUETYPE_IDS_H -#include FT_SERVICE_XFREE86_NAME_H - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include FT_MULTIPLE_MASTERS_H -#include FT_SERVICE_MULTIPLE_MASTERS_H -#endif - -#include "ttdriver.h" -#include "ttgload.h" - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include "ttgxvar.h" -#endif - -#include "tterrors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttdriver - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** F A C E S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - -#undef PAIR_TAG -#define PAIR_TAG( left, right ) ( ( (FT_ULong)left << 16 ) | \ - (FT_ULong)right ) - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Get_Kerning */ - /* */ - /* <Description> */ - /* A driver method used to return the kerning vector between two */ - /* glyphs of the same face. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* left_glyph :: The index of the left glyph in the kern pair. */ - /* */ - /* right_glyph :: The index of the right glyph in the kern pair. */ - /* */ - /* <Output> */ - /* kerning :: The kerning vector. This is in font units for */ - /* scalable formats, and in pixels for fixed-sizes */ - /* formats. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only horizontal layouts (left-to-right & right-to-left) are */ - /* supported by this function. Other layouts, or more sophisticated */ - /* kernings, are out of scope of this method (the basic driver */ - /* interface is meant to be simple). */ - /* */ - /* They can be implemented by format-specific interfaces. */ - /* */ - static FT_Error - Get_Kerning( FT_Face ttface, /* TT_Face */ - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ) - { - TT_Face face = (TT_Face)ttface; - TT_Kern0_Pair pair; - - - if ( !face ) - return TT_Err_Invalid_Face_Handle; - - kerning->x = 0; - kerning->y = 0; - - if ( face->kern_pairs ) - { - /* there are some kerning pairs in this font file! */ - FT_ULong search_tag = PAIR_TAG( left_glyph, right_glyph ); - FT_Long left, right; - - - left = 0; - right = face->num_kern_pairs - 1; - - while ( left <= right ) - { - FT_Long middle = left + ( ( right - left ) >> 1 ); - FT_ULong cur_pair; - - - pair = face->kern_pairs + middle; - cur_pair = PAIR_TAG( pair->left, pair->right ); - - if ( cur_pair == search_tag ) - goto Found; - - if ( cur_pair < search_tag ) - left = middle + 1; - else - right = middle - 1; - } - } - - Exit: - return TT_Err_Ok; - - Found: - kerning->x = pair->value; - goto Exit; - } - - -#undef PAIR_TAG - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** S I Z E S ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Set_Char_Sizes */ - /* */ - /* <Description> */ - /* A driver method used to reset a size's character sizes (horizontal */ - /* and vertical) expressed in fractional points. */ - /* */ - /* <Input> */ - /* char_width :: The character width expressed in 26.6 */ - /* fractional points. */ - /* */ - /* char_height :: The character height expressed in 26.6 */ - /* fractional points. */ - /* */ - /* horz_resolution :: The horizontal resolution of the output device. */ - /* */ - /* vert_resolution :: The vertical resolution of the output device. */ - /* */ - /* <InOut> */ - /* size :: A handle to the target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - Set_Char_Sizes( FT_Size ttsize, /* TT_Size */ - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) - { - TT_Size size = (TT_Size)ttsize; - FT_Size_Metrics* metrics = &size->root.metrics; - FT_Size_Metrics* metrics2 = &size->metrics; - TT_Face face = (TT_Face)size->root.face; - FT_Long dim_x, dim_y; - - - *metrics2 = *metrics; - - /* This bit flag, when set, indicates that the pixel size must be */ - /* truncated to an integer. Nearly all TrueType fonts have this */ - /* bit set, as hinting won't work really well otherwise. */ - /* */ - if ( ( face->header.Flags & 8 ) != 0 ) - { - /* we need to use rounding in the following computations. Otherwise, - * the resulting hinted outlines will be very slightly distorted - */ - dim_x = ( ( char_width * horz_resolution + (36+32*72) ) / 72 ) & ~63; - dim_y = ( ( char_height * vert_resolution + (36+32*72) ) / 72 ) & ~63; - } - else - { - dim_x = ( ( char_width * horz_resolution + 36 ) / 72 ); - dim_y = ( ( char_height * vert_resolution + 36 ) / 72 ); - } - - /* we only modify "metrics2", not "metrics", so these changes have */ - /* no effect on the result of the auto-hinter when it is used */ - /* */ - metrics2->x_ppem = (FT_UShort)( dim_x >> 6 ); - metrics2->y_ppem = (FT_UShort)( dim_y >> 6 ); - metrics2->x_scale = FT_DivFix( dim_x, face->root.units_per_EM ); - metrics2->y_scale = FT_DivFix( dim_y, face->root.units_per_EM ); - - size->ttmetrics.valid = FALSE; -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - size->strike_index = 0xFFFFU; -#endif - - return tt_size_reset( size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Set_Pixel_Sizes */ - /* */ - /* <Description> */ - /* A driver method used to reset a size's character sizes (horizontal */ - /* and vertical) expressed in integer pixels. */ - /* */ - /* <InOut> */ - /* size :: A handle to the target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - Set_Pixel_Sizes( FT_Size ttsize, /* TT_Size */ - FT_UInt pixel_width, - FT_UInt pixel_height ) - { - TT_Size size = (TT_Size)ttsize; - - FT_UNUSED( pixel_width ); - FT_UNUSED( pixel_height ); - - - /* many things have been pre-computed by the base layer */ - - size->metrics = size->root.metrics; - size->ttmetrics.valid = FALSE; -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - size->strike_index = 0xFFFFU; -#endif - - return tt_size_reset( size ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Load_Glyph */ - /* */ - /* <Description> */ - /* A driver method used to load a glyph within a given glyph slot. */ - /* */ - /* <Input> */ - /* slot :: A handle to the target slot object where the glyph */ - /* will be loaded. */ - /* */ - /* size :: A handle to the source face size at which the glyph */ - /* must be scaled, loaded, etc. */ - /* */ - /* glyph_index :: The index of the glyph in the font file. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* FTLOAD_??? constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - Load_Glyph( FT_GlyphSlot ttslot, /* TT_GlyphSlot */ - FT_Size ttsize, /* TT_Size */ - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - TT_GlyphSlot slot = (TT_GlyphSlot)ttslot; - TT_Size size = (TT_Size)ttsize; - FT_Error error; - - - if ( !slot ) - return TT_Err_Invalid_Slot_Handle; - - /* check whether we want a scaled outline or bitmap */ - if ( !size ) - load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - - if ( load_flags & FT_LOAD_NO_SCALE ) - size = NULL; - - /* reset the size object if necessary */ - if ( size ) - { - /* these two object must have the same parent */ - if ( size->root.face != slot->face ) - return TT_Err_Invalid_Face_Handle; - - if ( !size->ttmetrics.valid ) - { - if ( FT_SET_ERROR( tt_size_reset( size ) ) ) - return error; - } - } - - /* now load the glyph outline if necessary */ - error = TT_Load_Glyph( size, slot, glyph_index, load_flags ); - - /* force drop-out mode to 2 - irrelevant now */ - /* slot->outline.dropout_mode = 2; */ - - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /**** ****/ - /**** ****/ - /**** D R I V E R I N T E R F A C E ****/ - /**** ****/ - /**** ****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - static const FT_Service_MultiMastersRec tt_service_gx_multi_masters = - { - (FT_Get_MM_Func) NULL, - (FT_Set_MM_Design_Func) NULL, - (FT_Set_MM_Blend_Func) TT_Set_MM_Blend, - (FT_Get_MM_Var_Func) TT_Get_MM_Var, - (FT_Set_Var_Design_Func)TT_Set_Var_Design - }; -#endif - - - static const FT_ServiceDescRec tt_services[] = - { - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_TRUETYPE }, -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - { FT_SERVICE_ID_MULTI_MASTERS, &tt_service_gx_multi_masters }, -#endif - { NULL, NULL } - }; - - - FT_CALLBACK_DEF( FT_Module_Interface ) - tt_get_interface( FT_Module driver, /* TT_Driver */ - const char* tt_interface ) - { - FT_Module_Interface result; - FT_Module sfntd; - SFNT_Service sfnt; - - - result = ft_service_list_lookup( tt_services, tt_interface ); - if ( result != NULL ) - return result; - - /* only return the default interface from the SFNT module */ - sfntd = FT_Get_Module( driver->library, "sfnt" ); - if ( sfntd ) - { - sfnt = (SFNT_Service)( sfntd->clazz->module_interface ); - if ( sfnt ) - return sfnt->get_interface( driver, tt_interface ); - } - - return 0; - } - - - /* The FT_DriverInterface structure is defined in ftdriver.h. */ - - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec tt_driver_class = - { - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_SCALABLE | -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - FT_MODULE_DRIVER_HAS_HINTER, -#else - 0, -#endif - - sizeof ( TT_DriverRec ), - - "truetype", /* driver name */ - 0x10000L, /* driver version == 1.0 */ - 0x20000L, /* driver requires FreeType 2.0 or above */ - - (void*)0, /* driver specific interface */ - - tt_driver_init, - tt_driver_done, - tt_get_interface, - }, - - sizeof ( TT_FaceRec ), - sizeof ( TT_SizeRec ), - sizeof ( FT_GlyphSlotRec ), - - tt_face_init, - tt_face_done, - tt_size_init, - tt_size_done, - 0, /* FT_Slot_InitFunc */ - 0, /* FT_Slot_DoneFunc */ - - Set_Char_Sizes, - Set_Pixel_Sizes, - Load_Glyph, - - Get_Kerning, - 0, /* FT_Face_AttachFunc */ - 0 /* FT_Face_GetAdvancesFunc */ - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttdriver.h b/nx-X11/extras/freetype2/src/truetype/ttdriver.h deleted file mode 100644 index f6f26e4b5..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttdriver.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttdriver.h */ -/* */ -/* High-level TrueType driver interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTDRIVER_H__ -#define __TTDRIVER_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Driver_ClassRec ) tt_driver_class; - - -FT_END_HEADER - -#endif /* __TTDRIVER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/tterrors.h b/nx-X11/extras/freetype2/src/truetype/tterrors.h deleted file mode 100644 index d317c70e0..000000000 --- a/nx-X11/extras/freetype2/src/truetype/tterrors.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* tterrors.h */ -/* */ -/* TrueType error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the TrueType error enumeration */ - /* constants. */ - /* */ - /*************************************************************************/ - -#ifndef __TTERRORS_H__ -#define __TTERRORS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX TT_Err_ -#define FT_ERR_BASE FT_Mod_Err_TrueType - -#include FT_ERRORS_H - -#endif /* __TTERRORS_H__ */ - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttgload.c b/nx-X11/extras/freetype2/src/truetype/ttgload.c deleted file mode 100644 index 9fc2d0380..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttgload.c +++ /dev/null @@ -1,2039 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttgload.c */ -/* */ -/* TrueType Glyph Loader (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_TRUETYPE_TAGS_H -#include FT_OUTLINE_H - -#include "ttgload.h" - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include "ttgxvar.h" -#endif - -#include "tterrors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttgload - - - /*************************************************************************/ - /* */ - /* Composite font flags. */ - /* */ -#define ARGS_ARE_WORDS 0x0001 -#define ARGS_ARE_XY_VALUES 0x0002 -#define ROUND_XY_TO_GRID 0x0004 -#define WE_HAVE_A_SCALE 0x0008 -/* reserved 0x0010 */ -#define MORE_COMPONENTS 0x0020 -#define WE_HAVE_AN_XY_SCALE 0x0040 -#define WE_HAVE_A_2X2 0x0080 -#define WE_HAVE_INSTR 0x0100 -#define USE_MY_METRICS 0x0200 -#define OVERLAP_COMPOUND 0x0400 -#define SCALED_COMPONENT_OFFSET 0x0800 -#define UNSCALED_COMPONENT_OFFSET 0x1000 - - -/* Maximum recursion depth we allow for composite glyphs. - * The TrueType spec doesn't say anything about recursion, - * so it isn't clear that recursion is allowed at all. But - * we'll be generous. - */ -#define TT_MAX_COMPOSITE_RECURSE 5 - - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Get_Metrics */ - /* */ - /* <Description> */ - /* Returns the horizontal or vertical metrics in font units for a */ - /* given glyph. The metrics are the left side bearing (resp. top */ - /* side bearing) and advance width (resp. advance height). */ - /* */ - /* <Input> */ - /* header :: A pointer to either the horizontal or vertical metrics */ - /* structure. */ - /* */ - /* idx :: The glyph index. */ - /* */ - /* <Output> */ - /* bearing :: The bearing, either left side or top side. */ - /* */ - /* advance :: The advance width resp. advance height. */ - /* */ - /* <Note> */ - /* This function will much probably move to another component in the */ - /* near future, but I haven't decided which yet. */ - /* */ - FT_LOCAL_DEF( void ) - TT_Get_Metrics( TT_HoriHeader* header, - FT_UInt idx, - FT_Short* bearing, - FT_UShort* advance ) - { - TT_LongMetrics longs_m; - FT_UShort k = header->number_Of_HMetrics; - - - if ( k == 0 ) - { - *bearing = *advance = 0; - return; - } - - if ( idx < (FT_UInt)k ) - { - longs_m = (TT_LongMetrics )header->long_metrics + idx; - *bearing = longs_m->bearing; - *advance = longs_m->advance; - } - else - { - *bearing = ((TT_ShortMetrics*)header->short_metrics)[idx - k]; - *advance = ((TT_LongMetrics )header->long_metrics)[k - 1].advance; - } - } - - - /*************************************************************************/ - /* */ - /* Returns the horizontal metrics in font units for a given glyph. If */ - /* `check' is true, take care of monospaced fonts by returning the */ - /* advance width maximum. */ - /* */ - static void - Get_HMetrics( TT_Face face, - FT_UInt idx, - FT_Bool check, - FT_Short* lsb, - FT_UShort* aw ) - { - TT_Get_Metrics( &face->horizontal, idx, lsb, aw ); - - if ( check && face->postscript.isFixedPitch ) - *aw = face->horizontal.advance_Width_Max; - } - - - /*************************************************************************/ - /* */ - /* Returns the advance width table for a given pixel size if it is found */ - /* in the font's `hdmx' table (if any). */ - /* */ - static FT_Byte* - Get_Advance_Widths( TT_Face face, - FT_UShort ppem ) - { - FT_UShort n; - - - for ( n = 0; n < face->hdmx.num_records; n++ ) - if ( face->hdmx.records[n].ppem == ppem ) - return face->hdmx.records[n].widths; - - return NULL; - } - - - /*************************************************************************/ - /* */ - /* Returns the vertical metrics in font units for a given glyph. */ - /* Greg Hitchcock from Microsoft told us that if there were no `vmtx' */ - /* table, typoAscender/Descender from the `OS/2' table would be used */ - /* instead, and if there were no `OS/2' table, use ascender/descender */ - /* from the `hhea' table. But that is not what Microsoft's rasterizer */ - /* apparently does: It uses the ppem value as the advance height, and */ - /* sets the top side bearing to be zero. */ - /* */ - /* The monospace `check' is probably not meaningful here, but we leave */ - /* it in for a consistent interface. */ - /* */ - static void - Get_VMetrics( TT_Face face, - FT_UInt idx, - FT_Bool check, - FT_Short* tsb, - FT_UShort* ah ) - { - FT_UNUSED( check ); - - if ( face->vertical_info ) - TT_Get_Metrics( (TT_HoriHeader *)&face->vertical, idx, tsb, ah ); - -#if 1 /* Emperically determined, at variance with what MS said */ - - else - { - *tsb = 0; - *ah = face->root.units_per_EM; - } - -#else /* This is what MS said to do. It isn't what they do, however. */ - - else if ( face->os2.version != 0xFFFFU ) - { - *tsb = face->os2.sTypoAscender; - *ah = face->os2.sTypoAscender - face->os2.sTypoDescender; - } - else - { - *tsb = face->horizontal.Ascender; - *ah = face->horizontal.Ascender - face->horizontal.Descender; - } - -#endif - - } - - -#define cur_to_org( n, zone ) \ - FT_ARRAY_COPY( (zone)->org, (zone)->cur, (n) ) - -#define org_to_cur( n, zone ) \ - FT_ARRAY_COPY( (zone)->cur, (zone)->org, (n) ) - - - /*************************************************************************/ - /* */ - /* Translates an array of coordinates. */ - /* */ - static void - translate_array( FT_UInt n, - FT_Vector* coords, - FT_Pos delta_x, - FT_Pos delta_y ) - { - FT_UInt k; - - - if ( delta_x ) - for ( k = 0; k < n; k++ ) - coords[k].x += delta_x; - - if ( delta_y ) - for ( k = 0; k < n; k++ ) - coords[k].y += delta_y; - } - - - static void - tt_prepare_zone( TT_GlyphZone zone, - FT_GlyphLoad load, - FT_UInt start_point, - FT_UInt start_contour ) - { - zone->n_points = (FT_UShort)( load->outline.n_points - start_point ); - zone->n_contours = (FT_Short) ( load->outline.n_contours - start_contour ); - zone->org = load->extra_points + start_point; - zone->cur = load->outline.points + start_point; - zone->tags = (FT_Byte*)load->outline.tags + start_point; - zone->contours = (FT_UShort*)load->outline.contours + start_contour; - } - - -#undef IS_HINTED -#define IS_HINTED( flags ) ( ( flags & FT_LOAD_NO_HINTING ) == 0 ) - - - /*************************************************************************/ - /* */ - /* The following functions are used by default with TrueType fonts. */ - /* However, they can be replaced by alternatives if we need to support */ - /* TrueType-compressed formats (like MicroType) in the future. */ - /* */ - /*************************************************************************/ - - FT_CALLBACK_DEF( FT_Error ) - TT_Access_Glyph_Frame( TT_Loader loader, - FT_UInt glyph_index, - FT_ULong offset, - FT_UInt byte_count ) - { - FT_Error error; - FT_Stream stream = loader->stream; - - /* for non-debug mode */ - FT_UNUSED( glyph_index ); - - - FT_TRACE5(( "Glyph %ld\n", glyph_index )); - - /* the following line sets the `error' variable through macros! */ - if ( FT_STREAM_SEEK( offset ) || FT_FRAME_ENTER( byte_count ) ) - return error; - - return TT_Err_Ok; - } - - - FT_CALLBACK_DEF( void ) - TT_Forget_Glyph_Frame( TT_Loader loader ) - { - FT_Stream stream = loader->stream; - - - FT_FRAME_EXIT(); - } - - - FT_CALLBACK_DEF( FT_Error ) - TT_Load_Glyph_Header( TT_Loader loader ) - { - FT_Stream stream = loader->stream; - FT_Int byte_len = loader->byte_len - 10; - - - if ( byte_len < 0 ) - return TT_Err_Invalid_Outline; - - loader->n_contours = FT_GET_SHORT(); - - loader->bbox.xMin = FT_GET_SHORT(); - loader->bbox.yMin = FT_GET_SHORT(); - loader->bbox.xMax = FT_GET_SHORT(); - loader->bbox.yMax = FT_GET_SHORT(); - - FT_TRACE5(( " # of contours: %d\n", loader->n_contours )); - FT_TRACE5(( " xMin: %4d xMax: %4d\n", loader->bbox.xMin, - loader->bbox.xMax )); - FT_TRACE5(( " yMin: %4d yMax: %4d\n", loader->bbox.yMin, - loader->bbox.yMax )); - loader->byte_len = byte_len; - - return TT_Err_Ok; - } - - - FT_CALLBACK_DEF( FT_Error ) - TT_Load_Simple_Glyph( TT_Loader load ) - { - FT_Error error; - FT_Stream stream = load->stream; - FT_GlyphLoader gloader = load->gloader; - FT_Int n_contours = load->n_contours; - FT_Outline* outline; - TT_Face face = (TT_Face)load->face; - TT_GlyphSlot slot = (TT_GlyphSlot)load->glyph; - FT_UShort n_ins; - FT_Int n, n_points; - FT_Int byte_len = load->byte_len; - - FT_Byte *flag, *flag_limit; - FT_Byte c, count; - FT_Vector *vec, *vec_limit; - FT_Pos x; - FT_Short *cont, *cont_limit; - - - /* reading the contours' endpoints & number of points */ - cont = gloader->current.outline.contours; - cont_limit = cont + n_contours; - - /* check space for contours array + instructions count */ - byte_len -= 2 * ( n_contours + 1 ); - if ( byte_len < 0 ) - goto Invalid_Outline; - - for ( ; cont < cont_limit; cont++ ) - cont[0] = FT_GET_USHORT(); - - n_points = 0; - if ( n_contours > 0 ) - n_points = cont[-1] + 1; - - error = FT_GlyphLoader_CheckPoints( gloader, n_points + 4, 0 ); - if ( error ) - goto Fail; - - /* we'd better check the contours table right now */ - outline = &gloader->current.outline; - - for ( cont = outline->contours + 1; cont < cont_limit; cont++ ) - if ( cont[-1] >= cont[0] ) - goto Invalid_Outline; - - /* reading the bytecode instructions */ - slot->control_len = 0; - slot->control_data = 0; - - n_ins = FT_GET_USHORT(); - - FT_TRACE5(( " Instructions size: %u\n", n_ins )); - - if ( n_ins > face->max_profile.maxSizeOfInstructions ) - { - FT_TRACE0(( "TT_Load_Simple_Glyph: Too many instructions!\n" )); - error = TT_Err_Too_Many_Hints; - goto Fail; - } - - byte_len -= (FT_Int)n_ins; - if ( byte_len < 0 ) - { - FT_TRACE0(( "TT_Load_Simple_Glyph: Instruction count mismatch!\n" )); - error = TT_Err_Too_Many_Hints; - goto Fail; - } - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - if ( ( load->load_flags & - ( FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING ) ) == 0 && - load->instructions ) - { - slot->control_len = n_ins; - slot->control_data = load->instructions; - - FT_MEM_COPY( load->instructions, stream->cursor, (FT_Long)n_ins ); - } - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - stream->cursor += (FT_Int)n_ins; - - /* reading the point tags */ - flag = (FT_Byte*)outline->tags; - flag_limit = flag + n_points; - - while ( flag < flag_limit ) - { - if ( --byte_len < 0 ) - goto Invalid_Outline; - - *flag++ = c = FT_GET_BYTE(); - if ( c & 8 ) - { - if ( --byte_len < 0 ) - goto Invalid_Outline; - - count = FT_GET_BYTE(); - if ( flag + (FT_Int)count > flag_limit ) - goto Invalid_Outline; - - for ( ; count > 0; count-- ) - *flag++ = c; - } - } - - /* check that there is enough room to load the coordinates */ - for ( flag = (FT_Byte*)outline->tags; flag < flag_limit; flag++ ) - { - if ( *flag & 2 ) - byte_len -= 1; - else if ( ( *flag & 16 ) == 0 ) - byte_len -= 2; - - if ( *flag & 4 ) - byte_len -= 1; - else if ( ( *flag & 32 ) == 0 ) - byte_len -= 2; - } - - if ( byte_len < 0 ) - goto Invalid_Outline; - - /* reading the X coordinates */ - - vec = outline->points; - vec_limit = vec + n_points; - flag = (FT_Byte*)outline->tags; - x = 0; - - for ( ; vec < vec_limit; vec++, flag++ ) - { - FT_Pos y = 0; - - - if ( *flag & 2 ) - { - y = (FT_Pos)FT_GET_BYTE(); - if ( ( *flag & 16 ) == 0 ) - y = -y; - } - else if ( ( *flag & 16 ) == 0 ) - y = (FT_Pos)FT_GET_SHORT(); - - x += y; - vec->x = x; - } - - /* reading the Y coordinates */ - - vec = gloader->current.outline.points; - vec_limit = vec + n_points; - flag = (FT_Byte*)outline->tags; - x = 0; - - for ( ; vec < vec_limit; vec++, flag++ ) - { - FT_Pos y = 0; - - - if ( *flag & 4 ) - { - y = (FT_Pos)FT_GET_BYTE(); - if ( ( *flag & 32 ) == 0 ) - y = -y; - } - else if ( ( *flag & 32 ) == 0 ) - y = (FT_Pos)FT_GET_SHORT(); - - x += y; - vec->y = x; - } - - /* clear the touch tags */ - for ( n = 0; n < n_points; n++ ) - outline->tags[n] &= FT_CURVE_TAG_ON; - - outline->n_points = (FT_UShort)n_points; - outline->n_contours = (FT_Short) n_contours; - - load->byte_len = byte_len; - - Fail: - return error; - - Invalid_Outline: - error = TT_Err_Invalid_Outline; - goto Fail; - } - - - FT_CALLBACK_DEF( FT_Error ) - TT_Load_Composite_Glyph( TT_Loader loader ) - { - FT_Error error; - FT_Stream stream = loader->stream; - FT_GlyphLoader gloader = loader->gloader; - FT_SubGlyph subglyph; - FT_UInt num_subglyphs; - FT_Int byte_len = loader->byte_len; - - - num_subglyphs = 0; - - do - { - FT_Fixed xx, xy, yy, yx; - - - /* check that we can load a new subglyph */ - error = FT_GlyphLoader_CheckSubGlyphs( gloader, num_subglyphs + 1 ); - if ( error ) - goto Fail; - - /* check space */ - byte_len -= 4; - if ( byte_len < 0 ) - goto Invalid_Composite; - - subglyph = gloader->current.subglyphs + num_subglyphs; - - subglyph->arg1 = subglyph->arg2 = 0; - - subglyph->flags = FT_GET_USHORT(); - subglyph->index = FT_GET_USHORT(); - - /* check space */ - byte_len -= 2; - if ( subglyph->flags & ARGS_ARE_WORDS ) - byte_len -= 2; - if ( subglyph->flags & WE_HAVE_A_SCALE ) - byte_len -= 2; - else if ( subglyph->flags & WE_HAVE_AN_XY_SCALE ) - byte_len -= 4; - else if ( subglyph->flags & WE_HAVE_A_2X2 ) - byte_len -= 8; - - if ( byte_len < 0 ) - goto Invalid_Composite; - - /* read arguments */ - if ( subglyph->flags & ARGS_ARE_WORDS ) - { - subglyph->arg1 = FT_GET_SHORT(); - subglyph->arg2 = FT_GET_SHORT(); - } - else - { - subglyph->arg1 = FT_GET_CHAR(); - subglyph->arg2 = FT_GET_CHAR(); - } - - /* read transform */ - xx = yy = 0x10000L; - xy = yx = 0; - - if ( subglyph->flags & WE_HAVE_A_SCALE ) - { - xx = (FT_Fixed)FT_GET_SHORT() << 2; - yy = xx; - } - else if ( subglyph->flags & WE_HAVE_AN_XY_SCALE ) - { - xx = (FT_Fixed)FT_GET_SHORT() << 2; - yy = (FT_Fixed)FT_GET_SHORT() << 2; - } - else if ( subglyph->flags & WE_HAVE_A_2X2 ) - { - xx = (FT_Fixed)FT_GET_SHORT() << 2; - yx = (FT_Fixed)FT_GET_SHORT() << 2; - xy = (FT_Fixed)FT_GET_SHORT() << 2; - yy = (FT_Fixed)FT_GET_SHORT() << 2; - } - - subglyph->transform.xx = xx; - subglyph->transform.xy = xy; - subglyph->transform.yx = yx; - subglyph->transform.yy = yy; - - num_subglyphs++; - - } while ( subglyph->flags & MORE_COMPONENTS ); - - gloader->current.num_subglyphs = num_subglyphs; - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - { - /* we must undo the FT_FRAME_ENTER in order to point to the */ - /* composite instructions, if we find some. */ - /* we will process them later... */ - /* */ - loader->ins_pos = (FT_ULong)( FT_STREAM_POS() + - stream->cursor - stream->limit ); - } -#endif - - loader->byte_len = byte_len; - - Fail: - return error; - - Invalid_Composite: - error = TT_Err_Invalid_Composite; - goto Fail; - } - - - FT_LOCAL_DEF( void ) - TT_Init_Glyph_Loading( TT_Face face ) - { - face->access_glyph_frame = TT_Access_Glyph_Frame; - face->read_glyph_header = TT_Load_Glyph_Header; - face->read_simple_glyph = TT_Load_Simple_Glyph; - face->read_composite_glyph = TT_Load_Composite_Glyph; - face->forget_glyph_frame = TT_Forget_Glyph_Frame; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Process_Simple_Glyph */ - /* */ - /* <Description> */ - /* Once a simple glyph has been loaded, it needs to be processed. */ - /* Usually, this means scaling and hinting through bytecode */ - /* interpretation. */ - /* */ - static FT_Error - TT_Process_Simple_Glyph( TT_Loader load, - FT_Bool debug ) - { - FT_GlyphLoader gloader = load->gloader; - FT_Outline* outline = &gloader->current.outline; - FT_UInt n_points = outline->n_points; -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - FT_UInt n_ins; -#endif - TT_GlyphZone zone = &load->zone; - FT_Error error = TT_Err_Ok; - - FT_UNUSED( debug ); /* used by truetype interpreter only */ - - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - n_ins = load->glyph->control_len; -#endif - - /* add shadow points */ - - /* Add two horizontal shadow points at n and n+1. */ - /* We need the left side bearing and advance width. */ - /* Add two vertical shadow points at n+2 and n+3. */ - /* We need the top side bearing and advance height. */ - - { - FT_Vector* pp1; - FT_Vector* pp2; - FT_Vector* pp3; - FT_Vector* pp4; - - - /* pp1 = xMin - lsb */ - pp1 = outline->points + n_points; - pp1->x = load->bbox.xMin - load->left_bearing; - pp1->y = 0; - - /* pp2 = pp1 + aw */ - pp2 = pp1 + 1; - pp2->x = pp1->x + load->advance; - pp2->y = 0; - - /* pp3 = top side bearing */ - pp3 = pp1 + 2; - pp3->x = 0; - pp3->y = load->top_bearing + load->bbox.yMax; - - /* pp4 = pp3 - ah */ - pp4 = pp1 + 3; - pp4->x = 0; - pp4->y = pp3->y - load->vadvance; - - outline->tags[n_points ] = 0; - outline->tags[n_points + 1] = 0; - outline->tags[n_points + 2] = 0; - outline->tags[n_points + 3] = 0; - } - - /* Note that we return four more points that are not */ - /* part of the glyph outline. */ - - n_points += 4; - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - - if ( ((TT_Face)load->face)->doblend ) - { - /* Deltas apply to the unscaled data. */ - FT_Vector* deltas; - FT_Memory memory = load->face->memory; - FT_StreamRec saved_stream = *(load->stream); - FT_UInt i; - - - /* TT_Vary_Get_Glyph_Deltas uses a frame, thus we have to save */ - /* (and restore) the current one */ - load->stream->cursor = 0; - load->stream->limit = 0; - - error = TT_Vary_Get_Glyph_Deltas( (TT_Face)(load->face), - load->glyph_index, - &deltas, - n_points ); - - *(load->stream) = saved_stream; - - if ( error ) - goto Exit; - - for ( i = 0; i < n_points; ++i ) - { - outline->points[i].x += deltas[i].x; - outline->points[i].y += deltas[i].y; - } - - FT_FREE( deltas ); - } - -#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */ - - /* set up zone for hinting */ - tt_prepare_zone( zone, &gloader->current, 0, 0 ); - - /* eventually scale the glyph */ - if ( !( load->load_flags & FT_LOAD_NO_SCALE ) ) - { - FT_Vector* vec = zone->cur; - FT_Vector* limit = vec + n_points; - FT_Fixed x_scale = ((TT_Size)load->size)->metrics.x_scale; - FT_Fixed y_scale = ((TT_Size)load->size)->metrics.y_scale; - - /* first scale the glyph points */ - for ( ; vec < limit; vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } - } - - cur_to_org( n_points, zone ); - - /* eventually hint the glyph */ - if ( IS_HINTED( load->load_flags ) ) - { - FT_Pos x = zone->org[n_points-4].x; - FT_Pos y = zone->org[n_points-2].y; - - - x = FT_PIX_ROUND( x ) - x; - y = FT_PIX_ROUND( y ) - y; - translate_array( n_points, zone->org, x, y ); - - org_to_cur( n_points, zone ); - - zone->cur[n_points - 3].x = FT_PIX_ROUND( zone->cur[n_points - 3].x ); - zone->cur[n_points - 1].y = FT_PIX_ROUND( zone->cur[n_points - 1].y ); - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - /* now consider hinting */ - if ( n_ins > 0 ) - { - error = TT_Set_CodeRange( load->exec, tt_coderange_glyph, - load->exec->glyphIns, n_ins ); - if ( error ) - goto Exit; - - load->exec->is_composite = FALSE; - load->exec->pedantic_hinting = (FT_Bool)( load->load_flags & - FT_LOAD_PEDANTIC ); - load->exec->pts = *zone; - load->exec->pts.n_points += 4; - - error = TT_Run_Context( load->exec, debug ); - if ( error && load->exec->pedantic_hinting ) - goto Exit; - - error = TT_Err_Ok; /* ignore bytecode errors in non-pedantic mode */ - } - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - } - - /* save glyph phantom points */ - if ( !load->preserve_pps ) - { - load->pp1 = zone->cur[n_points - 4]; - load->pp2 = zone->cur[n_points - 3]; - load->pp3 = zone->cur[n_points - 2]; - load->pp4 = zone->cur[n_points - 1]; - } - -#if defined( TT_CONFIG_OPTION_BYTECODE_INTERPRETER ) || \ - defined( TT_CONFIG_OPTION_GX_VAR_SUPPORT ) - Exit: -#endif - - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* load_truetype_glyph */ - /* */ - /* <Description> */ - /* Loads a given truetype glyph. Handles composites and uses a */ - /* TT_Loader object. */ - /* */ - static FT_Error - load_truetype_glyph( TT_Loader loader, - FT_UInt glyph_index, - FT_UInt recurse_count ) - { - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - FT_Stream stream = loader->stream; -#endif - - FT_Error error; - TT_Face face = (TT_Face)loader->face; - FT_ULong offset; - FT_Int contours_count; - FT_UInt num_points, count; - FT_Fixed x_scale, y_scale; - FT_GlyphLoader gloader = loader->gloader; - FT_Bool opened_frame = 0; - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - FT_StreamRec inc_stream; - FT_Data glyph_data; - FT_Bool glyph_data_loaded = 0; -#endif - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - FT_Vector *deltas; -#endif - - - if ( recurse_count >= TT_MAX_COMPOSITE_RECURSE ) - { - error = TT_Err_Invalid_Composite; - goto Exit; - } - - /* check glyph index */ - if ( glyph_index >= (FT_UInt)face->root.num_glyphs ) - { - error = TT_Err_Invalid_Glyph_Index; - goto Exit; - } - - loader->glyph_index = glyph_index; - num_points = 0; - - x_scale = 0x10000L; - y_scale = 0x10000L; - if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 ) - { - x_scale = ((TT_Size)loader->size)->metrics.x_scale; - y_scale = ((TT_Size)loader->size)->metrics.y_scale; - } - - /* get metrics, horizontal and vertical */ - { - FT_Short left_bearing = 0, top_bearing = 0; - FT_UShort advance_width = 0, advance_height = 0; - - - Get_HMetrics( face, glyph_index, - (FT_Bool)!( loader->load_flags & - FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ), - &left_bearing, - &advance_width ); - Get_VMetrics( face, glyph_index, - (FT_Bool)!( loader->load_flags & - FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ), - &top_bearing, - &advance_height ); - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* If this is an incrementally loaded font see if there are */ - /* overriding metrics for this glyph. */ - if ( face->root.internal->incremental_interface && - face->root.internal->incremental_interface->funcs->get_glyph_metrics ) - { - FT_Incremental_MetricsRec metrics; - - - metrics.bearing_x = left_bearing; - metrics.bearing_y = 0; - metrics.advance = advance_width; - error = face->root.internal->incremental_interface->funcs->get_glyph_metrics( - face->root.internal->incremental_interface->object, - glyph_index, FALSE, &metrics ); - if ( error ) - goto Exit; - left_bearing = (FT_Short)metrics.bearing_x; - advance_width = (FT_UShort)metrics.advance; - } - -# if 0 - /* GWW: Do I do the same for vertical metrics ??? */ - if ( face->root.internal->incremental_interface && - face->root.internal->incremental_interface->funcs->get_glyph_metrics ) - { - FT_Incremental_MetricsRec metrics; - - - metrics.bearing_x = 0; - metrics.bearing_y = top_bearing; - metrics.advance = advance_height; - error = face->root.internal->incremental_interface->funcs->get_glyph_metrics( - face->root.internal->incremental_interface->object, - glyph_index, TRUE, &metrics ); - if ( error ) - goto Exit; - top_bearing = (FT_Short)metrics.bearing_y; - advance_height = (FT_UShort)metrics.advance; - } -# endif - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - loader->left_bearing = left_bearing; - loader->advance = advance_width; - loader->top_bearing = top_bearing; - loader->vadvance = advance_height; - - if ( !loader->linear_def ) - { - loader->linear_def = 1; - loader->linear = advance_width; - } - } - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* Set `offset' to the start of the glyph program relative to the */ - /* start of the 'glyf' table, and `count' to the length of the */ - /* glyph program in bytes. */ - /* */ - /* If we are loading glyph data via the incremental interface, set */ - /* the loader stream to a memory stream reading the data returned */ - /* by the interface. */ - - if ( face->root.internal->incremental_interface ) - { - error = face->root.internal->incremental_interface->funcs->get_glyph_data( - face->root.internal->incremental_interface->object, - glyph_index, &glyph_data ); - if ( error ) - goto Exit; - - glyph_data_loaded = 1; - offset = 0; - count = glyph_data.length; - - FT_MEM_ZERO( &inc_stream, sizeof ( inc_stream ) ); - FT_Stream_OpenMemory( &inc_stream, - glyph_data.pointer, glyph_data.length ); - - loader->stream = &inc_stream; - } - else - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - { - offset = face->glyph_locations[glyph_index]; - count = 0; - - if ( glyph_index < (FT_UInt)face->num_locations - 1 ) - count = (FT_UInt)( face->glyph_locations[glyph_index + 1] - offset ); - } - - if ( count == 0 ) - { - /* as described by Frederic Loyer, these are spaces, and */ - /* not the unknown glyph. */ - loader->bbox.xMin = 0; - loader->bbox.xMax = 0; - loader->bbox.yMin = 0; - loader->bbox.yMax = 0; - - loader->pp1.x = 0; - loader->pp2.x = loader->advance; - loader->pp3.y = 0; - loader->pp4.y = loader->pp3.y-loader->vadvance; - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - if ( ((TT_Face)(loader->face))->doblend ) - { - /* this must be done before scaling */ - FT_Memory memory = loader->face->memory; - - - if ( (error = TT_Vary_Get_Glyph_Deltas( (TT_Face)(loader->face), - glyph_index, - &deltas, - 4 ) ) ) - goto Exit; - - loader->pp1.x += deltas[0].x; loader->pp1.y += deltas[0].y; - loader->pp2.x += deltas[1].x; loader->pp2.y += deltas[1].y; - loader->pp3.x += deltas[2].x; loader->pp3.y += deltas[2].y; - loader->pp4.x += deltas[3].x; loader->pp4.y += deltas[3].y; - - FT_FREE( deltas ); - } -#endif - - if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 ) - { - loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale ); - loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale ); - } - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - if ( loader->exec ) - loader->exec->glyphSize = 0; - -#endif - - error = TT_Err_Ok; - goto Exit; - } - - loader->byte_len = (FT_Int)count; - - offset = loader->glyf_offset + offset; - - /* access glyph frame */ - error = face->access_glyph_frame( loader, glyph_index, offset, count ); - if ( error ) - goto Exit; - - opened_frame = 1; - - /* read first glyph header */ - error = face->read_glyph_header( loader ); - if ( error ) - goto Fail; - - contours_count = loader->n_contours; - - count -= 10; - - loader->pp1.x = loader->bbox.xMin - loader->left_bearing; - loader->pp1.y = 0; - loader->pp2.x = loader->pp1.x + loader->advance; - loader->pp2.y = 0; - - loader->pp3.x = 0; - loader->pp3.y = loader->top_bearing + loader->bbox.yMax; - loader->pp4.x = 0; - loader->pp4.y = loader->pp3.y - loader->vadvance; - - /***********************************************************************/ - /***********************************************************************/ - /***********************************************************************/ - - /* if it is a simple glyph, load it */ - - if ( contours_count >= 0 ) - { - /* check that we can add the contours to the glyph */ - error = FT_GlyphLoader_CheckPoints( gloader, 0, contours_count ); - if ( error ) - goto Fail; - - error = face->read_simple_glyph( loader ); - if ( error ) - goto Fail; - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - { - TT_Size size = (TT_Size)loader->size; - - - error = TT_Process_Simple_Glyph( loader, - (FT_Bool)( size && size->debug ) ); - } - -#else - - error = TT_Process_Simple_Glyph( loader, 0 ); - -#endif - - if ( error ) - goto Fail; - - FT_GlyphLoader_Add( gloader ); - - /* Note: We could have put the simple loader source there */ - /* but the code is fat enough already :-) */ - } - - /***********************************************************************/ - /***********************************************************************/ - /***********************************************************************/ - - /* otherwise, load a composite! */ - else if ( contours_count == -1 ) - { - TT_GlyphSlot glyph = (TT_GlyphSlot)loader->glyph; - FT_UInt start_point; -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - FT_UInt start_contour; - FT_ULong ins_pos; /* position of composite instructions, if any */ -#endif - - - /* for each subglyph, read composite header */ - start_point = gloader->base.outline.n_points; -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - start_contour = gloader->base.outline.n_contours; -#endif - - error = face->read_composite_glyph( loader ); - if ( error ) - goto Fail; - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - ins_pos = loader->ins_pos; -#endif - face->forget_glyph_frame( loader ); - opened_frame = 0; - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - - if ( face->doblend ) - { - FT_Int i, limit; - FT_SubGlyph subglyph; - FT_Memory memory = face->root.memory; - - - /* this provides additional offsets */ - /* for each component's translation */ - - if ( (error = TT_Vary_Get_Glyph_Deltas( - face, - glyph_index, - &deltas, - gloader->current.num_subglyphs + 4 ) ) ) - goto Exit; - - /* Note: No subglyph reallocation here, our pointers are stable. */ - subglyph = gloader->current.subglyphs + gloader->base.num_subglyphs; - limit = gloader->current.num_subglyphs; - - for ( i = 0; i < limit; ++i, ++subglyph ) - { - if ( subglyph->flags & ARGS_ARE_XY_VALUES ) - { - subglyph->arg1 += deltas[i].x; - subglyph->arg2 += deltas[i].y; - } - } - - loader->pp1.x += deltas[i + 0].x; loader->pp1.y += deltas[i + 0].y; - loader->pp2.x += deltas[i + 1].x; loader->pp2.y += deltas[i + 1].y; - loader->pp3.x += deltas[i + 2].x; loader->pp3.y += deltas[i + 2].y; - loader->pp4.x += deltas[i + 3].x; loader->pp4.y += deltas[i + 3].y; - - FT_FREE( deltas ); - } - -#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */ - - if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 ) - { - loader->pp1.x = FT_MulFix( loader->pp1.x, x_scale ); - loader->pp2.x = FT_MulFix( loader->pp2.x, x_scale ); - loader->pp3.y = FT_MulFix( loader->pp3.y, y_scale ); - loader->pp4.y = FT_MulFix( loader->pp4.y, y_scale ); - } - - /* if the flag FT_LOAD_NO_RECURSE is set, we return the subglyph */ - /* `as is' in the glyph slot (the client application will be */ - /* responsible for interpreting these data)... */ - /* */ - if ( loader->load_flags & FT_LOAD_NO_RECURSE ) - { - /* set up remaining glyph fields */ - FT_GlyphLoader_Add( gloader ); - - glyph->num_subglyphs = gloader->base.num_subglyphs; - glyph->format = FT_GLYPH_FORMAT_COMPOSITE; - glyph->subglyphs = gloader->base.subglyphs; - - goto Exit; - } - - /*********************************************************************/ - /*********************************************************************/ - /*********************************************************************/ - - /* Now, read each subglyph independently. */ - { - FT_Int n, num_base_points, num_new_points; - FT_SubGlyph subglyph = 0; - - FT_UInt num_subglyphs = gloader->current.num_subglyphs; - FT_UInt num_base_subgs = gloader->base.num_subglyphs; - - - FT_GlyphLoader_Add( gloader ); - - for ( n = 0; n < (FT_Int)num_subglyphs; n++ ) - { - FT_Vector pp1, pp2, pp3, pp4; - FT_Pos x, y; - - - /* Each time we call load_truetype_glyph in this loop, the */ - /* value of `gloader.base.subglyphs' can change due to table */ - /* reallocations. We thus need to recompute the subglyph */ - /* pointer on each iteration. */ - subglyph = gloader->base.subglyphs + num_base_subgs + n; - - pp1 = loader->pp1; - pp2 = loader->pp2; - pp3 = loader->pp3; - pp4 = loader->pp4; - - num_base_points = gloader->base.outline.n_points; - - error = load_truetype_glyph( loader, subglyph->index, - recurse_count + 1 ); - if ( error ) - goto Fail; - - /* restore subglyph pointer */ - subglyph = gloader->base.subglyphs + num_base_subgs + n; - - if ( subglyph->flags & USE_MY_METRICS ) - { - pp1 = loader->pp1; - pp2 = loader->pp2; - pp3 = loader->pp3; - pp4 = loader->pp4; - } - else - { - loader->pp1 = pp1; - loader->pp2 = pp2; - loader->pp3 = pp3; - loader->pp4 = pp4; - } - - num_points = gloader->base.outline.n_points; - - num_new_points = num_points - num_base_points; - - /* now perform the transform required for this subglyph */ - - if ( subglyph->flags & ( WE_HAVE_A_SCALE | - WE_HAVE_AN_XY_SCALE | - WE_HAVE_A_2X2 ) ) - { - FT_Vector* cur = gloader->base.outline.points + - num_base_points; - FT_Vector* org = gloader->base.extra_points + - num_base_points; - FT_Vector* limit = cur + num_new_points; - - - for ( ; cur < limit; cur++, org++ ) - { - FT_Vector_Transform( cur, &subglyph->transform ); - FT_Vector_Transform( org, &subglyph->transform ); - } - } - - /* apply offset */ - - if ( !( subglyph->flags & ARGS_ARE_XY_VALUES ) ) - { - FT_UInt k = subglyph->arg1; - FT_UInt l = subglyph->arg2; - FT_Vector* p1; - FT_Vector* p2; - - - if ( start_point + k >= (FT_UInt)num_base_points || - l >= (FT_UInt)num_new_points ) - { - error = TT_Err_Invalid_Composite; - goto Fail; - } - - l += num_base_points; - - p1 = gloader->base.outline.points + start_point + k; - p2 = gloader->base.outline.points + start_point + l; - - x = p1->x - p2->x; - y = p1->y - p2->y; - } - else - { - x = subglyph->arg1; - y = subglyph->arg2; - - /* Use a default value dependent on */ - /* TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED. This is useful for old TT */ - /* fonts which don't set the xxx_COMPONENT_OFFSET bit. */ - -#ifdef TT_CONFIG_OPTION_COMPONENT_OFFSET_SCALED - if ( !( subglyph->flags & UNSCALED_COMPONENT_OFFSET ) && -#else - if ( ( subglyph->flags & SCALED_COMPONENT_OFFSET ) && -#endif - ( subglyph->flags & ( WE_HAVE_A_SCALE | - WE_HAVE_AN_XY_SCALE | - WE_HAVE_A_2X2 )) ) - { -#if 0 - - /*************************************************************************/ - /* */ - /* This algorithm is what Apple documents. But it doesn't work. */ - /* */ - int a = subglyph->transform.xx > 0 ? subglyph->transform.xx - : -subglyph->transform.xx; - int b = subglyph->transform.yx > 0 ? subglyph->transform.yx - : -subglyph->transform.yx; - int c = subglyph->transform.xy > 0 ? subglyph->transform.xy - : -subglyph->transform.xy; - int d = subglyph->transform.yy > 0 ? subglyph->transform.yy - : -subglyph->transform.yy; - int m = a > b ? a : b; - int n = c > d ? c : d; - - - if ( a - b <= 33 && a - b >= -33 ) - m *= 2; - if ( c - d <= 33 && c - d >= -33 ) - n *= 2; - x = FT_MulFix( x, m ); - y = FT_MulFix( y, n ); - -#else /* 0 */ - - /*************************************************************************/ - /* */ - /* This algorithm is a guess and works much better than the above. */ - /* */ - FT_Fixed mac_xscale = FT_SqrtFixed( - FT_MulFix( subglyph->transform.xx, - subglyph->transform.xx ) + - FT_MulFix( subglyph->transform.xy, - subglyph->transform.xy) ); - FT_Fixed mac_yscale = FT_SqrtFixed( - FT_MulFix( subglyph->transform.yy, - subglyph->transform.yy ) + - FT_MulFix( subglyph->transform.yx, - subglyph->transform.yx ) ); - - - x = FT_MulFix( x, mac_xscale ); - y = FT_MulFix( y, mac_yscale ); -#endif /* 0 */ - - } - - if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) ) - { - x = FT_MulFix( x, x_scale ); - y = FT_MulFix( y, y_scale ); - - if ( subglyph->flags & ROUND_XY_TO_GRID ) - { - x = FT_PIX_ROUND( x ); - y = FT_PIX_ROUND( y ); - } - } - } - - if ( x || y ) - { - translate_array( num_new_points, - gloader->base.outline.points + num_base_points, - x, y ); - - translate_array( num_new_points, - gloader->base.extra_points + num_base_points, - x, y ); - } - } - - /*******************************************************************/ - /*******************************************************************/ - /*******************************************************************/ - - /* we have finished loading all sub-glyphs; now, look for */ - /* instructions for this composite! */ - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - if ( num_subglyphs > 0 && - loader->exec && - ins_pos > 0 && - subglyph->flags & WE_HAVE_INSTR ) - { - FT_UShort n_ins; - TT_ExecContext exec = loader->exec; - TT_GlyphZone pts; - FT_Vector* pp1; - - - /* read size of instructions */ - if ( FT_STREAM_SEEK( ins_pos ) || - FT_READ_USHORT( n_ins ) ) - goto Fail; - FT_TRACE5(( " Instructions size = %d\n", n_ins )); - - /* in some fonts? */ - if ( n_ins == 0xFFFFU ) - n_ins = 0; - - /* check it */ - if ( n_ins > face->max_profile.maxSizeOfInstructions ) - { - FT_TRACE0(( "Too many instructions (%d) in composite glyph %ld\n", - n_ins, subglyph->index )); - error = TT_Err_Too_Many_Hints; - goto Fail; - } - - /* read the instructions */ - if ( FT_STREAM_READ( exec->glyphIns, n_ins ) ) - goto Fail; - - glyph->control_data = exec->glyphIns; - glyph->control_len = n_ins; - - error = TT_Set_CodeRange( exec, - tt_coderange_glyph, - exec->glyphIns, - n_ins ); - if ( error ) - goto Fail; - - error = FT_GlyphLoader_CheckPoints( gloader, num_points + 4, 0 ); - if ( error ) - goto Fail; - - /* prepare the execution context */ - tt_prepare_zone( &exec->pts, &gloader->base, - start_point, start_contour ); - pts = &exec->pts; - - pts->n_points = (short)( num_points + 4 ); - pts->n_contours = gloader->base.outline.n_contours; - - /* add phantom points */ - pp1 = pts->cur + num_points; - pp1[0] = loader->pp1; - pp1[1] = loader->pp2; - pp1[2] = loader->pp3; - pp1[3] = loader->pp4; - - pts->tags[num_points ] = 0; - pts->tags[num_points + 1] = 0; - pts->tags[num_points + 2] = 0; - pts->tags[num_points + 3] = 0; - - /* if hinting, round the phantom points */ - if ( IS_HINTED( loader->load_flags ) ) - { - pp1[0].x = FT_PIX_ROUND( loader->pp1.x ); - pp1[1].x = FT_PIX_ROUND( loader->pp2.x ); - pp1[2].y = FT_PIX_ROUND( loader->pp3.y ); - pp1[3].y = FT_PIX_ROUND( loader->pp4.y ); - } - - { - FT_UInt k; - - - for ( k = 0; k < num_points; k++ ) - pts->tags[k] &= FT_CURVE_TAG_ON; - } - - cur_to_org( num_points + 4, pts ); - - /* now consider hinting */ - if ( IS_HINTED( loader->load_flags ) && n_ins > 0 ) - { - exec->is_composite = TRUE; - exec->pedantic_hinting = - (FT_Bool)( loader->load_flags & FT_LOAD_PEDANTIC ); - error = TT_Run_Context( exec, ((TT_Size)loader->size)->debug ); - if ( error && exec->pedantic_hinting ) - goto Fail; - } - - /* save glyph origin and advance points */ - loader->pp1 = pp1[0]; - loader->pp2 = pp1[1]; - loader->pp3 = pp1[2]; - loader->pp4 = pp1[3]; - } - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - } - /* end of composite loading */ - } - else - { - /* invalid composite count ( negative but not -1 ) */ - error = TT_Err_Invalid_Outline; - goto Fail; - } - - /***********************************************************************/ - /***********************************************************************/ - /***********************************************************************/ - - Fail: - if ( opened_frame ) - face->forget_glyph_frame( loader ); - - Exit: - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - if ( glyph_data_loaded ) - face->root.internal->incremental_interface->funcs->free_glyph_data( - face->root.internal->incremental_interface->object, - &glyph_data ); -#endif - - return error; - } - - - static FT_Error - compute_glyph_metrics( TT_Loader loader, - FT_UInt glyph_index ) - { - FT_BBox bbox; - TT_Face face = (TT_Face)loader->face; - FT_Fixed y_scale; - TT_GlyphSlot glyph = loader->glyph; - TT_Size size = (TT_Size)loader->size; - - - y_scale = 0x10000L; - if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 ) - y_scale = size->root.metrics.y_scale; - - if ( glyph->format != FT_GLYPH_FORMAT_COMPOSITE ) - { - glyph->outline.flags &= ~FT_OUTLINE_SINGLE_PASS; - - /* copy outline to our glyph slot */ - FT_GlyphLoader_CopyPoints( glyph->internal->loader, loader->gloader ); - glyph->outline = glyph->internal->loader->base.outline; - - /* translate array so that (0,0) is the glyph's origin */ - FT_Outline_Translate( &glyph->outline, -loader->pp1.x, 0 ); - - FT_Outline_Get_CBox( &glyph->outline, &bbox ); - - if ( IS_HINTED( loader->load_flags ) ) - { - /* grid-fit the bounding box */ - bbox.xMin = FT_PIX_FLOOR( bbox.xMin ); - bbox.yMin = FT_PIX_FLOOR( bbox.yMin ); - bbox.xMax = FT_PIX_CEIL( bbox.xMax ); - bbox.yMax = FT_PIX_CEIL( bbox.yMax ); - } - } - else - bbox = loader->bbox; - - /* get the device-independent horizontal advance. It is scaled later */ - /* by the base layer. */ - { - FT_Pos advance = loader->linear; - - - /* the flag FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH was introduced to */ - /* correctly support DynaLab fonts, which have an incorrect */ - /* `advance_Width_Max' field! It is used, to my knowledge, */ - /* exclusively in the X-TrueType font server. */ - /* */ - if ( face->postscript.isFixedPitch && - ( loader->load_flags & FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH ) == 0 ) - advance = face->horizontal.advance_Width_Max; - - /* we need to return the advance in font units in linearHoriAdvance, */ - /* it will be scaled later by the base layer. */ - glyph->linearHoriAdvance = advance; - } - - glyph->metrics.horiBearingX = bbox.xMin; - glyph->metrics.horiBearingY = bbox.yMax; - glyph->metrics.horiAdvance = loader->pp2.x - loader->pp1.x; - - /* don't forget to hint the advance when we need to */ - if ( IS_HINTED( loader->load_flags ) ) - glyph->metrics.horiAdvance = FT_PIX_ROUND( glyph->metrics.horiAdvance ); - - /* Now take care of vertical metrics. In the case where there is */ - /* no vertical information within the font (relatively common), make */ - /* up some metrics by `hand'... */ - - { - FT_Short top_bearing; /* vertical top side bearing (EM units) */ - FT_UShort advance_height; /* vertical advance height (EM units) */ - - FT_Pos left; /* scaled vertical left side bearing */ - FT_Pos top; /* scaled vertical top side bearing */ - FT_Pos advance; /* scaled vertical advance height */ - - - /* Get the unscaled top bearing and advance height. */ - if ( face->vertical_info && - face->vertical.number_Of_VMetrics > 0 ) - { - advance_height = (FT_UShort)( loader->pp4.y - loader->pp3.y ); - top_bearing = (FT_Short)( loader->pp3.y - bbox.yMax ); - } - else - { - /* Make up the distances from the horizontal header. */ - - /* NOTE: The OS/2 values are the only `portable' ones, */ - /* which is why we use them, if there is an OS/2 */ - /* table in the font. Otherwise, we use the */ - /* values defined in the horizontal header. */ - /* */ - /* NOTE2: The sTypoDescender is negative, which is why */ - /* we compute the baseline-to-baseline distance */ - /* here with: */ - /* ascender - descender + linegap */ - /* */ - /* NOTE3: This is different from what MS's rasterizer */ - /* appears to do when getting default values */ - /* for the vertical phantom points. We leave */ - /* the old code untouched, but relying on */ - /* phantom points alone might be reasonable */ - /* (i.e., removing the `if' above). */ - if ( face->os2.version != 0xFFFFU ) - { - top_bearing = (FT_Short)( face->os2.sTypoLineGap / 2 ); - advance_height = (FT_UShort)( face->os2.sTypoAscender - - face->os2.sTypoDescender + - face->os2.sTypoLineGap ); - } - else - { - top_bearing = (FT_Short)( face->horizontal.Line_Gap / 2 ); - advance_height = (FT_UShort)( face->horizontal.Ascender + - face->horizontal.Descender + - face->horizontal.Line_Gap ); - } - } - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* If this is an incrementally loaded font see if there are */ - /* overriding metrics for this glyph. */ - if ( face->root.internal->incremental_interface && - face->root.internal->incremental_interface->funcs->get_glyph_metrics ) - { - FT_Incremental_MetricsRec metrics; - FT_Error error = 0; - - - metrics.bearing_x = 0; - metrics.bearing_y = top_bearing; - metrics.advance = advance_height; - error = - face->root.internal->incremental_interface->funcs->get_glyph_metrics( - face->root.internal->incremental_interface->object, - glyph_index, TRUE, &metrics ); - - if ( error ) - return error; - - top_bearing = (FT_Short)metrics.bearing_y; - advance_height = (FT_UShort)metrics.advance; - } - - /* GWW: Do vertical metrics get loaded incrementally too? */ - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - /* We must adjust the top_bearing value from the bounding box given */ - /* in the glyph header to the bounding box calculated with */ - /* FT_Get_Outline_CBox(). */ - - /* scale the metrics */ - if ( !( loader->load_flags & FT_LOAD_NO_SCALE ) ) - { - top = FT_MulFix( top_bearing + loader->bbox.yMax, y_scale ) - - bbox.yMax; - advance = FT_MulFix( advance_height, y_scale ); - } - else - { - top = top_bearing + loader->bbox.yMax - bbox.yMax; - advance = advance_height; - } - - /* set the advance height in design units. It is scaled later by */ - /* the base layer. */ - glyph->linearVertAdvance = advance_height; - - /* XXX: for now, we have no better algorithm for the lsb, but it */ - /* should work fine. */ - /* */ - left = ( bbox.xMin - bbox.xMax ) / 2; - - /* grid-fit them if necessary */ - if ( IS_HINTED( loader->load_flags ) ) - { - left = FT_PIX_FLOOR( left ); - top = FT_PIX_CEIL( top ); - advance = FT_PIX_ROUND( advance ); - } - - glyph->metrics.vertBearingX = left; - glyph->metrics.vertBearingY = top; - glyph->metrics.vertAdvance = advance; - } - - /* adjust advance width to the value contained in the hdmx table */ - if ( !face->postscript.isFixedPitch && size && - IS_HINTED( loader->load_flags ) ) - { - FT_Byte* widths = Get_Advance_Widths( face, - size->root.metrics.x_ppem ); - - - if ( widths ) - glyph->metrics.horiAdvance = widths[glyph_index] << 6; - } - - /* set glyph dimensions */ - glyph->metrics.width = bbox.xMax - bbox.xMin; - glyph->metrics.height = bbox.yMax - bbox.yMin; - - return 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Load_Glyph */ - /* */ - /* <Description> */ - /* A function used to load a single glyph within a given glyph slot, */ - /* for a given size. */ - /* */ - /* <Input> */ - /* glyph :: A handle to a target slot object where the glyph */ - /* will be loaded. */ - /* */ - /* size :: A handle to the source face size at which the glyph */ - /* must be scaled/loaded. */ - /* */ - /* glyph_index :: The index of the glyph in the font file. */ - /* */ - /* load_flags :: A flag indicating what to load for this glyph. The */ - /* FT_LOAD_XXX constants can be used to control the */ - /* glyph loading process (e.g., whether the outline */ - /* should be scaled, whether to load bitmaps or not, */ - /* whether to hint the outline, etc). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Load_Glyph( TT_Size size, - TT_GlyphSlot glyph, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - SFNT_Service sfnt; - TT_Face face; - FT_Stream stream; - FT_Error error; - TT_LoaderRec loader; - - - face = (TT_Face)glyph->face; - sfnt = (SFNT_Service)face->sfnt; - stream = face->root.stream; - error = 0; - - if ( !size || ( load_flags & FT_LOAD_NO_SCALE ) || - ( load_flags & FT_LOAD_NO_RECURSE ) ) - { - size = NULL; - load_flags |= FT_LOAD_NO_SCALE | - FT_LOAD_NO_HINTING | - FT_LOAD_NO_BITMAP; - } - - glyph->num_subglyphs = 0; - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - /* try to load embedded bitmap if any */ - /* */ - /* XXX: The convention should be emphasized in */ - /* the documents because it can be confusing. */ - if ( size && - size->strike_index != 0xFFFFU && - sfnt->load_sbits && - ( load_flags & FT_LOAD_NO_BITMAP ) == 0 ) - - { - TT_SBit_MetricsRec metrics; - - - error = sfnt->load_sbit_image( face, - (FT_ULong)size->strike_index, - glyph_index, - (FT_Int)load_flags, - stream, - &glyph->bitmap, - &metrics ); - if ( !error ) - { - glyph->outline.n_points = 0; - glyph->outline.n_contours = 0; - - glyph->metrics.width = (FT_Pos)metrics.width << 6; - glyph->metrics.height = (FT_Pos)metrics.height << 6; - - glyph->metrics.horiBearingX = (FT_Pos)metrics.horiBearingX << 6; - glyph->metrics.horiBearingY = (FT_Pos)metrics.horiBearingY << 6; - glyph->metrics.horiAdvance = (FT_Pos)metrics.horiAdvance << 6; - - glyph->metrics.vertBearingX = (FT_Pos)metrics.vertBearingX << 6; - glyph->metrics.vertBearingY = (FT_Pos)metrics.vertBearingY << 6; - glyph->metrics.vertAdvance = (FT_Pos)metrics.vertAdvance << 6; - - glyph->format = FT_GLYPH_FORMAT_BITMAP; - if ( load_flags & FT_LOAD_VERTICAL_LAYOUT ) - { - glyph->bitmap_left = metrics.vertBearingX; - glyph->bitmap_top = metrics.vertBearingY; - } - else - { - glyph->bitmap_left = metrics.horiBearingX; - glyph->bitmap_top = metrics.horiBearingY; - } - return error; - } - } - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - /* return immediately if we only want the embedded bitmaps */ - if ( load_flags & FT_LOAD_SBITS_ONLY ) - return TT_Err_Invalid_Argument; - - /* seek to the beginning of the glyph table. For Type 42 fonts */ - /* the table might be accessed from a Postscript stream or something */ - /* else... */ - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* Don't look for the glyph table if this is an incremental font. */ - if ( !face->root.internal->incremental_interface ) - -#endif - - { - error = face->goto_table( face, TTAG_glyf, stream, 0 ); - if ( error ) - { - FT_ERROR(( "TT_Load_Glyph: could not access glyph table\n" )); - goto Exit; - } - } - - FT_MEM_ZERO( &loader, sizeof ( loader ) ); - - /* update the glyph zone bounds */ - { - FT_GlyphLoader gloader = FT_FACE_DRIVER(face)->glyph_loader; - - - loader.gloader = gloader; - - FT_GlyphLoader_Rewind( gloader ); - - tt_prepare_zone( &loader.zone, &gloader->base, 0, 0 ); - tt_prepare_zone( &loader.base, &gloader->base, 0, 0 ); - } - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - if ( size ) - { - /* query new execution context */ - loader.exec = size->debug ? size->context : TT_New_Context( face ); - if ( !loader.exec ) - return TT_Err_Could_Not_Find_Context; - - TT_Load_Context( loader.exec, face, size ); - loader.instructions = loader.exec->glyphIns; - - /* load default graphics state - if needed */ - if ( size->GS.instruct_control & 2 ) - loader.exec->GS = tt_default_graphics_state; - } - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - /* clear all outline flags, except the `owner' one */ - glyph->outline.flags = 0; - - /* let's initialize the rest of our loader now */ - - loader.load_flags = load_flags; - - loader.face = (FT_Face)face; - loader.size = (FT_Size)size; - loader.glyph = (FT_GlyphSlot)glyph; - loader.stream = stream; - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - if ( face->root.internal->incremental_interface ) - loader.glyf_offset = 0; - else - -#endif - - loader.glyf_offset = FT_STREAM_POS(); - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - /* if the cvt program has disabled hinting, the argument */ - /* is ignored. */ - if ( size && ( size->GS.instruct_control & 1 ) ) - loader.load_flags |= FT_LOAD_NO_HINTING; - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - /* Main loading loop */ - glyph->format = FT_GLYPH_FORMAT_OUTLINE; - glyph->num_subglyphs = 0; - - error = load_truetype_glyph( &loader, glyph_index, 0 ); - if ( !error ) - compute_glyph_metrics( &loader, glyph_index ); - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - if ( !size || !size->debug ) - TT_Done_Context( loader.exec ); - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - /* Set the `high precision' bit flag. */ - /* This is _critical_ to get correct output for monochrome */ - /* TrueType glyphs at all sizes using the bytecode interpreter. */ - /* */ - if ( size && size->root.metrics.y_ppem < 24 ) - glyph->outline.flags |= FT_OUTLINE_HIGH_PRECISION; - - Exit: - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttgload.h b/nx-X11/extras/freetype2/src/truetype/ttgload.h deleted file mode 100644 index dfa2a60a5..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttgload.h +++ /dev/null @@ -1,55 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttgload.h */ -/* */ -/* TrueType Glyph Loader (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTGLOAD_H__ -#define __TTGLOAD_H__ - - -#include <ft2build.h> -#include "ttobjs.h" - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER -#include "ttinterp.h" -#endif - - -FT_BEGIN_HEADER - - - FT_LOCAL( void ) - TT_Get_Metrics( TT_HoriHeader* header, - FT_UInt idx, - FT_Short* bearing, - FT_UShort* advance ); - - FT_LOCAL( void ) - TT_Init_Glyph_Loading( TT_Face face ); - - FT_LOCAL( FT_Error ) - TT_Load_Glyph( TT_Size size, - TT_GlyphSlot glyph, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - -FT_END_HEADER - -#endif /* __TTGLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttgxvar.c b/nx-X11/extras/freetype2/src/truetype/ttgxvar.c deleted file mode 100644 index e48bb5054..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttgxvar.c +++ /dev/null @@ -1,1520 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttgxvar.c */ -/* */ -/* TrueType GX Font Variation loader */ -/* */ -/* Copyright 2004 by */ -/* David Turner, Robert Wilhelm, Werner Lemberg, and George Williams. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -/***************************************************************************/ -/* */ -/* Apple documents the `fvar', `gvar', `cvar', and `avar' tables at */ -/* */ -/* http://developer.apple.com/fonts/TTRefMan/RM06/Chap6[fgca]var.html */ -/* */ -/* The documentation for `fvar' is inconsistant. At one point it says */ -/* that `countSizePairs' should be 3, at another point 2. It should be 2. */ -/* */ -/* The documentation for `gvar' is not intelligible; `cvar' refers you to */ -/* `gvar' and is thus also incomprehensible. */ -/* */ -/* The documentation for `avar' appears correct, but Apple has no fonts */ -/* with an `avar' table, so it is hard to test. */ -/* */ -/* Many thanks to John Jenkins (at Apple) in figuring this out. */ -/* */ -/* */ -/* Apple's `kern' table has some references to tuple indices, but as there */ -/* is no indication where these indices are defined, nor how to */ -/* interpolate the kerning values (different tuples have different */ -/* classes) this issue is ignored. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_SFNT_H -#include FT_TRUETYPE_IDS_H -#include FT_TRUETYPE_TAGS_H -#include FT_MULTIPLE_MASTERS_H - -#include "ttdriver.h" -#include "ttpload.h" -#include "ttgxvar.h" - -#include "tterrors.h" - - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - - -#define FT_Stream_FTell( stream ) \ - ( (stream)->cursor - (stream)->base ) -#define FT_Stream_SeekSet( stream, off ) \ - ( (stream)->cursor = (stream)->base+(off) ) - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttgxvar - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** Internal Routines *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The macro ALL_POINTS is used in `ft_var_readpackedpoints'. It */ - /* indicates that there is a delta for every point without needing to */ - /* enumerate all of them. */ - /* */ -#define ALL_POINTS (FT_UShort*)(-1) - - - enum - { - GX_PT_POINTS_ARE_WORDS = 0x80, - GX_PT_POINT_RUN_COUNT_MASK = 0x7F - }; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_var_readpackedpoints */ - /* */ - /* <Description> */ - /* Read a set of points to which the following deltas will apply. */ - /* Points are packed with a run length encoding. */ - /* */ - /* <Input> */ - /* stream :: The data stream. */ - /* */ - /* <Output> */ - /* point_cnt :: The number of points read. A zero value means that */ - /* all points in the glyph will be affected, without */ - /* enumerating them individually. */ - /* */ - /* <Return> */ - /* An array of FT_UShort containing the affected points or the */ - /* special value ALL_POINTS. */ - /* */ - static FT_UShort* - ft_var_readpackedpoints( FT_Stream stream, - FT_UInt *point_cnt ) - { - FT_UShort *points; - FT_Int n; - FT_Int runcnt; - FT_Int i; - FT_Int j; - FT_Int first; - FT_Memory memory = stream->memory; - FT_Error error; - - - *point_cnt = n = FT_GET_BYTE(); - if ( n == 0 ) - return ALL_POINTS; - - if ( n & GX_PT_POINTS_ARE_WORDS ) - n = FT_GET_BYTE() | ( ( n & GX_PT_POINT_RUN_COUNT_MASK ) << 8 ); - - if ( FT_NEW_ARRAY( points, n ) ) - return NULL; - - i = 0; - while ( i < n ) - { - runcnt = FT_GET_BYTE(); - if ( runcnt & GX_PT_POINTS_ARE_WORDS ) - { - runcnt = runcnt & GX_PT_POINT_RUN_COUNT_MASK; - points[i++] = first = FT_GET_USHORT(); - - /* first point not included in runcount */ - for ( j = 0; j < runcnt; ++j ) - points[i++] = ( first += FT_GET_USHORT() ); - } - else - { - points[i++] = first = FT_GET_BYTE(); - - for ( j = 0; j < runcnt; ++j ) - points[i++] = ( first += FT_GET_BYTE() ); - } - } - - return points; - } - - - enum - { - GX_DT_DELTAS_ARE_ZERO = 0x80, - GX_DT_DELTAS_ARE_WORDS = 0x40, - GX_DT_DELTA_RUN_COUNT_MASK = 0x3F - }; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_var_readpackeddeltas */ - /* */ - /* <Description> */ - /* Read a set of deltas. These are packed slightly differently than */ - /* points. In particular there is no overall count. */ - /* */ - /* <Input> */ - /* stream :: The data stream. */ - /* */ - /* delta_cnt :: The number of to be read. */ - /* */ - /* <Return> */ - /* An array of FT_Short containing the deltas for the affected */ - /* points. (This only gets the deltas for one dimension. It will */ - /* generally be called twice, once for x, once for y. When used in */ - /* cvt table, it will only be called once.) */ - /* */ - static FT_Short* - ft_var_readpackeddeltas( FT_Stream stream, - FT_Int delta_cnt ) - { - FT_Short *deltas; - FT_Int runcnt; - FT_Int i; - FT_Int j; - FT_Memory memory = stream->memory; - FT_Error error; - - - if ( FT_NEW_ARRAY( deltas, delta_cnt ) ) - return NULL; - - i = 0; - while ( i < delta_cnt ) - { - runcnt = FT_GET_BYTE(); - if ( runcnt & GX_DT_DELTAS_ARE_ZERO ) - { - /* runcnt zeroes get added */ - for ( j = 0; - j <= ( runcnt & GX_DT_DELTA_RUN_COUNT_MASK ) && i < delta_cnt; - ++j ) - deltas[i++] = 0; - } - else if ( runcnt & GX_DT_DELTAS_ARE_WORDS ) - { - /* runcnt shorts from the stack */ - for ( j = 0; - j <= ( runcnt & GX_DT_DELTA_RUN_COUNT_MASK ) && i < delta_cnt; - ++j ) - deltas[i++] = FT_GET_SHORT(); - } - else - { - /* runcnt signed bytes from the stack */ - for ( j = 0; - j <= ( runcnt & GX_DT_DELTA_RUN_COUNT_MASK ) && i < delta_cnt; - ++j ) - deltas[i++] = FT_GET_CHAR(); - } - - if ( j <= ( runcnt & GX_DT_DELTA_RUN_COUNT_MASK ) ) - { - /* Bad format */ - FT_FREE( deltas ); - return NULL; - } - } - - return deltas; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_var_load_avar */ - /* */ - /* <Description> */ - /* Parse the `avar' table if present. It need not be, so we return */ - /* nothing. */ - /* */ - /* <InOut> */ - /* face :: The font face. */ - /* */ - static void - ft_var_load_avar( TT_Face face ) - { - FT_Stream stream = FT_FACE_STREAM(face); - FT_Memory memory = stream->memory; - GX_Blend blend = face->blend; - GX_AVarSegment segment; - FT_Error error; - FT_ULong version; - FT_Long axisCount; - FT_Int i, j; - FT_ULong table_len; - - - blend->avar_checked = TRUE; - if ( ( error = face->goto_table( face, TTAG_avar, stream, &table_len ) ) ) - return; - if ( FT_FRAME_ENTER( table_len ) ) - return; - - version = FT_GET_LONG(); - axisCount = FT_GET_LONG(); - - if ( version != 0x00010000L || - axisCount != (FT_Long)blend->mmvar->num_axis ) - goto Exit; - - if ( FT_NEW_ARRAY( blend->avar_segment, axisCount ) ) - goto Exit; - - segment = &blend->avar_segment[0]; - for ( i = 0; i < axisCount; ++i, ++segment ) - { - segment->pairCount = FT_GET_USHORT(); - if ( FT_NEW_ARRAY( segment->correspondence, segment->pairCount ) ) - { - /* Failure. Free everything we have done so far. We must do */ - /* it right now since loading the `avar' table is optional. */ - - for ( j = i - 1; j >= 0; --j ) - FT_FREE( blend->avar_segment[j].correspondence ); - - FT_FREE( blend->avar_segment ); - blend->avar_segment = NULL; - goto Exit; - } - - for ( j = 0; j < segment->pairCount; ++j ) - { - segment->correspondence[j].fromCoord = - FT_GET_SHORT() << 2; /* convert to Fixed */ - segment->correspondence[j].toCoord = - FT_GET_SHORT()<<2; /* convert to Fixed */ - } - } - - Exit: - FT_FRAME_EXIT(); - } - - - typedef struct GX_GVar_Head_ { - FT_Long version; - FT_UShort axisCount; - FT_UShort globalCoordCount; - FT_ULong offsetToCoord; - FT_UShort glyphCount; - FT_UShort flags; - FT_ULong offsetToData; - - } GX_GVar_Head; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_var_load_gvar */ - /* */ - /* <Description> */ - /* Parses the `gvar' table if present. If `fvar' is there, `gvar' */ - /* had better be there too. */ - /* */ - /* <InOut> */ - /* face :: The font face. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - ft_var_load_gvar( TT_Face face ) - { - FT_Stream stream = FT_FACE_STREAM(face); - FT_Memory memory = stream->memory; - GX_Blend blend = face->blend; - FT_Error error; - FT_UInt i, j; - FT_ULong table_len; - FT_ULong gvar_start; - FT_ULong offsetToData; - GX_GVar_Head gvar_head; - - static const FT_Frame_Field gvar_fields[] = - { - -#undef FT_STRUCTURE -#define FT_STRUCTURE GX_GVar_Head - - FT_FRAME_START( 20 ), - FT_FRAME_LONG ( version ), - FT_FRAME_USHORT( axisCount ), - FT_FRAME_USHORT( globalCoordCount ), - FT_FRAME_ULONG ( offsetToCoord ), - FT_FRAME_USHORT( glyphCount ), - FT_FRAME_USHORT( flags ), - FT_FRAME_ULONG ( offsetToData ), - FT_FRAME_END - }; - - if ( ( error = face->goto_table( face, TTAG_gvar, stream, &table_len ) ) ) - goto Exit; - - gvar_start = FT_STREAM_POS( ); - if ( FT_STREAM_READ_FIELDS( gvar_fields, &gvar_head ) ) - goto Exit; - - blend->tuplecount = gvar_head.globalCoordCount; - blend->gv_glyphcnt = gvar_head.glyphCount; - offsetToData = gvar_start + gvar_head.offsetToData; - - if ( gvar_head.version != 0x00010000L || - gvar_head.axisCount != blend->mmvar->num_axis ) - { - error = TT_Err_Invalid_Table; - goto Exit; - } - - if ( FT_NEW_ARRAY( blend->glyphoffsets, blend->gv_glyphcnt + 1 ) ) - goto Exit; - - if ( gvar_head.flags & 1 ) - { - /* long offsets (one more offset than glyphs, to mark size of last) */ - if ( FT_FRAME_ENTER( ( blend->gv_glyphcnt + 1 ) * 4L ) ) - goto Exit; - - for ( i = 0; i <= blend->gv_glyphcnt; ++i ) - blend->glyphoffsets[i] = offsetToData + FT_GET_LONG(); - - FT_FRAME_EXIT(); - } - else - { - /* short offsets (one more offset than glyphs, to mark size of last) */ - if ( FT_FRAME_ENTER( ( blend->gv_glyphcnt + 1 ) * 2L ) ) - goto Exit; - - for ( i = 0; i <= blend->gv_glyphcnt; ++i ) - blend->glyphoffsets[i] = offsetToData + FT_GET_USHORT() * 2; - /* XXX: Undocumented: `*2'! */ - - FT_FRAME_EXIT(); - } - - if ( blend->tuplecount != 0 ) - { - if ( FT_NEW_ARRAY( blend->tuplecoords, - gvar_head.axisCount * blend->tuplecount ) ) - goto Exit; - - if ( FT_STREAM_SEEK( gvar_start + gvar_head.offsetToCoord ) || - FT_FRAME_ENTER( blend->tuplecount * gvar_head.axisCount * 2L ) ) - goto Exit; - - for ( i = 0; i < blend->tuplecount; ++i ) - for ( j = 0 ; j < gvar_head.axisCount; ++j ) - blend->tuplecoords[i * gvar_head.axisCount + j] = - FT_GET_SHORT() << 2; /* convert to FT_Fixed */ - - FT_FRAME_EXIT(); - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* ft_var_apply_tuple */ - /* */ - /* <Description> */ - /* Figure out whether a given tuple (design) applies to the current */ - /* blend, and if so, what is the scaling factor. */ - /* */ - /* <Input> */ - /* blend :: The current blend of the font. */ - /* */ - /* tupleIndex :: A flag saying whether this is an intermediate */ - /* tuple or not. */ - /* */ - /* tuple_coords :: The coordinates of the tuple in normalized axis */ - /* units. */ - /* */ - /* im_start_coords :: The initial coordinates where this tuple starts */ - /* to apply (for intermediate coordinates). */ - /* */ - /* im_end_coords :: The final coordinates after which this tuple no */ - /* longer applies (for intermediate coordinates). */ - /* */ - /* <Return> */ - /* An FT_Fixed value containing the scaling factor. */ - /* */ - static FT_Fixed - ft_var_apply_tuple( GX_Blend blend, - FT_UShort tupleIndex, - FT_Fixed* tuple_coords, - FT_Fixed* im_start_coords, - FT_Fixed* im_end_coords ) - { - FT_UInt i; - FT_Fixed apply; - FT_Fixed temp; - - - apply = 0x10000L; - for ( i = 0; i < blend->num_axis; ++i ) - { - if ( tuple_coords[i] == 0 ) - /* It's not clear why (for intermediate tuples) we don't need */ - /* to check against start/end -- the documentation says we don't. */ - /* Similarly, it's unclear why we don't need to scale along the */ - /* axis. */ - continue; - - else if ( blend->normalizedcoords[i] == 0 || - ( blend->normalizedcoords[i] < 0 && tuple_coords[i] > 0 ) || - ( blend->normalizedcoords[i] > 0 && tuple_coords[i] < 0 ) ) - { - apply = 0; - break; - } - - else if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) ) - /* not an intermediate tuple */ - apply = FT_MulDiv( apply, - blend->normalizedcoords[i] > 0 - ? blend->normalizedcoords[i] - : -blend->normalizedcoords[i], - 0x10000L ); - - else if ( blend->normalizedcoords[i] <= im_start_coords[i] || - blend->normalizedcoords[i] >= im_end_coords[i] ) - { - apply = 0; - break; - } - - else if ( blend->normalizedcoords[i] < tuple_coords[i] ) - { - temp = FT_MulDiv( blend->normalizedcoords[i] - im_start_coords[i], - 0x10000L, - tuple_coords[i] - im_start_coords[i]); - apply = FT_MulDiv( apply, temp, 0x10000L ); - } - - else - { - temp = FT_MulDiv( im_end_coords[i] - blend->normalizedcoords[i], - 0x10000L, - im_end_coords[i] - tuple_coords[i] ); - apply = FT_MulDiv( apply, temp, 0x10000L ); - } - } - - return apply; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** MULTIPLE MASTERS SERVICE FUNCTIONS *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - typedef struct GX_FVar_Head_ { - FT_Long version; - FT_UShort offsetToData; - FT_UShort countSizePairs; - FT_UShort axisCount; - FT_UShort axisSize; - FT_UShort instanceCount; - FT_UShort instanceSize; - - } GX_FVar_Head; - - - typedef struct fvar_axis { - FT_ULong axisTag; - FT_ULong minValue; - FT_ULong defaultValue; - FT_ULong maxValue; - FT_UShort flags; - FT_UShort nameID; - - } GX_FVar_Axis; - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Get_MM_Var */ - /* */ - /* <Description> */ - /* Check that the font's `fvar' table is valid, parse it, and return */ - /* those data. */ - /* */ - /* <InOut> */ - /* face :: The font face. */ - /* TT_Get_MM_Var initializes the blend structure. */ - /* */ - /* <Output> */ - /* master :: The `fvar' data (must be freed by caller). */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Get_MM_Var( TT_Face face, - FT_MM_Var* *master ) - { - FT_Stream stream = face->root.stream; - FT_Memory memory = face->root.memory; - FT_ULong table_len; - FT_Error error = TT_Err_Ok; - FT_ULong fvar_start; - FT_Int i, j; - FT_MM_Var* mmvar; - FT_Fixed* next_coords; - FT_String* next_name; - FT_Var_Axis* a; - FT_Var_Named_Style* ns; - GX_FVar_Head fvar_head; - - static const FT_Frame_Field fvar_fields[] = - { - -#undef FT_STRUCTURE -#define FT_STRUCTURE GX_FVar_Head - - FT_FRAME_START( 16 ), - FT_FRAME_LONG ( version ), - FT_FRAME_USHORT( offsetToData ), - FT_FRAME_USHORT( countSizePairs ), - FT_FRAME_USHORT( axisCount ), - FT_FRAME_USHORT( axisSize ), - FT_FRAME_USHORT( instanceCount ), - FT_FRAME_USHORT( instanceSize ), - FT_FRAME_END - }; - - static const FT_Frame_Field fvaraxis_fields[] = - { - -#undef FT_STRUCTURE -#define FT_STRUCTURE GX_FVar_Axis - - FT_FRAME_START( 20 ), - FT_FRAME_ULONG ( axisTag ), - FT_FRAME_ULONG ( minValue ), - FT_FRAME_ULONG ( defaultValue ), - FT_FRAME_ULONG ( maxValue ), - FT_FRAME_USHORT( flags ), - FT_FRAME_USHORT( nameID ), - FT_FRAME_END - }; - - - if ( face->blend == NULL ) - { - /* both `fvar' and `gvar' must be present */ - if ( ( error = face->goto_table( face, TTAG_gvar, - stream, &table_len ) ) ) - goto Exit; - if ( ( error = face->goto_table( face, TTAG_fvar, - stream, &table_len ) ) ) - goto Exit; - - fvar_start = FT_STREAM_POS( ); - - if ( FT_STREAM_READ_FIELDS( fvar_fields, &fvar_head ) ) - goto Exit; - - if ( fvar_head.version != 0x00010000UL || - fvar_head.countSizePairs != 2 || - fvar_head.axisSize != 20 || - fvar_head.instanceSize != 4 + 4 * fvar_head.axisCount || - fvar_head.offsetToData + fvar_head.axisCount * 20U + - fvar_head.instanceCount * fvar_head.instanceSize > table_len ) - { - error = TT_Err_Invalid_Table; - goto Exit; - } - - if ( FT_ALLOC( face->blend, sizeof ( GX_BlendRec ) ) ) - goto Exit; - - face->blend->mmvar_len = - sizeof ( FT_MM_Var ) + - fvar_head.axisCount * sizeof ( FT_Var_Axis ) + - fvar_head.instanceCount * sizeof ( FT_Var_Named_Style ) + - fvar_head.instanceCount * fvar_head.axisCount * sizeof ( FT_Fixed ) + - 5 * fvar_head.axisCount; - if ( FT_ALLOC( mmvar, face->blend->mmvar_len ) ) - goto Exit; - face->blend->mmvar = mmvar; - - mmvar->num_axis = - fvar_head.axisCount; - mmvar->num_designs = - (FT_UInt)-1; /* meaningless in this context; each glyph */ - /* may have a different number of designs */ - /* (or tuples, as called by Apple) */ - mmvar->num_namedstyles = - fvar_head.instanceCount; - mmvar->axis = - (FT_Var_Axis*)&(mmvar[1]); - mmvar->namedstyle = - (FT_Var_Named_Style*)&(mmvar->axis[fvar_head.axisCount]); - - next_coords = - (FT_Fixed*)&(mmvar->namedstyle[fvar_head.instanceCount]); - for ( i = 0; i < fvar_head.instanceCount; ++i ) - { - mmvar->namedstyle[i].coords = next_coords; - next_coords += fvar_head.axisCount; - } - - next_name = (FT_String*)next_coords; - for ( i = 0; i < fvar_head.axisCount; ++i ) - { - mmvar->axis[i].name = next_name; - next_name += 5; - } - - if ( FT_STREAM_SEEK( fvar_start + fvar_head.offsetToData ) ) - goto Exit; - - a = mmvar->axis; - for ( i = 0; i < fvar_head.axisCount; ++i ) - { - GX_FVar_Axis axis_rec; - - - if ( FT_STREAM_READ_FIELDS( fvaraxis_fields, &axis_rec ) ) - goto Exit; - a->tag = axis_rec.axisTag; - a->minimum = axis_rec.minValue; /* A Fixed */ - a->def = axis_rec.defaultValue; /* A Fixed */ - a->maximum = axis_rec.maxValue; /* A Fixed */ - a->strid = axis_rec.nameID; - - a->name[0] = a->tag >> 24; - a->name[1] = ( a->tag >> 16 ) & 0xFF; - a->name[2] = ( a->tag >> 8 ) & 0xFF; - a->name[3] = ( a->tag ) & 0xFF; - a->name[4] = 0; - - ++a; - } - - ns = mmvar->namedstyle; - for ( i = 0; i < fvar_head.instanceCount; ++i ) - { - if ( FT_FRAME_ENTER( 4L + 4L * fvar_head.axisCount ) ) - goto Exit; - - ns->strid = FT_GET_USHORT(); - (void) /* flags = */ FT_GET_USHORT(); - - for ( j = 0; j < fvar_head.axisCount; ++j ) - ns->coords[j] = FT_GET_ULONG(); /* A Fixed */ - - FT_FRAME_EXIT(); - } - } - - if ( master != NULL ) - { - FT_UInt n; - - - if ( FT_ALLOC( mmvar, face->blend->mmvar_len ) ) - goto Exit; - FT_MEM_COPY( mmvar, face->blend->mmvar, face->blend->mmvar_len ); - - mmvar->axis = - (FT_Var_Axis*)&(mmvar[1]); - mmvar->namedstyle = - (FT_Var_Named_Style*)&(mmvar->axis[mmvar->num_axis]); - next_coords = - (FT_Fixed*)&(mmvar->namedstyle[mmvar->num_namedstyles]); - - for ( n = 0; n < mmvar->num_namedstyles; ++n ) - { - mmvar->namedstyle[n].coords = next_coords; - next_coords += mmvar->num_axis; - } - - a = mmvar->axis; - next_name = (FT_String*)next_coords; - for ( n = 0; n < mmvar->num_axis; ++n ) - { - a->name = next_name; - - /* standard PostScript names for some standard apple tags */ - if ( a->tag == TTAG_wght ) - a->name = (char *)"Weight"; - else if ( a->tag == TTAG_wdth ) - a->name = (char *)"Width"; - else if ( a->tag == TTAG_opsz ) - a->name = (char *)"OpticalSize"; - else if ( a->tag == TTAG_slnt ) - a->name = (char *)"Slant"; - - next_name += 5; - ++a; - } - - *master = mmvar; - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Set_MM_Blend */ - /* */ - /* <Description> */ - /* Set the blend (normalized) coordinates for this instance of the */ - /* font. Check that the `gvar' table is reasonable and does some */ - /* initial preparation. */ - /* */ - /* <InOut> */ - /* face :: The font. */ - /* Initialize the blend structure with `gvar' data. */ - /* */ - /* <Input> */ - /* num_coords :: Must be the axis count of the font. */ - /* */ - /* coords :: An array of num_coords, each between [-1,1]. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Set_MM_Blend( TT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ) - { - FT_Error error = TT_Err_Ok; - GX_Blend blend; - FT_MM_Var* mmvar; - FT_UInt i; - FT_Memory memory = face->root.memory; - - enum - { - mcvt_retain, - mcvt_modify, - mcvt_load - - } manageCvt; - - - face->doblend = FALSE; - - if ( face->blend == NULL ) - { - if ( ( error = TT_Get_MM_Var( face, NULL) ) ) - goto Exit; - } - - blend = face->blend; - mmvar = blend->mmvar; - - if ( num_coords != mmvar->num_axis ) - { - error = TT_Err_Invalid_Argument; - goto Exit; - } - - for ( i = 0; i < num_coords; ++i ) - if ( coords[i] < -0x00010000L || coords[i] > 0x00010000L ) - { - error = TT_Err_Invalid_Argument; - goto Exit; - } - - if ( blend->glyphoffsets == NULL ) - if ( ( error = ft_var_load_gvar( face ) ) ) - goto Exit; - - if ( blend->normalizedcoords == NULL ) - { - if ( FT_NEW_ARRAY( blend->normalizedcoords, num_coords ) ) - goto Exit; - - manageCvt = mcvt_modify; - - /* If we have not set the blend coordinates before this, then the */ - /* cvt table will still be what we read from the `cvt ' table and */ - /* we don't need to reload it. We may need to change it though... */ - } - else - { - for ( i = 0; - i < num_coords && blend->normalizedcoords[i] == coords[i]; - ++i ); - if ( i == num_coords ) - manageCvt = mcvt_retain; - else - manageCvt = mcvt_load; - - /* If we don't change the blend coords then we don't need to do */ - /* anything to the cvt table. It will be correct. Otherwise we */ - /* no longer have the original cvt (it was modified when we set */ - /* the blend last time), so we must reload and then modify it. */ - } - - blend->num_axis = num_coords; - FT_MEM_COPY( blend->normalizedcoords, - coords, - num_coords * sizeof ( FT_Fixed ) ); - - face->doblend = TRUE; - - if ( face->cvt != NULL ) - { - switch ( manageCvt ) - { - case mcvt_load: - /* The cvt table has been loaded already; every time we change the */ - /* blend we may need to reload and remodify the cvt table. */ - FT_FREE( face->cvt ); - face->cvt = NULL; - - tt_face_load_cvt( face, face->root.stream ); - break; - - case mcvt_modify: - /* The original cvt table is in memory. All we need to do is */ - /* apply the `cvar' table (if any). */ - tt_face_vary_cvt( face, face->root.stream ); - break; - - case mcvt_retain: - /* The cvt table is correct for this set of coordinates. */ - break; - } - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Set_Var_Design */ - /* */ - /* <Description> */ - /* Set the coordinates for the instance, measured in the user */ - /* coordinate system. Parse the `avar' table (if present) to convert */ - /* from user to normalized coordinates. */ - /* */ - /* <InOut> */ - /* face :: The font face. */ - /* Initialize the blend struct with `gvar' data. */ - /* */ - /* <Input> */ - /* num_coords :: This must be the axis count of the font. */ - /* */ - /* coords :: A coordinate array with `num_coords' elements. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Set_Var_Design( TT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ) - { - FT_Error error = TT_Err_Ok; - FT_Fixed* normalized = NULL; - GX_Blend blend; - FT_MM_Var* mmvar; - FT_UInt i, j; - FT_Var_Axis* a; - GX_AVarSegment av; - FT_Memory memory = face->root.memory; - - - if ( face->blend == NULL ) - { - if ( ( error = TT_Get_MM_Var( face, NULL ) ) ) - goto Exit; - } - - blend = face->blend; - mmvar = blend->mmvar; - - if ( num_coords != mmvar->num_axis ) - { - error = TT_Err_Invalid_Argument; - goto Exit; - } - - /* Axis normalization is a two stage process. First we normalize */ - /* based on the [min,def,max] values for the axis to be [-1,0,1]. */ - /* Then, if there's an `avar' table, we renormalize this range. */ - - if ( FT_NEW_ARRAY( normalized, mmvar->num_axis ) ) - goto Exit; - - a = mmvar->axis; - for ( i = 0; i < mmvar->num_axis; ++i, ++a ) - { - if ( coords[i] > a->maximum || coords[i] < a->minimum ) - { - error = TT_Err_Invalid_Argument; - goto Exit; - } - - if ( coords[i] < a->def ) - { - normalized[i] = -FT_MulDiv( coords[i] - a->def, - 0x10000L, - a->minimum - a->def ); - } - else if ( a->maximum == a->def ) - normalized[i] = 0; - else - { - normalized[i] = FT_MulDiv( coords[i] - a->def, - 0x10000L, - a->maximum - a->def ); - } - } - - if ( !blend->avar_checked ) - ft_var_load_avar( face ); - - if ( blend->avar_segment != NULL ) - { - av = blend->avar_segment; - for ( i = 0; i < mmvar->num_axis; ++i, ++av ) - { - for ( j = 1; j < av->pairCount; ++j ) - if ( normalized[i] < av->correspondence[j].fromCoord ) - { - normalized[i] = - FT_MulDiv( - FT_MulDiv( - normalized[i] - av->correspondence[j - 1].fromCoord, - 0x10000L, - av->correspondence[j].fromCoord - - av->correspondence[j - 1].fromCoord ), - av->correspondence[j].toCoord - - av->correspondence[j - 1].toCoord, - 0x10000L ) + - av->correspondence[j - 1].toCoord; - break; - } - } - } - - error = TT_Set_MM_Blend( face, num_coords, normalized ); - - Exit: - FT_FREE( normalized ); - return error; - } - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** GX VAR PARSING ROUTINES *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_vary_cvt */ - /* */ - /* <Description> */ - /* Modify the loaded cvt table according to the `cvar' table and the */ - /* font's blend. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* stream :: A handle to the input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* Most errors are ignored. It is perfectly valid not to have a */ - /* `cvar' table even if there is a `gvar' and `fvar' table. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_vary_cvt( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_ULong table_start; - FT_ULong table_len; - FT_UInt tupleCount; - FT_ULong offsetToData; - FT_ULong here; - FT_UInt i, j; - FT_Fixed* tuple_coords = NULL; - FT_Fixed* im_start_coords = NULL; - FT_Fixed* im_end_coords = NULL; - GX_Blend blend = face->blend; - FT_UInt point_count; - FT_UShort* localpoints; - FT_Short* deltas; - - - FT_TRACE2(( "CVAR " )); - - if ( blend == NULL ) - { - FT_TRACE2(( "no blend specified!\n" )); - - error = TT_Err_Ok; - goto Exit; - } - - if ( face->cvt == NULL ) - { - FT_TRACE2(( "no `cvt ' table!\n" )); - - error = TT_Err_Ok; - goto Exit; - } - - error = face->goto_table( face, TTAG_cvar, stream, &table_len ); - if ( error ) - { - FT_TRACE2(( "is missing!\n" )); - - error = TT_Err_Ok; - goto Exit; - } - - if ( FT_FRAME_ENTER( table_len ) ) - { - error = TT_Err_Ok; - goto Exit; - } - - table_start = FT_Stream_FTell( stream ); - if ( FT_GET_LONG() != 0x00010000L ) - { - FT_TRACE2(( "bad table version!\n" )); - - error = TT_Err_Ok; - goto FExit; - } - - if ( FT_NEW_ARRAY( tuple_coords, blend->num_axis ) || - FT_NEW_ARRAY( im_start_coords, blend->num_axis ) || - FT_NEW_ARRAY( im_end_coords, blend->num_axis ) ) - goto FExit; - - tupleCount = FT_GET_USHORT(); - offsetToData = table_start + FT_GET_USHORT(); - - /* The documentation implies there are flags packed into the */ - /* tuplecount, but John Jenkins says that shared points don't apply */ - /* to `cvar', and no other flags are defined. */ - - for ( i = 0; i < ( tupleCount & 0xFFF ); ++i ) - { - FT_UInt tupleDataSize; - FT_UInt tupleIndex; - FT_Fixed apply; - - - tupleDataSize = FT_GET_USHORT(); - tupleIndex = FT_GET_USHORT(); - - /* There is no provision here for a global tuple coordinate section, */ - /* so John says. There are no tuple indices, just embedded tuples. */ - - if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD ) - { - for ( j = 0; j < blend->num_axis; ++j ) - tuple_coords[j] = FT_GET_SHORT() << 2; /* convert from */ - /* short frac to fixed */ - } - else - { - /* skip this tuple; it makes no sense */ - - if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) - for ( j = 0; j < 2 * blend->num_axis; ++j ) - (void)FT_GET_SHORT(); - - offsetToData += tupleDataSize; - continue; - } - - if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) - { - for ( j = 0; j < blend->num_axis; ++j ) - im_start_coords[j] = FT_GET_SHORT() << 2; - for ( j = 0; j < blend->num_axis; ++j ) - im_end_coords[j] = FT_GET_SHORT() << 2; - } - - apply = ft_var_apply_tuple( blend, - tupleIndex, - tuple_coords, - im_start_coords, - im_end_coords ); - if ( /* tuple isn't active for our blend */ - apply == 0 || - /* global points not allowed, */ - /* if they aren't local, makes no sense */ - !( tupleIndex & GX_TI_PRIVATE_POINT_NUMBERS ) ) - { - offsetToData += tupleDataSize; - continue; - } - - here = FT_Stream_FTell( stream ); - - FT_Stream_SeekSet( stream, offsetToData ); - - localpoints = ft_var_readpackedpoints( stream, &point_count ); - deltas = ft_var_readpackeddeltas( stream, - point_count == 0 ? face->cvt_size - : point_count ); - if ( localpoints == NULL || deltas == NULL ) - /* failure, ignore it */; - - else if ( localpoints == ALL_POINTS ) - { - /* this means that there are deltas for every entry in cvt */ - for ( j = 0; j < face->cvt_size; ++j ) - face->cvt[j] += FT_MulFix( deltas[j], apply ); - } - - else - { - for ( j = 0; j < point_count; ++j ) - face->cvt[localpoints[j]] += FT_MulFix( deltas[j], apply ); - } - - if ( localpoints != ALL_POINTS ) - FT_FREE( localpoints ); - FT_FREE( deltas ); - - offsetToData += tupleDataSize; - - FT_Stream_SeekSet( stream, here ); - } - - FExit: - FT_FRAME_EXIT(); - - Exit: - FT_FREE( tuple_coords ); - FT_FREE( im_start_coords ); - FT_FREE( im_end_coords ); - - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Vary_Get_Glyph_Deltas */ - /* */ - /* <Description> */ - /* Load the appropriate deltas for the current glyph. */ - /* */ - /* <Input> */ - /* face :: A handle to the target face object. */ - /* */ - /* glyph_index :: The index of the glyph being modified. */ - /* */ - /* n_points :: The number of the points in the glyph, including */ - /* phantom points. */ - /* */ - /* <Output> */ - /* deltas :: The array of points to change. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Vary_Get_Glyph_Deltas( TT_Face face, - FT_UInt glyph_index, - FT_Vector* *deltas, - FT_UInt n_points ) - { - FT_Stream stream = face->root.stream; - FT_Memory memory = stream->memory; - GX_Blend blend = face->blend; - FT_Vector* delta_xy; - - FT_Error error; - FT_ULong glyph_start; - FT_UInt tupleCount; - FT_ULong offsetToData; - FT_ULong here; - FT_UInt i, j; - FT_Fixed* tuple_coords = NULL; - FT_Fixed* im_start_coords = NULL; - FT_Fixed* im_end_coords = NULL; - FT_UInt point_count, spoint_count = 0; - FT_UShort* sharedpoints = NULL; - FT_UShort* localpoints; - FT_UShort* points; - FT_Short *deltas_x, *deltas_y; - - - if ( !face->doblend || blend == NULL ) - return TT_Err_Invalid_Argument; - - /* to be freed by the caller */ - if ( ( error = FT_NEW_ARRAY( delta_xy, n_points ) ) ) - goto Exit; - *deltas = delta_xy; - - if ( glyph_index >= blend->gv_glyphcnt || - blend->glyphoffsets[glyph_index] == - blend->glyphoffsets[glyph_index + 1] ) - return TT_Err_Ok; /* no variation data for this glyph */ - - if ( FT_STREAM_SEEK( blend->glyphoffsets[glyph_index] ) || - FT_FRAME_ENTER( blend->glyphoffsets[glyph_index + 1] - - blend->glyphoffsets[glyph_index] ) ) - goto Fail1; - - glyph_start = FT_Stream_FTell( stream ); - - /* each set of glyph variation data is formatted similarly to `cvar' */ - /* (except we get shared points and global tuples) */ - - if ( FT_NEW_ARRAY( tuple_coords, blend->num_axis ) || - FT_NEW_ARRAY( im_start_coords, blend->num_axis ) || - FT_NEW_ARRAY( im_end_coords, blend->num_axis ) ) - goto Fail2; - - tupleCount = FT_GET_USHORT(); - offsetToData = glyph_start + FT_GET_USHORT(); - - if ( tupleCount & GX_TC_TUPLES_SHARE_POINT_NUMBERS ) - { - here = FT_Stream_FTell( stream ); - - FT_Stream_SeekSet( stream, offsetToData ); - - sharedpoints = ft_var_readpackedpoints( stream, &spoint_count ); - offsetToData = FT_Stream_FTell( stream ); - - FT_Stream_SeekSet( stream, here ); - } - - for ( i = 0; i < ( tupleCount & GX_TC_TUPLE_COUNT_MASK ); ++i ) - { - FT_UInt tupleDataSize; - FT_UInt tupleIndex; - FT_Fixed apply; - - - tupleDataSize = FT_GET_USHORT(); - tupleIndex = FT_GET_USHORT(); - - if ( tupleIndex & GX_TI_EMBEDDED_TUPLE_COORD ) - { - for ( j = 0; j < blend->num_axis; ++j ) - tuple_coords[j] = FT_GET_SHORT() << 2; /* convert from */ - /* short frac to fixed */ - } - else if ( ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) >= blend->tuplecount ) - { - error = TT_Err_Invalid_Table; - goto Fail3; - } - else - { - FT_MEM_COPY( - tuple_coords, - &blend->tuplecoords[(tupleIndex & 0xFFF) * blend->num_axis], - blend->num_axis * sizeof ( FT_Fixed ) ); - } - - if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) - { - for ( j = 0; j < blend->num_axis; ++j ) - im_start_coords[j] = FT_GET_SHORT() << 2; - for ( j = 0; j < blend->num_axis; ++j ) - im_end_coords[j] = FT_GET_SHORT() << 2; - } - - apply = ft_var_apply_tuple( blend, - tupleIndex, - tuple_coords, - im_start_coords, - im_end_coords ); - - if ( apply == 0 ) /* tuple isn't active for our blend */ - { - offsetToData += tupleDataSize; - continue; - } - - here = FT_Stream_FTell( stream ); - - if ( tupleIndex & GX_TI_PRIVATE_POINT_NUMBERS ) - { - FT_Stream_SeekSet( stream, offsetToData ); - - localpoints = ft_var_readpackedpoints( stream, &point_count ); - points = localpoints; - } - else - { - points = sharedpoints; - point_count = spoint_count; - } - - deltas_x = ft_var_readpackeddeltas( stream, - point_count == 0 ? n_points - : point_count ); - deltas_y = ft_var_readpackeddeltas( stream, - point_count == 0 ? n_points - : point_count ); - - if ( points == NULL || deltas_y == NULL || deltas_x == NULL ) - ; /* failure, ignore it */ - - else if ( points == ALL_POINTS ) - { - /* this means that there are deltas for every point in the glyph */ - for ( j = 0; j < n_points; ++j ) - { - delta_xy[j].x += FT_MulFix( deltas_x[j], apply ); - delta_xy[j].y += FT_MulFix( deltas_y[j], apply ); - } - } - - else - { - for ( j = 0; j < point_count; ++j ) - { - delta_xy[localpoints[j]].x += FT_MulFix( deltas_x[j], apply ); - delta_xy[localpoints[j]].y += FT_MulFix( deltas_y[j], apply ); - } - } - - if ( localpoints != ALL_POINTS ) - FT_FREE( localpoints ); - FT_FREE( deltas_x ); - FT_FREE( deltas_y ); - - offsetToData += tupleDataSize; - - FT_Stream_SeekSet( stream, here ); - } - - Fail3: - FT_FREE( tuple_coords ); - FT_FREE( im_start_coords ); - FT_FREE( im_end_coords ); - - Fail2: - FT_FRAME_EXIT(); - - Fail1: - if ( error ) - { - FT_FREE( delta_xy ); - *deltas = NULL; - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_done_blend */ - /* */ - /* <Description> */ - /* Frees the blend internal data structure. */ - /* */ - FT_LOCAL_DEF( void ) - tt_done_blend( FT_Memory memory, - GX_Blend blend ) - { - if ( blend != NULL ) - { - FT_UInt i; - - - FT_FREE( blend->normalizedcoords ); - FT_FREE( blend->mmvar ); - - if ( blend->avar_segment != NULL ) - { - for ( i = 0; i < blend->num_axis; ++i ) - FT_FREE( blend->avar_segment[i].correspondence ); - FT_FREE( blend->avar_segment ); - } - - FT_FREE( blend->tuplecoords ); - FT_FREE( blend->glyphoffsets ); - FT_FREE( blend ); - } - } - -#endif /* TT_CONFIG_OPTION_GX_VAR_SUPPORT */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttgxvar.h b/nx-X11/extras/freetype2/src/truetype/ttgxvar.h deleted file mode 100644 index e86c7eecc..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttgxvar.h +++ /dev/null @@ -1,182 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttgxvar.h */ -/* */ -/* TrueType GX Font Variation loader (specification) */ -/* */ -/* Copyright 2004 by */ -/* David Turner, Robert Wilhelm, Werner Lemberg and George Williams. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTGXVAR_H__ -#define __TTGXVAR_H__ - - -#include <ft2build.h> -#include "ttobjs.h" - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* GX_AVarCorrespondenceRec */ - /* */ - /* <Description> */ - /* A data structure representing `shortFracCorrespondence' in `avar' */ - /* table according to the specifications from Apple. */ - /* */ - typedef struct GX_AVarCorrespondenceRec_ - { - FT_Fixed fromCoord; - FT_Fixed toCoord; - - } GX_AVarCorrespondenceRec_, *GX_AVarCorrespondence; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* GX_AVarRec */ - /* */ - /* <Description> */ - /* Data from the segment field of `avar' table. */ - /* There is one of these for each axis. */ - /* */ - typedef struct GX_AVarSegmentRec_ - { - FT_UShort pairCount; - GX_AVarCorrespondence correspondence; /* array with pairCount entries */ - - } GX_AVarSegmentRec, *GX_AVarSegment; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* GX_BlendRec */ - /* */ - /* <Description> */ - /* Data for interpolating a font from a distortable font specified */ - /* by the GX *var tables ([fgca]var). */ - /* */ - /* <Fields> */ - /* num_axis :: The number of axes along which interpolation */ - /* may happen */ - /* */ - /* normalizedcoords :: A normalized value (between [-1,1]) indicating */ - /* the contribution along each axis to the final */ - /* interpolated font. */ - /* */ - typedef struct GX_BlendRec_ - { - FT_UInt num_axis; - FT_Fixed* normalizedcoords; - - FT_MM_Var* mmvar; - FT_Int mmvar_len; - - FT_Bool avar_checked; - GX_AVarSegment avar_segment; - - FT_UInt tuplecount; /* shared tuples in `gvar' */ - FT_Fixed* tuplecoords; /* tuplecoords[tuplecount][num_axis] */ - - FT_UInt gv_glyphcnt; - FT_ULong* glyphoffsets; - - } GX_BlendRec; - - - /*************************************************************************/ - /* */ - /* <enum> */ - /* GX_TupleCountFlags */ - /* */ - /* <Description> */ - /* Flags used within the `TupleCount' field of the `gvar' table. */ - /* */ - typedef enum GX_TupleCountFlags_ - { - GX_TC_TUPLES_SHARE_POINT_NUMBERS = 0x8000, - GX_TC_RESERVED_TUPLE_FLAGS = 0x7000, - GX_TC_TUPLE_COUNT_MASK = 0x0FFF - - } GX_TupleCountFlags; - - - /*************************************************************************/ - /* */ - /* <enum> */ - /* GX_TupleIndexFlags */ - /* */ - /* <Description> */ - /* Flags used within the `TupleIndex' field of the `gvar' and `cvar' */ - /* tables. */ - /* */ - typedef enum GX_TupleIndexFlags_ - { - GX_TI_EMBEDDED_TUPLE_COORD = 0x8000, - GX_TI_INTERMEDIATE_TUPLE = 0x4000, - GX_TI_PRIVATE_POINT_NUMBERS = 0x2000, - GX_TI_RESERVED_TUPLE_FLAG = 0x1000, - GX_TI_TUPLE_INDEX_MASK = 0x0FFF - - } GX_TupleIndexFlags; - - -#define TTAG_wght FT_MAKE_TAG( 'w', 'g', 'h', 't' ) -#define TTAG_wdth FT_MAKE_TAG( 'w', 'd', 't', 'h' ) -#define TTAG_opsz FT_MAKE_TAG( 'o', 'p', 's', 'z' ) -#define TTAG_slnt FT_MAKE_TAG( 's', 'l', 'n', 't' ) - - - FT_LOCAL( FT_Error ) - TT_Set_MM_Blend( TT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - FT_LOCAL( FT_Error ) - TT_Set_Var_Design( TT_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - FT_LOCAL( FT_Error ) - TT_Get_MM_Var( TT_Face face, - FT_MM_Var* *master ); - - - FT_LOCAL( FT_Error ) - tt_face_vary_cvt( TT_Face face, - FT_Stream stream ); - - - FT_LOCAL( FT_Error ) - TT_Vary_Get_Glyph_Deltas( TT_Face face, - FT_UInt glyph_index, - FT_Vector* *deltas, - FT_UInt n_points ); - - - FT_LOCAL( void ) - tt_done_blend( FT_Memory memory, - GX_Blend blend ); - - -FT_END_HEADER - - -#endif /* __TTGXVAR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttinterp.c b/nx-X11/extras/freetype2/src/truetype/ttinterp.c deleted file mode 100644 index 889ebbf4f..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttinterp.c +++ /dev/null @@ -1,7742 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttinterp.c */ -/* */ -/* TrueType bytecode interpreter (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_TRIGONOMETRY_H -#include FT_SYSTEM_H - -#include "ttinterp.h" - -#include "tterrors.h" - - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - -#define TT_MULFIX FT_MulFix -#define TT_MULDIV FT_MulDiv -#define TT_MULDIV_NO_ROUND FT_MulDiv_No_Round - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttinterp - - /*************************************************************************/ - /* */ - /* In order to detect infinite loops in the code, we set up a counter */ - /* within the run loop. A single stroke of interpretation is now */ - /* limitet to a maximal number of opcodes defined below. */ - /* */ -#define MAX_RUNNABLE_OPCODES 1000000L - - - /*************************************************************************/ - /* */ - /* There are two kinds of implementations: */ - /* */ - /* a. static implementation */ - /* */ - /* The current execution context is a static variable, which fields */ - /* are accessed directly by the interpreter during execution. The */ - /* context is named `cur'. */ - /* */ - /* This version is non-reentrant, of course. */ - /* */ - /* b. indirect implementation */ - /* */ - /* The current execution context is passed to _each_ function as its */ - /* first argument, and each field is thus accessed indirectly. */ - /* */ - /* This version is fully re-entrant. */ - /* */ - /* The idea is that an indirect implementation may be slower to execute */ - /* on low-end processors that are used in some systems (like 386s or */ - /* even 486s). */ - /* */ - /* As a consequence, the indirect implementation is now the default, as */ - /* its performance costs can be considered negligible in our context. */ - /* Note, however, that we kept the same source with macros because: */ - /* */ - /* - The code is kept very close in design to the Pascal code used for */ - /* development. */ - /* */ - /* - It's much more readable that way! */ - /* */ - /* - It's still open to experimentation and tuning. */ - /* */ - /*************************************************************************/ - - -#ifndef TT_CONFIG_OPTION_STATIC_INTERPRETER /* indirect implementation */ - -#define CUR (*exc) /* see ttobjs.h */ - -#else /* static implementation */ - -#define CUR cur - - static - TT_ExecContextRec cur; /* static exec. context variable */ - - /* apparently, we have a _lot_ of direct indexing when accessing */ - /* the static `cur', which makes the code bigger (due to all the */ - /* four bytes addresses). */ - -#endif /* TT_CONFIG_OPTION_STATIC_INTERPRETER */ - - - /*************************************************************************/ - /* */ - /* The instruction argument stack. */ - /* */ -#define INS_ARG EXEC_OP_ FT_Long* args /* see ttobjs.h for EXEC_OP_ */ - - - /*************************************************************************/ - /* */ - /* This macro is used whenever `exec' is unused in a function, to avoid */ - /* stupid warnings from pedantic compilers. */ - /* */ -#define FT_UNUSED_EXEC FT_UNUSED( CUR ) - - - /*************************************************************************/ - /* */ - /* This macro is used whenever `args' is unused in a function, to avoid */ - /* stupid warnings from pedantic compilers. */ - /* */ -#define FT_UNUSED_ARG FT_UNUSED_EXEC; FT_UNUSED( args ) - - - /*************************************************************************/ - /* */ - /* The following macros hide the use of EXEC_ARG and EXEC_ARG_ to */ - /* increase readabilty of the code. */ - /* */ - /*************************************************************************/ - - -#define SKIP_Code() \ - SkipCode( EXEC_ARG ) - -#define GET_ShortIns() \ - GetShortIns( EXEC_ARG ) - -#define NORMalize( x, y, v ) \ - Normalize( EXEC_ARG_ x, y, v ) - -#define SET_SuperRound( scale, flags ) \ - SetSuperRound( EXEC_ARG_ scale, flags ) - -#define ROUND_None( d, c ) \ - Round_None( EXEC_ARG_ d, c ) - -#define INS_Goto_CodeRange( range, ip ) \ - Ins_Goto_CodeRange( EXEC_ARG_ range, ip ) - -#define CUR_Func_project( x, y ) \ - CUR.func_project( EXEC_ARG_ x, y ) - -#define CUR_Func_move( z, p, d ) \ - CUR.func_move( EXEC_ARG_ z, p, d ) - -#define CUR_Func_move_orig( z, p, d ) \ - CUR.func_move_orig( EXEC_ARG_ z, p, d ) - -#define CUR_Func_dualproj( x, y ) \ - CUR.func_dualproj( EXEC_ARG_ x, y ) - -#define CUR_Func_round( d, c ) \ - CUR.func_round( EXEC_ARG_ d, c ) - -#define CUR_Func_read_cvt( index ) \ - CUR.func_read_cvt( EXEC_ARG_ index ) - -#define CUR_Func_write_cvt( index, val ) \ - CUR.func_write_cvt( EXEC_ARG_ index, val ) - -#define CUR_Func_move_cvt( index, val ) \ - CUR.func_move_cvt( EXEC_ARG_ index, val ) - -#define CURRENT_Ratio() \ - Current_Ratio( EXEC_ARG ) - -#define CURRENT_Ppem() \ - Current_Ppem( EXEC_ARG ) - -#define CUR_Ppem() \ - Cur_PPEM( EXEC_ARG ) - -#define INS_SxVTL( a, b, c, d ) \ - Ins_SxVTL( EXEC_ARG_ a, b, c, d ) - -#define COMPUTE_Funcs() \ - Compute_Funcs( EXEC_ARG ) - -#define COMPUTE_Round( a ) \ - Compute_Round( EXEC_ARG_ a ) - -#define COMPUTE_Point_Displacement( a, b, c, d ) \ - Compute_Point_Displacement( EXEC_ARG_ a, b, c, d ) - -#define MOVE_Zp2_Point( a, b, c, t ) \ - Move_Zp2_Point( EXEC_ARG_ a, b, c, t ) - - - /*************************************************************************/ - /* */ - /* Instruction dispatch function, as used by the interpreter. */ - /* */ - typedef void (*TInstruction_Function)( INS_ARG ); - - - /*************************************************************************/ - /* */ - /* A simple bounds-checking macro. */ - /* */ -#define BOUNDS( x, n ) ( (FT_UInt)(x) >= (FT_UInt)(n) ) - -#undef SUCCESS -#define SUCCESS 0 - -#undef FAILURE -#define FAILURE 1 - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING -#define GUESS_VECTOR( V ) \ - if ( CUR.face->unpatented_hinting ) \ - { \ - CUR.GS.V.x = (FT_F2Dot14)( CUR.GS.both_x_axis ? 0x4000 : 0 ); \ - CUR.GS.V.y = (FT_F2Dot14)( CUR.GS.both_x_axis ? 0 : 0x4000 ); \ - } -#else -#define GUESS_VECTOR( V ) -#endif - - /*************************************************************************/ - /* */ - /* CODERANGE FUNCTIONS */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Goto_CodeRange */ - /* */ - /* <Description> */ - /* Switches to a new code range (updates the code related elements in */ - /* `exec', and `IP'). */ - /* */ - /* <Input> */ - /* range :: The new execution code range. */ - /* */ - /* IP :: The new IP in the new code range. */ - /* */ - /* <InOut> */ - /* exec :: The target execution context. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Goto_CodeRange( TT_ExecContext exec, - FT_Int range, - FT_Long IP ) - { - TT_CodeRange* coderange; - - - FT_ASSERT( range >= 1 && range <= 3 ); - - coderange = &exec->codeRangeTable[range - 1]; - - FT_ASSERT( coderange->base != NULL ); - - /* NOTE: Because the last instruction of a program may be a CALL */ - /* which will return to the first byte *after* the code */ - /* range, we test for IP <= Size instead of IP < Size. */ - /* */ - FT_ASSERT( (FT_ULong)IP <= coderange->size ); - - exec->code = coderange->base; - exec->codeSize = coderange->size; - exec->IP = IP; - exec->curRange = range; - - return TT_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Set_CodeRange */ - /* */ - /* <Description> */ - /* Sets a code range. */ - /* */ - /* <Input> */ - /* range :: The code range index. */ - /* */ - /* base :: The new code base. */ - /* */ - /* length :: The range size in bytes. */ - /* */ - /* <InOut> */ - /* exec :: The target execution context. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Set_CodeRange( TT_ExecContext exec, - FT_Int range, - void* base, - FT_Long length ) - { - FT_ASSERT( range >= 1 && range <= 3 ); - - exec->codeRangeTable[range - 1].base = (FT_Byte*)base; - exec->codeRangeTable[range - 1].size = length; - - return TT_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Clear_CodeRange */ - /* */ - /* <Description> */ - /* Clears a code range. */ - /* */ - /* <Input> */ - /* range :: The code range index. */ - /* */ - /* <InOut> */ - /* exec :: The target execution context. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Does not set the Error variable. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Clear_CodeRange( TT_ExecContext exec, - FT_Int range ) - { - FT_ASSERT( range >= 1 && range <= 3 ); - - exec->codeRangeTable[range - 1].base = NULL; - exec->codeRangeTable[range - 1].size = 0; - - return TT_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* EXECUTION CONTEXT ROUTINES */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Destroy_Context */ - /* */ - /* <Description> */ - /* Destroys a given context. */ - /* */ - /* <Input> */ - /* exec :: A handle to the target execution context. */ - /* */ - /* memory :: A handle to the parent memory object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only the glyph loader and debugger should call this function. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Destroy_Context( TT_ExecContext exec, - FT_Memory memory ) - { - /* free composite load stack */ - FT_FREE( exec->loadStack ); - exec->loadSize = 0; - - /* points zone */ - exec->maxPoints = 0; - exec->maxContours = 0; - - /* free stack */ - FT_FREE( exec->stack ); - exec->stackSize = 0; - - /* free call stack */ - FT_FREE( exec->callStack ); - exec->callSize = 0; - exec->callTop = 0; - - /* free glyph code range */ - FT_FREE( exec->glyphIns ); - exec->glyphSize = 0; - - exec->size = NULL; - exec->face = NULL; - - FT_FREE( exec ); - return TT_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Init_Context */ - /* */ - /* <Description> */ - /* Initializes a context object. */ - /* */ - /* <Input> */ - /* memory :: A handle to the parent memory object. */ - /* */ - /* face :: A handle to the source TrueType face object. */ - /* */ - /* <InOut> */ - /* exec :: A handle to the target execution context. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - Init_Context( TT_ExecContext exec, - TT_Face face, - FT_Memory memory ) - { - FT_Error error; - - - FT_TRACE1(( "Init_Context: new object at 0x%08p, parent = 0x%08p\n", - exec, face )); - - exec->memory = memory; - exec->callSize = 32; - - if ( FT_NEW_ARRAY( exec->callStack, exec->callSize ) ) - goto Fail_Memory; - - /* all values in the context are set to 0 already, but this is */ - /* here as a remainder */ - exec->maxPoints = 0; - exec->maxContours = 0; - - exec->stackSize = 0; - exec->loadSize = 0; - exec->glyphSize = 0; - - exec->stack = NULL; - exec->loadStack = NULL; - exec->glyphIns = NULL; - - exec->face = face; - exec->size = NULL; - - return TT_Err_Ok; - - Fail_Memory: - FT_ERROR(( "Init_Context: not enough memory for 0x%08lx\n", - (FT_Long)exec )); - TT_Destroy_Context( exec, memory ); - - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Update_Max */ - /* */ - /* <Description> */ - /* Checks the size of a buffer and reallocates it if necessary. */ - /* */ - /* <Input> */ - /* memory :: A handle to the parent memory object. */ - /* */ - /* multiplier :: The size in bytes of each element in the buffer. */ - /* */ - /* new_max :: The new capacity (size) of the buffer. */ - /* */ - /* <InOut> */ - /* size :: The address of the buffer's current size expressed */ - /* in elements. */ - /* */ - /* buff :: The address of the buffer base pointer. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - static FT_Error - Update_Max( FT_Memory memory, - FT_ULong* size, - FT_Long multiplier, - void** buff, - FT_ULong new_max ) - { - FT_Error error; - - - if ( *size < new_max ) - { - if ( FT_REALLOC( *buff, *size, new_max * multiplier ) ) - return error; - *size = new_max; - } - - return TT_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Load_Context */ - /* */ - /* <Description> */ - /* Prepare an execution context for glyph hinting. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* size :: A handle to the source size object. */ - /* */ - /* <InOut> */ - /* exec :: A handle to the target execution context. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only the glyph loader and debugger should call this function. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Load_Context( TT_ExecContext exec, - TT_Face face, - TT_Size size ) - { - FT_Int i; - FT_ULong tmp; - TT_MaxProfile* maxp; - FT_Error error; - - - exec->face = face; - maxp = &face->max_profile; - exec->size = size; - - if ( size ) - { - exec->numFDefs = size->num_function_defs; - exec->maxFDefs = size->max_function_defs; - exec->numIDefs = size->num_instruction_defs; - exec->maxIDefs = size->max_instruction_defs; - exec->FDefs = size->function_defs; - exec->IDefs = size->instruction_defs; - exec->tt_metrics = size->ttmetrics; - exec->metrics = size->metrics; - - exec->maxFunc = size->max_func; - exec->maxIns = size->max_ins; - - for ( i = 0; i < TT_MAX_CODE_RANGES; i++ ) - exec->codeRangeTable[i] = size->codeRangeTable[i]; - - /* set graphics state */ - exec->GS = size->GS; - - exec->cvtSize = size->cvt_size; - exec->cvt = size->cvt; - - exec->storeSize = size->storage_size; - exec->storage = size->storage; - - exec->twilight = size->twilight; - } - - error = Update_Max( exec->memory, - &exec->loadSize, - sizeof ( TT_SubGlyphRec ), - (void**)&exec->loadStack, - exec->face->max_components + 1 ); - if ( error ) - return error; - - /* XXX: We reserve a little more elements on the stack to deal safely */ - /* with broken fonts like arialbs, courbs, timesbs, etc. */ - tmp = exec->stackSize; - error = Update_Max( exec->memory, - &tmp, - sizeof ( FT_F26Dot6 ), - (void**)&exec->stack, - maxp->maxStackElements + 32 ); - exec->stackSize = (FT_UInt)tmp; - if ( error ) - return error; - - tmp = exec->glyphSize; - error = Update_Max( exec->memory, - &tmp, - sizeof ( FT_Byte ), - (void**)&exec->glyphIns, - maxp->maxSizeOfInstructions ); - exec->glyphSize = (FT_UShort)tmp; - if ( error ) - return error; - - exec->pts.n_points = 0; - exec->pts.n_contours = 0; - - exec->instruction_trap = FALSE; - - return TT_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Save_Context */ - /* */ - /* <Description> */ - /* Saves the code ranges in a `size' object. */ - /* */ - /* <Input> */ - /* exec :: A handle to the source execution context. */ - /* */ - /* <InOut> */ - /* size :: A handle to the target size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only the glyph loader and debugger should call this function. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Save_Context( TT_ExecContext exec, - TT_Size size ) - { - FT_Int i; - - - /* XXXX: Will probably disappear soon with all the code range */ - /* management, which is now rather obsolete. */ - /* */ - size->num_function_defs = exec->numFDefs; - size->num_instruction_defs = exec->numIDefs; - - size->max_func = exec->maxFunc; - size->max_ins = exec->maxIns; - - for ( i = 0; i < TT_MAX_CODE_RANGES; i++ ) - size->codeRangeTable[i] = exec->codeRangeTable[i]; - - return TT_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Run_Context */ - /* */ - /* <Description> */ - /* Executes one or more instructions in the execution context. */ - /* */ - /* <Input> */ - /* debug :: A Boolean flag. If set, the function sets some internal */ - /* variables and returns immediately, otherwise TT_RunIns() */ - /* is called. */ - /* */ - /* This is commented out currently. */ - /* */ - /* <Input> */ - /* exec :: A handle to the target execution context. */ - /* */ - /* <Return> */ - /* TrueTyoe error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only the glyph loader and debugger should call this function. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Run_Context( TT_ExecContext exec, - FT_Bool debug ) - { - FT_Error error; - - - if ( ( error = TT_Goto_CodeRange( exec, tt_coderange_glyph, 0 ) ) - != TT_Err_Ok ) - return error; - - exec->zp0 = exec->pts; - exec->zp1 = exec->pts; - exec->zp2 = exec->pts; - - exec->GS.gep0 = 1; - exec->GS.gep1 = 1; - exec->GS.gep2 = 1; - - exec->GS.projVector.x = 0x4000; - exec->GS.projVector.y = 0x0000; - - exec->GS.freeVector = exec->GS.projVector; - exec->GS.dualVector = exec->GS.projVector; - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - exec->GS.both_x_axis = TRUE; -#endif - - exec->GS.round_state = 1; - exec->GS.loop = 1; - - /* some glyphs leave something on the stack. so we clean it */ - /* before a new execution. */ - exec->top = 0; - exec->callTop = 0; - -#if 1 - FT_UNUSED( debug ); - - return exec->face->interpreter( exec ); -#else - if ( !debug ) - return TT_RunIns( exec ); - else - return TT_Err_Ok; -#endif - } - - - const TT_GraphicsState tt_default_graphics_state = - { - 0, 0, 0, - { 0x4000, 0 }, - { 0x4000, 0 }, - { 0x4000, 0 }, - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - TRUE, -#endif - - 1, 64, 1, - TRUE, 68, 0, 0, 9, 3, - 0, FALSE, 2, 1, 1, 1 - }; - - - /* documentation is in ttinterp.h */ - - FT_EXPORT_DEF( TT_ExecContext ) - TT_New_Context( TT_Face face ) - { - TT_Driver driver; - TT_ExecContext exec; - FT_Memory memory; - - - if ( !face ) - return 0; - - driver = (TT_Driver)face->root.driver; - - memory = driver->root.root.memory; - exec = driver->context; - - if ( !driver->context ) - { - FT_Error error; - - - /* allocate object */ - if ( FT_NEW( exec ) ) - goto Exit; - - /* initialize it */ - error = Init_Context( exec, face, memory ); - if ( error ) - goto Fail; - - /* store it into the driver */ - driver->context = exec; - } - - Exit: - return driver->context; - - Fail: - FT_FREE( exec ); - - return 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_Done_Context */ - /* */ - /* <Description> */ - /* Discards an execution context. */ - /* */ - /* <Input> */ - /* exec :: A handle to the target execution context. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only the glyph loader and debugger should call this function. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - TT_Done_Context( TT_ExecContext exec ) - { - /* Nothing at all for now */ - FT_UNUSED( exec ); - - return TT_Err_Ok; - } - - - - /*************************************************************************/ - /* */ - /* Before an opcode is executed, the interpreter verifies that there are */ - /* enough arguments on the stack, with the help of the Pop_Push_Count */ - /* table. */ - /* */ - /* For each opcode, the first column gives the number of arguments that */ - /* are popped from the stack; the second one gives the number of those */ - /* that are pushed in result. */ - /* */ - /* Note that for opcodes with a varying number of parameters, either 0 */ - /* or 1 arg is verified before execution, depending on the nature of the */ - /* instruction: */ - /* */ - /* - if the number of arguments is given by the bytecode stream or the */ - /* loop variable, 0 is chosen. */ - /* */ - /* - if the first argument is a count n that is followed by arguments */ - /* a1 .. an, then 1 is chosen. */ - /* */ - /*************************************************************************/ - - -#undef PACK -#define PACK( x, y ) ( ( x << 4 ) | y ) - - - static - const FT_Byte Pop_Push_Count[256] = - { - /* opcodes are gathered in groups of 16 */ - /* please keep the spaces as they are */ - - /* SVTCA y */ PACK( 0, 0 ), - /* SVTCA x */ PACK( 0, 0 ), - /* SPvTCA y */ PACK( 0, 0 ), - /* SPvTCA x */ PACK( 0, 0 ), - /* SFvTCA y */ PACK( 0, 0 ), - /* SFvTCA x */ PACK( 0, 0 ), - /* SPvTL // */ PACK( 2, 0 ), - /* SPvTL + */ PACK( 2, 0 ), - /* SFvTL // */ PACK( 2, 0 ), - /* SFvTL + */ PACK( 2, 0 ), - /* SPvFS */ PACK( 2, 0 ), - /* SFvFS */ PACK( 2, 0 ), - /* GPV */ PACK( 0, 2 ), - /* GFV */ PACK( 0, 2 ), - /* SFvTPv */ PACK( 0, 0 ), - /* ISECT */ PACK( 5, 0 ), - - /* SRP0 */ PACK( 1, 0 ), - /* SRP1 */ PACK( 1, 0 ), - /* SRP2 */ PACK( 1, 0 ), - /* SZP0 */ PACK( 1, 0 ), - /* SZP1 */ PACK( 1, 0 ), - /* SZP2 */ PACK( 1, 0 ), - /* SZPS */ PACK( 1, 0 ), - /* SLOOP */ PACK( 1, 0 ), - /* RTG */ PACK( 0, 0 ), - /* RTHG */ PACK( 0, 0 ), - /* SMD */ PACK( 1, 0 ), - /* ELSE */ PACK( 0, 0 ), - /* JMPR */ PACK( 1, 0 ), - /* SCvTCi */ PACK( 1, 0 ), - /* SSwCi */ PACK( 1, 0 ), - /* SSW */ PACK( 1, 0 ), - - /* DUP */ PACK( 1, 2 ), - /* POP */ PACK( 1, 0 ), - /* CLEAR */ PACK( 0, 0 ), - /* SWAP */ PACK( 2, 2 ), - /* DEPTH */ PACK( 0, 1 ), - /* CINDEX */ PACK( 1, 1 ), - /* MINDEX */ PACK( 1, 0 ), - /* AlignPTS */ PACK( 2, 0 ), - /* INS_$28 */ PACK( 0, 0 ), - /* UTP */ PACK( 1, 0 ), - /* LOOPCALL */ PACK( 2, 0 ), - /* CALL */ PACK( 1, 0 ), - /* FDEF */ PACK( 1, 0 ), - /* ENDF */ PACK( 0, 0 ), - /* MDAP[0] */ PACK( 1, 0 ), - /* MDAP[1] */ PACK( 1, 0 ), - - /* IUP[0] */ PACK( 0, 0 ), - /* IUP[1] */ PACK( 0, 0 ), - /* SHP[0] */ PACK( 0, 0 ), - /* SHP[1] */ PACK( 0, 0 ), - /* SHC[0] */ PACK( 1, 0 ), - /* SHC[1] */ PACK( 1, 0 ), - /* SHZ[0] */ PACK( 1, 0 ), - /* SHZ[1] */ PACK( 1, 0 ), - /* SHPIX */ PACK( 1, 0 ), - /* IP */ PACK( 0, 0 ), - /* MSIRP[0] */ PACK( 2, 0 ), - /* MSIRP[1] */ PACK( 2, 0 ), - /* AlignRP */ PACK( 0, 0 ), - /* RTDG */ PACK( 0, 0 ), - /* MIAP[0] */ PACK( 2, 0 ), - /* MIAP[1] */ PACK( 2, 0 ), - - /* NPushB */ PACK( 0, 0 ), - /* NPushW */ PACK( 0, 0 ), - /* WS */ PACK( 2, 0 ), - /* RS */ PACK( 1, 1 ), - /* WCvtP */ PACK( 2, 0 ), - /* RCvt */ PACK( 1, 1 ), - /* GC[0] */ PACK( 1, 1 ), - /* GC[1] */ PACK( 1, 1 ), - /* SCFS */ PACK( 2, 0 ), - /* MD[0] */ PACK( 2, 1 ), - /* MD[1] */ PACK( 2, 1 ), - /* MPPEM */ PACK( 0, 1 ), - /* MPS */ PACK( 0, 1 ), - /* FlipON */ PACK( 0, 0 ), - /* FlipOFF */ PACK( 0, 0 ), - /* DEBUG */ PACK( 1, 0 ), - - /* LT */ PACK( 2, 1 ), - /* LTEQ */ PACK( 2, 1 ), - /* GT */ PACK( 2, 1 ), - /* GTEQ */ PACK( 2, 1 ), - /* EQ */ PACK( 2, 1 ), - /* NEQ */ PACK( 2, 1 ), - /* ODD */ PACK( 1, 1 ), - /* EVEN */ PACK( 1, 1 ), - /* IF */ PACK( 1, 0 ), - /* EIF */ PACK( 0, 0 ), - /* AND */ PACK( 2, 1 ), - /* OR */ PACK( 2, 1 ), - /* NOT */ PACK( 1, 1 ), - /* DeltaP1 */ PACK( 1, 0 ), - /* SDB */ PACK( 1, 0 ), - /* SDS */ PACK( 1, 0 ), - - /* ADD */ PACK( 2, 1 ), - /* SUB */ PACK( 2, 1 ), - /* DIV */ PACK( 2, 1 ), - /* MUL */ PACK( 2, 1 ), - /* ABS */ PACK( 1, 1 ), - /* NEG */ PACK( 1, 1 ), - /* FLOOR */ PACK( 1, 1 ), - /* CEILING */ PACK( 1, 1 ), - /* ROUND[0] */ PACK( 1, 1 ), - /* ROUND[1] */ PACK( 1, 1 ), - /* ROUND[2] */ PACK( 1, 1 ), - /* ROUND[3] */ PACK( 1, 1 ), - /* NROUND[0] */ PACK( 1, 1 ), - /* NROUND[1] */ PACK( 1, 1 ), - /* NROUND[2] */ PACK( 1, 1 ), - /* NROUND[3] */ PACK( 1, 1 ), - - /* WCvtF */ PACK( 2, 0 ), - /* DeltaP2 */ PACK( 1, 0 ), - /* DeltaP3 */ PACK( 1, 0 ), - /* DeltaCn[0] */ PACK( 1, 0 ), - /* DeltaCn[1] */ PACK( 1, 0 ), - /* DeltaCn[2] */ PACK( 1, 0 ), - /* SROUND */ PACK( 1, 0 ), - /* S45Round */ PACK( 1, 0 ), - /* JROT */ PACK( 2, 0 ), - /* JROF */ PACK( 2, 0 ), - /* ROFF */ PACK( 0, 0 ), - /* INS_$7B */ PACK( 0, 0 ), - /* RUTG */ PACK( 0, 0 ), - /* RDTG */ PACK( 0, 0 ), - /* SANGW */ PACK( 1, 0 ), - /* AA */ PACK( 1, 0 ), - - /* FlipPT */ PACK( 0, 0 ), - /* FlipRgON */ PACK( 2, 0 ), - /* FlipRgOFF */ PACK( 2, 0 ), - /* INS_$83 */ PACK( 0, 0 ), - /* INS_$84 */ PACK( 0, 0 ), - /* ScanCTRL */ PACK( 1, 0 ), - /* SDVPTL[0] */ PACK( 2, 0 ), - /* SDVPTL[1] */ PACK( 2, 0 ), - /* GetINFO */ PACK( 1, 1 ), - /* IDEF */ PACK( 1, 0 ), - /* ROLL */ PACK( 3, 3 ), - /* MAX */ PACK( 2, 1 ), - /* MIN */ PACK( 2, 1 ), - /* ScanTYPE */ PACK( 1, 0 ), - /* InstCTRL */ PACK( 2, 0 ), - /* INS_$8F */ PACK( 0, 0 ), - - /* INS_$90 */ PACK( 0, 0 ), - /* INS_$91 */ PACK( 0, 0 ), - /* INS_$92 */ PACK( 0, 0 ), - /* INS_$93 */ PACK( 0, 0 ), - /* INS_$94 */ PACK( 0, 0 ), - /* INS_$95 */ PACK( 0, 0 ), - /* INS_$96 */ PACK( 0, 0 ), - /* INS_$97 */ PACK( 0, 0 ), - /* INS_$98 */ PACK( 0, 0 ), - /* INS_$99 */ PACK( 0, 0 ), - /* INS_$9A */ PACK( 0, 0 ), - /* INS_$9B */ PACK( 0, 0 ), - /* INS_$9C */ PACK( 0, 0 ), - /* INS_$9D */ PACK( 0, 0 ), - /* INS_$9E */ PACK( 0, 0 ), - /* INS_$9F */ PACK( 0, 0 ), - - /* INS_$A0 */ PACK( 0, 0 ), - /* INS_$A1 */ PACK( 0, 0 ), - /* INS_$A2 */ PACK( 0, 0 ), - /* INS_$A3 */ PACK( 0, 0 ), - /* INS_$A4 */ PACK( 0, 0 ), - /* INS_$A5 */ PACK( 0, 0 ), - /* INS_$A6 */ PACK( 0, 0 ), - /* INS_$A7 */ PACK( 0, 0 ), - /* INS_$A8 */ PACK( 0, 0 ), - /* INS_$A9 */ PACK( 0, 0 ), - /* INS_$AA */ PACK( 0, 0 ), - /* INS_$AB */ PACK( 0, 0 ), - /* INS_$AC */ PACK( 0, 0 ), - /* INS_$AD */ PACK( 0, 0 ), - /* INS_$AE */ PACK( 0, 0 ), - /* INS_$AF */ PACK( 0, 0 ), - - /* PushB[0] */ PACK( 0, 1 ), - /* PushB[1] */ PACK( 0, 2 ), - /* PushB[2] */ PACK( 0, 3 ), - /* PushB[3] */ PACK( 0, 4 ), - /* PushB[4] */ PACK( 0, 5 ), - /* PushB[5] */ PACK( 0, 6 ), - /* PushB[6] */ PACK( 0, 7 ), - /* PushB[7] */ PACK( 0, 8 ), - /* PushW[0] */ PACK( 0, 1 ), - /* PushW[1] */ PACK( 0, 2 ), - /* PushW[2] */ PACK( 0, 3 ), - /* PushW[3] */ PACK( 0, 4 ), - /* PushW[4] */ PACK( 0, 5 ), - /* PushW[5] */ PACK( 0, 6 ), - /* PushW[6] */ PACK( 0, 7 ), - /* PushW[7] */ PACK( 0, 8 ), - - /* MDRP[00] */ PACK( 1, 0 ), - /* MDRP[01] */ PACK( 1, 0 ), - /* MDRP[02] */ PACK( 1, 0 ), - /* MDRP[03] */ PACK( 1, 0 ), - /* MDRP[04] */ PACK( 1, 0 ), - /* MDRP[05] */ PACK( 1, 0 ), - /* MDRP[06] */ PACK( 1, 0 ), - /* MDRP[07] */ PACK( 1, 0 ), - /* MDRP[08] */ PACK( 1, 0 ), - /* MDRP[09] */ PACK( 1, 0 ), - /* MDRP[10] */ PACK( 1, 0 ), - /* MDRP[11] */ PACK( 1, 0 ), - /* MDRP[12] */ PACK( 1, 0 ), - /* MDRP[13] */ PACK( 1, 0 ), - /* MDRP[14] */ PACK( 1, 0 ), - /* MDRP[15] */ PACK( 1, 0 ), - - /* MDRP[16] */ PACK( 1, 0 ), - /* MDRP[17] */ PACK( 1, 0 ), - /* MDRP[18] */ PACK( 1, 0 ), - /* MDRP[19] */ PACK( 1, 0 ), - /* MDRP[20] */ PACK( 1, 0 ), - /* MDRP[21] */ PACK( 1, 0 ), - /* MDRP[22] */ PACK( 1, 0 ), - /* MDRP[23] */ PACK( 1, 0 ), - /* MDRP[24] */ PACK( 1, 0 ), - /* MDRP[25] */ PACK( 1, 0 ), - /* MDRP[26] */ PACK( 1, 0 ), - /* MDRP[27] */ PACK( 1, 0 ), - /* MDRP[28] */ PACK( 1, 0 ), - /* MDRP[29] */ PACK( 1, 0 ), - /* MDRP[30] */ PACK( 1, 0 ), - /* MDRP[31] */ PACK( 1, 0 ), - - /* MIRP[00] */ PACK( 2, 0 ), - /* MIRP[01] */ PACK( 2, 0 ), - /* MIRP[02] */ PACK( 2, 0 ), - /* MIRP[03] */ PACK( 2, 0 ), - /* MIRP[04] */ PACK( 2, 0 ), - /* MIRP[05] */ PACK( 2, 0 ), - /* MIRP[06] */ PACK( 2, 0 ), - /* MIRP[07] */ PACK( 2, 0 ), - /* MIRP[08] */ PACK( 2, 0 ), - /* MIRP[09] */ PACK( 2, 0 ), - /* MIRP[10] */ PACK( 2, 0 ), - /* MIRP[11] */ PACK( 2, 0 ), - /* MIRP[12] */ PACK( 2, 0 ), - /* MIRP[13] */ PACK( 2, 0 ), - /* MIRP[14] */ PACK( 2, 0 ), - /* MIRP[15] */ PACK( 2, 0 ), - - /* MIRP[16] */ PACK( 2, 0 ), - /* MIRP[17] */ PACK( 2, 0 ), - /* MIRP[18] */ PACK( 2, 0 ), - /* MIRP[19] */ PACK( 2, 0 ), - /* MIRP[20] */ PACK( 2, 0 ), - /* MIRP[21] */ PACK( 2, 0 ), - /* MIRP[22] */ PACK( 2, 0 ), - /* MIRP[23] */ PACK( 2, 0 ), - /* MIRP[24] */ PACK( 2, 0 ), - /* MIRP[25] */ PACK( 2, 0 ), - /* MIRP[26] */ PACK( 2, 0 ), - /* MIRP[27] */ PACK( 2, 0 ), - /* MIRP[28] */ PACK( 2, 0 ), - /* MIRP[29] */ PACK( 2, 0 ), - /* MIRP[30] */ PACK( 2, 0 ), - /* MIRP[31] */ PACK( 2, 0 ) - }; - - - static - const FT_Char opcode_length[256] = - { - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - -1,-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 3, 5, 7, 9, 11,13,15,17, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - }; - - static - const FT_Vector Null_Vector = {0,0}; - - -#undef PACK - - -#undef NULL_Vector -#define NULL_Vector (FT_Vector*)&Null_Vector - - - /* compute (a*b)/2^14 with maximal accuracy and rounding */ - static FT_Int32 - TT_MulFix14( FT_Int32 a, - FT_Int b ) - { - FT_Int32 m, s, hi; - FT_UInt32 l, lo; - - - /* compute ax*bx as 64-bit value */ - l = (FT_UInt32)( ( a & 0xFFFFU ) * b ); - m = ( a >> 16 ) * b; - - lo = l + (FT_UInt32)( m << 16 ); - hi = ( m >> 16 ) + ( (FT_Int32)l >> 31 ) + ( lo < l ); - - /* divide the result by 2^14 with rounding */ - s = hi >> 31; - l = lo + (FT_UInt32)s; - hi += s + ( l < lo ); - lo = l; - - l = lo + 0x2000U; - hi += (l < lo); - - return ( hi << 18 ) | ( l >> 14 ); - } - - - /* compute (ax*bx+ay*by)/2^14 with maximal accuracy and rounding */ - static FT_Int32 - TT_DotFix14( FT_Int32 ax, - FT_Int32 ay, - FT_Int bx, - FT_Int by ) - { - FT_Int32 m, s, hi1, hi2, hi; - FT_UInt32 l, lo1, lo2, lo; - - - /* compute ax*bx as 64-bit value */ - l = (FT_UInt32)( ( ax & 0xFFFFU ) * bx ); - m = ( ax >> 16 ) * bx; - - lo1 = l + (FT_UInt32)( m << 16 ); - hi1 = ( m >> 16 ) + ( (FT_Int32)l >> 31 ) + ( lo1 < l ); - - /* compute ay*by as 64-bit value */ - l = (FT_UInt32)( ( ay & 0xFFFFU ) * by ); - m = ( ay >> 16 ) * by; - - lo2 = l + (FT_UInt32)( m << 16 ); - hi2 = ( m >> 16 ) + ( (FT_Int32)l >> 31 ) + ( lo2 < l ); - - /* add them */ - lo = lo1 + lo2; - hi = hi1 + hi2 + ( lo < lo1 ); - - /* divide the result by 2^14 with rounding */ - s = hi >> 31; - l = lo + (FT_UInt32)s; - hi += s + ( l < lo ); - lo = l; - - l = lo + 0x2000U; - hi += ( l < lo ); - - return ( hi << 18 ) | ( l >> 14 ); - } - - - /* return length of given vector */ - -#if 0 - - static FT_Int32 - TT_VecLen( FT_Int32 x, - FT_Int32 y ) - { - FT_Int32 m, hi1, hi2, hi; - FT_UInt32 l, lo1, lo2, lo; - - - /* compute x*x as 64-bit value */ - lo = (FT_UInt32)( x & 0xFFFFU ); - hi = x >> 16; - - l = lo * lo; - m = hi * lo; - hi = hi * hi; - - lo1 = l + (FT_UInt32)( m << 17 ); - hi1 = hi + ( m >> 15 ) + ( lo1 < l ); - - /* compute y*y as 64-bit value */ - lo = (FT_UInt32)( y & 0xFFFFU ); - hi = y >> 16; - - l = lo * lo; - m = hi * lo; - hi = hi * hi; - - lo2 = l + (FT_UInt32)( m << 17 ); - hi2 = hi + ( m >> 15 ) + ( lo2 < l ); - - /* add them to get 'x*x+y*y' as 64-bit value */ - lo = lo1 + lo2; - hi = hi1 + hi2 + ( lo < lo1 ); - - /* compute the square root of this value */ - { - FT_UInt32 root, rem, test_div; - FT_Int count; - - - root = 0; - - { - rem = 0; - count = 32; - do - { - rem = ( rem << 2 ) | ( (FT_UInt32)hi >> 30 ); - hi = ( hi << 2 ) | ( lo >> 30 ); - lo <<= 2; - root <<= 1; - test_div = ( root << 1 ) + 1; - - if ( rem >= test_div ) - { - rem -= test_div; - root += 1; - } - } while ( --count ); - } - - return (FT_Int32)root; - } - } - -#else - - /* this version uses FT_Vector_Length which computes the same value */ - /* much, much faster.. */ - /* */ - static FT_F26Dot6 - TT_VecLen( FT_F26Dot6 X, - FT_F26Dot6 Y ) - { - FT_Vector v; - - - v.x = X; - v.y = Y; - - return FT_Vector_Length( &v ); - } - -#endif - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Current_Ratio */ - /* */ - /* <Description> */ - /* Returns the current aspect ratio scaling factor depending on the */ - /* projection vector's state and device resolutions. */ - /* */ - /* <Return> */ - /* The aspect ratio in 16.16 format, always <= 1.0 . */ - /* */ - static FT_Long - Current_Ratio( EXEC_OP ) - { - if ( !CUR.tt_metrics.ratio ) - { -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - if ( CUR.face->unpatented_hinting ) - { - if ( CUR.GS.both_x_axis ) - CUR.tt_metrics.ratio = CUR.tt_metrics.x_ratio; - else - CUR.tt_metrics.ratio = CUR.tt_metrics.y_ratio; - } - else -#endif - { - if ( CUR.GS.projVector.y == 0 ) - CUR.tt_metrics.ratio = CUR.tt_metrics.x_ratio; - - else if ( CUR.GS.projVector.x == 0 ) - CUR.tt_metrics.ratio = CUR.tt_metrics.y_ratio; - - else - { - FT_Long x, y; - - - x = TT_MULDIV( CUR.GS.projVector.x, - CUR.tt_metrics.x_ratio, 0x4000 ); - y = TT_MULDIV( CUR.GS.projVector.y, - CUR.tt_metrics.y_ratio, 0x4000 ); - CUR.tt_metrics.ratio = TT_VecLen( x, y ); - } - } - } - return CUR.tt_metrics.ratio; - } - - - static FT_Long - Current_Ppem( EXEC_OP ) - { - return TT_MULFIX( CUR.tt_metrics.ppem, CURRENT_Ratio() ); - } - - - /*************************************************************************/ - /* */ - /* Functions related to the control value table (CVT). */ - /* */ - /*************************************************************************/ - - - FT_CALLBACK_DEF( FT_F26Dot6 ) - Read_CVT( EXEC_OP_ FT_ULong idx ) - { - return CUR.cvt[idx]; - } - - - FT_CALLBACK_DEF( FT_F26Dot6 ) - Read_CVT_Stretched( EXEC_OP_ FT_ULong idx ) - { - return TT_MULFIX( CUR.cvt[idx], CURRENT_Ratio() ); - } - - - FT_CALLBACK_DEF( void ) - Write_CVT( EXEC_OP_ FT_ULong idx, - FT_F26Dot6 value ) - { - CUR.cvt[idx] = value; - } - - - FT_CALLBACK_DEF( void ) - Write_CVT_Stretched( EXEC_OP_ FT_ULong idx, - FT_F26Dot6 value ) - { - CUR.cvt[idx] = FT_DivFix( value, CURRENT_Ratio() ); - } - - - FT_CALLBACK_DEF( void ) - Move_CVT( EXEC_OP_ FT_ULong idx, - FT_F26Dot6 value ) - { - CUR.cvt[idx] += value; - } - - - FT_CALLBACK_DEF( void ) - Move_CVT_Stretched( EXEC_OP_ FT_ULong idx, - FT_F26Dot6 value ) - { - CUR.cvt[idx] += FT_DivFix( value, CURRENT_Ratio() ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* GetShortIns */ - /* */ - /* <Description> */ - /* Returns a short integer taken from the instruction stream at */ - /* address IP. */ - /* */ - /* <Return> */ - /* Short read at code[IP]. */ - /* */ - /* <Note> */ - /* This one could become a macro. */ - /* */ - static FT_Short - GetShortIns( EXEC_OP ) - { - /* Reading a byte stream so there is no endianess (DaveP) */ - CUR.IP += 2; - return (FT_Short)( ( CUR.code[CUR.IP - 2] << 8 ) + - CUR.code[CUR.IP - 1] ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Ins_Goto_CodeRange */ - /* */ - /* <Description> */ - /* Goes to a certain code range in the instruction stream. */ - /* */ - /* <Input> */ - /* aRange :: The index of the code range. */ - /* */ - /* aIP :: The new IP address in the code range. */ - /* */ - /* <Return> */ - /* SUCCESS or FAILURE. */ - /* */ - static FT_Bool - Ins_Goto_CodeRange( EXEC_OP_ FT_Int aRange, - FT_ULong aIP ) - { - TT_CodeRange* range; - - - if ( aRange < 1 || aRange > 3 ) - { - CUR.error = TT_Err_Bad_Argument; - return FAILURE; - } - - range = &CUR.codeRangeTable[aRange - 1]; - - if ( range->base == NULL ) /* invalid coderange */ - { - CUR.error = TT_Err_Invalid_CodeRange; - return FAILURE; - } - - /* NOTE: Because the last instruction of a program may be a CALL */ - /* which will return to the first byte *after* the code */ - /* range, we test for AIP <= Size, instead of AIP < Size. */ - - if ( aIP > range->size ) - { - CUR.error = TT_Err_Code_Overflow; - return FAILURE; - } - - CUR.code = range->base; - CUR.codeSize = range->size; - CUR.IP = aIP; - CUR.curRange = aRange; - - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Direct_Move */ - /* */ - /* <Description> */ - /* Moves a point by a given distance along the freedom vector. The */ - /* point will be `touched'. */ - /* */ - /* <Input> */ - /* point :: The index of the point to move. */ - /* */ - /* distance :: The distance to apply. */ - /* */ - /* <InOut> */ - /* zone :: The affected glyph zone. */ - /* */ - static void - Direct_Move( EXEC_OP_ TT_GlyphZone zone, - FT_UShort point, - FT_F26Dot6 distance ) - { - FT_F26Dot6 v; - - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - FT_ASSERT( !CUR.face->unpatented_hinting ); -#endif - - v = CUR.GS.freeVector.x; - - if ( v != 0 ) - { - zone->cur[point].x += TT_MULDIV( distance, - v * 0x10000L, - CUR.F_dot_P ); - - zone->tags[point] |= FT_CURVE_TAG_TOUCH_X; - } - - v = CUR.GS.freeVector.y; - - if ( v != 0 ) - { - zone->cur[point].y += TT_MULDIV( distance, - v * 0x10000L, - CUR.F_dot_P ); - - zone->tags[point] |= FT_CURVE_TAG_TOUCH_Y; - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Direct_Move_Orig */ - /* */ - /* <Description> */ - /* Moves the *original* position of a point by a given distance along */ - /* the freedom vector. Obviously, the point will not be `touched'. */ - /* */ - /* <Input> */ - /* point :: The index of the point to move. */ - /* */ - /* distance :: The distance to apply. */ - /* */ - /* <InOut> */ - /* zone :: The affected glyph zone. */ - /* */ - static void - Direct_Move_Orig( EXEC_OP_ TT_GlyphZone zone, - FT_UShort point, - FT_F26Dot6 distance ) - { - FT_F26Dot6 v; - - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - FT_ASSERT( !CUR.face->unpatented_hinting ); -#endif - - v = CUR.GS.freeVector.x; - - if ( v != 0 ) - zone->org[point].x += TT_MULDIV( distance, - v * 0x10000L, - CUR.F_dot_P ); - - v = CUR.GS.freeVector.y; - - if ( v != 0 ) - zone->org[point].y += TT_MULDIV( distance, - v * 0x10000L, - CUR.F_dot_P ); - } - - - /*************************************************************************/ - /* */ - /* Special versions of Direct_Move() */ - /* */ - /* The following versions are used whenever both vectors are both */ - /* along one of the coordinate unit vectors, i.e. in 90% of the cases. */ - /* */ - /*************************************************************************/ - - - static void - Direct_Move_X( EXEC_OP_ TT_GlyphZone zone, - FT_UShort point, - FT_F26Dot6 distance ) - { - FT_UNUSED_EXEC; - - zone->cur[point].x += distance; - zone->tags[point] |= FT_CURVE_TAG_TOUCH_X; - } - - - static void - Direct_Move_Y( EXEC_OP_ TT_GlyphZone zone, - FT_UShort point, - FT_F26Dot6 distance ) - { - FT_UNUSED_EXEC; - - zone->cur[point].y += distance; - zone->tags[point] |= FT_CURVE_TAG_TOUCH_Y; - } - - - /*************************************************************************/ - /* */ - /* Special versions of Direct_Move_Orig() */ - /* */ - /* The following versions are used whenever both vectors are both */ - /* along one of the coordinate unit vectors, i.e. in 90% of the cases. */ - /* */ - /*************************************************************************/ - - - static void - Direct_Move_Orig_X( EXEC_OP_ TT_GlyphZone zone, - FT_UShort point, - FT_F26Dot6 distance ) - { - FT_UNUSED_EXEC; - - zone->org[point].x += distance; - } - - - static void - Direct_Move_Orig_Y( EXEC_OP_ TT_GlyphZone zone, - FT_UShort point, - FT_F26Dot6 distance ) - { - FT_UNUSED_EXEC; - - zone->org[point].y += distance; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Round_None */ - /* */ - /* <Description> */ - /* Does not round, but adds engine compensation. */ - /* */ - /* <Input> */ - /* distance :: The distance (not) to round. */ - /* */ - /* compensation :: The engine compensation. */ - /* */ - /* <Return> */ - /* The compensated distance. */ - /* */ - /* <Note> */ - /* The TrueType specification says very few about the relationship */ - /* between rounding and engine compensation. However, it seems from */ - /* the description of super round that we should add the compensation */ - /* before rounding. */ - /* */ - static FT_F26Dot6 - Round_None( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) - { - FT_F26Dot6 val; - - FT_UNUSED_EXEC; - - - if ( distance >= 0 ) - { - val = distance + compensation; - if ( distance && val < 0 ) - val = 0; - } - else { - val = distance - compensation; - if ( val > 0 ) - val = 0; - } - return val; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Round_To_Grid */ - /* */ - /* <Description> */ - /* Rounds value to grid after adding engine compensation. */ - /* */ - /* <Input> */ - /* distance :: The distance to round. */ - /* */ - /* compensation :: The engine compensation. */ - /* */ - /* <Return> */ - /* Rounded distance. */ - /* */ - static FT_F26Dot6 - Round_To_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) - { - FT_F26Dot6 val; - - FT_UNUSED_EXEC; - - - if ( distance >= 0 ) - { - val = distance + compensation + 32; - if ( distance && val > 0 ) - val &= ~63; - else - val = 0; - } - else - { - val = -FT_PIX_ROUND( compensation - distance ); - if ( val > 0 ) - val = 0; - } - - return val; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Round_To_Half_Grid */ - /* */ - /* <Description> */ - /* Rounds value to half grid after adding engine compensation. */ - /* */ - /* <Input> */ - /* distance :: The distance to round. */ - /* */ - /* compensation :: The engine compensation. */ - /* */ - /* <Return> */ - /* Rounded distance. */ - /* */ - static FT_F26Dot6 - Round_To_Half_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) - { - FT_F26Dot6 val; - - FT_UNUSED_EXEC; - - - if ( distance >= 0 ) - { - val = FT_PIX_FLOOR( distance + compensation ) + 32; - if ( distance && val < 0 ) - val = 0; - } - else - { - val = -( FT_PIX_FLOOR( compensation - distance ) + 32 ); - if ( val > 0 ) - val = 0; - } - - return val; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Round_Down_To_Grid */ - /* */ - /* <Description> */ - /* Rounds value down to grid after adding engine compensation. */ - /* */ - /* <Input> */ - /* distance :: The distance to round. */ - /* */ - /* compensation :: The engine compensation. */ - /* */ - /* <Return> */ - /* Rounded distance. */ - /* */ - static FT_F26Dot6 - Round_Down_To_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) - { - FT_F26Dot6 val; - - FT_UNUSED_EXEC; - - - if ( distance >= 0 ) - { - val = distance + compensation; - if ( distance && val > 0 ) - val &= ~63; - else - val = 0; - } - else - { - val = -( ( compensation - distance ) & -64 ); - if ( val > 0 ) - val = 0; - } - - return val; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Round_Up_To_Grid */ - /* */ - /* <Description> */ - /* Rounds value up to grid after adding engine compensation. */ - /* */ - /* <Input> */ - /* distance :: The distance to round. */ - /* */ - /* compensation :: The engine compensation. */ - /* */ - /* <Return> */ - /* Rounded distance. */ - /* */ - static FT_F26Dot6 - Round_Up_To_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) - { - FT_F26Dot6 val; - - - FT_UNUSED_EXEC; - - if ( distance >= 0 ) - { - val = distance + compensation + 63; - if ( distance && val > 0 ) - val &= ~63; - else - val = 0; - } - else - { - val = - FT_PIX_CEIL( compensation - distance ); - if ( val > 0 ) - val = 0; - } - - return val; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Round_To_Double_Grid */ - /* */ - /* <Description> */ - /* Rounds value to double grid after adding engine compensation. */ - /* */ - /* <Input> */ - /* distance :: The distance to round. */ - /* */ - /* compensation :: The engine compensation. */ - /* */ - /* <Return> */ - /* Rounded distance. */ - /* */ - static FT_F26Dot6 - Round_To_Double_Grid( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) - { - FT_F26Dot6 val; - - FT_UNUSED_EXEC; - - - if ( distance >= 0 ) - { - val = distance + compensation + 16; - if ( distance && val > 0 ) - val &= ~31; - else - val = 0; - } - else - { - val = -FT_PAD_ROUND( compensation - distance, 32 ); - if ( val > 0 ) - val = 0; - } - - return val; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Round_Super */ - /* */ - /* <Description> */ - /* Super-rounds value to grid after adding engine compensation. */ - /* */ - /* <Input> */ - /* distance :: The distance to round. */ - /* */ - /* compensation :: The engine compensation. */ - /* */ - /* <Return> */ - /* Rounded distance. */ - /* */ - /* <Note> */ - /* The TrueType specification says very few about the relationship */ - /* between rounding and engine compensation. However, it seems from */ - /* the description of super round that we should add the compensation */ - /* before rounding. */ - /* */ - static FT_F26Dot6 - Round_Super( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) - { - FT_F26Dot6 val; - - - if ( distance >= 0 ) - { - val = ( distance - CUR.phase + CUR.threshold + compensation ) & - -CUR.period; - if ( distance && val < 0 ) - val = 0; - val += CUR.phase; - } - else - { - val = -( ( CUR.threshold - CUR.phase - distance + compensation ) & - -CUR.period ); - if ( val > 0 ) - val = 0; - val -= CUR.phase; - } - - return val; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Round_Super_45 */ - /* */ - /* <Description> */ - /* Super-rounds value to grid after adding engine compensation. */ - /* */ - /* <Input> */ - /* distance :: The distance to round. */ - /* */ - /* compensation :: The engine compensation. */ - /* */ - /* <Return> */ - /* Rounded distance. */ - /* */ - /* <Note> */ - /* There is a separate function for Round_Super_45() as we may need */ - /* greater precision. */ - /* */ - static FT_F26Dot6 - Round_Super_45( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ) - { - FT_F26Dot6 val; - - - if ( distance >= 0 ) - { - val = ( ( distance - CUR.phase + CUR.threshold + compensation ) / - CUR.period ) * CUR.period; - if ( distance && val < 0 ) - val = 0; - val += CUR.phase; - } - else - { - val = -( ( ( CUR.threshold - CUR.phase - distance + compensation ) / - CUR.period ) * CUR.period ); - if ( val > 0 ) - val = 0; - val -= CUR.phase; - } - - return val; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Compute_Round */ - /* */ - /* <Description> */ - /* Sets the rounding mode. */ - /* */ - /* <Input> */ - /* round_mode :: The rounding mode to be used. */ - /* */ - static void - Compute_Round( EXEC_OP_ FT_Byte round_mode ) - { - switch ( round_mode ) - { - case TT_Round_Off: - CUR.func_round = (TT_Round_Func)Round_None; - break; - - case TT_Round_To_Grid: - CUR.func_round = (TT_Round_Func)Round_To_Grid; - break; - - case TT_Round_Up_To_Grid: - CUR.func_round = (TT_Round_Func)Round_Up_To_Grid; - break; - - case TT_Round_Down_To_Grid: - CUR.func_round = (TT_Round_Func)Round_Down_To_Grid; - break; - - case TT_Round_To_Half_Grid: - CUR.func_round = (TT_Round_Func)Round_To_Half_Grid; - break; - - case TT_Round_To_Double_Grid: - CUR.func_round = (TT_Round_Func)Round_To_Double_Grid; - break; - - case TT_Round_Super: - CUR.func_round = (TT_Round_Func)Round_Super; - break; - - case TT_Round_Super_45: - CUR.func_round = (TT_Round_Func)Round_Super_45; - break; - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* SetSuperRound */ - /* */ - /* <Description> */ - /* Sets Super Round parameters. */ - /* */ - /* <Input> */ - /* GridPeriod :: Grid period */ - /* selector :: SROUND opcode */ - /* */ - static void - SetSuperRound( EXEC_OP_ FT_F26Dot6 GridPeriod, - FT_Long selector ) - { - switch ( (FT_Int)( selector & 0xC0 ) ) - { - case 0: - CUR.period = GridPeriod / 2; - break; - - case 0x40: - CUR.period = GridPeriod; - break; - - case 0x80: - CUR.period = GridPeriod * 2; - break; - - /* This opcode is reserved, but... */ - - case 0xC0: - CUR.period = GridPeriod; - break; - } - - switch ( (FT_Int)( selector & 0x30 ) ) - { - case 0: - CUR.phase = 0; - break; - - case 0x10: - CUR.phase = CUR.period / 4; - break; - - case 0x20: - CUR.phase = CUR.period / 2; - break; - - case 0x30: - CUR.phase = CUR.period * 3 / 4; - break; - } - - if ( (selector & 0x0F) == 0 ) - CUR.threshold = CUR.period - 1; - else - CUR.threshold = ( (FT_Int)( selector & 0x0F ) - 4 ) * CUR.period / 8; - - CUR.period /= 256; - CUR.phase /= 256; - CUR.threshold /= 256; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Project */ - /* */ - /* <Description> */ - /* Computes the projection of vector given by (v2-v1) along the */ - /* current projection vector. */ - /* */ - /* <Input> */ - /* v1 :: First input vector. */ - /* v2 :: Second input vector. */ - /* */ - /* <Return> */ - /* The distance in F26dot6 format. */ - /* */ - static FT_F26Dot6 - Project( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) - { -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - FT_ASSERT( !CUR.face->unpatented_hinting ); -#endif - - return TT_DotFix14( v1->x - v2->x, - v1->y - v2->y, - CUR.GS.projVector.x, - CUR.GS.projVector.y ); - } - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Dual_Project */ - /* */ - /* <Description> */ - /* Computes the projection of the vector given by (v2-v1) along the */ - /* current dual vector. */ - /* */ - /* <Input> */ - /* v1 :: First input vector. */ - /* v2 :: Second input vector. */ - /* */ - /* <Return> */ - /* The distance in F26dot6 format. */ - /* */ - static FT_F26Dot6 - Dual_Project( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) - { - return TT_DotFix14( v1->x - v2->x, - v1->y - v2->y, - CUR.GS.dualVector.x, - CUR.GS.dualVector.y ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Project_x */ - /* */ - /* <Description> */ - /* Computes the projection of the vector given by (v2-v1) along the */ - /* horizontal axis. */ - /* */ - /* <Input> */ - /* v1 :: First input vector. */ - /* v2 :: Second input vector. */ - /* */ - /* <Return> */ - /* The distance in F26dot6 format. */ - /* */ - static FT_F26Dot6 - Project_x( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) - { - FT_UNUSED_EXEC; - - return ( v1->x - v2->x ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Project_y */ - /* */ - /* <Description> */ - /* Computes the projection of the vector given by (v2-v1) along the */ - /* vertical axis. */ - /* */ - /* <Input> */ - /* v1 :: First input vector. */ - /* v2 :: Second input vector. */ - /* */ - /* <Return> */ - /* The distance in F26dot6 format. */ - /* */ - static FT_F26Dot6 - Project_y( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ) - { - FT_UNUSED_EXEC; - - return ( v1->y - v2->y ); - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Compute_Funcs */ - /* */ - /* <Description> */ - /* Computes the projection and movement function pointers according */ - /* to the current graphics state. */ - /* */ - static void - Compute_Funcs( EXEC_OP ) - { -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - if ( CUR.face->unpatented_hinting ) - { - /* If both vectors point rightwards along the x axis, set */ - /* `both-x-axis' true, otherwise set it false. The x values only */ - /* need be tested because the vector has been normalised to a unit */ - /* vector of length 0x4000 = unity. */ - CUR.GS.both_x_axis = (FT_Bool)( CUR.GS.projVector.x == 0x4000 && - CUR.GS.freeVector.x == 0x4000 ); - - /* Throw away projection and freedom vector information */ - /* because the patents don't allow them to be stored. */ - /* The relevant US Patents are 5155805 and 5325479. */ - CUR.GS.projVector.x = 0; - CUR.GS.projVector.y = 0; - CUR.GS.freeVector.x = 0; - CUR.GS.freeVector.y = 0; - - if ( CUR.GS.both_x_axis ) - { - CUR.func_project = Project_x; - CUR.func_move = Direct_Move_X; - CUR.func_move_orig = Direct_Move_Orig_X; - } - else - { - CUR.func_project = Project_y; - CUR.func_move = Direct_Move_Y; - CUR.func_move_orig = Direct_Move_Orig_Y; - } - - if ( CUR.GS.dualVector.x == 0x4000 ) - CUR.func_dualproj = Project_x; - else - { - if ( CUR.GS.dualVector.y == 0x4000 ) - CUR.func_dualproj = Project_y; - else - CUR.func_dualproj = Dual_Project; - } - - /* Force recalculation of cached aspect ratio */ - CUR.tt_metrics.ratio = 0; - - return; - } -#endif /* TT_CONFIG_OPTION_UNPATENTED_HINTING */ - - if ( CUR.GS.freeVector.x == 0x4000 ) - CUR.F_dot_P = CUR.GS.projVector.x * 0x10000L; - else - { - if ( CUR.GS.freeVector.y == 0x4000 ) - CUR.F_dot_P = CUR.GS.projVector.y * 0x10000L; - else - CUR.F_dot_P = (FT_Long)CUR.GS.projVector.x * CUR.GS.freeVector.x * 4 + - (FT_Long)CUR.GS.projVector.y * CUR.GS.freeVector.y * 4; - } - - if ( CUR.GS.projVector.x == 0x4000 ) - CUR.func_project = (TT_Project_Func)Project_x; - else - { - if ( CUR.GS.projVector.y == 0x4000 ) - CUR.func_project = (TT_Project_Func)Project_y; - else - CUR.func_project = (TT_Project_Func)Project; - } - - if ( CUR.GS.dualVector.x == 0x4000 ) - CUR.func_dualproj = (TT_Project_Func)Project_x; - else - { - if ( CUR.GS.dualVector.y == 0x4000 ) - CUR.func_dualproj = (TT_Project_Func)Project_y; - else - CUR.func_dualproj = (TT_Project_Func)Dual_Project; - } - - CUR.func_move = (TT_Move_Func)Direct_Move; - CUR.func_move_orig = (TT_Move_Func)Direct_Move_Orig; - - if ( CUR.F_dot_P == 0x40000000L ) - { - if ( CUR.GS.freeVector.x == 0x4000 ) - { - CUR.func_move = (TT_Move_Func)Direct_Move_X; - CUR.func_move_orig = (TT_Move_Func)Direct_Move_Orig_X; - } - else - { - if ( CUR.GS.freeVector.y == 0x4000 ) - { - CUR.func_move = (TT_Move_Func)Direct_Move_Y; - CUR.func_move_orig = (TT_Move_Func)Direct_Move_Orig_Y; - } - } - } - - /* at small sizes, F_dot_P can become too small, resulting */ - /* in overflows and `spikes' in a number of glyphs like `w'. */ - - if ( FT_ABS( CUR.F_dot_P ) < 0x4000000L ) - CUR.F_dot_P = 0x40000000L; - - /* Disable cached aspect ratio */ - CUR.tt_metrics.ratio = 0; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Normalize */ - /* */ - /* <Description> */ - /* Norms a vector. */ - /* */ - /* <Input> */ - /* Vx :: The horizontal input vector coordinate. */ - /* Vy :: The vertical input vector coordinate. */ - /* */ - /* <Output> */ - /* R :: The normed unit vector. */ - /* */ - /* <Return> */ - /* Returns FAILURE if a vector parameter is zero. */ - /* */ - /* <Note> */ - /* In case Vx and Vy are both zero, Normalize() returns SUCCESS, and */ - /* R is undefined. */ - /* */ - - - static FT_Bool - Normalize( EXEC_OP_ FT_F26Dot6 Vx, - FT_F26Dot6 Vy, - FT_UnitVector* R ) - { - FT_F26Dot6 W; - FT_Bool S1, S2; - - FT_UNUSED_EXEC; - - - if ( FT_ABS( Vx ) < 0x10000L && FT_ABS( Vy ) < 0x10000L ) - { - Vx *= 0x100; - Vy *= 0x100; - - W = TT_VecLen( Vx, Vy ); - - if ( W == 0 ) - { - /* XXX: UNDOCUMENTED! It seems that it is possible to try */ - /* to normalize the vector (0,0). Return immediately. */ - return SUCCESS; - } - - R->x = (FT_F2Dot14)FT_MulDiv( Vx, 0x4000L, W ); - R->y = (FT_F2Dot14)FT_MulDiv( Vy, 0x4000L, W ); - - return SUCCESS; - } - - W = TT_VecLen( Vx, Vy ); - - Vx = FT_MulDiv( Vx, 0x4000L, W ); - Vy = FT_MulDiv( Vy, 0x4000L, W ); - - W = Vx * Vx + Vy * Vy; - - /* Now, we want that Sqrt( W ) = 0x4000 */ - /* Or 0x1000000 <= W < 0x1004000 */ - - if ( Vx < 0 ) - { - Vx = -Vx; - S1 = TRUE; - } - else - S1 = FALSE; - - if ( Vy < 0 ) - { - Vy = -Vy; - S2 = TRUE; - } - else - S2 = FALSE; - - while ( W < 0x1000000L ) - { - /* We need to increase W by a minimal amount */ - if ( Vx < Vy ) - Vx++; - else - Vy++; - - W = Vx * Vx + Vy * Vy; - } - - while ( W >= 0x1004000L ) - { - /* We need to decrease W by a minimal amount */ - if ( Vx < Vy ) - Vx--; - else - Vy--; - - W = Vx * Vx + Vy * Vy; - } - - /* Note that in various cases, we can only */ - /* compute a Sqrt(W) of 0x3FFF, eg. Vx = Vy */ - - if ( S1 ) - Vx = -Vx; - - if ( S2 ) - Vy = -Vy; - - R->x = (FT_F2Dot14)Vx; /* Type conversion */ - R->y = (FT_F2Dot14)Vy; /* Type conversion */ - - return SUCCESS; - } - - - /*************************************************************************/ - /* */ - /* Here we start with the implementation of the various opcodes. */ - /* */ - /*************************************************************************/ - - - static FT_Bool - Ins_SxVTL( EXEC_OP_ FT_UShort aIdx1, - FT_UShort aIdx2, - FT_Int aOpc, - FT_UnitVector* Vec ) - { - FT_Long A, B, C; - FT_Vector* p1; - FT_Vector* p2; - - - if ( BOUNDS( aIdx1, CUR.zp2.n_points ) || - BOUNDS( aIdx2, CUR.zp1.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return FAILURE; - } - - p1 = CUR.zp1.cur + aIdx2; - p2 = CUR.zp2.cur + aIdx1; - - A = p1->x - p2->x; - B = p1->y - p2->y; - - if ( ( aOpc & 1 ) != 0 ) - { - C = B; /* counter clockwise rotation */ - B = A; - A = -C; - } - - NORMalize( A, B, Vec ); - - return SUCCESS; - } - - - /* When not using the big switch statements, the interpreter uses a */ - /* call table defined later below in this source. Each opcode must */ - /* thus have a corresponding function, even trivial ones. */ - /* */ - /* They are all defined there. */ - -#define DO_SVTCA \ - { \ - FT_Short A, B; \ - \ - \ - A = (FT_Short)( CUR.opcode & 1 ) << 14; \ - B = A ^ (FT_Short)0x4000; \ - \ - CUR.GS.freeVector.x = A; \ - CUR.GS.projVector.x = A; \ - CUR.GS.dualVector.x = A; \ - \ - CUR.GS.freeVector.y = B; \ - CUR.GS.projVector.y = B; \ - CUR.GS.dualVector.y = B; \ - \ - COMPUTE_Funcs(); \ - } - - -#define DO_SPVTCA \ - { \ - FT_Short A, B; \ - \ - \ - A = (FT_Short)( CUR.opcode & 1 ) << 14; \ - B = A ^ (FT_Short)0x4000; \ - \ - CUR.GS.projVector.x = A; \ - CUR.GS.dualVector.x = A; \ - \ - CUR.GS.projVector.y = B; \ - CUR.GS.dualVector.y = B; \ - \ - GUESS_VECTOR( freeVector ); \ - \ - COMPUTE_Funcs(); \ - } - - -#define DO_SFVTCA \ - { \ - FT_Short A, B; \ - \ - \ - A = (FT_Short)( CUR.opcode & 1 ) << 14; \ - B = A ^ (FT_Short)0x4000; \ - \ - CUR.GS.freeVector.x = A; \ - CUR.GS.freeVector.y = B; \ - \ - GUESS_VECTOR( projVector ); \ - \ - COMPUTE_Funcs(); \ - } - - -#define DO_SPVTL \ - if ( INS_SxVTL( (FT_UShort)args[1], \ - (FT_UShort)args[0], \ - CUR.opcode, \ - &CUR.GS.projVector ) == SUCCESS ) \ - { \ - CUR.GS.dualVector = CUR.GS.projVector; \ - GUESS_VECTOR( freeVector ); \ - COMPUTE_Funcs(); \ - } - - -#define DO_SFVTL \ - if ( INS_SxVTL( (FT_UShort)args[1], \ - (FT_UShort)args[0], \ - CUR.opcode, \ - &CUR.GS.freeVector ) == SUCCESS ) \ - { \ - GUESS_VECTOR( projVector ); \ - COMPUTE_Funcs(); \ - } - - -#define DO_SFVTPV \ - GUESS_VECTOR( projVector ); \ - CUR.GS.freeVector = CUR.GS.projVector; \ - COMPUTE_Funcs(); - - -#define DO_SPVFS \ - { \ - FT_Short S; \ - FT_Long X, Y; \ - \ - \ - /* Only use low 16bits, then sign extend */ \ - S = (FT_Short)args[1]; \ - Y = (FT_Long)S; \ - S = (FT_Short)args[0]; \ - X = (FT_Long)S; \ - \ - NORMalize( X, Y, &CUR.GS.projVector ); \ - \ - CUR.GS.dualVector = CUR.GS.projVector; \ - GUESS_VECTOR( freeVector ); \ - COMPUTE_Funcs(); \ - } - - -#define DO_SFVFS \ - { \ - FT_Short S; \ - FT_Long X, Y; \ - \ - \ - /* Only use low 16bits, then sign extend */ \ - S = (FT_Short)args[1]; \ - Y = (FT_Long)S; \ - S = (FT_Short)args[0]; \ - X = S; \ - \ - NORMalize( X, Y, &CUR.GS.freeVector ); \ - GUESS_VECTOR( projVector ); \ - COMPUTE_Funcs(); \ - } - - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING -#define DO_GPV \ - if ( CUR.face->unpatented_hinting ) \ - { \ - args[0] = CUR.GS.both_x_axis ? 0x4000 : 0; \ - args[1] = CUR.GS.both_x_axis ? 0 : 0x4000; \ - } \ - else \ - { \ - args[0] = CUR.GS.projVector.x; \ - args[1] = CUR.GS.projVector.y; \ - } -#else -#define DO_GPV \ - args[0] = CUR.GS.projVector.x; \ - args[1] = CUR.GS.projVector.y; -#endif - - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING -#define DO_GFV \ - if ( CUR.face->unpatented_hinting ) \ - { \ - args[0] = CUR.GS.both_x_axis ? 0x4000 : 0; \ - args[1] = CUR.GS.both_x_axis ? 0 : 0x4000; \ - } \ - else \ - { \ - args[0] = CUR.GS.freeVector.x; \ - args[1] = CUR.GS.freeVector.y; \ - } -#else -#define DO_GFV \ - args[0] = CUR.GS.freeVector.x; \ - args[1] = CUR.GS.freeVector.y; -#endif - - -#define DO_SRP0 \ - CUR.GS.rp0 = (FT_UShort)args[0]; - - -#define DO_SRP1 \ - CUR.GS.rp1 = (FT_UShort)args[0]; - - -#define DO_SRP2 \ - CUR.GS.rp2 = (FT_UShort)args[0]; - - -#define DO_RTHG \ - CUR.GS.round_state = TT_Round_To_Half_Grid; \ - CUR.func_round = (TT_Round_Func)Round_To_Half_Grid; - - -#define DO_RTG \ - CUR.GS.round_state = TT_Round_To_Grid; \ - CUR.func_round = (TT_Round_Func)Round_To_Grid; - - -#define DO_RTDG \ - CUR.GS.round_state = TT_Round_To_Double_Grid; \ - CUR.func_round = (TT_Round_Func)Round_To_Double_Grid; - - -#define DO_RUTG \ - CUR.GS.round_state = TT_Round_Up_To_Grid; \ - CUR.func_round = (TT_Round_Func)Round_Up_To_Grid; - - -#define DO_RDTG \ - CUR.GS.round_state = TT_Round_Down_To_Grid; \ - CUR.func_round = (TT_Round_Func)Round_Down_To_Grid; - - -#define DO_ROFF \ - CUR.GS.round_state = TT_Round_Off; \ - CUR.func_round = (TT_Round_Func)Round_None; - - -#define DO_SROUND \ - SET_SuperRound( 0x4000, args[0] ); \ - CUR.GS.round_state = TT_Round_Super; \ - CUR.func_round = (TT_Round_Func)Round_Super; - - -#define DO_S45ROUND \ - SET_SuperRound( 0x2D41, args[0] ); \ - CUR.GS.round_state = TT_Round_Super_45; \ - CUR.func_round = (TT_Round_Func)Round_Super_45; - - -#define DO_SLOOP \ - if ( args[0] < 0 ) \ - CUR.error = TT_Err_Bad_Argument; \ - else \ - CUR.GS.loop = args[0]; - - -#define DO_SMD \ - CUR.GS.minimum_distance = args[0]; - - -#define DO_SCVTCI \ - CUR.GS.control_value_cutin = (FT_F26Dot6)args[0]; - - -#define DO_SSWCI \ - CUR.GS.single_width_cutin = (FT_F26Dot6)args[0]; - - - /* XXX: UNDOCUMENTED! or bug in the Windows engine? */ - /* */ - /* It seems that the value that is read here is */ - /* expressed in 16.16 format rather than in font */ - /* units. */ - /* */ -#define DO_SSW \ - CUR.GS.single_width_value = (FT_F26Dot6)( args[0] >> 10 ); - - -#define DO_FLIPON \ - CUR.GS.auto_flip = TRUE; - - -#define DO_FLIPOFF \ - CUR.GS.auto_flip = FALSE; - - -#define DO_SDB \ - CUR.GS.delta_base = (FT_Short)args[0]; - - -#define DO_SDS \ - CUR.GS.delta_shift = (FT_Short)args[0]; - - -#define DO_MD /* nothing */ - - -#define DO_MPPEM \ - args[0] = CURRENT_Ppem(); - - - /* Note: The pointSize should be irrelevant in a given font program; */ - /* we thus decide to return only the ppem. */ -#if 0 - -#define DO_MPS \ - args[0] = CUR.metrics.pointSize; - -#else - -#define DO_MPS \ - args[0] = CURRENT_Ppem(); - -#endif /* 0 */ - - -#define DO_DUP \ - args[1] = args[0]; - - -#define DO_CLEAR \ - CUR.new_top = 0; - - -#define DO_SWAP \ - { \ - FT_Long L; \ - \ - \ - L = args[0]; \ - args[0] = args[1]; \ - args[1] = L; \ - } - - -#define DO_DEPTH \ - args[0] = CUR.top; - - -#define DO_CINDEX \ - { \ - FT_Long L; \ - \ - \ - L = args[0]; \ - \ - if ( L <= 0 || L > CUR.args ) \ - CUR.error = TT_Err_Invalid_Reference; \ - else \ - args[0] = CUR.stack[CUR.args - L]; \ - } - - -#define DO_JROT \ - if ( args[1] != 0 ) \ - { \ - CUR.IP += args[0]; \ - CUR.step_ins = FALSE; \ - } - - -#define DO_JMPR \ - CUR.IP += args[0]; \ - CUR.step_ins = FALSE; - - -#define DO_JROF \ - if ( args[1] == 0 ) \ - { \ - CUR.IP += args[0]; \ - CUR.step_ins = FALSE; \ - } - - -#define DO_LT \ - args[0] = ( args[0] < args[1] ); - - -#define DO_LTEQ \ - args[0] = ( args[0] <= args[1] ); - - -#define DO_GT \ - args[0] = ( args[0] > args[1] ); - - -#define DO_GTEQ \ - args[0] = ( args[0] >= args[1] ); - - -#define DO_EQ \ - args[0] = ( args[0] == args[1] ); - - -#define DO_NEQ \ - args[0] = ( args[0] != args[1] ); - - -#define DO_ODD \ - args[0] = ( ( CUR_Func_round( args[0], 0 ) & 127 ) == 64 ); - - -#define DO_EVEN \ - args[0] = ( ( CUR_Func_round( args[0], 0 ) & 127 ) == 0 ); - - -#define DO_AND \ - args[0] = ( args[0] && args[1] ); - - -#define DO_OR \ - args[0] = ( args[0] || args[1] ); - - -#define DO_NOT \ - args[0] = !args[0]; - - -#define DO_ADD \ - args[0] += args[1]; - - -#define DO_SUB \ - args[0] -= args[1]; - - -#define DO_DIV \ - if ( args[1] == 0 ) \ - CUR.error = TT_Err_Divide_By_Zero; \ - else \ - args[0] = TT_MULDIV_NO_ROUND( args[0], 64L, args[1] ); - - -#define DO_MUL \ - args[0] = TT_MULDIV( args[0], args[1], 64L ); - - -#define DO_ABS \ - args[0] = FT_ABS( args[0] ); - - -#define DO_NEG \ - args[0] = -args[0]; - - -#define DO_FLOOR \ - args[0] = FT_PIX_FLOOR( args[0] ); - - -#define DO_CEILING \ - args[0] = FT_PIX_CEIL( args[0] ); - - -#define DO_RS \ - { \ - FT_ULong I = (FT_ULong)args[0]; \ - \ - \ - if ( BOUNDS( I, CUR.storeSize ) ) \ - { \ - if ( CUR.pedantic_hinting ) \ - { \ - ARRAY_BOUND_ERROR; \ - } \ - else \ - args[0] = 0; \ - } \ - else \ - args[0] = CUR.storage[I]; \ - } - - -#define DO_WS \ - { \ - FT_ULong I = (FT_ULong)args[0]; \ - \ - \ - if ( BOUNDS( I, CUR.storeSize ) ) \ - { \ - if ( CUR.pedantic_hinting ) \ - { \ - ARRAY_BOUND_ERROR; \ - } \ - } \ - else \ - CUR.storage[I] = args[1]; \ - } - - -#define DO_RCVT \ - { \ - FT_ULong I = (FT_ULong)args[0]; \ - \ - \ - if ( BOUNDS( I, CUR.cvtSize ) ) \ - { \ - if ( CUR.pedantic_hinting ) \ - { \ - ARRAY_BOUND_ERROR; \ - } \ - else \ - args[0] = 0; \ - } \ - else \ - args[0] = CUR_Func_read_cvt( I ); \ - } - - -#define DO_WCVTP \ - { \ - FT_ULong I = (FT_ULong)args[0]; \ - \ - \ - if ( BOUNDS( I, CUR.cvtSize ) ) \ - { \ - if ( CUR.pedantic_hinting ) \ - { \ - ARRAY_BOUND_ERROR; \ - } \ - } \ - else \ - CUR_Func_write_cvt( I, args[1] ); \ - } - - -#define DO_WCVTF \ - { \ - FT_ULong I = (FT_ULong)args[0]; \ - \ - \ - if ( BOUNDS( I, CUR.cvtSize ) ) \ - { \ - if ( CUR.pedantic_hinting ) \ - { \ - ARRAY_BOUND_ERROR; \ - } \ - } \ - else \ - CUR.cvt[I] = TT_MULFIX( args[1], CUR.tt_metrics.scale ); \ - } - - -#define DO_DEBUG \ - CUR.error = TT_Err_Debug_OpCode; - - -#define DO_ROUND \ - args[0] = CUR_Func_round( \ - args[0], \ - CUR.tt_metrics.compensations[CUR.opcode - 0x68] ); - - -#define DO_NROUND \ - args[0] = ROUND_None( args[0], \ - CUR.tt_metrics.compensations[CUR.opcode - 0x6C] ); - - -#define DO_MAX \ - if ( args[1] > args[0] ) \ - args[0] = args[1]; - - -#define DO_MIN \ - if ( args[1] < args[0] ) \ - args[0] = args[1]; - - -#ifndef TT_CONFIG_OPTION_INTERPRETER_SWITCH - - -#undef ARRAY_BOUND_ERROR -#define ARRAY_BOUND_ERROR \ - { \ - CUR.error = TT_Err_Invalid_Reference; \ - return; \ - } - - - /*************************************************************************/ - /* */ - /* SVTCA[a]: Set (F and P) Vectors to Coordinate Axis */ - /* Opcode range: 0x00-0x01 */ - /* Stack: --> */ - /* */ - static void - Ins_SVTCA( INS_ARG ) - { - DO_SVTCA - } - - - /*************************************************************************/ - /* */ - /* SPVTCA[a]: Set PVector to Coordinate Axis */ - /* Opcode range: 0x02-0x03 */ - /* Stack: --> */ - /* */ - static void - Ins_SPVTCA( INS_ARG ) - { - DO_SPVTCA - } - - - /*************************************************************************/ - /* */ - /* SFVTCA[a]: Set FVector to Coordinate Axis */ - /* Opcode range: 0x04-0x05 */ - /* Stack: --> */ - /* */ - static void - Ins_SFVTCA( INS_ARG ) - { - DO_SFVTCA - } - - - /*************************************************************************/ - /* */ - /* SPVTL[a]: Set PVector To Line */ - /* Opcode range: 0x06-0x07 */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_SPVTL( INS_ARG ) - { - DO_SPVTL - } - - - /*************************************************************************/ - /* */ - /* SFVTL[a]: Set FVector To Line */ - /* Opcode range: 0x08-0x09 */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_SFVTL( INS_ARG ) - { - DO_SFVTL - } - - - /*************************************************************************/ - /* */ - /* SFVTPV[]: Set FVector To PVector */ - /* Opcode range: 0x0E */ - /* Stack: --> */ - /* */ - static void - Ins_SFVTPV( INS_ARG ) - { - DO_SFVTPV - } - - - /*************************************************************************/ - /* */ - /* SPVFS[]: Set PVector From Stack */ - /* Opcode range: 0x0A */ - /* Stack: f2.14 f2.14 --> */ - /* */ - static void - Ins_SPVFS( INS_ARG ) - { - DO_SPVFS - } - - - /*************************************************************************/ - /* */ - /* SFVFS[]: Set FVector From Stack */ - /* Opcode range: 0x0B */ - /* Stack: f2.14 f2.14 --> */ - /* */ - static void - Ins_SFVFS( INS_ARG ) - { - DO_SFVFS - } - - - /*************************************************************************/ - /* */ - /* GPV[]: Get Projection Vector */ - /* Opcode range: 0x0C */ - /* Stack: ef2.14 --> ef2.14 */ - /* */ - static void - Ins_GPV( INS_ARG ) - { - DO_GPV - } - - - /*************************************************************************/ - /* GFV[]: Get Freedom Vector */ - /* Opcode range: 0x0D */ - /* Stack: ef2.14 --> ef2.14 */ - /* */ - static void - Ins_GFV( INS_ARG ) - { - DO_GFV - } - - - /*************************************************************************/ - /* */ - /* SRP0[]: Set Reference Point 0 */ - /* Opcode range: 0x10 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SRP0( INS_ARG ) - { - DO_SRP0 - } - - - /*************************************************************************/ - /* */ - /* SRP1[]: Set Reference Point 1 */ - /* Opcode range: 0x11 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SRP1( INS_ARG ) - { - DO_SRP1 - } - - - /*************************************************************************/ - /* */ - /* SRP2[]: Set Reference Point 2 */ - /* Opcode range: 0x12 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SRP2( INS_ARG ) - { - DO_SRP2 - } - - - /*************************************************************************/ - /* */ - /* RTHG[]: Round To Half Grid */ - /* Opcode range: 0x19 */ - /* Stack: --> */ - /* */ - static void - Ins_RTHG( INS_ARG ) - { - DO_RTHG - } - - - /*************************************************************************/ - /* */ - /* RTG[]: Round To Grid */ - /* Opcode range: 0x18 */ - /* Stack: --> */ - /* */ - static void - Ins_RTG( INS_ARG ) - { - DO_RTG - } - - - /*************************************************************************/ - /* RTDG[]: Round To Double Grid */ - /* Opcode range: 0x3D */ - /* Stack: --> */ - /* */ - static void - Ins_RTDG( INS_ARG ) - { - DO_RTDG - } - - - /*************************************************************************/ - /* RUTG[]: Round Up To Grid */ - /* Opcode range: 0x7C */ - /* Stack: --> */ - /* */ - static void - Ins_RUTG( INS_ARG ) - { - DO_RUTG - } - - - /*************************************************************************/ - /* */ - /* RDTG[]: Round Down To Grid */ - /* Opcode range: 0x7D */ - /* Stack: --> */ - /* */ - static void - Ins_RDTG( INS_ARG ) - { - DO_RDTG - } - - - /*************************************************************************/ - /* */ - /* ROFF[]: Round OFF */ - /* Opcode range: 0x7A */ - /* Stack: --> */ - /* */ - static void - Ins_ROFF( INS_ARG ) - { - DO_ROFF - } - - - /*************************************************************************/ - /* */ - /* SROUND[]: Super ROUND */ - /* Opcode range: 0x76 */ - /* Stack: Eint8 --> */ - /* */ - static void - Ins_SROUND( INS_ARG ) - { - DO_SROUND - } - - - /*************************************************************************/ - /* */ - /* S45ROUND[]: Super ROUND 45 degrees */ - /* Opcode range: 0x77 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_S45ROUND( INS_ARG ) - { - DO_S45ROUND - } - - - /*************************************************************************/ - /* */ - /* SLOOP[]: Set LOOP variable */ - /* Opcode range: 0x17 */ - /* Stack: int32? --> */ - /* */ - static void - Ins_SLOOP( INS_ARG ) - { - DO_SLOOP - } - - - /*************************************************************************/ - /* */ - /* SMD[]: Set Minimum Distance */ - /* Opcode range: 0x1A */ - /* Stack: f26.6 --> */ - /* */ - static void - Ins_SMD( INS_ARG ) - { - DO_SMD - } - - - /*************************************************************************/ - /* */ - /* SCVTCI[]: Set Control Value Table Cut In */ - /* Opcode range: 0x1D */ - /* Stack: f26.6 --> */ - /* */ - static void - Ins_SCVTCI( INS_ARG ) - { - DO_SCVTCI - } - - - /*************************************************************************/ - /* */ - /* SSWCI[]: Set Single Width Cut In */ - /* Opcode range: 0x1E */ - /* Stack: f26.6 --> */ - /* */ - static void - Ins_SSWCI( INS_ARG ) - { - DO_SSWCI - } - - - /*************************************************************************/ - /* */ - /* SSW[]: Set Single Width */ - /* Opcode range: 0x1F */ - /* Stack: int32? --> */ - /* */ - static void - Ins_SSW( INS_ARG ) - { - DO_SSW - } - - - /*************************************************************************/ - /* */ - /* FLIPON[]: Set auto-FLIP to ON */ - /* Opcode range: 0x4D */ - /* Stack: --> */ - /* */ - static void - Ins_FLIPON( INS_ARG ) - { - DO_FLIPON - } - - - /*************************************************************************/ - /* */ - /* FLIPOFF[]: Set auto-FLIP to OFF */ - /* Opcode range: 0x4E */ - /* Stack: --> */ - /* */ - static void - Ins_FLIPOFF( INS_ARG ) - { - DO_FLIPOFF - } - - - /*************************************************************************/ - /* */ - /* SANGW[]: Set ANGle Weight */ - /* Opcode range: 0x7E */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SANGW( INS_ARG ) - { - /* instruction not supported anymore */ - } - - - /*************************************************************************/ - /* */ - /* SDB[]: Set Delta Base */ - /* Opcode range: 0x5E */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SDB( INS_ARG ) - { - DO_SDB - } - - - /*************************************************************************/ - /* */ - /* SDS[]: Set Delta Shift */ - /* Opcode range: 0x5F */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SDS( INS_ARG ) - { - DO_SDS - } - - - /*************************************************************************/ - /* */ - /* MPPEM[]: Measure Pixel Per EM */ - /* Opcode range: 0x4B */ - /* Stack: --> Euint16 */ - /* */ - static void - Ins_MPPEM( INS_ARG ) - { - DO_MPPEM - } - - - /*************************************************************************/ - /* */ - /* MPS[]: Measure Point Size */ - /* Opcode range: 0x4C */ - /* Stack: --> Euint16 */ - /* */ - static void - Ins_MPS( INS_ARG ) - { - DO_MPS - } - - - /*************************************************************************/ - /* */ - /* DUP[]: DUPlicate the top stack's element */ - /* Opcode range: 0x20 */ - /* Stack: StkElt --> StkElt StkElt */ - /* */ - static void - Ins_DUP( INS_ARG ) - { - DO_DUP - } - - - /*************************************************************************/ - /* */ - /* POP[]: POP the stack's top element */ - /* Opcode range: 0x21 */ - /* Stack: StkElt --> */ - /* */ - static void - Ins_POP( INS_ARG ) - { - /* nothing to do */ - } - - - /*************************************************************************/ - /* */ - /* CLEAR[]: CLEAR the entire stack */ - /* Opcode range: 0x22 */ - /* Stack: StkElt... --> */ - /* */ - static void - Ins_CLEAR( INS_ARG ) - { - DO_CLEAR - } - - - /*************************************************************************/ - /* */ - /* SWAP[]: SWAP the stack's top two elements */ - /* Opcode range: 0x23 */ - /* Stack: 2 * StkElt --> 2 * StkElt */ - /* */ - static void - Ins_SWAP( INS_ARG ) - { - DO_SWAP - } - - - /*************************************************************************/ - /* */ - /* DEPTH[]: return the stack DEPTH */ - /* Opcode range: 0x24 */ - /* Stack: --> uint32 */ - /* */ - static void - Ins_DEPTH( INS_ARG ) - { - DO_DEPTH - } - - - /*************************************************************************/ - /* */ - /* CINDEX[]: Copy INDEXed element */ - /* Opcode range: 0x25 */ - /* Stack: int32 --> StkElt */ - /* */ - static void - Ins_CINDEX( INS_ARG ) - { - DO_CINDEX - } - - - /*************************************************************************/ - /* */ - /* EIF[]: End IF */ - /* Opcode range: 0x59 */ - /* Stack: --> */ - /* */ - static void - Ins_EIF( INS_ARG ) - { - /* nothing to do */ - } - - - /*************************************************************************/ - /* */ - /* JROT[]: Jump Relative On True */ - /* Opcode range: 0x78 */ - /* Stack: StkElt int32 --> */ - /* */ - static void - Ins_JROT( INS_ARG ) - { - DO_JROT - } - - - /*************************************************************************/ - /* */ - /* JMPR[]: JuMP Relative */ - /* Opcode range: 0x1C */ - /* Stack: int32 --> */ - /* */ - static void - Ins_JMPR( INS_ARG ) - { - DO_JMPR - } - - - /*************************************************************************/ - /* */ - /* JROF[]: Jump Relative On False */ - /* Opcode range: 0x79 */ - /* Stack: StkElt int32 --> */ - /* */ - static void - Ins_JROF( INS_ARG ) - { - DO_JROF - } - - - /*************************************************************************/ - /* */ - /* LT[]: Less Than */ - /* Opcode range: 0x50 */ - /* Stack: int32? int32? --> bool */ - /* */ - static void - Ins_LT( INS_ARG ) - { - DO_LT - } - - - /*************************************************************************/ - /* */ - /* LTEQ[]: Less Than or EQual */ - /* Opcode range: 0x51 */ - /* Stack: int32? int32? --> bool */ - /* */ - static void - Ins_LTEQ( INS_ARG ) - { - DO_LTEQ - } - - - /*************************************************************************/ - /* */ - /* GT[]: Greater Than */ - /* Opcode range: 0x52 */ - /* Stack: int32? int32? --> bool */ - /* */ - static void - Ins_GT( INS_ARG ) - { - DO_GT - } - - - /*************************************************************************/ - /* */ - /* GTEQ[]: Greater Than or EQual */ - /* Opcode range: 0x53 */ - /* Stack: int32? int32? --> bool */ - /* */ - static void - Ins_GTEQ( INS_ARG ) - { - DO_GTEQ - } - - - /*************************************************************************/ - /* */ - /* EQ[]: EQual */ - /* Opcode range: 0x54 */ - /* Stack: StkElt StkElt --> bool */ - /* */ - static void - Ins_EQ( INS_ARG ) - { - DO_EQ - } - - - /*************************************************************************/ - /* */ - /* NEQ[]: Not EQual */ - /* Opcode range: 0x55 */ - /* Stack: StkElt StkElt --> bool */ - /* */ - static void - Ins_NEQ( INS_ARG ) - { - DO_NEQ - } - - - /*************************************************************************/ - /* */ - /* ODD[]: Is ODD */ - /* Opcode range: 0x56 */ - /* Stack: f26.6 --> bool */ - /* */ - static void - Ins_ODD( INS_ARG ) - { - DO_ODD - } - - - /*************************************************************************/ - /* */ - /* EVEN[]: Is EVEN */ - /* Opcode range: 0x57 */ - /* Stack: f26.6 --> bool */ - /* */ - static void - Ins_EVEN( INS_ARG ) - { - DO_EVEN - } - - - /*************************************************************************/ - /* */ - /* AND[]: logical AND */ - /* Opcode range: 0x5A */ - /* Stack: uint32 uint32 --> uint32 */ - /* */ - static void - Ins_AND( INS_ARG ) - { - DO_AND - } - - - /*************************************************************************/ - /* */ - /* OR[]: logical OR */ - /* Opcode range: 0x5B */ - /* Stack: uint32 uint32 --> uint32 */ - /* */ - static void - Ins_OR( INS_ARG ) - { - DO_OR - } - - - /*************************************************************************/ - /* */ - /* NOT[]: logical NOT */ - /* Opcode range: 0x5C */ - /* Stack: StkElt --> uint32 */ - /* */ - static void - Ins_NOT( INS_ARG ) - { - DO_NOT - } - - - /*************************************************************************/ - /* */ - /* ADD[]: ADD */ - /* Opcode range: 0x60 */ - /* Stack: f26.6 f26.6 --> f26.6 */ - /* */ - static void - Ins_ADD( INS_ARG ) - { - DO_ADD - } - - - /*************************************************************************/ - /* */ - /* SUB[]: SUBtract */ - /* Opcode range: 0x61 */ - /* Stack: f26.6 f26.6 --> f26.6 */ - /* */ - static void - Ins_SUB( INS_ARG ) - { - DO_SUB - } - - - /*************************************************************************/ - /* */ - /* DIV[]: DIVide */ - /* Opcode range: 0x62 */ - /* Stack: f26.6 f26.6 --> f26.6 */ - /* */ - static void - Ins_DIV( INS_ARG ) - { - DO_DIV - } - - - /*************************************************************************/ - /* */ - /* MUL[]: MULtiply */ - /* Opcode range: 0x63 */ - /* Stack: f26.6 f26.6 --> f26.6 */ - /* */ - static void - Ins_MUL( INS_ARG ) - { - DO_MUL - } - - - /*************************************************************************/ - /* */ - /* ABS[]: ABSolute value */ - /* Opcode range: 0x64 */ - /* Stack: f26.6 --> f26.6 */ - /* */ - static void - Ins_ABS( INS_ARG ) - { - DO_ABS - } - - - /*************************************************************************/ - /* */ - /* NEG[]: NEGate */ - /* Opcode range: 0x65 */ - /* Stack: f26.6 --> f26.6 */ - /* */ - static void - Ins_NEG( INS_ARG ) - { - DO_NEG - } - - - /*************************************************************************/ - /* */ - /* FLOOR[]: FLOOR */ - /* Opcode range: 0x66 */ - /* Stack: f26.6 --> f26.6 */ - /* */ - static void - Ins_FLOOR( INS_ARG ) - { - DO_FLOOR - } - - - /*************************************************************************/ - /* */ - /* CEILING[]: CEILING */ - /* Opcode range: 0x67 */ - /* Stack: f26.6 --> f26.6 */ - /* */ - static void - Ins_CEILING( INS_ARG ) - { - DO_CEILING - } - - - /*************************************************************************/ - /* */ - /* RS[]: Read Store */ - /* Opcode range: 0x43 */ - /* Stack: uint32 --> uint32 */ - /* */ - static void - Ins_RS( INS_ARG ) - { - DO_RS - } - - - /*************************************************************************/ - /* */ - /* WS[]: Write Store */ - /* Opcode range: 0x42 */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_WS( INS_ARG ) - { - DO_WS - } - - - /*************************************************************************/ - /* */ - /* WCVTP[]: Write CVT in Pixel units */ - /* Opcode range: 0x44 */ - /* Stack: f26.6 uint32 --> */ - /* */ - static void - Ins_WCVTP( INS_ARG ) - { - DO_WCVTP - } - - - /*************************************************************************/ - /* */ - /* WCVTF[]: Write CVT in Funits */ - /* Opcode range: 0x70 */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_WCVTF( INS_ARG ) - { - DO_WCVTF - } - - - /*************************************************************************/ - /* */ - /* RCVT[]: Read CVT */ - /* Opcode range: 0x45 */ - /* Stack: uint32 --> f26.6 */ - /* */ - static void - Ins_RCVT( INS_ARG ) - { - DO_RCVT - } - - - /*************************************************************************/ - /* */ - /* AA[]: Adjust Angle */ - /* Opcode range: 0x7F */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_AA( INS_ARG ) - { - /* intentionally no longer supported */ - } - - - /*************************************************************************/ - /* */ - /* DEBUG[]: DEBUG. Unsupported. */ - /* Opcode range: 0x4F */ - /* Stack: uint32 --> */ - /* */ - /* Note: The original instruction pops a value from the stack. */ - /* */ - static void - Ins_DEBUG( INS_ARG ) - { - DO_DEBUG - } - - - /*************************************************************************/ - /* */ - /* ROUND[ab]: ROUND value */ - /* Opcode range: 0x68-0x6B */ - /* Stack: f26.6 --> f26.6 */ - /* */ - static void - Ins_ROUND( INS_ARG ) - { - DO_ROUND - } - - - /*************************************************************************/ - /* */ - /* NROUND[ab]: No ROUNDing of value */ - /* Opcode range: 0x6C-0x6F */ - /* Stack: f26.6 --> f26.6 */ - /* */ - static void - Ins_NROUND( INS_ARG ) - { - DO_NROUND - } - - - /*************************************************************************/ - /* */ - /* MAX[]: MAXimum */ - /* Opcode range: 0x68 */ - /* Stack: int32? int32? --> int32 */ - /* */ - static void - Ins_MAX( INS_ARG ) - { - DO_MAX - } - - - /*************************************************************************/ - /* */ - /* MIN[]: MINimum */ - /* Opcode range: 0x69 */ - /* Stack: int32? int32? --> int32 */ - /* */ - static void - Ins_MIN( INS_ARG ) - { - DO_MIN - } - - -#endif /* !TT_CONFIG_OPTION_INTERPRETER_SWITCH */ - - - /*************************************************************************/ - /* */ - /* The following functions are called as is within the switch statement. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* MINDEX[]: Move INDEXed element */ - /* Opcode range: 0x26 */ - /* Stack: int32? --> StkElt */ - /* */ - static void - Ins_MINDEX( INS_ARG ) - { - FT_Long L, K; - - - L = args[0]; - - if ( L <= 0 || L > CUR.args ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - - K = CUR.stack[CUR.args - L]; - - FT_ARRAY_MOVE( &CUR.stack[CUR.args - L ], - &CUR.stack[CUR.args - L + 1], - ( L - 1 ) ); - - CUR.stack[CUR.args - 1] = K; - } - - - /*************************************************************************/ - /* */ - /* ROLL[]: ROLL top three elements */ - /* Opcode range: 0x8A */ - /* Stack: 3 * StkElt --> 3 * StkElt */ - /* */ - static void - Ins_ROLL( INS_ARG ) - { - FT_Long A, B, C; - - FT_UNUSED_EXEC; - - - A = args[2]; - B = args[1]; - C = args[0]; - - args[2] = C; - args[1] = A; - args[0] = B; - } - - - /*************************************************************************/ - /* */ - /* MANAGING THE FLOW OF CONTROL */ - /* */ - /* Instructions appear in the specification's order. */ - /* */ - /*************************************************************************/ - - - static FT_Bool - SkipCode( EXEC_OP ) - { - CUR.IP += CUR.length; - - if ( CUR.IP < CUR.codeSize ) - { - CUR.opcode = CUR.code[CUR.IP]; - - CUR.length = opcode_length[CUR.opcode]; - if ( CUR.length < 0 ) - { - if ( CUR.IP + 1 > CUR.codeSize ) - goto Fail_Overflow; - CUR.length = CUR.code[CUR.IP + 1] + 2; - } - - if ( CUR.IP + CUR.length <= CUR.codeSize ) - return SUCCESS; - } - - Fail_Overflow: - CUR.error = TT_Err_Code_Overflow; - return FAILURE; - } - - - /*************************************************************************/ - /* */ - /* IF[]: IF test */ - /* Opcode range: 0x58 */ - /* Stack: StkElt --> */ - /* */ - static void - Ins_IF( INS_ARG ) - { - FT_Int nIfs; - FT_Bool Out; - - - if ( args[0] != 0 ) - return; - - nIfs = 1; - Out = 0; - - do - { - if ( SKIP_Code() == FAILURE ) - return; - - switch ( CUR.opcode ) - { - case 0x58: /* IF */ - nIfs++; - break; - - case 0x1B: /* ELSE */ - Out = FT_BOOL( nIfs == 1 ); - break; - - case 0x59: /* EIF */ - nIfs--; - Out = FT_BOOL( nIfs == 0 ); - break; - } - } while ( Out == 0 ); - } - - - /*************************************************************************/ - /* */ - /* ELSE[]: ELSE */ - /* Opcode range: 0x1B */ - /* Stack: --> */ - /* */ - static void - Ins_ELSE( INS_ARG ) - { - FT_Int nIfs; - - FT_UNUSED_ARG; - - - nIfs = 1; - - do - { - if ( SKIP_Code() == FAILURE ) - return; - - switch ( CUR.opcode ) - { - case 0x58: /* IF */ - nIfs++; - break; - - case 0x59: /* EIF */ - nIfs--; - break; - } - } while ( nIfs != 0 ); - } - - - /*************************************************************************/ - /* */ - /* DEFINING AND USING FUNCTIONS AND INSTRUCTIONS */ - /* */ - /* Instructions appear in the specification's order. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* FDEF[]: Function DEFinition */ - /* Opcode range: 0x2C */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_FDEF( INS_ARG ) - { - FT_ULong n; - TT_DefRecord* rec; - TT_DefRecord* limit; - - - /* some font programs are broken enough to redefine functions! */ - /* We will then parse the current table. */ - - rec = CUR.FDefs; - limit = rec + CUR.numFDefs; - n = args[0]; - - for ( ; rec < limit; rec++ ) - { - if ( rec->opc == n ) - break; - } - - if ( rec == limit ) - { - /* check that there is enough room for new functions */ - if ( CUR.numFDefs >= CUR.maxFDefs ) - { - CUR.error = TT_Err_Too_Many_Function_Defs; - return; - } - CUR.numFDefs++; - } - - rec->range = CUR.curRange; - rec->opc = n; - rec->start = CUR.IP + 1; - rec->active = TRUE; - - if ( n > CUR.maxFunc ) - CUR.maxFunc = n; - - /* Now skip the whole function definition. */ - /* We don't allow nested IDEFS & FDEFs. */ - - while ( SKIP_Code() == SUCCESS ) - { - switch ( CUR.opcode ) - { - case 0x89: /* IDEF */ - case 0x2C: /* FDEF */ - CUR.error = TT_Err_Nested_DEFS; - return; - - case 0x2D: /* ENDF */ - return; - } - } - } - - - /*************************************************************************/ - /* */ - /* ENDF[]: END Function definition */ - /* Opcode range: 0x2D */ - /* Stack: --> */ - /* */ - static void - Ins_ENDF( INS_ARG ) - { - TT_CallRec* pRec; - - FT_UNUSED_ARG; - - - if ( CUR.callTop <= 0 ) /* We encountered an ENDF without a call */ - { - CUR.error = TT_Err_ENDF_In_Exec_Stream; - return; - } - - CUR.callTop--; - - pRec = &CUR.callStack[CUR.callTop]; - - pRec->Cur_Count--; - - CUR.step_ins = FALSE; - - if ( pRec->Cur_Count > 0 ) - { - CUR.callTop++; - CUR.IP = pRec->Cur_Restart; - } - else - /* Loop through the current function */ - INS_Goto_CodeRange( pRec->Caller_Range, - pRec->Caller_IP ); - - /* Exit the current call frame. */ - - /* NOTE: If the last intruction of a program is a */ - /* CALL or LOOPCALL, the return address is */ - /* always out of the code range. This is a */ - /* valid address, and it is why we do not test */ - /* the result of Ins_Goto_CodeRange() here! */ - } - - - /*************************************************************************/ - /* */ - /* CALL[]: CALL function */ - /* Opcode range: 0x2B */ - /* Stack: uint32? --> */ - /* */ - static void - Ins_CALL( INS_ARG ) - { - FT_ULong F; - TT_CallRec* pCrec; - TT_DefRecord* def; - - - /* first of all, check the index */ - - F = args[0]; - if ( BOUNDS( F, CUR.maxFunc + 1 ) ) - goto Fail; - - /* Except for some old Apple fonts, all functions in a TrueType */ - /* font are defined in increasing order, starting from 0. This */ - /* means that we normally have */ - /* */ - /* CUR.maxFunc+1 == CUR.numFDefs */ - /* CUR.FDefs[n].opc == n for n in 0..CUR.maxFunc */ - /* */ - /* If this isn't true, we need to look up the function table. */ - - def = CUR.FDefs + F; - if ( CUR.maxFunc + 1 != CUR.numFDefs || def->opc != F ) - { - /* look up the FDefs table */ - TT_DefRecord* limit; - - - def = CUR.FDefs; - limit = def + CUR.numFDefs; - - while ( def < limit && def->opc != F ) - def++; - - if ( def == limit ) - goto Fail; - } - - /* check that the function is active */ - if ( !def->active ) - goto Fail; - - /* check the call stack */ - if ( CUR.callTop >= CUR.callSize ) - { - CUR.error = TT_Err_Stack_Overflow; - return; - } - - pCrec = CUR.callStack + CUR.callTop; - - pCrec->Caller_Range = CUR.curRange; - pCrec->Caller_IP = CUR.IP + 1; - pCrec->Cur_Count = 1; - pCrec->Cur_Restart = def->start; - - CUR.callTop++; - - INS_Goto_CodeRange( def->range, - def->start ); - - CUR.step_ins = FALSE; - return; - - Fail: - CUR.error = TT_Err_Invalid_Reference; - } - - - /*************************************************************************/ - /* */ - /* LOOPCALL[]: LOOP and CALL function */ - /* Opcode range: 0x2A */ - /* Stack: uint32? Eint16? --> */ - /* */ - static void - Ins_LOOPCALL( INS_ARG ) - { - FT_ULong F; - TT_CallRec* pCrec; - TT_DefRecord* def; - - - /* first of all, check the index */ - F = args[1]; - if ( BOUNDS( F, CUR.maxFunc + 1 ) ) - goto Fail; - - /* Except for some old Apple fonts, all functions in a TrueType */ - /* font are defined in increasing order, starting from 0. This */ - /* means that we normally have */ - /* */ - /* CUR.maxFunc+1 == CUR.numFDefs */ - /* CUR.FDefs[n].opc == n for n in 0..CUR.maxFunc */ - /* */ - /* If this isn't true, we need to look up the function table. */ - - def = CUR.FDefs + F; - if ( CUR.maxFunc + 1 != CUR.numFDefs || def->opc != F ) - { - /* look up the FDefs table */ - TT_DefRecord* limit; - - - def = CUR.FDefs; - limit = def + CUR.numFDefs; - - while ( def < limit && def->opc != F ) - def++; - - if ( def == limit ) - goto Fail; - } - - /* check that the function is active */ - if ( !def->active ) - goto Fail; - - /* check stack */ - if ( CUR.callTop >= CUR.callSize ) - { - CUR.error = TT_Err_Stack_Overflow; - return; - } - - if ( args[0] > 0 ) - { - pCrec = CUR.callStack + CUR.callTop; - - pCrec->Caller_Range = CUR.curRange; - pCrec->Caller_IP = CUR.IP + 1; - pCrec->Cur_Count = (FT_Int)args[0]; - pCrec->Cur_Restart = def->start; - - CUR.callTop++; - - INS_Goto_CodeRange( def->range, def->start ); - - CUR.step_ins = FALSE; - } - return; - - Fail: - CUR.error = TT_Err_Invalid_Reference; - } - - - /*************************************************************************/ - /* */ - /* IDEF[]: Instruction DEFinition */ - /* Opcode range: 0x89 */ - /* Stack: Eint8 --> */ - /* */ - static void - Ins_IDEF( INS_ARG ) - { - TT_DefRecord* def; - TT_DefRecord* limit; - - - /* First of all, look for the same function in our table */ - - def = CUR.IDefs; - limit = def + CUR.numIDefs; - - for ( ; def < limit; def++ ) - if ( def->opc == (FT_ULong)args[0] ) - break; - - if ( def == limit ) - { - /* check that there is enough room for a new instruction */ - if ( CUR.numIDefs >= CUR.maxIDefs ) - { - CUR.error = TT_Err_Too_Many_Instruction_Defs; - return; - } - CUR.numIDefs++; - } - - def->opc = args[0]; - def->start = CUR.IP+1; - def->range = CUR.curRange; - def->active = TRUE; - - if ( (FT_ULong)args[0] > CUR.maxIns ) - CUR.maxIns = args[0]; - - /* Now skip the whole function definition. */ - /* We don't allow nested IDEFs & FDEFs. */ - - while ( SKIP_Code() == SUCCESS ) - { - switch ( CUR.opcode ) - { - case 0x89: /* IDEF */ - case 0x2C: /* FDEF */ - CUR.error = TT_Err_Nested_DEFS; - return; - case 0x2D: /* ENDF */ - return; - } - } - } - - - /*************************************************************************/ - /* */ - /* PUSHING DATA ONTO THE INTERPRETER STACK */ - /* */ - /* Instructions appear in the specification's order. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* NPUSHB[]: PUSH N Bytes */ - /* Opcode range: 0x40 */ - /* Stack: --> uint32... */ - /* */ - static void - Ins_NPUSHB( INS_ARG ) - { - FT_UShort L, K; - - - L = (FT_UShort)CUR.code[CUR.IP + 1]; - - if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) - { - CUR.error = TT_Err_Stack_Overflow; - return; - } - - for ( K = 1; K <= L; K++ ) - args[K - 1] = CUR.code[CUR.IP + K + 1]; - - CUR.new_top += L; - } - - - /*************************************************************************/ - /* */ - /* NPUSHW[]: PUSH N Words */ - /* Opcode range: 0x41 */ - /* Stack: --> int32... */ - /* */ - static void - Ins_NPUSHW( INS_ARG ) - { - FT_UShort L, K; - - - L = (FT_UShort)CUR.code[CUR.IP + 1]; - - if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) - { - CUR.error = TT_Err_Stack_Overflow; - return; - } - - CUR.IP += 2; - - for ( K = 0; K < L; K++ ) - args[K] = GET_ShortIns(); - - CUR.step_ins = FALSE; - CUR.new_top += L; - } - - - /*************************************************************************/ - /* */ - /* PUSHB[abc]: PUSH Bytes */ - /* Opcode range: 0xB0-0xB7 */ - /* Stack: --> uint32... */ - /* */ - static void - Ins_PUSHB( INS_ARG ) - { - FT_UShort L, K; - - - L = (FT_UShort)(CUR.opcode - 0xB0 + 1); - - if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) - { - CUR.error = TT_Err_Stack_Overflow; - return; - } - - for ( K = 1; K <= L; K++ ) - args[K - 1] = CUR.code[CUR.IP + K]; - } - - - /*************************************************************************/ - /* */ - /* PUSHW[abc]: PUSH Words */ - /* Opcode range: 0xB8-0xBF */ - /* Stack: --> int32... */ - /* */ - static void - Ins_PUSHW( INS_ARG ) - { - FT_UShort L, K; - - - L = (FT_UShort)(CUR.opcode - 0xB8 + 1); - - if ( BOUNDS( L, CUR.stackSize + 1 - CUR.top ) ) - { - CUR.error = TT_Err_Stack_Overflow; - return; - } - - CUR.IP++; - - for ( K = 0; K < L; K++ ) - args[K] = GET_ShortIns(); - - CUR.step_ins = FALSE; - } - - - /*************************************************************************/ - /* */ - /* MANAGING THE GRAPHICS STATE */ - /* */ - /* Instructions appear in the specs' order. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* GC[a]: Get Coordinate projected onto */ - /* Opcode range: 0x46-0x47 */ - /* Stack: uint32 --> f26.6 */ - /* */ - /* BULLSHIT: Measures from the original glyph must be taken along the */ - /* dual projection vector! */ - /* */ - static void - Ins_GC( INS_ARG ) - { - FT_ULong L; - FT_F26Dot6 R; - - - L = (FT_ULong)args[0]; - - if ( BOUNDS( L, CUR.zp2.n_points ) ) - { - if ( CUR.pedantic_hinting ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - else - R = 0; - } - else - { - if ( CUR.opcode & 1 ) - R = CUR_Func_dualproj( CUR.zp2.org + L, NULL_Vector ); - else - R = CUR_Func_project( CUR.zp2.cur + L, NULL_Vector ); - } - - args[0] = R; - } - - - /*************************************************************************/ - /* */ - /* SCFS[]: Set Coordinate From Stack */ - /* Opcode range: 0x48 */ - /* Stack: f26.6 uint32 --> */ - /* */ - /* Formula: */ - /* */ - /* OA := OA + ( value - OA.p )/( f.p ) * f */ - /* */ - static void - Ins_SCFS( INS_ARG ) - { - FT_Long K; - FT_UShort L; - - - L = (FT_UShort)args[0]; - - if ( BOUNDS( L, CUR.zp2.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - K = CUR_Func_project( CUR.zp2.cur + L, NULL_Vector ); - - CUR_Func_move( &CUR.zp2, L, args[1] - K ); - - /* not part of the specs, but here for safety */ - - if ( CUR.GS.gep2 == 0 ) - CUR.zp2.org[L] = CUR.zp2.cur[L]; - } - - - /*************************************************************************/ - /* */ - /* MD[a]: Measure Distance */ - /* Opcode range: 0x49-0x4A */ - /* Stack: uint32 uint32 --> f26.6 */ - /* */ - /* BULLSHIT: Measure taken in the original glyph must be along the dual */ - /* projection vector. */ - /* */ - /* Second BULLSHIT: Flag attributes are inverted! */ - /* 0 => measure distance in original outline */ - /* 1 => measure distance in grid-fitted outline */ - /* */ - /* Third one: `zp0 - zp1', and not `zp2 - zp1! */ - /* */ - static void - Ins_MD( INS_ARG ) - { - FT_UShort K, L; - FT_F26Dot6 D; - - - K = (FT_UShort)args[1]; - L = (FT_UShort)args[0]; - - if( BOUNDS( L, CUR.zp0.n_points ) || - BOUNDS( K, CUR.zp1.n_points ) ) - { - if ( CUR.pedantic_hinting ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - D = 0; - } - else - { - if ( CUR.opcode & 1 ) - D = CUR_Func_project( CUR.zp0.cur + L, CUR.zp1.cur + K ); - else - D = CUR_Func_dualproj( CUR.zp0.org + L, CUR.zp1.org + K ); - } - - args[0] = D; - } - - - /*************************************************************************/ - /* */ - /* SDPVTL[a]: Set Dual PVector to Line */ - /* Opcode range: 0x86-0x87 */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_SDPVTL( INS_ARG ) - { - FT_Long A, B, C; - FT_UShort p1, p2; /* was FT_Int in pas type ERROR */ - - - p1 = (FT_UShort)args[1]; - p2 = (FT_UShort)args[0]; - - if ( BOUNDS( p2, CUR.zp1.n_points ) || - BOUNDS( p1, CUR.zp2.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - { - FT_Vector* v1 = CUR.zp1.org + p2; - FT_Vector* v2 = CUR.zp2.org + p1; - - - A = v1->x - v2->x; - B = v1->y - v2->y; - } - - if ( ( CUR.opcode & 1 ) != 0 ) - { - C = B; /* counter clockwise rotation */ - B = A; - A = -C; - } - - NORMalize( A, B, &CUR.GS.dualVector ); - - { - FT_Vector* v1 = CUR.zp1.cur + p2; - FT_Vector* v2 = CUR.zp2.cur + p1; - - - A = v1->x - v2->x; - B = v1->y - v2->y; - } - - if ( ( CUR.opcode & 1 ) != 0 ) - { - C = B; /* counter clockwise rotation */ - B = A; - A = -C; - } - - NORMalize( A, B, &CUR.GS.projVector ); - - GUESS_VECTOR( freeVector ); - - COMPUTE_Funcs(); - } - - - /*************************************************************************/ - /* */ - /* SZP0[]: Set Zone Pointer 0 */ - /* Opcode range: 0x13 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SZP0( INS_ARG ) - { - switch ( (FT_Int)args[0] ) - { - case 0: - CUR.zp0 = CUR.twilight; - break; - - case 1: - CUR.zp0 = CUR.pts; - break; - - default: - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - CUR.GS.gep0 = (FT_UShort)args[0]; - } - - - /*************************************************************************/ - /* */ - /* SZP1[]: Set Zone Pointer 1 */ - /* Opcode range: 0x14 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SZP1( INS_ARG ) - { - switch ( (FT_Int)args[0] ) - { - case 0: - CUR.zp1 = CUR.twilight; - break; - - case 1: - CUR.zp1 = CUR.pts; - break; - - default: - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - CUR.GS.gep1 = (FT_UShort)args[0]; - } - - - /*************************************************************************/ - /* */ - /* SZP2[]: Set Zone Pointer 2 */ - /* Opcode range: 0x15 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SZP2( INS_ARG ) - { - switch ( (FT_Int)args[0] ) - { - case 0: - CUR.zp2 = CUR.twilight; - break; - - case 1: - CUR.zp2 = CUR.pts; - break; - - default: - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - CUR.GS.gep2 = (FT_UShort)args[0]; - } - - - /*************************************************************************/ - /* */ - /* SZPS[]: Set Zone PointerS */ - /* Opcode range: 0x16 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SZPS( INS_ARG ) - { - switch ( (FT_Int)args[0] ) - { - case 0: - CUR.zp0 = CUR.twilight; - break; - - case 1: - CUR.zp0 = CUR.pts; - break; - - default: - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - CUR.zp1 = CUR.zp0; - CUR.zp2 = CUR.zp0; - - CUR.GS.gep0 = (FT_UShort)args[0]; - CUR.GS.gep1 = (FT_UShort)args[0]; - CUR.GS.gep2 = (FT_UShort)args[0]; - } - - - /*************************************************************************/ - /* */ - /* INSTCTRL[]: INSTruction ConTRoL */ - /* Opcode range: 0x8e */ - /* Stack: int32 int32 --> */ - /* */ - static void - Ins_INSTCTRL( INS_ARG ) - { - FT_Long K, L; - - - K = args[1]; - L = args[0]; - - if ( K < 1 || K > 2 ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - if ( L != 0 ) - L = K; - - CUR.GS.instruct_control = FT_BOOL( - ( (FT_Byte)CUR.GS.instruct_control & ~(FT_Byte)K ) | (FT_Byte)L ); - } - - - /*************************************************************************/ - /* */ - /* SCANCTRL[]: SCAN ConTRoL */ - /* Opcode range: 0x85 */ - /* Stack: uint32? --> */ - /* */ - static void - Ins_SCANCTRL( INS_ARG ) - { - FT_Int A; - - - /* Get Threshold */ - A = (FT_Int)( args[0] & 0xFF ); - - if ( A == 0xFF ) - { - CUR.GS.scan_control = TRUE; - return; - } - else if ( A == 0 ) - { - CUR.GS.scan_control = FALSE; - return; - } - - A *= 64; - -#if 0 - if ( (args[0] & 0x100) != 0 && CUR.metrics.pointSize <= A ) - CUR.GS.scan_control = TRUE; -#endif - - if ( (args[0] & 0x200) != 0 && CUR.tt_metrics.rotated ) - CUR.GS.scan_control = TRUE; - - if ( (args[0] & 0x400) != 0 && CUR.tt_metrics.stretched ) - CUR.GS.scan_control = TRUE; - -#if 0 - if ( (args[0] & 0x800) != 0 && CUR.metrics.pointSize > A ) - CUR.GS.scan_control = FALSE; -#endif - - if ( (args[0] & 0x1000) != 0 && CUR.tt_metrics.rotated ) - CUR.GS.scan_control = FALSE; - - if ( (args[0] & 0x2000) != 0 && CUR.tt_metrics.stretched ) - CUR.GS.scan_control = FALSE; - } - - - /*************************************************************************/ - /* */ - /* SCANTYPE[]: SCAN TYPE */ - /* Opcode range: 0x8D */ - /* Stack: uint32? --> */ - /* */ - static void - Ins_SCANTYPE( INS_ARG ) - { - /* for compatibility with future enhancements, */ - /* we must ignore new modes */ - - if ( args[0] >= 0 && args[0] <= 5 ) - { - if ( args[0] == 3 ) - args[0] = 2; - - CUR.GS.scan_type = (FT_Int)args[0]; - } - } - - - /*************************************************************************/ - /* */ - /* MANAGING OUTLINES */ - /* */ - /* Instructions appear in the specification's order. */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* FLIPPT[]: FLIP PoinT */ - /* Opcode range: 0x80 */ - /* Stack: uint32... --> */ - /* */ - static void - Ins_FLIPPT( INS_ARG ) - { - FT_UShort point; - - FT_UNUSED_ARG; - - - if ( CUR.top < CUR.GS.loop ) - { - CUR.error = TT_Err_Too_Few_Arguments; - return; - } - - while ( CUR.GS.loop > 0 ) - { - CUR.args--; - - point = (FT_UShort)CUR.stack[CUR.args]; - - if ( BOUNDS( point, CUR.pts.n_points ) ) - { - if ( CUR.pedantic_hinting ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - } - else - CUR.pts.tags[point] ^= FT_CURVE_TAG_ON; - - CUR.GS.loop--; - } - - CUR.GS.loop = 1; - CUR.new_top = CUR.args; - } - - - /*************************************************************************/ - /* */ - /* FLIPRGON[]: FLIP RanGe ON */ - /* Opcode range: 0x81 */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_FLIPRGON( INS_ARG ) - { - FT_UShort I, K, L; - - - K = (FT_UShort)args[1]; - L = (FT_UShort)args[0]; - - if ( BOUNDS( K, CUR.pts.n_points ) || - BOUNDS( L, CUR.pts.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - for ( I = L; I <= K; I++ ) - CUR.pts.tags[I] |= FT_CURVE_TAG_ON; - } - - - /*************************************************************************/ - /* */ - /* FLIPRGOFF: FLIP RanGe OFF */ - /* Opcode range: 0x82 */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_FLIPRGOFF( INS_ARG ) - { - FT_UShort I, K, L; - - - K = (FT_UShort)args[1]; - L = (FT_UShort)args[0]; - - if ( BOUNDS( K, CUR.pts.n_points ) || - BOUNDS( L, CUR.pts.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - for ( I = L; I <= K; I++ ) - CUR.pts.tags[I] &= ~FT_CURVE_TAG_ON; - } - - - static FT_Bool - Compute_Point_Displacement( EXEC_OP_ FT_F26Dot6* x, - FT_F26Dot6* y, - TT_GlyphZone zone, - FT_UShort* refp ) - { - TT_GlyphZoneRec zp; - FT_UShort p; - FT_F26Dot6 d; - - - if ( CUR.opcode & 1 ) - { - zp = CUR.zp0; - p = CUR.GS.rp1; - } - else - { - zp = CUR.zp1; - p = CUR.GS.rp2; - } - - if ( BOUNDS( p, zp.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return FAILURE; - } - - *zone = zp; - *refp = p; - - d = CUR_Func_project( zp.cur + p, zp.org + p ); - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - if ( CUR.face->unpatented_hinting ) - { - if ( CUR.GS.both_x_axis ) - { - *x = d; - *y = 0; - } - else - { - *x = 0; - *y = d; - } - } - else -#endif - { - *x = TT_MULDIV( d, - (FT_Long)CUR.GS.freeVector.x * 0x10000L, - CUR.F_dot_P ); - *y = TT_MULDIV( d, - (FT_Long)CUR.GS.freeVector.y * 0x10000L, - CUR.F_dot_P ); - } - - return SUCCESS; - } - - - static void - Move_Zp2_Point( EXEC_OP_ FT_UShort point, - FT_F26Dot6 dx, - FT_F26Dot6 dy, - FT_Bool touch ) - { -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - if ( CUR.face->unpatented_hinting ) - { - if ( CUR.GS.both_x_axis ) - { - CUR.zp2.cur[point].x += dx; - if ( touch ) - CUR.zp2.tags[point] |= FT_CURVE_TAG_TOUCH_X; - } - else - { - CUR.zp2.cur[point].y += dy; - if ( touch ) - CUR.zp2.tags[point] |= FT_CURVE_TAG_TOUCH_Y; - } - return; - } -#endif - - if ( CUR.GS.freeVector.x != 0 ) - { - CUR.zp2.cur[point].x += dx; - if ( touch ) - CUR.zp2.tags[point] |= FT_CURVE_TAG_TOUCH_X; - } - - if ( CUR.GS.freeVector.y != 0 ) - { - CUR.zp2.cur[point].y += dy; - if ( touch ) - CUR.zp2.tags[point] |= FT_CURVE_TAG_TOUCH_Y; - } - } - - - /*************************************************************************/ - /* */ - /* SHP[a]: SHift Point by the last point */ - /* Opcode range: 0x32-0x33 */ - /* Stack: uint32... --> */ - /* */ - static void - Ins_SHP( INS_ARG ) - { - TT_GlyphZoneRec zp; - FT_UShort refp; - - FT_F26Dot6 dx, - dy; - FT_UShort point; - - FT_UNUSED_ARG; - - - if ( CUR.top < CUR.GS.loop ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - - if ( COMPUTE_Point_Displacement( &dx, &dy, &zp, &refp ) ) - return; - - while ( CUR.GS.loop > 0 ) - { - CUR.args--; - point = (FT_UShort)CUR.stack[CUR.args]; - - if ( BOUNDS( point, CUR.zp2.n_points ) ) - { - if ( CUR.pedantic_hinting ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - } - else - /* XXX: UNDOCUMENTED! SHP touches the points */ - MOVE_Zp2_Point( point, dx, dy, TRUE ); - - CUR.GS.loop--; - } - - CUR.GS.loop = 1; - CUR.new_top = CUR.args; - } - - - /*************************************************************************/ - /* */ - /* SHC[a]: SHift Contour */ - /* Opcode range: 0x34-35 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SHC( INS_ARG ) - { - TT_GlyphZoneRec zp; - FT_UShort refp; - FT_F26Dot6 dx, - dy; - - FT_Short contour; - FT_UShort first_point, last_point, i; - - - contour = (FT_UShort)args[0]; - - if ( BOUNDS( contour, CUR.pts.n_contours ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - if ( COMPUTE_Point_Displacement( &dx, &dy, &zp, &refp ) ) - return; - - if ( contour == 0 ) - first_point = 0; - else - first_point = (FT_UShort)(CUR.pts.contours[contour - 1] + 1); - - last_point = CUR.pts.contours[contour]; - - /* XXX: this is probably wrong... at least it prevents memory */ - /* corruption when zp2 is the twilight zone */ - if ( last_point > CUR.zp2.n_points ) - { - if ( CUR.zp2.n_points > 0 ) - last_point = (FT_UShort)(CUR.zp2.n_points - 1); - else - last_point = 0; - } - - /* XXX: UNDOCUMENTED! SHC does touch the points */ - for ( i = first_point; i <= last_point; i++ ) - { - if ( zp.cur != CUR.zp2.cur || refp != i ) - MOVE_Zp2_Point( i, dx, dy, TRUE ); - } - } - - - /*************************************************************************/ - /* */ - /* SHZ[a]: SHift Zone */ - /* Opcode range: 0x36-37 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_SHZ( INS_ARG ) - { - TT_GlyphZoneRec zp; - FT_UShort refp; - FT_F26Dot6 dx, - dy; - - FT_UShort last_point, i; - - - if ( BOUNDS( args[0], 2 ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - if ( COMPUTE_Point_Displacement( &dx, &dy, &zp, &refp ) ) - return; - - if ( CUR.zp2.n_points > 0 ) - last_point = (FT_UShort)(CUR.zp2.n_points - 1); - else - last_point = 0; - - /* XXX: UNDOCUMENTED! SHZ doesn't touch the points */ - for ( i = 0; i <= last_point; i++ ) - { - if ( zp.cur != CUR.zp2.cur || refp != i ) - MOVE_Zp2_Point( i, dx, dy, FALSE ); - } - } - - - /*************************************************************************/ - /* */ - /* SHPIX[]: SHift points by a PIXel amount */ - /* Opcode range: 0x38 */ - /* Stack: f26.6 uint32... --> */ - /* */ - static void - Ins_SHPIX( INS_ARG ) - { - FT_F26Dot6 dx, dy; - FT_UShort point; - - - if ( CUR.top < CUR.GS.loop + 1 ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - if ( CUR.face->unpatented_hinting ) - { - if ( CUR.GS.both_x_axis ) - { - dx = TT_MulFix14( args[0], 0x4000 ); - dy = 0; - } - else - { - dx = 0; - dy = TT_MulFix14( args[0], 0x4000 ); - } - } - else -#endif - { - dx = TT_MulFix14( args[0], CUR.GS.freeVector.x ); - dy = TT_MulFix14( args[0], CUR.GS.freeVector.y ); - } - - while ( CUR.GS.loop > 0 ) - { - CUR.args--; - - point = (FT_UShort)CUR.stack[CUR.args]; - - if ( BOUNDS( point, CUR.zp2.n_points ) ) - { - if ( CUR.pedantic_hinting ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - } - else - MOVE_Zp2_Point( point, dx, dy, TRUE ); - - CUR.GS.loop--; - } - - CUR.GS.loop = 1; - CUR.new_top = CUR.args; - } - - - /*************************************************************************/ - /* */ - /* MSIRP[a]: Move Stack Indirect Relative Position */ - /* Opcode range: 0x3A-0x3B */ - /* Stack: f26.6 uint32 --> */ - /* */ - static void - Ins_MSIRP( INS_ARG ) - { - FT_UShort point; - FT_F26Dot6 distance; - - - point = (FT_UShort)args[0]; - - if ( BOUNDS( point, CUR.zp1.n_points ) || - BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - /* XXX: UNDOCUMENTED! behaviour */ - if ( CUR.GS.gep1 == 0 ) /* if the point that is to be moved */ - /* is in twilight zone */ - { - CUR.zp1.org[point] = CUR.zp0.org[CUR.GS.rp0]; - CUR_Func_move_orig( &CUR.zp1, point, args[1] ); - CUR.zp1.cur[point] = CUR.zp1.org[point]; - } - - distance = CUR_Func_project( CUR.zp1.cur + point, - CUR.zp0.cur + CUR.GS.rp0 ); - - CUR_Func_move( &CUR.zp1, point, args[1] - distance ); - - CUR.GS.rp1 = CUR.GS.rp0; - CUR.GS.rp2 = point; - - if ( (CUR.opcode & 1) != 0 ) - CUR.GS.rp0 = point; - } - - - /*************************************************************************/ - /* */ - /* MDAP[a]: Move Direct Absolute Point */ - /* Opcode range: 0x2E-0x2F */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_MDAP( INS_ARG ) - { - FT_UShort point; - FT_F26Dot6 cur_dist, - distance; - - - point = (FT_UShort)args[0]; - - if ( BOUNDS( point, CUR.zp0.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - /* XXX: Is there some undocumented feature while in the */ - /* twilight zone? ? */ - if ( ( CUR.opcode & 1 ) != 0 ) - { - cur_dist = CUR_Func_project( CUR.zp0.cur + point, NULL_Vector ); - distance = CUR_Func_round( cur_dist, - CUR.tt_metrics.compensations[0] ) - cur_dist; - } - else - distance = 0; - - CUR_Func_move( &CUR.zp0, point, distance ); - - CUR.GS.rp0 = point; - CUR.GS.rp1 = point; - } - - - /*************************************************************************/ - /* */ - /* MIAP[a]: Move Indirect Absolute Point */ - /* Opcode range: 0x3E-0x3F */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_MIAP( INS_ARG ) - { - FT_ULong cvtEntry; - FT_UShort point; - FT_F26Dot6 distance, - org_dist; - - - cvtEntry = (FT_ULong)args[1]; - point = (FT_UShort)args[0]; - - if ( BOUNDS( point, CUR.zp0.n_points ) || - BOUNDS( cvtEntry, CUR.cvtSize ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - /* UNDOCUMENTED! */ - /* */ - /* The behaviour of an MIAP instruction is quite */ - /* different when used in the twilight zone. */ - /* */ - /* First, no control value cutin test is performed */ - /* as it would fail anyway. Second, the original */ - /* point, i.e. (org_x,org_y) of zp0.point, is set */ - /* to the absolute, unrounded distance found in */ - /* the CVT. */ - /* */ - /* This is used in the CVT programs of the Microsoft */ - /* fonts Arial, Times, etc., in order to re-adjust */ - /* some key font heights. It allows the use of the */ - /* IP instruction in the twilight zone, which */ - /* otherwise would be `illegal' according to the */ - /* specification. */ - /* */ - /* We implement it with a special sequence for the */ - /* twilight zone. This is a bad hack, but it seems */ - /* to work. */ - - distance = CUR_Func_read_cvt( cvtEntry ); - - if ( CUR.GS.gep0 == 0 ) /* If in twilight zone */ - { - CUR.zp0.org[point].x = TT_MulFix14( distance, CUR.GS.freeVector.x ); - CUR.zp0.org[point].y = TT_MulFix14( distance, CUR.GS.freeVector.y ), - CUR.zp0.cur[point] = CUR.zp0.org[point]; - } - - org_dist = CUR_Func_project( CUR.zp0.cur + point, NULL_Vector ); - - if ( ( CUR.opcode & 1 ) != 0 ) /* rounding and control cutin flag */ - { - if ( FT_ABS( distance - org_dist ) > CUR.GS.control_value_cutin ) - distance = org_dist; - - distance = CUR_Func_round( distance, CUR.tt_metrics.compensations[0] ); - } - - CUR_Func_move( &CUR.zp0, point, distance - org_dist ); - - CUR.GS.rp0 = point; - CUR.GS.rp1 = point; - } - - - /*************************************************************************/ - /* */ - /* MDRP[abcde]: Move Direct Relative Point */ - /* Opcode range: 0xC0-0xDF */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_MDRP( INS_ARG ) - { - FT_UShort point; - FT_F26Dot6 org_dist, distance; - - - point = (FT_UShort)args[0]; - - if ( BOUNDS( point, CUR.zp1.n_points ) || - BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - /* XXX: Is there some undocumented feature while in the */ - /* twilight zone? */ - - org_dist = CUR_Func_dualproj( CUR.zp1.org + point, - CUR.zp0.org + CUR.GS.rp0 ); - - /* single width cutin test */ - - if ( FT_ABS( org_dist - CUR.GS.single_width_value ) < - CUR.GS.single_width_cutin ) - { - if ( org_dist >= 0 ) - org_dist = CUR.GS.single_width_value; - else - org_dist = -CUR.GS.single_width_value; - } - - /* round flag */ - - if ( ( CUR.opcode & 4 ) != 0 ) - distance = CUR_Func_round( - org_dist, - CUR.tt_metrics.compensations[CUR.opcode & 3] ); - else - distance = ROUND_None( - org_dist, - CUR.tt_metrics.compensations[CUR.opcode & 3] ); - - /* minimum distance flag */ - - if ( ( CUR.opcode & 8 ) != 0 ) - { - if ( org_dist >= 0 ) - { - if ( distance < CUR.GS.minimum_distance ) - distance = CUR.GS.minimum_distance; - } - else - { - if ( distance > -CUR.GS.minimum_distance ) - distance = -CUR.GS.minimum_distance; - } - } - - /* now move the point */ - - org_dist = CUR_Func_project( CUR.zp1.cur + point, - CUR.zp0.cur + CUR.GS.rp0 ); - - CUR_Func_move( &CUR.zp1, point, distance - org_dist ); - - CUR.GS.rp1 = CUR.GS.rp0; - CUR.GS.rp2 = point; - - if ( ( CUR.opcode & 16 ) != 0 ) - CUR.GS.rp0 = point; - } - - - /*************************************************************************/ - /* */ - /* MIRP[abcde]: Move Indirect Relative Point */ - /* Opcode range: 0xE0-0xFF */ - /* Stack: int32? uint32 --> */ - /* */ - static void - Ins_MIRP( INS_ARG ) - { - FT_UShort point; - FT_ULong cvtEntry; - - FT_F26Dot6 cvt_dist, - distance, - cur_dist, - org_dist; - - - point = (FT_UShort)args[0]; - cvtEntry = (FT_ULong)( args[1] + 1 ); - - /* XXX: UNDOCUMENTED! cvt[-1] = 0 always */ - - if ( BOUNDS( point, CUR.zp1.n_points ) || - BOUNDS( cvtEntry, CUR.cvtSize + 1 ) || - BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - if ( !cvtEntry ) - cvt_dist = 0; - else - cvt_dist = CUR_Func_read_cvt( cvtEntry - 1 ); - - /* single width test */ - - if ( FT_ABS( cvt_dist - CUR.GS.single_width_value ) < - CUR.GS.single_width_cutin ) - { - if ( cvt_dist >= 0 ) - cvt_dist = CUR.GS.single_width_value; - else - cvt_dist = -CUR.GS.single_width_value; - } - - /* XXX: UNDOCUMENTED! -- twilight zone */ - - if ( CUR.GS.gep1 == 0 ) - { - CUR.zp1.org[point].x = CUR.zp0.org[CUR.GS.rp0].x + - TT_MulFix14( cvt_dist, CUR.GS.freeVector.x ); - - CUR.zp1.org[point].y = CUR.zp0.org[CUR.GS.rp0].y + - TT_MulFix14( cvt_dist, CUR.GS.freeVector.y ); - - CUR.zp1.cur[point] = CUR.zp1.org[point]; - } - - org_dist = CUR_Func_dualproj( CUR.zp1.org + point, - CUR.zp0.org + CUR.GS.rp0 ); - - cur_dist = CUR_Func_project( CUR.zp1.cur + point, - CUR.zp0.cur + CUR.GS.rp0 ); - - /* auto-flip test */ - - if ( CUR.GS.auto_flip ) - { - if ( ( org_dist ^ cvt_dist ) < 0 ) - cvt_dist = -cvt_dist; - } - - /* control value cutin and round */ - - if ( ( CUR.opcode & 4 ) != 0 ) - { - /* XXX: UNDOCUMENTED! Only perform cut-in test when both points */ - /* refer to the same zone. */ - - if ( CUR.GS.gep0 == CUR.GS.gep1 ) - if ( FT_ABS( cvt_dist - org_dist ) >= CUR.GS.control_value_cutin ) - cvt_dist = org_dist; - - distance = CUR_Func_round( - cvt_dist, - CUR.tt_metrics.compensations[CUR.opcode & 3] ); - } - else - distance = ROUND_None( - cvt_dist, - CUR.tt_metrics.compensations[CUR.opcode & 3] ); - - /* minimum distance test */ - - if ( ( CUR.opcode & 8 ) != 0 ) - { - if ( org_dist >= 0 ) - { - if ( distance < CUR.GS.minimum_distance ) - distance = CUR.GS.minimum_distance; - } - else - { - if ( distance > -CUR.GS.minimum_distance ) - distance = -CUR.GS.minimum_distance; - } - } - - CUR_Func_move( &CUR.zp1, point, distance - cur_dist ); - - CUR.GS.rp1 = CUR.GS.rp0; - - if ( ( CUR.opcode & 16 ) != 0 ) - CUR.GS.rp0 = point; - - /* XXX: UNDOCUMENTED! */ - - CUR.GS.rp2 = point; - } - - - /*************************************************************************/ - /* */ - /* ALIGNRP[]: ALIGN Relative Point */ - /* Opcode range: 0x3C */ - /* Stack: uint32 uint32... --> */ - /* */ - static void - Ins_ALIGNRP( INS_ARG ) - { - FT_UShort point; - FT_F26Dot6 distance; - - FT_UNUSED_ARG; - - - if ( CUR.top < CUR.GS.loop || - BOUNDS( CUR.GS.rp0, CUR.zp0.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - while ( CUR.GS.loop > 0 ) - { - CUR.args--; - - point = (FT_UShort)CUR.stack[CUR.args]; - - if ( BOUNDS( point, CUR.zp1.n_points ) ) - { - if ( CUR.pedantic_hinting ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - } - else - { - distance = CUR_Func_project( CUR.zp1.cur + point, - CUR.zp0.cur + CUR.GS.rp0 ); - - CUR_Func_move( &CUR.zp1, point, -distance ); - } - - CUR.GS.loop--; - } - - CUR.GS.loop = 1; - CUR.new_top = CUR.args; - } - - - /*************************************************************************/ - /* */ - /* ISECT[]: moves point to InterSECTion */ - /* Opcode range: 0x0F */ - /* Stack: 5 * uint32 --> */ - /* */ - static void - Ins_ISECT( INS_ARG ) - { - FT_UShort point, - a0, a1, - b0, b1; - - FT_F26Dot6 discriminant; - - FT_F26Dot6 dx, dy, - dax, day, - dbx, dby; - - FT_F26Dot6 val; - - FT_Vector R; - - - point = (FT_UShort)args[0]; - - a0 = (FT_UShort)args[1]; - a1 = (FT_UShort)args[2]; - b0 = (FT_UShort)args[3]; - b1 = (FT_UShort)args[4]; - - if ( BOUNDS( b0, CUR.zp0.n_points ) || - BOUNDS( b1, CUR.zp0.n_points ) || - BOUNDS( a0, CUR.zp1.n_points ) || - BOUNDS( a1, CUR.zp1.n_points ) || - BOUNDS( point, CUR.zp2.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - dbx = CUR.zp0.cur[b1].x - CUR.zp0.cur[b0].x; - dby = CUR.zp0.cur[b1].y - CUR.zp0.cur[b0].y; - - dax = CUR.zp1.cur[a1].x - CUR.zp1.cur[a0].x; - day = CUR.zp1.cur[a1].y - CUR.zp1.cur[a0].y; - - dx = CUR.zp0.cur[b0].x - CUR.zp1.cur[a0].x; - dy = CUR.zp0.cur[b0].y - CUR.zp1.cur[a0].y; - - CUR.zp2.tags[point] |= FT_CURVE_TAG_TOUCH_BOTH; - - discriminant = TT_MULDIV( dax, -dby, 0x40 ) + - TT_MULDIV( day, dbx, 0x40 ); - - if ( FT_ABS( discriminant ) >= 0x40 ) - { - val = TT_MULDIV( dx, -dby, 0x40 ) + TT_MULDIV( dy, dbx, 0x40 ); - - R.x = TT_MULDIV( val, dax, discriminant ); - R.y = TT_MULDIV( val, day, discriminant ); - - CUR.zp2.cur[point].x = CUR.zp1.cur[a0].x + R.x; - CUR.zp2.cur[point].y = CUR.zp1.cur[a0].y + R.y; - } - else - { - /* else, take the middle of the middles of A and B */ - - CUR.zp2.cur[point].x = ( CUR.zp1.cur[a0].x + - CUR.zp1.cur[a1].x + - CUR.zp0.cur[b0].x + - CUR.zp0.cur[b1].x ) / 4; - CUR.zp2.cur[point].y = ( CUR.zp1.cur[a0].y + - CUR.zp1.cur[a1].y + - CUR.zp0.cur[b0].y + - CUR.zp0.cur[b1].y ) / 4; - } - } - - - /*************************************************************************/ - /* */ - /* ALIGNPTS[]: ALIGN PoinTS */ - /* Opcode range: 0x27 */ - /* Stack: uint32 uint32 --> */ - /* */ - static void - Ins_ALIGNPTS( INS_ARG ) - { - FT_UShort p1, p2; - FT_F26Dot6 distance; - - - p1 = (FT_UShort)args[0]; - p2 = (FT_UShort)args[1]; - - if ( BOUNDS( args[0], CUR.zp1.n_points ) || - BOUNDS( args[1], CUR.zp0.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - distance = CUR_Func_project( CUR.zp0.cur + p2, - CUR.zp1.cur + p1 ) / 2; - - CUR_Func_move( &CUR.zp1, p1, distance ); - CUR_Func_move( &CUR.zp0, p2, -distance ); - } - - - /*************************************************************************/ - /* */ - /* IP[]: Interpolate Point */ - /* Opcode range: 0x39 */ - /* Stack: uint32... --> */ - /* */ - static void - Ins_IP( INS_ARG ) - { - FT_F26Dot6 org_a, org_b, org_x, - cur_a, cur_b, cur_x, - distance; - FT_UShort point; - - FT_UNUSED_ARG; - - - if ( CUR.top < CUR.GS.loop ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - - /* XXX: There are some glyphs in some braindead but popular */ - /* fonts out there (e.g. [aeu]grave in monotype.ttf) */ - /* calling IP[] with bad values of rp[12]. */ - /* Do something sane when this odd thing happens. */ - - if ( BOUNDS( CUR.GS.rp1, CUR.zp0.n_points ) || - BOUNDS( CUR.GS.rp2, CUR.zp1.n_points ) ) - { - org_a = cur_a = 0; - org_b = cur_b = 0; - } - else - { - org_a = CUR_Func_dualproj( CUR.zp0.org + CUR.GS.rp1, NULL_Vector ); - org_b = CUR_Func_dualproj( CUR.zp1.org + CUR.GS.rp2, NULL_Vector ); - - cur_a = CUR_Func_project( CUR.zp0.cur + CUR.GS.rp1, NULL_Vector ); - cur_b = CUR_Func_project( CUR.zp1.cur + CUR.GS.rp2, NULL_Vector ); - } - - while ( CUR.GS.loop > 0 ) - { - CUR.args--; - - point = (FT_UShort)CUR.stack[CUR.args]; - if ( BOUNDS( point, CUR.zp2.n_points ) ) - { - if ( CUR.pedantic_hinting ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - } - else - { - org_x = CUR_Func_dualproj( CUR.zp2.org + point, NULL_Vector ); - cur_x = CUR_Func_project ( CUR.zp2.cur + point, NULL_Vector ); - - if ( ( org_a <= org_b && org_x <= org_a ) || - ( org_a > org_b && org_x >= org_a ) ) - - distance = ( cur_a - org_a ) + ( org_x - cur_x ); - - else if ( ( org_a <= org_b && org_x >= org_b ) || - ( org_a > org_b && org_x < org_b ) ) - - distance = ( cur_b - org_b ) + ( org_x - cur_x ); - - else - /* note: it seems that rounding this value isn't a good */ - /* idea (cf. width of capital `S' in Times) */ - - distance = TT_MULDIV( cur_b - cur_a, - org_x - org_a, - org_b - org_a ) + ( cur_a - cur_x ); - - CUR_Func_move( &CUR.zp2, point, distance ); - } - - CUR.GS.loop--; - } - - CUR.GS.loop = 1; - CUR.new_top = CUR.args; - } - - - /*************************************************************************/ - /* */ - /* UTP[a]: UnTouch Point */ - /* Opcode range: 0x29 */ - /* Stack: uint32 --> */ - /* */ - static void - Ins_UTP( INS_ARG ) - { - FT_UShort point; - FT_Byte mask; - - - point = (FT_UShort)args[0]; - - if ( BOUNDS( point, CUR.zp0.n_points ) ) - { - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - return; - } - - mask = 0xFF; - - if ( CUR.GS.freeVector.x != 0 ) - mask &= ~FT_CURVE_TAG_TOUCH_X; - - if ( CUR.GS.freeVector.y != 0 ) - mask &= ~FT_CURVE_TAG_TOUCH_Y; - - CUR.zp0.tags[point] &= mask; - } - - - /* Local variables for Ins_IUP: */ - struct LOC_Ins_IUP - { - FT_Vector* orgs; /* original and current coordinate */ - FT_Vector* curs; /* arrays */ - }; - - - static void - Shift( FT_UInt p1, - FT_UInt p2, - FT_UInt p, - struct LOC_Ins_IUP* LINK ) - { - FT_UInt i; - FT_F26Dot6 x; - - - x = LINK->curs[p].x - LINK->orgs[p].x; - - for ( i = p1; i < p; i++ ) - LINK->curs[i].x += x; - - for ( i = p + 1; i <= p2; i++ ) - LINK->curs[i].x += x; - } - - - static void - Interp( FT_UInt p1, - FT_UInt p2, - FT_UInt ref1, - FT_UInt ref2, - struct LOC_Ins_IUP* LINK ) - { - FT_UInt i; - FT_F26Dot6 x, x1, x2, d1, d2; - - - if ( p1 > p2 ) - return; - - x1 = LINK->orgs[ref1].x; - d1 = LINK->curs[ref1].x - LINK->orgs[ref1].x; - x2 = LINK->orgs[ref2].x; - d2 = LINK->curs[ref2].x - LINK->orgs[ref2].x; - - if ( x1 == x2 ) - { - for ( i = p1; i <= p2; i++ ) - { - x = LINK->orgs[i].x; - - if ( x <= x1 ) - x += d1; - else - x += d2; - - LINK->curs[i].x = x; - } - return; - } - - if ( x1 < x2 ) - { - for ( i = p1; i <= p2; i++ ) - { - x = LINK->orgs[i].x; - - if ( x <= x1 ) - x += d1; - else - { - if ( x >= x2 ) - x += d2; - else - x = LINK->curs[ref1].x + - TT_MULDIV( x - x1, - LINK->curs[ref2].x - LINK->curs[ref1].x, - x2 - x1 ); - } - LINK->curs[i].x = x; - } - return; - } - - /* x2 < x1 */ - - for ( i = p1; i <= p2; i++ ) - { - x = LINK->orgs[i].x; - if ( x <= x2 ) - x += d2; - else - { - if ( x >= x1 ) - x += d1; - else - x = LINK->curs[ref1].x + - TT_MULDIV( x - x1, - LINK->curs[ref2].x - LINK->curs[ref1].x, - x2 - x1 ); - } - LINK->curs[i].x = x; - } - } - - - /*************************************************************************/ - /* */ - /* IUP[a]: Interpolate Untouched Points */ - /* Opcode range: 0x30-0x31 */ - /* Stack: --> */ - /* */ - static void - Ins_IUP( INS_ARG ) - { - struct LOC_Ins_IUP V; - FT_Byte mask; - - FT_UInt first_point; /* first point of contour */ - FT_UInt end_point; /* end point (last+1) of contour */ - - FT_UInt first_touched; /* first touched point in contour */ - FT_UInt cur_touched; /* current touched point in contour */ - - FT_UInt point; /* current point */ - FT_Short contour; /* current contour */ - - FT_UNUSED_ARG; - - - if ( CUR.opcode & 1 ) - { - mask = FT_CURVE_TAG_TOUCH_X; - V.orgs = CUR.pts.org; - V.curs = CUR.pts.cur; - } - else - { - mask = FT_CURVE_TAG_TOUCH_Y; - V.orgs = (FT_Vector*)( (FT_Pos*)CUR.pts.org + 1 ); - V.curs = (FT_Vector*)( (FT_Pos*)CUR.pts.cur + 1 ); - } - - contour = 0; - point = 0; - - do - { - end_point = CUR.pts.contours[contour]; - first_point = point; - - while ( point <= end_point && (CUR.pts.tags[point] & mask) == 0 ) - point++; - - if ( point <= end_point ) - { - first_touched = point; - cur_touched = point; - - point++; - - while ( point <= end_point ) - { - if ( ( CUR.pts.tags[point] & mask ) != 0 ) - { - if ( point > 0 ) - Interp( cur_touched + 1, - point - 1, - cur_touched, - point, - &V ); - cur_touched = point; - } - - point++; - } - - if ( cur_touched == first_touched ) - Shift( first_point, end_point, cur_touched, &V ); - else - { - Interp( (FT_UShort)( cur_touched + 1 ), - end_point, - cur_touched, - first_touched, - &V ); - - if ( first_touched > 0 ) - Interp( first_point, - first_touched - 1, - cur_touched, - first_touched, - &V ); - } - } - contour++; - } while ( contour < CUR.pts.n_contours ); - } - - - /*************************************************************************/ - /* */ - /* DELTAPn[]: DELTA exceptions P1, P2, P3 */ - /* Opcode range: 0x5D,0x71,0x72 */ - /* Stack: uint32 (2 * uint32)... --> */ - /* */ - static void - Ins_DELTAP( INS_ARG ) - { - FT_ULong k, nump; - FT_UShort A; - FT_ULong C; - FT_Long B; - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - /* Delta hinting is covered by US Patent 5159668. */ - if ( CUR.face->unpatented_hinting ) - { - FT_Long n = args[0] * 2; - if ( CUR.args < n ) - { - CUR.error = TT_Err_Too_Few_Arguments; - return; - } - - CUR.args -= n; - CUR.new_top = CUR.args; - return; - } -#endif - - nump = (FT_ULong)args[0]; /* some points theoretically may occur more - than once, thus UShort isn't enough */ - - for ( k = 1; k <= nump; k++ ) - { - if ( CUR.args < 2 ) - { - CUR.error = TT_Err_Too_Few_Arguments; - return; - } - - CUR.args -= 2; - - A = (FT_UShort)CUR.stack[CUR.args + 1]; - B = CUR.stack[CUR.args]; - - /* XXX: Because some popular fonts contain some invalid DeltaP */ - /* instructions, we simply ignore them when the stacked */ - /* point reference is off limit, rather than returning an */ - /* error. As a delta instruction doesn't change a glyph */ - /* in great ways, this shouldn't be a problem. */ - - if ( !BOUNDS( A, CUR.zp0.n_points ) ) - { - C = ( (FT_ULong)B & 0xF0 ) >> 4; - - switch ( CUR.opcode ) - { - case 0x5D: - break; - - case 0x71: - C += 16; - break; - - case 0x72: - C += 32; - break; - } - - C += CUR.GS.delta_base; - - if ( CURRENT_Ppem() == (FT_Long)C ) - { - B = ( (FT_ULong)B & 0xF ) - 8; - if ( B >= 0 ) - B++; - B = B * 64 / ( 1L << CUR.GS.delta_shift ); - - CUR_Func_move( &CUR.zp0, A, B ); - } - } - else - if ( CUR.pedantic_hinting ) - CUR.error = TT_Err_Invalid_Reference; - } - - CUR.new_top = CUR.args; - } - - - /*************************************************************************/ - /* */ - /* DELTACn[]: DELTA exceptions C1, C2, C3 */ - /* Opcode range: 0x73,0x74,0x75 */ - /* Stack: uint32 (2 * uint32)... --> */ - /* */ - static void - Ins_DELTAC( INS_ARG ) - { - FT_ULong nump, k; - FT_ULong A, C; - FT_Long B; - - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - /* Delta hinting is covered by US Patent 5159668. */ - if ( CUR.face->unpatented_hinting ) - { - FT_Long n = args[0] * 2; - - - if ( CUR.args < n ) - { - CUR.error = TT_Err_Too_Few_Arguments; - return; - } - - CUR.args -= n; - CUR.new_top = CUR.args; - return; - } -#endif - - nump = (FT_ULong)args[0]; - - for ( k = 1; k <= nump; k++ ) - { - if ( CUR.args < 2 ) - { - CUR.error = TT_Err_Too_Few_Arguments; - return; - } - - CUR.args -= 2; - - A = (FT_ULong)CUR.stack[CUR.args + 1]; - B = CUR.stack[CUR.args]; - - if ( BOUNDS( A, CUR.cvtSize ) ) - { - if ( CUR.pedantic_hinting ) - { - CUR.error = TT_Err_Invalid_Reference; - return; - } - } - else - { - C = ( (FT_ULong)B & 0xF0 ) >> 4; - - switch ( CUR.opcode ) - { - case 0x73: - break; - - case 0x74: - C += 16; - break; - - case 0x75: - C += 32; - break; - } - - C += CUR.GS.delta_base; - - if ( CURRENT_Ppem() == (FT_Long)C ) - { - B = ( (FT_ULong)B & 0xF ) - 8; - if ( B >= 0 ) - B++; - B = B * 64 / ( 1L << CUR.GS.delta_shift ); - - CUR_Func_move_cvt( A, B ); - } - } - } - - CUR.new_top = CUR.args; - } - - - /*************************************************************************/ - /* */ - /* MISC. INSTRUCTIONS */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* GETINFO[]: GET INFOrmation */ - /* Opcode range: 0x88 */ - /* Stack: uint32 --> uint32 */ - /* */ - /* XXX: According to Apple specs, bits 1 & 2 of the argument ought to be */ - /* consulted before rotated/stretched info is returned. */ - static void - Ins_GETINFO( INS_ARG ) - { - FT_Long K; - - - K = 0; - - /* We return then Windows 3.1 version number */ - /* for the font scaler */ - if ( ( args[0] & 1 ) != 0 ) - K = 3; - - /* Has the glyph been rotated ? */ - if ( CUR.tt_metrics.rotated ) - K |= 0x80; - - /* Has the glyph been stretched ? */ - if ( CUR.tt_metrics.stretched ) - K |= 0x100; - - args[0] = K; - } - - - static void - Ins_UNKNOWN( INS_ARG ) - { - TT_DefRecord* def = CUR.IDefs; - TT_DefRecord* limit = def + CUR.numIDefs; - - FT_UNUSED_ARG; - - - for ( ; def < limit; def++ ) - { - if ( (FT_Byte)def->opc == CUR.opcode && def->active ) - { - TT_CallRec* call; - - - if ( CUR.callTop >= CUR.callSize ) - { - CUR.error = TT_Err_Stack_Overflow; - return; - } - - call = CUR.callStack + CUR.callTop++; - - call->Caller_Range = CUR.curRange; - call->Caller_IP = CUR.IP+1; - call->Cur_Count = 1; - call->Cur_Restart = def->start; - - INS_Goto_CodeRange( def->range, def->start ); - - CUR.step_ins = FALSE; - return; - } - } - - CUR.error = TT_Err_Invalid_Opcode; - } - - -#ifndef TT_CONFIG_OPTION_INTERPRETER_SWITCH - - - static - TInstruction_Function Instruct_Dispatch[256] = - { - /* Opcodes are gathered in groups of 16. */ - /* Please keep the spaces as they are. */ - - /* SVTCA y */ Ins_SVTCA, - /* SVTCA x */ Ins_SVTCA, - /* SPvTCA y */ Ins_SPVTCA, - /* SPvTCA x */ Ins_SPVTCA, - /* SFvTCA y */ Ins_SFVTCA, - /* SFvTCA x */ Ins_SFVTCA, - /* SPvTL // */ Ins_SPVTL, - /* SPvTL + */ Ins_SPVTL, - /* SFvTL // */ Ins_SFVTL, - /* SFvTL + */ Ins_SFVTL, - /* SPvFS */ Ins_SPVFS, - /* SFvFS */ Ins_SFVFS, - /* GPV */ Ins_GPV, - /* GFV */ Ins_GFV, - /* SFvTPv */ Ins_SFVTPV, - /* ISECT */ Ins_ISECT, - - /* SRP0 */ Ins_SRP0, - /* SRP1 */ Ins_SRP1, - /* SRP2 */ Ins_SRP2, - /* SZP0 */ Ins_SZP0, - /* SZP1 */ Ins_SZP1, - /* SZP2 */ Ins_SZP2, - /* SZPS */ Ins_SZPS, - /* SLOOP */ Ins_SLOOP, - /* RTG */ Ins_RTG, - /* RTHG */ Ins_RTHG, - /* SMD */ Ins_SMD, - /* ELSE */ Ins_ELSE, - /* JMPR */ Ins_JMPR, - /* SCvTCi */ Ins_SCVTCI, - /* SSwCi */ Ins_SSWCI, - /* SSW */ Ins_SSW, - - /* DUP */ Ins_DUP, - /* POP */ Ins_POP, - /* CLEAR */ Ins_CLEAR, - /* SWAP */ Ins_SWAP, - /* DEPTH */ Ins_DEPTH, - /* CINDEX */ Ins_CINDEX, - /* MINDEX */ Ins_MINDEX, - /* AlignPTS */ Ins_ALIGNPTS, - /* INS_0x28 */ Ins_UNKNOWN, - /* UTP */ Ins_UTP, - /* LOOPCALL */ Ins_LOOPCALL, - /* CALL */ Ins_CALL, - /* FDEF */ Ins_FDEF, - /* ENDF */ Ins_ENDF, - /* MDAP[0] */ Ins_MDAP, - /* MDAP[1] */ Ins_MDAP, - - /* IUP[0] */ Ins_IUP, - /* IUP[1] */ Ins_IUP, - /* SHP[0] */ Ins_SHP, - /* SHP[1] */ Ins_SHP, - /* SHC[0] */ Ins_SHC, - /* SHC[1] */ Ins_SHC, - /* SHZ[0] */ Ins_SHZ, - /* SHZ[1] */ Ins_SHZ, - /* SHPIX */ Ins_SHPIX, - /* IP */ Ins_IP, - /* MSIRP[0] */ Ins_MSIRP, - /* MSIRP[1] */ Ins_MSIRP, - /* AlignRP */ Ins_ALIGNRP, - /* RTDG */ Ins_RTDG, - /* MIAP[0] */ Ins_MIAP, - /* MIAP[1] */ Ins_MIAP, - - /* NPushB */ Ins_NPUSHB, - /* NPushW */ Ins_NPUSHW, - /* WS */ Ins_WS, - /* RS */ Ins_RS, - /* WCvtP */ Ins_WCVTP, - /* RCvt */ Ins_RCVT, - /* GC[0] */ Ins_GC, - /* GC[1] */ Ins_GC, - /* SCFS */ Ins_SCFS, - /* MD[0] */ Ins_MD, - /* MD[1] */ Ins_MD, - /* MPPEM */ Ins_MPPEM, - /* MPS */ Ins_MPS, - /* FlipON */ Ins_FLIPON, - /* FlipOFF */ Ins_FLIPOFF, - /* DEBUG */ Ins_DEBUG, - - /* LT */ Ins_LT, - /* LTEQ */ Ins_LTEQ, - /* GT */ Ins_GT, - /* GTEQ */ Ins_GTEQ, - /* EQ */ Ins_EQ, - /* NEQ */ Ins_NEQ, - /* ODD */ Ins_ODD, - /* EVEN */ Ins_EVEN, - /* IF */ Ins_IF, - /* EIF */ Ins_EIF, - /* AND */ Ins_AND, - /* OR */ Ins_OR, - /* NOT */ Ins_NOT, - /* DeltaP1 */ Ins_DELTAP, - /* SDB */ Ins_SDB, - /* SDS */ Ins_SDS, - - /* ADD */ Ins_ADD, - /* SUB */ Ins_SUB, - /* DIV */ Ins_DIV, - /* MUL */ Ins_MUL, - /* ABS */ Ins_ABS, - /* NEG */ Ins_NEG, - /* FLOOR */ Ins_FLOOR, - /* CEILING */ Ins_CEILING, - /* ROUND[0] */ Ins_ROUND, - /* ROUND[1] */ Ins_ROUND, - /* ROUND[2] */ Ins_ROUND, - /* ROUND[3] */ Ins_ROUND, - /* NROUND[0] */ Ins_NROUND, - /* NROUND[1] */ Ins_NROUND, - /* NROUND[2] */ Ins_NROUND, - /* NROUND[3] */ Ins_NROUND, - - /* WCvtF */ Ins_WCVTF, - /* DeltaP2 */ Ins_DELTAP, - /* DeltaP3 */ Ins_DELTAP, - /* DeltaCn[0] */ Ins_DELTAC, - /* DeltaCn[1] */ Ins_DELTAC, - /* DeltaCn[2] */ Ins_DELTAC, - /* SROUND */ Ins_SROUND, - /* S45Round */ Ins_S45ROUND, - /* JROT */ Ins_JROT, - /* JROF */ Ins_JROF, - /* ROFF */ Ins_ROFF, - /* INS_0x7B */ Ins_UNKNOWN, - /* RUTG */ Ins_RUTG, - /* RDTG */ Ins_RDTG, - /* SANGW */ Ins_SANGW, - /* AA */ Ins_AA, - - /* FlipPT */ Ins_FLIPPT, - /* FlipRgON */ Ins_FLIPRGON, - /* FlipRgOFF */ Ins_FLIPRGOFF, - /* INS_0x83 */ Ins_UNKNOWN, - /* INS_0x84 */ Ins_UNKNOWN, - /* ScanCTRL */ Ins_SCANCTRL, - /* SDPVTL[0] */ Ins_SDPVTL, - /* SDPVTL[1] */ Ins_SDPVTL, - /* GetINFO */ Ins_GETINFO, - /* IDEF */ Ins_IDEF, - /* ROLL */ Ins_ROLL, - /* MAX */ Ins_MAX, - /* MIN */ Ins_MIN, - /* ScanTYPE */ Ins_SCANTYPE, - /* InstCTRL */ Ins_INSTCTRL, - /* INS_0x8F */ Ins_UNKNOWN, - - /* INS_0x90 */ Ins_UNKNOWN, - /* INS_0x91 */ Ins_UNKNOWN, - /* INS_0x92 */ Ins_UNKNOWN, - /* INS_0x93 */ Ins_UNKNOWN, - /* INS_0x94 */ Ins_UNKNOWN, - /* INS_0x95 */ Ins_UNKNOWN, - /* INS_0x96 */ Ins_UNKNOWN, - /* INS_0x97 */ Ins_UNKNOWN, - /* INS_0x98 */ Ins_UNKNOWN, - /* INS_0x99 */ Ins_UNKNOWN, - /* INS_0x9A */ Ins_UNKNOWN, - /* INS_0x9B */ Ins_UNKNOWN, - /* INS_0x9C */ Ins_UNKNOWN, - /* INS_0x9D */ Ins_UNKNOWN, - /* INS_0x9E */ Ins_UNKNOWN, - /* INS_0x9F */ Ins_UNKNOWN, - - /* INS_0xA0 */ Ins_UNKNOWN, - /* INS_0xA1 */ Ins_UNKNOWN, - /* INS_0xA2 */ Ins_UNKNOWN, - /* INS_0xA3 */ Ins_UNKNOWN, - /* INS_0xA4 */ Ins_UNKNOWN, - /* INS_0xA5 */ Ins_UNKNOWN, - /* INS_0xA6 */ Ins_UNKNOWN, - /* INS_0xA7 */ Ins_UNKNOWN, - /* INS_0xA8 */ Ins_UNKNOWN, - /* INS_0xA9 */ Ins_UNKNOWN, - /* INS_0xAA */ Ins_UNKNOWN, - /* INS_0xAB */ Ins_UNKNOWN, - /* INS_0xAC */ Ins_UNKNOWN, - /* INS_0xAD */ Ins_UNKNOWN, - /* INS_0xAE */ Ins_UNKNOWN, - /* INS_0xAF */ Ins_UNKNOWN, - - /* PushB[0] */ Ins_PUSHB, - /* PushB[1] */ Ins_PUSHB, - /* PushB[2] */ Ins_PUSHB, - /* PushB[3] */ Ins_PUSHB, - /* PushB[4] */ Ins_PUSHB, - /* PushB[5] */ Ins_PUSHB, - /* PushB[6] */ Ins_PUSHB, - /* PushB[7] */ Ins_PUSHB, - /* PushW[0] */ Ins_PUSHW, - /* PushW[1] */ Ins_PUSHW, - /* PushW[2] */ Ins_PUSHW, - /* PushW[3] */ Ins_PUSHW, - /* PushW[4] */ Ins_PUSHW, - /* PushW[5] */ Ins_PUSHW, - /* PushW[6] */ Ins_PUSHW, - /* PushW[7] */ Ins_PUSHW, - - /* MDRP[00] */ Ins_MDRP, - /* MDRP[01] */ Ins_MDRP, - /* MDRP[02] */ Ins_MDRP, - /* MDRP[03] */ Ins_MDRP, - /* MDRP[04] */ Ins_MDRP, - /* MDRP[05] */ Ins_MDRP, - /* MDRP[06] */ Ins_MDRP, - /* MDRP[07] */ Ins_MDRP, - /* MDRP[08] */ Ins_MDRP, - /* MDRP[09] */ Ins_MDRP, - /* MDRP[10] */ Ins_MDRP, - /* MDRP[11] */ Ins_MDRP, - /* MDRP[12] */ Ins_MDRP, - /* MDRP[13] */ Ins_MDRP, - /* MDRP[14] */ Ins_MDRP, - /* MDRP[15] */ Ins_MDRP, - - /* MDRP[16] */ Ins_MDRP, - /* MDRP[17] */ Ins_MDRP, - /* MDRP[18] */ Ins_MDRP, - /* MDRP[19] */ Ins_MDRP, - /* MDRP[20] */ Ins_MDRP, - /* MDRP[21] */ Ins_MDRP, - /* MDRP[22] */ Ins_MDRP, - /* MDRP[23] */ Ins_MDRP, - /* MDRP[24] */ Ins_MDRP, - /* MDRP[25] */ Ins_MDRP, - /* MDRP[26] */ Ins_MDRP, - /* MDRP[27] */ Ins_MDRP, - /* MDRP[28] */ Ins_MDRP, - /* MDRP[29] */ Ins_MDRP, - /* MDRP[30] */ Ins_MDRP, - /* MDRP[31] */ Ins_MDRP, - - /* MIRP[00] */ Ins_MIRP, - /* MIRP[01] */ Ins_MIRP, - /* MIRP[02] */ Ins_MIRP, - /* MIRP[03] */ Ins_MIRP, - /* MIRP[04] */ Ins_MIRP, - /* MIRP[05] */ Ins_MIRP, - /* MIRP[06] */ Ins_MIRP, - /* MIRP[07] */ Ins_MIRP, - /* MIRP[08] */ Ins_MIRP, - /* MIRP[09] */ Ins_MIRP, - /* MIRP[10] */ Ins_MIRP, - /* MIRP[11] */ Ins_MIRP, - /* MIRP[12] */ Ins_MIRP, - /* MIRP[13] */ Ins_MIRP, - /* MIRP[14] */ Ins_MIRP, - /* MIRP[15] */ Ins_MIRP, - - /* MIRP[16] */ Ins_MIRP, - /* MIRP[17] */ Ins_MIRP, - /* MIRP[18] */ Ins_MIRP, - /* MIRP[19] */ Ins_MIRP, - /* MIRP[20] */ Ins_MIRP, - /* MIRP[21] */ Ins_MIRP, - /* MIRP[22] */ Ins_MIRP, - /* MIRP[23] */ Ins_MIRP, - /* MIRP[24] */ Ins_MIRP, - /* MIRP[25] */ Ins_MIRP, - /* MIRP[26] */ Ins_MIRP, - /* MIRP[27] */ Ins_MIRP, - /* MIRP[28] */ Ins_MIRP, - /* MIRP[29] */ Ins_MIRP, - /* MIRP[30] */ Ins_MIRP, - /* MIRP[31] */ Ins_MIRP - }; - - -#endif /* !TT_CONFIG_OPTION_INTERPRETER_SWITCH */ - - - /*************************************************************************/ - /* */ - /* RUN */ - /* */ - /* This function executes a run of opcodes. It will exit in the */ - /* following cases: */ - /* */ - /* - Errors (in which case it returns FALSE). */ - /* */ - /* - Reaching the end of the main code range (returns TRUE). */ - /* Reaching the end of a code range within a function call is an */ - /* error. */ - /* */ - /* - After executing one single opcode, if the flag `Instruction_Trap' */ - /* is set to TRUE (returns TRUE). */ - /* */ - /* On exit whith TRUE, test IP < CodeSize to know wether it comes from */ - /* an instruction trap or a normal termination. */ - /* */ - /* */ - /* Note: The documented DEBUG opcode pops a value from the stack. This */ - /* behaviour is unsupported; here a DEBUG opcode is always an */ - /* error. */ - /* */ - /* */ - /* THIS IS THE INTERPRETER'S MAIN LOOP. */ - /* */ - /* Instructions appear in the specification's order. */ - /* */ - /*************************************************************************/ - - - /* documentation is in ttinterp.h */ - - FT_EXPORT_DEF( FT_Error ) - TT_RunIns( TT_ExecContext exc ) - { - FT_Long ins_counter = 0; /* executed instructions counter */ - - -#ifdef TT_CONFIG_OPTION_STATIC_RASTER - cur = *exc; -#endif - - /* set CVT functions */ - CUR.tt_metrics.ratio = 0; - if ( CUR.metrics.x_ppem != CUR.metrics.y_ppem ) - { - /* non-square pixels, use the stretched routines */ - CUR.func_read_cvt = Read_CVT_Stretched; - CUR.func_write_cvt = Write_CVT_Stretched; - CUR.func_move_cvt = Move_CVT_Stretched; - } - else - { - /* square pixels, use normal routines */ - CUR.func_read_cvt = Read_CVT; - CUR.func_write_cvt = Write_CVT; - CUR.func_move_cvt = Move_CVT; - } - - COMPUTE_Funcs(); - COMPUTE_Round( (FT_Byte)exc->GS.round_state ); - - do - { - CUR.opcode = CUR.code[CUR.IP]; - - if ( ( CUR.length = opcode_length[CUR.opcode] ) < 0 ) - { - if ( CUR.IP + 1 > CUR.codeSize ) - goto LErrorCodeOverflow_; - - CUR.length = CUR.code[CUR.IP + 1] + 2; - } - - if ( CUR.IP + CUR.length > CUR.codeSize ) - goto LErrorCodeOverflow_; - - /* First, let's check for empty stack and overflow */ - CUR.args = CUR.top - ( Pop_Push_Count[CUR.opcode] >> 4 ); - - /* `args' is the top of the stack once arguments have been popped. */ - /* One can also interpret it as the index of the last argument. */ - if ( CUR.args < 0 ) - { - CUR.error = TT_Err_Too_Few_Arguments; - goto LErrorLabel_; - } - - CUR.new_top = CUR.args + ( Pop_Push_Count[CUR.opcode] & 15 ); - - /* `new_top' is the new top of the stack, after the instruction's */ - /* execution. `top' will be set to `new_top' after the `switch' */ - /* statement. */ - if ( CUR.new_top > CUR.stackSize ) - { - CUR.error = TT_Err_Stack_Overflow; - goto LErrorLabel_; - } - - CUR.step_ins = TRUE; - CUR.error = TT_Err_Ok; - -#ifdef TT_CONFIG_OPTION_INTERPRETER_SWITCH - - { - FT_Long* args = CUR.stack + CUR.args; - FT_Byte opcode = CUR.opcode; - - -#undef ARRAY_BOUND_ERROR -#define ARRAY_BOUND_ERROR goto Set_Invalid_Ref - - - switch ( opcode ) - { - case 0x00: /* SVTCA y */ - case 0x01: /* SVTCA x */ - case 0x02: /* SPvTCA y */ - case 0x03: /* SPvTCA x */ - case 0x04: /* SFvTCA y */ - case 0x05: /* SFvTCA x */ - { - FT_Short AA, BB; - - - AA = (FT_Short)( ( opcode & 1 ) << 14 ); - BB = (FT_Short)( AA ^ 0x4000 ); - - if ( opcode < 4 ) - { - CUR.GS.projVector.x = AA; - CUR.GS.projVector.y = BB; - - CUR.GS.dualVector.x = AA; - CUR.GS.dualVector.y = BB; - } - else - { - GUESS_VECTOR( projVector ); - } - - if ( ( opcode & 2 ) == 0 ) - { - CUR.GS.freeVector.x = AA; - CUR.GS.freeVector.y = BB; - } - else - { - GUESS_VECTOR( freeVector ); - } - - COMPUTE_Funcs(); - } - break; - - case 0x06: /* SPvTL // */ - case 0x07: /* SPvTL + */ - DO_SPVTL - break; - - case 0x08: /* SFvTL // */ - case 0x09: /* SFvTL + */ - DO_SFVTL - break; - - case 0x0A: /* SPvFS */ - DO_SPVFS - break; - - case 0x0B: /* SFvFS */ - DO_SFVFS - break; - - case 0x0C: /* GPV */ - DO_GPV - break; - - case 0x0D: /* GFV */ - DO_GFV - break; - - case 0x0E: /* SFvTPv */ - DO_SFVTPV - break; - - case 0x0F: /* ISECT */ - Ins_ISECT( EXEC_ARG_ args ); - break; - - case 0x10: /* SRP0 */ - DO_SRP0 - break; - - case 0x11: /* SRP1 */ - DO_SRP1 - break; - - case 0x12: /* SRP2 */ - DO_SRP2 - break; - - case 0x13: /* SZP0 */ - Ins_SZP0( EXEC_ARG_ args ); - break; - - case 0x14: /* SZP1 */ - Ins_SZP1( EXEC_ARG_ args ); - break; - - case 0x15: /* SZP2 */ - Ins_SZP2( EXEC_ARG_ args ); - break; - - case 0x16: /* SZPS */ - Ins_SZPS( EXEC_ARG_ args ); - break; - - case 0x17: /* SLOOP */ - DO_SLOOP - break; - - case 0x18: /* RTG */ - DO_RTG - break; - - case 0x19: /* RTHG */ - DO_RTHG - break; - - case 0x1A: /* SMD */ - DO_SMD - break; - - case 0x1B: /* ELSE */ - Ins_ELSE( EXEC_ARG_ args ); - break; - - case 0x1C: /* JMPR */ - DO_JMPR - break; - - case 0x1D: /* SCVTCI */ - DO_SCVTCI - break; - - case 0x1E: /* SSWCI */ - DO_SSWCI - break; - - case 0x1F: /* SSW */ - DO_SSW - break; - - case 0x20: /* DUP */ - DO_DUP - break; - - case 0x21: /* POP */ - /* nothing :-) */ - break; - - case 0x22: /* CLEAR */ - DO_CLEAR - break; - - case 0x23: /* SWAP */ - DO_SWAP - break; - - case 0x24: /* DEPTH */ - DO_DEPTH - break; - - case 0x25: /* CINDEX */ - DO_CINDEX - break; - - case 0x26: /* MINDEX */ - Ins_MINDEX( EXEC_ARG_ args ); - break; - - case 0x27: /* ALIGNPTS */ - Ins_ALIGNPTS( EXEC_ARG_ args ); - break; - - case 0x28: /* ???? */ - Ins_UNKNOWN( EXEC_ARG_ args ); - break; - - case 0x29: /* UTP */ - Ins_UTP( EXEC_ARG_ args ); - break; - - case 0x2A: /* LOOPCALL */ - Ins_LOOPCALL( EXEC_ARG_ args ); - break; - - case 0x2B: /* CALL */ - Ins_CALL( EXEC_ARG_ args ); - break; - - case 0x2C: /* FDEF */ - Ins_FDEF( EXEC_ARG_ args ); - break; - - case 0x2D: /* ENDF */ - Ins_ENDF( EXEC_ARG_ args ); - break; - - case 0x2E: /* MDAP */ - case 0x2F: /* MDAP */ - Ins_MDAP( EXEC_ARG_ args ); - break; - - - case 0x30: /* IUP */ - case 0x31: /* IUP */ - Ins_IUP( EXEC_ARG_ args ); - break; - - case 0x32: /* SHP */ - case 0x33: /* SHP */ - Ins_SHP( EXEC_ARG_ args ); - break; - - case 0x34: /* SHC */ - case 0x35: /* SHC */ - Ins_SHC( EXEC_ARG_ args ); - break; - - case 0x36: /* SHZ */ - case 0x37: /* SHZ */ - Ins_SHZ( EXEC_ARG_ args ); - break; - - case 0x38: /* SHPIX */ - Ins_SHPIX( EXEC_ARG_ args ); - break; - - case 0x39: /* IP */ - Ins_IP( EXEC_ARG_ args ); - break; - - case 0x3A: /* MSIRP */ - case 0x3B: /* MSIRP */ - Ins_MSIRP( EXEC_ARG_ args ); - break; - - case 0x3C: /* AlignRP */ - Ins_ALIGNRP( EXEC_ARG_ args ); - break; - - case 0x3D: /* RTDG */ - DO_RTDG - break; - - case 0x3E: /* MIAP */ - case 0x3F: /* MIAP */ - Ins_MIAP( EXEC_ARG_ args ); - break; - - case 0x40: /* NPUSHB */ - Ins_NPUSHB( EXEC_ARG_ args ); - break; - - case 0x41: /* NPUSHW */ - Ins_NPUSHW( EXEC_ARG_ args ); - break; - - case 0x42: /* WS */ - DO_WS - break; - - Set_Invalid_Ref: - CUR.error = TT_Err_Invalid_Reference; - break; - - case 0x43: /* RS */ - DO_RS - break; - - case 0x44: /* WCVTP */ - DO_WCVTP - break; - - case 0x45: /* RCVT */ - DO_RCVT - break; - - case 0x46: /* GC */ - case 0x47: /* GC */ - Ins_GC( EXEC_ARG_ args ); - break; - - case 0x48: /* SCFS */ - Ins_SCFS( EXEC_ARG_ args ); - break; - - case 0x49: /* MD */ - case 0x4A: /* MD */ - Ins_MD( EXEC_ARG_ args ); - break; - - case 0x4B: /* MPPEM */ - DO_MPPEM - break; - - case 0x4C: /* MPS */ - DO_MPS - break; - - case 0x4D: /* FLIPON */ - DO_FLIPON - break; - - case 0x4E: /* FLIPOFF */ - DO_FLIPOFF - break; - - case 0x4F: /* DEBUG */ - DO_DEBUG - break; - - case 0x50: /* LT */ - DO_LT - break; - - case 0x51: /* LTEQ */ - DO_LTEQ - break; - - case 0x52: /* GT */ - DO_GT - break; - - case 0x53: /* GTEQ */ - DO_GTEQ - break; - - case 0x54: /* EQ */ - DO_EQ - break; - - case 0x55: /* NEQ */ - DO_NEQ - break; - - case 0x56: /* ODD */ - DO_ODD - break; - - case 0x57: /* EVEN */ - DO_EVEN - break; - - case 0x58: /* IF */ - Ins_IF( EXEC_ARG_ args ); - break; - - case 0x59: /* EIF */ - /* do nothing */ - break; - - case 0x5A: /* AND */ - DO_AND - break; - - case 0x5B: /* OR */ - DO_OR - break; - - case 0x5C: /* NOT */ - DO_NOT - break; - - case 0x5D: /* DELTAP1 */ - Ins_DELTAP( EXEC_ARG_ args ); - break; - - case 0x5E: /* SDB */ - DO_SDB - break; - - case 0x5F: /* SDS */ - DO_SDS - break; - - case 0x60: /* ADD */ - DO_ADD - break; - - case 0x61: /* SUB */ - DO_SUB - break; - - case 0x62: /* DIV */ - DO_DIV - break; - - case 0x63: /* MUL */ - DO_MUL - break; - - case 0x64: /* ABS */ - DO_ABS - break; - - case 0x65: /* NEG */ - DO_NEG - break; - - case 0x66: /* FLOOR */ - DO_FLOOR - break; - - case 0x67: /* CEILING */ - DO_CEILING - break; - - case 0x68: /* ROUND */ - case 0x69: /* ROUND */ - case 0x6A: /* ROUND */ - case 0x6B: /* ROUND */ - DO_ROUND - break; - - case 0x6C: /* NROUND */ - case 0x6D: /* NROUND */ - case 0x6E: /* NRRUND */ - case 0x6F: /* NROUND */ - DO_NROUND - break; - - case 0x70: /* WCVTF */ - DO_WCVTF - break; - - case 0x71: /* DELTAP2 */ - case 0x72: /* DELTAP3 */ - Ins_DELTAP( EXEC_ARG_ args ); - break; - - case 0x73: /* DELTAC0 */ - case 0x74: /* DELTAC1 */ - case 0x75: /* DELTAC2 */ - Ins_DELTAC( EXEC_ARG_ args ); - break; - - case 0x76: /* SROUND */ - DO_SROUND - break; - - case 0x77: /* S45Round */ - DO_S45ROUND - break; - - case 0x78: /* JROT */ - DO_JROT - break; - - case 0x79: /* JROF */ - DO_JROF - break; - - case 0x7A: /* ROFF */ - DO_ROFF - break; - - case 0x7B: /* ???? */ - Ins_UNKNOWN( EXEC_ARG_ args ); - break; - - case 0x7C: /* RUTG */ - DO_RUTG - break; - - case 0x7D: /* RDTG */ - DO_RDTG - break; - - case 0x7E: /* SANGW */ - case 0x7F: /* AA */ - /* nothing - obsolete */ - break; - - case 0x80: /* FLIPPT */ - Ins_FLIPPT( EXEC_ARG_ args ); - break; - - case 0x81: /* FLIPRGON */ - Ins_FLIPRGON( EXEC_ARG_ args ); - break; - - case 0x82: /* FLIPRGOFF */ - Ins_FLIPRGOFF( EXEC_ARG_ args ); - break; - - case 0x83: /* UNKNOWN */ - case 0x84: /* UNKNOWN */ - Ins_UNKNOWN( EXEC_ARG_ args ); - break; - - case 0x85: /* SCANCTRL */ - Ins_SCANCTRL( EXEC_ARG_ args ); - break; - - case 0x86: /* SDPVTL */ - case 0x87: /* SDPVTL */ - Ins_SDPVTL( EXEC_ARG_ args ); - break; - - case 0x88: /* GETINFO */ - Ins_GETINFO( EXEC_ARG_ args ); - break; - - case 0x89: /* IDEF */ - Ins_IDEF( EXEC_ARG_ args ); - break; - - case 0x8A: /* ROLL */ - Ins_ROLL( EXEC_ARG_ args ); - break; - - case 0x8B: /* MAX */ - DO_MAX - break; - - case 0x8C: /* MIN */ - DO_MIN - break; - - case 0x8D: /* SCANTYPE */ - Ins_SCANTYPE( EXEC_ARG_ args ); - break; - - case 0x8E: /* INSTCTRL */ - Ins_INSTCTRL( EXEC_ARG_ args ); - break; - - case 0x8F: - Ins_UNKNOWN( EXEC_ARG_ args ); - break; - - default: - if ( opcode >= 0xE0 ) - Ins_MIRP( EXEC_ARG_ args ); - else if ( opcode >= 0xC0 ) - Ins_MDRP( EXEC_ARG_ args ); - else if ( opcode >= 0xB8 ) - Ins_PUSHW( EXEC_ARG_ args ); - else if ( opcode >= 0xB0 ) - Ins_PUSHB( EXEC_ARG_ args ); - else - Ins_UNKNOWN( EXEC_ARG_ args ); - } - - } - -#else - - Instruct_Dispatch[CUR.opcode]( EXEC_ARG_ &CUR.stack[CUR.args] ); - -#endif /* TT_CONFIG_OPTION_INTERPRETER_SWITCH */ - - if ( CUR.error != TT_Err_Ok ) - { - switch ( CUR.error ) - { - case TT_Err_Invalid_Opcode: /* looking for redefined instructions */ - { - TT_DefRecord* def = CUR.IDefs; - TT_DefRecord* limit = def + CUR.numIDefs; - - - for ( ; def < limit; def++ ) - { - if ( def->active && CUR.opcode == (FT_Byte)def->opc ) - { - TT_CallRec* callrec; - - - if ( CUR.callTop >= CUR.callSize ) - { - CUR.error = TT_Err_Invalid_Reference; - goto LErrorLabel_; - } - - callrec = &CUR.callStack[CUR.callTop]; - - callrec->Caller_Range = CUR.curRange; - callrec->Caller_IP = CUR.IP + 1; - callrec->Cur_Count = 1; - callrec->Cur_Restart = def->start; - - if ( INS_Goto_CodeRange( def->range, def->start ) == FAILURE ) - goto LErrorLabel_; - - goto LSuiteLabel_; - } - } - } - - CUR.error = TT_Err_Invalid_Opcode; - goto LErrorLabel_; - -#if 0 - break; /* Unreachable code warning suppression. */ - /* Leave to remind in case a later change the editor */ - /* to consider break; */ -#endif - - default: - goto LErrorLabel_; - -#if 0 - break; -#endif - } - } - - CUR.top = CUR.new_top; - - if ( CUR.step_ins ) - CUR.IP += CUR.length; - - /* increment instruction counter and check if we didn't */ - /* run this program for too long (e.g. infinite loops). */ - if ( ++ins_counter > MAX_RUNNABLE_OPCODES ) - return TT_Err_Execution_Too_Long; - - LSuiteLabel_: - if ( CUR.IP >= CUR.codeSize ) - { - if ( CUR.callTop > 0 ) - { - CUR.error = TT_Err_Code_Overflow; - goto LErrorLabel_; - } - else - goto LNo_Error_; - } - } while ( !CUR.instruction_trap ); - - LNo_Error_: - -#ifdef TT_CONFIG_OPTION_STATIC_RASTER - *exc = cur; -#endif - - return TT_Err_Ok; - - LErrorCodeOverflow_: - CUR.error = TT_Err_Code_Overflow; - - LErrorLabel_: - -#ifdef TT_CONFIG_OPTION_STATIC_RASTER - *exc = cur; -#endif - - return CUR.error; - } - - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttinterp.h b/nx-X11/extras/freetype2/src/truetype/ttinterp.h deleted file mode 100644 index eb0bb0bb6..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttinterp.h +++ /dev/null @@ -1,318 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttinterp.h */ -/* */ -/* TrueType bytecode interpreter (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTINTERP_H__ -#define __TTINTERP_H__ - - -#include <ft2build.h> -#include "ttobjs.h" - - -FT_BEGIN_HEADER - - -#ifndef TT_CONFIG_OPTION_STATIC_INTEPRETER /* indirect implementation */ - -#define EXEC_OP_ TT_ExecContext exc, -#define EXEC_OP TT_ExecContext exc -#define EXEC_ARG_ exc, -#define EXEC_ARG exc - -#else /* static implementation */ - -#define EXEC_OP_ /* void */ -#define EXEC_OP /* void */ -#define EXEC_ARG_ /* void */ -#define EXEC_ARG /* void */ - -#endif /* TT_CONFIG_OPTION_STATIC_INTERPRETER */ - - - /*************************************************************************/ - /* */ - /* Rounding mode constants. */ - /* */ -#define TT_Round_Off 5 -#define TT_Round_To_Half_Grid 0 -#define TT_Round_To_Grid 1 -#define TT_Round_To_Double_Grid 2 -#define TT_Round_Up_To_Grid 4 -#define TT_Round_Down_To_Grid 3 -#define TT_Round_Super 6 -#define TT_Round_Super_45 7 - - - /*************************************************************************/ - /* */ - /* Function types used by the interpreter, depending on various modes */ - /* (e.g. the rounding mode, whether to render a vertical or horizontal */ - /* line etc). */ - /* */ - /*************************************************************************/ - - /* Rounding function */ - typedef FT_F26Dot6 - (*TT_Round_Func)( EXEC_OP_ FT_F26Dot6 distance, - FT_F26Dot6 compensation ); - - /* Point displacement along the freedom vector routine */ - typedef void - (*TT_Move_Func)( EXEC_OP_ TT_GlyphZone zone, - FT_UShort point, - FT_F26Dot6 distance ); - - /* Distance projection along one of the projection vectors */ - typedef FT_F26Dot6 - (*TT_Project_Func)( EXEC_OP_ FT_Vector* v1, - FT_Vector* v2 ); - - /* reading a cvt value. Take care of non-square pixels if necessary */ - typedef FT_F26Dot6 - (*TT_Get_CVT_Func)( EXEC_OP_ FT_ULong idx ); - - /* setting or moving a cvt value. Take care of non-square pixels */ - /* if necessary */ - typedef void - (*TT_Set_CVT_Func)( EXEC_OP_ FT_ULong idx, - FT_F26Dot6 value ); - - - /*************************************************************************/ - /* */ - /* This structure defines a call record, used to manage function calls. */ - /* */ - typedef struct TT_CallRec_ - { - FT_Int Caller_Range; - FT_Long Caller_IP; - FT_Long Cur_Count; - FT_Long Cur_Restart; - - } TT_CallRec, *TT_CallStack; - - - /*************************************************************************/ - /* */ - /* The main structure for the interpreter which collects all necessary */ - /* variables and states. */ - /* */ - typedef struct TT_ExecContextRec_ - { - TT_Face face; - TT_Size size; - FT_Memory memory; - - /* instructions state */ - - FT_Error error; /* last execution error */ - - FT_Long top; /* top of exec. stack */ - - FT_UInt stackSize; /* size of exec. stack */ - FT_Long* stack; /* current exec. stack */ - - FT_Long args; - FT_UInt new_top; /* new top after exec. */ - - TT_GlyphZoneRec zp0, /* zone records */ - zp1, - zp2, - pts, - twilight; - - FT_Size_Metrics metrics; - TT_Size_Metrics tt_metrics; /* size metrics */ - - TT_GraphicsState GS; /* current graphics state */ - - FT_Int curRange; /* current code range number */ - FT_Byte* code; /* current code range */ - FT_Long IP; /* current instruction pointer */ - FT_Long codeSize; /* size of current range */ - - FT_Byte opcode; /* current opcode */ - FT_Int length; /* length of current opcode */ - - FT_Bool step_ins; /* true if the interpreter must */ - /* increment IP after ins. exec */ - FT_Long cvtSize; - FT_Long* cvt; - - FT_UInt glyphSize; /* glyph instructions buffer size */ - FT_Byte* glyphIns; /* glyph instructions buffer */ - - FT_UInt numFDefs; /* number of function defs */ - FT_UInt maxFDefs; /* maximum number of function defs */ - TT_DefArray FDefs; /* table of FDefs entries */ - - FT_UInt numIDefs; /* number of instruction defs */ - FT_UInt maxIDefs; /* maximum number of ins defs */ - TT_DefArray IDefs; /* table of IDefs entries */ - - FT_UInt maxFunc; /* maximum function index */ - FT_UInt maxIns; /* maximum instruction index */ - - FT_Int callTop, /* top of call stack during execution */ - callSize; /* size of call stack */ - TT_CallStack callStack; /* call stack */ - - FT_UShort maxPoints; /* capacity of this context's `pts' */ - FT_Short maxContours; /* record, expressed in points and */ - /* contours. */ - - TT_CodeRangeTable codeRangeTable; /* table of valid code ranges */ - /* useful for the debugger */ - - FT_UShort storeSize; /* size of current storage */ - FT_Long* storage; /* storage area */ - - FT_F26Dot6 period; /* values used for the */ - FT_F26Dot6 phase; /* `SuperRounding' */ - FT_F26Dot6 threshold; - -#if 0 - /* this seems to be unused */ - FT_Int cur_ppem; /* ppem along the current proj vector */ -#endif - - FT_Bool instruction_trap; /* If `True', the interpreter will */ - /* exit after each instruction */ - - TT_GraphicsState default_GS; /* graphics state resulting from */ - /* the prep program */ - FT_Bool is_composite; /* true if the glyph is composite */ - FT_Bool pedantic_hinting; /* true if pedantic interpretation */ - - /* latest interpreter additions */ - - FT_Long F_dot_P; /* dot product of freedom and projection */ - /* vectors */ - TT_Round_Func func_round; /* current rounding function */ - - TT_Project_Func func_project, /* current projection function */ - func_dualproj, /* current dual proj. function */ - func_freeProj; /* current freedom proj. func */ - - TT_Move_Func func_move; /* current point move function */ - TT_Move_Func func_move_orig; /* move original position function */ - - TT_Get_CVT_Func func_read_cvt; /* read a cvt entry */ - TT_Set_CVT_Func func_write_cvt; /* write a cvt entry (in pixels) */ - TT_Set_CVT_Func func_move_cvt; /* incr a cvt entry (in pixels) */ - - FT_ULong loadSize; - TT_SubGlyph_Stack loadStack; /* loading subglyph stack */ - - } TT_ExecContextRec; - - - extern const TT_GraphicsState tt_default_graphics_state; - - - FT_LOCAL( FT_Error ) - TT_Goto_CodeRange( TT_ExecContext exec, - FT_Int range, - FT_Long IP ); - - FT_LOCAL( FT_Error ) - TT_Set_CodeRange( TT_ExecContext exec, - FT_Int range, - void* base, - FT_Long length ); - - FT_LOCAL( FT_Error ) - TT_Clear_CodeRange( TT_ExecContext exec, - FT_Int range ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_New_Context */ - /* */ - /* <Description> */ - /* Queries the face context for a given font. Note that there is */ - /* now a _single_ execution context in the TrueType driver which is */ - /* shared among faces. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* <Return> */ - /* A handle to the execution context. Initialized for `face'. */ - /* */ - /* <Note> */ - /* Only the glyph loader and debugger should call this function. */ - /* */ - FT_EXPORT( TT_ExecContext ) - TT_New_Context( TT_Face face ); - - - FT_LOCAL( FT_Error ) - TT_Done_Context( TT_ExecContext exec ); - - FT_LOCAL( FT_Error ) - TT_Destroy_Context( TT_ExecContext exec, - FT_Memory memory ); - - FT_LOCAL( FT_Error ) - TT_Load_Context( TT_ExecContext exec, - TT_Face face, - TT_Size size ); - - FT_LOCAL( FT_Error ) - TT_Save_Context( TT_ExecContext exec, - TT_Size ins ); - - FT_LOCAL( FT_Error ) - TT_Run_Context( TT_ExecContext exec, - FT_Bool debug ); - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* TT_RunIns */ - /* */ - /* <Description> */ - /* Executes one or more instruction in the execution context. This */ - /* is the main function of the TrueType opcode interpreter. */ - /* */ - /* <Input> */ - /* exec :: A handle to the target execution context. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only the object manager and debugger should call this function. */ - /* */ - /* This function is publicly exported because it is directly */ - /* invoked by the TrueType debugger. */ - /* */ - FT_EXPORT( FT_Error ) - TT_RunIns( TT_ExecContext exec ); - - -FT_END_HEADER - -#endif /* __TTINTERP_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttobjs.c b/nx-X11/extras/freetype2/src/truetype/ttobjs.c deleted file mode 100644 index 3914ba5da..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttobjs.c +++ /dev/null @@ -1,901 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttobjs.c */ -/* */ -/* Objects manager (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_IDS_H -#include FT_TRUETYPE_TAGS_H -#include FT_INTERNAL_SFNT_H - -#include "ttgload.h" -#include "ttpload.h" - -#include "tterrors.h" - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER -#include "ttinterp.h" -#endif - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING -#include FT_TRUETYPE_UNPATENTED_H -#endif - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include "ttgxvar.h" -#endif - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttobjs - - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - /*************************************************************************/ - /* */ - /* GLYPH ZONE FUNCTIONS */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_glyphzone_done */ - /* */ - /* <Description> */ - /* Deallocates a glyph zone. */ - /* */ - /* <Input> */ - /* zone :: A pointer to the target glyph zone. */ - /* */ - FT_LOCAL_DEF( void ) - tt_glyphzone_done( TT_GlyphZone zone ) - { - FT_Memory memory = zone->memory; - - - if ( memory ) - { - FT_FREE( zone->contours ); - FT_FREE( zone->tags ); - FT_FREE( zone->cur ); - FT_FREE( zone->org ); - - zone->max_points = zone->n_points = 0; - zone->max_contours = zone->n_contours = 0; - zone->memory = NULL; - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_glyphzone_new */ - /* */ - /* <Description> */ - /* Allocates a new glyph zone. */ - /* */ - /* <Input> */ - /* memory :: A handle to the current memory object. */ - /* */ - /* maxPoints :: The capacity of glyph zone in points. */ - /* */ - /* maxContours :: The capacity of glyph zone in contours. */ - /* */ - /* <Output> */ - /* zone :: A pointer to the target glyph zone record. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_glyphzone_new( FT_Memory memory, - FT_UShort maxPoints, - FT_Short maxContours, - TT_GlyphZone zone ) - { - FT_Error error; - - - if ( maxPoints > 0 ) - maxPoints += 2; - - FT_MEM_ZERO( zone, sizeof ( *zone ) ); - zone->memory = memory; - - if ( FT_NEW_ARRAY( zone->org, maxPoints * 2 ) || - FT_NEW_ARRAY( zone->cur, maxPoints * 2 ) || - FT_NEW_ARRAY( zone->tags, maxPoints ) || - FT_NEW_ARRAY( zone->contours, maxContours ) ) - { - tt_glyphzone_done( zone ); - } - - return error; - } -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_init */ - /* */ - /* <Description> */ - /* Initializes a given TrueType face object. */ - /* */ - /* <Input> */ - /* stream :: The source font stream. */ - /* */ - /* face_index :: The index of the font face in the resource. */ - /* */ - /* num_params :: Number of additional generic parameters. Ignored. */ - /* */ - /* params :: Additional generic parameters. Ignored. */ - /* */ - /* <InOut> */ - /* face :: The newly built face object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_init( FT_Stream stream, - FT_Face ttface, /* TT_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error; - FT_Library library; - SFNT_Service sfnt; - TT_Face face = (TT_Face)ttface; - - - library = face->root.driver->root.library; - sfnt = (SFNT_Service)FT_Get_Module_Interface( library, "sfnt" ); - if ( !sfnt ) - goto Bad_Format; - - /* create input stream from resource */ - if ( FT_STREAM_SEEK( 0 ) ) - goto Exit; - - /* check that we have a valid TrueType file */ - error = sfnt->init_face( stream, face, face_index, num_params, params ); - if ( error ) - goto Exit; - - /* We must also be able to accept Mac/GX fonts, as well as OT ones */ - if ( face->format_tag != 0x00010000L && /* MS fonts */ - face->format_tag != TTAG_true ) /* Mac fonts */ - { - FT_TRACE2(( "[not a valid TTF font]\n" )); - goto Bad_Format; - } - - /* If we are performing a simple font format check, exit immediately */ - if ( face_index < 0 ) - return TT_Err_Ok; - - /* Load font directory */ - error = sfnt->load_face( stream, face, face_index, num_params, params ); - if ( error ) - goto Exit; - - if ( face->root.face_flags & FT_FACE_FLAG_SCALABLE ) - { - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - if ( !face->root.internal->incremental_interface ) - error = tt_face_load_loca( face, stream ); - if ( !error ) - error = tt_face_load_cvt( face, stream ) || - tt_face_load_fpgm( face, stream ); - -#else - - if ( !error ) - error = tt_face_load_loca( face, stream ) || - tt_face_load_cvt( face, stream ) || - tt_face_load_fpgm( face, stream ); - -#endif - - } - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - - /* Determine whether unpatented hinting is to be used for this face. */ - face->unpatented_hinting = FT_BOOL - ( library->debug_hooks[ FT_DEBUG_HOOK_UNPATENTED_HINTING ] != NULL ); - - { - int i; - - - for ( i = 0; i < num_params && !face->unpatented_hinting; i++ ) - if ( params[i].tag == FT_PARAM_TAG_UNPATENTED_HINTING ) - face->unpatented_hinting = TRUE; - } - -#endif /* TT_CONFIG_OPTION_UNPATENTED_HINTING */ - - /* initialize standard glyph loading routines */ - TT_Init_Glyph_Loading( face ); - - Exit: - return error; - - Bad_Format: - error = TT_Err_Unknown_File_Format; - goto Exit; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_done */ - /* */ - /* <Description> */ - /* Finalizes a given face object. */ - /* */ - /* <Input> */ - /* face :: A pointer to the face object to destroy. */ - /* */ - FT_LOCAL_DEF( void ) - tt_face_done( FT_Face ttface ) /* TT_Face */ - { - TT_Face face = (TT_Face)ttface; - FT_Memory memory = face->root.memory; - FT_Stream stream = face->root.stream; - - SFNT_Service sfnt = (SFNT_Service)face->sfnt; - - - /* for `extended TrueType formats' (i.e. compressed versions) */ - if ( face->extra.finalizer ) - face->extra.finalizer( face->extra.data ); - - if ( sfnt ) - sfnt->done_face( face ); - - /* freeing the locations table */ - FT_FREE( face->glyph_locations ); - face->num_locations = 0; - - /* freeing the CVT */ - FT_FREE( face->cvt ); - face->cvt_size = 0; - - /* freeing the programs */ - FT_FRAME_RELEASE( face->font_program ); - FT_FRAME_RELEASE( face->cvt_program ); - face->font_program_size = 0; - face->cvt_program_size = 0; - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - tt_done_blend( memory, face->blend ); - face->blend = NULL; -#endif - } - - - /*************************************************************************/ - /* */ - /* SIZE FUNCTIONS */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_size_init */ - /* */ - /* <Description> */ - /* Initializes a new TrueType size object. */ - /* */ - /* <InOut> */ - /* size :: A handle to the size object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_size_init( FT_Size ttsize ) /* TT_Size */ - { - TT_Size size = (TT_Size)ttsize; - FT_Error error = TT_Err_Ok; - - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - TT_Face face = (TT_Face)size->root.face; - FT_Memory memory = face->root.memory; - FT_Int i; - - TT_ExecContext exec; - FT_UShort n_twilight; - TT_MaxProfile* maxp = &face->max_profile; - - - size->ttmetrics.valid = FALSE; - - size->max_function_defs = maxp->maxFunctionDefs; - size->max_instruction_defs = maxp->maxInstructionDefs; - - size->num_function_defs = 0; - size->num_instruction_defs = 0; - - size->max_func = 0; - size->max_ins = 0; - - size->cvt_size = face->cvt_size; - size->storage_size = maxp->maxStorage; - - /* Set default metrics */ - { - FT_Size_Metrics* metrics = &size->root.metrics; - TT_Size_Metrics* metrics2 = &size->ttmetrics; - - - metrics->x_ppem = 0; - metrics->y_ppem = 0; - - metrics2->rotated = FALSE; - metrics2->stretched = FALSE; - - /* set default compensation (all 0) */ - for ( i = 0; i < 4; i++ ) - metrics2->compensations[i] = 0; - } - - /* allocate function defs, instruction defs, cvt, and storage area */ - if ( FT_NEW_ARRAY( size->function_defs, size->max_function_defs ) || - FT_NEW_ARRAY( size->instruction_defs, size->max_instruction_defs ) || - FT_NEW_ARRAY( size->cvt, size->cvt_size ) || - FT_NEW_ARRAY( size->storage, size->storage_size ) ) - - goto Fail_Memory; - - /* reserve twilight zone */ - n_twilight = maxp->maxTwilightPoints; - error = tt_glyphzone_new( memory, n_twilight, 0, &size->twilight ); - if ( error ) - goto Fail_Memory; - - size->twilight.n_points = n_twilight; - - /* set `face->interpreter' according to the debug hook present */ - { - FT_Library library = face->root.driver->root.library; - - - face->interpreter = (TT_Interpreter) - library->debug_hooks[FT_DEBUG_HOOK_TRUETYPE]; - if ( !face->interpreter ) - face->interpreter = (TT_Interpreter)TT_RunIns; - } - - /* Fine, now execute the font program! */ - exec = size->context; - /* size objects used during debugging have their own context */ - if ( !size->debug ) - exec = TT_New_Context( face ); - - if ( !exec ) - { - error = TT_Err_Could_Not_Find_Context; - goto Fail_Memory; - } - - size->GS = tt_default_graphics_state; - TT_Load_Context( exec, face, size ); - - exec->callTop = 0; - exec->top = 0; - - exec->period = 64; - exec->phase = 0; - exec->threshold = 0; - - { - FT_Size_Metrics* metrics = &exec->metrics; - TT_Size_Metrics* tt_metrics = &exec->tt_metrics; - - - metrics->x_ppem = 0; - metrics->y_ppem = 0; - metrics->x_scale = 0; - metrics->y_scale = 0; - - tt_metrics->ppem = 0; - tt_metrics->scale = 0; - tt_metrics->ratio = 0x10000L; - } - - exec->instruction_trap = FALSE; - - exec->cvtSize = size->cvt_size; - exec->cvt = size->cvt; - - exec->F_dot_P = 0x10000L; - - /* allow font program execution */ - TT_Set_CodeRange( exec, - tt_coderange_font, - face->font_program, - face->font_program_size ); - - /* disable CVT and glyph programs coderange */ - TT_Clear_CodeRange( exec, tt_coderange_cvt ); - TT_Clear_CodeRange( exec, tt_coderange_glyph ); - - if ( face->font_program_size > 0 ) - { - error = TT_Goto_CodeRange( exec, tt_coderange_font, 0 ); - if ( !error ) - error = face->interpreter( exec ); - - if ( error ) - goto Fail_Exec; - } - else - error = TT_Err_Ok; - - TT_Save_Context( exec, size ); - - if ( !size->debug ) - TT_Done_Context( exec ); - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - size->ttmetrics.valid = FALSE; - return error; - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - Fail_Exec: - if ( !size->debug ) - TT_Done_Context( exec ); - - Fail_Memory: - - tt_size_done( ttsize ); - return error; - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_size_done */ - /* */ - /* <Description> */ - /* The TrueType size object finalizer. */ - /* */ - /* <Input> */ - /* size :: A handle to the target size object. */ - /* */ - FT_LOCAL_DEF( void ) - tt_size_done( FT_Size ttsize ) /* TT_Size */ - { - TT_Size size = (TT_Size)ttsize; - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - FT_Memory memory = size->root.face->memory; - - - if ( size->debug ) - { - /* the debug context must be deleted by the debugger itself */ - size->context = NULL; - size->debug = FALSE; - } - - FT_FREE( size->cvt ); - size->cvt_size = 0; - - /* free storage area */ - FT_FREE( size->storage ); - size->storage_size = 0; - - /* twilight zone */ - tt_glyphzone_done( &size->twilight ); - - FT_FREE( size->function_defs ); - FT_FREE( size->instruction_defs ); - - size->num_function_defs = 0; - size->max_function_defs = 0; - size->num_instruction_defs = 0; - size->max_instruction_defs = 0; - - size->max_func = 0; - size->max_ins = 0; - -#endif - - size->ttmetrics.valid = FALSE; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Reset_Outline_Size */ - /* */ - /* <Description> */ - /* Resets a TrueType outline size when resolutions and character */ - /* dimensions have been changed. */ - /* */ - /* <Input> */ - /* size :: A handle to the target size object. */ - /* */ - static FT_Error - Reset_Outline_Size( TT_Size size ) - { - TT_Face face; - FT_Error error = TT_Err_Ok; - - FT_Size_Metrics* metrics; - - - if ( size->ttmetrics.valid ) - return TT_Err_Ok; - - face = (TT_Face)size->root.face; - - metrics = &size->metrics; - - if ( metrics->x_ppem < 1 || metrics->y_ppem < 1 ) - return TT_Err_Invalid_PPem; - - /* compute new transformation */ - if ( metrics->x_ppem >= metrics->y_ppem ) - { - size->ttmetrics.scale = metrics->x_scale; - size->ttmetrics.ppem = metrics->x_ppem; - size->ttmetrics.x_ratio = 0x10000L; - size->ttmetrics.y_ratio = FT_MulDiv( metrics->y_ppem, - 0x10000L, - metrics->x_ppem ); - } - else - { - size->ttmetrics.scale = metrics->y_scale; - size->ttmetrics.ppem = metrics->y_ppem; - size->ttmetrics.x_ratio = FT_MulDiv( metrics->x_ppem, - 0x10000L, - metrics->y_ppem ); - size->ttmetrics.y_ratio = 0x10000L; - } - - /* Compute root ascender, descender, text height, and max_advance */ - metrics->ascender = - FT_PIX_ROUND( FT_MulFix( face->root.ascender, metrics->y_scale ) ); - metrics->descender = - FT_PIX_ROUND( FT_MulFix( face->root.descender, metrics->y_scale ) ); - metrics->height = - FT_PIX_ROUND( FT_MulFix( face->root.height, metrics->y_scale ) ); - metrics->max_advance = - FT_PIX_ROUND( FT_MulFix( face->root.max_advance_width, - metrics->x_scale ) ); - - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - /* set to `invalid' by default */ - size->strike_index = 0xFFFFU; -#endif - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - { - TT_ExecContext exec; - FT_UInt i, j; - - - /* Scale the cvt values to the new ppem. */ - /* We use by default the y ppem to scale the CVT. */ - for ( i = 0; i < size->cvt_size; i++ ) - size->cvt[i] = FT_MulFix( face->cvt[i], size->ttmetrics.scale ); - - /* All twilight points are originally zero */ - for ( j = 0; j < (FT_UInt)size->twilight.n_points; j++ ) - { - size->twilight.org[j].x = 0; - size->twilight.org[j].y = 0; - size->twilight.cur[j].x = 0; - size->twilight.cur[j].y = 0; - } - - /* clear storage area */ - for ( i = 0; i < (FT_UInt)size->storage_size; i++ ) - size->storage[i] = 0; - - size->GS = tt_default_graphics_state; - - /* get execution context and run prep program */ - if ( size->debug ) - exec = size->context; - else - exec = TT_New_Context( face ); - /* debugging instances have their own context */ - - if ( !exec ) - return TT_Err_Could_Not_Find_Context; - - TT_Load_Context( exec, face, size ); - - TT_Set_CodeRange( exec, - tt_coderange_cvt, - face->cvt_program, - face->cvt_program_size ); - - TT_Clear_CodeRange( exec, tt_coderange_glyph ); - - exec->instruction_trap = FALSE; - - exec->top = 0; - exec->callTop = 0; - - if ( face->cvt_program_size > 0 ) - { - error = TT_Goto_CodeRange( exec, tt_coderange_cvt, 0 ); - if ( error ) - goto End; - - if ( !size->debug ) - error = face->interpreter( exec ); - } - else - error = TT_Err_Ok; - - size->GS = exec->GS; - /* save default graphics state */ - - End: - TT_Save_Context( exec, size ); - - if ( !size->debug ) - TT_Done_Context( exec ); - /* debugging instances keep their context */ - } - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - if ( !error ) - size->ttmetrics.valid = TRUE; - - return error; - } - - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Reset_SBit_Size */ - /* */ - /* <Description> */ - /* Resets a TrueType sbit size when resolutions and character */ - /* dimensions have been changed. */ - /* */ - /* <Input> */ - /* size :: A handle to the target size object. */ - /* */ - static FT_Error - Reset_SBit_Size( TT_Size size ) - { - TT_Face face; - FT_Error error = TT_Err_Ok; - - FT_ULong strike_index; - FT_Size_Metrics* metrics; - FT_Size_Metrics* sbit_metrics; - SFNT_Service sfnt; - - - metrics = &size->metrics; - - if ( size->strike_index != 0xFFFFU ) - return TT_Err_Ok; - - face = (TT_Face)size->root.face; - sfnt = (SFNT_Service)face->sfnt; - - sbit_metrics = &size->strike_metrics; - - error = sfnt->set_sbit_strike( face, - metrics->x_ppem, metrics->y_ppem, - &strike_index ); - - if ( !error ) - { - TT_SBit_Strike strike = face->sbit_strikes + strike_index; - - - sbit_metrics->x_ppem = metrics->x_ppem; - sbit_metrics->y_ppem = metrics->y_ppem; -#if 0 - /* - * sbit_metrics->?_scale - * are not used now. - */ - sbit_metrics->x_scale = 1 << 16; - sbit_metrics->y_scale = 1 << 16; -#endif - - sbit_metrics->ascender = strike->hori.ascender << 6; - sbit_metrics->descender = strike->hori.descender << 6; - - /* XXX: Is this correct? */ - sbit_metrics->height = sbit_metrics->ascender - - sbit_metrics->descender; - - /* XXX: Is this correct? */ - sbit_metrics->max_advance = ( strike->hori.min_origin_SB + - strike->hori.max_width + - strike->hori.min_advance_SB ) << 6; - - size->strike_index = (FT_UInt)strike_index; - } - else - { - size->strike_index = 0xFFFFU; - - sbit_metrics->x_ppem = 0; - sbit_metrics->y_ppem = 0; - sbit_metrics->ascender = 0; - sbit_metrics->descender = 0; - sbit_metrics->height = 0; - sbit_metrics->max_advance = 0; - } - - return error; - } - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_size_reset */ - /* */ - /* <Description> */ - /* Resets a TrueType size when resolutions and character dimensions */ - /* have been changed. */ - /* */ - /* <Input> */ - /* size :: A handle to the target size object. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_size_reset( TT_Size size ) - { - FT_Face face; - FT_Error error = TT_Err_Ok; - - - face = size->root.face; - - if ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - { - if ( !size->ttmetrics.valid ) - error = Reset_Outline_Size( size ); - - if ( error ) - return error; - } - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - if ( face->face_flags & FT_FACE_FLAG_FIXED_SIZES ) - { - if ( size->strike_index == 0xFFFFU ) - error = Reset_SBit_Size( size ); - - if ( !error && !( face->face_flags & FT_FACE_FLAG_SCALABLE ) ) - size->root.metrics = size->strike_metrics; - } - -#endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */ - - if ( face->face_flags & FT_FACE_FLAG_SCALABLE ) - return TT_Err_Ok; - else - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_driver_init */ - /* */ - /* <Description> */ - /* Initializes a given TrueType driver object. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target driver object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_driver_init( FT_Module driver ) /* TT_Driver */ - { - FT_Error error; - - - /* set `extra' in glyph loader */ - error = FT_GlyphLoader_CreateExtra( FT_DRIVER( driver )->glyph_loader ); - - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_driver_done */ - /* */ - /* <Description> */ - /* Finalizes a given TrueType driver. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target TrueType driver. */ - /* */ - FT_LOCAL_DEF( void ) - tt_driver_done( FT_Module ttdriver ) /* TT_Driver */ - { -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - TT_Driver driver = (TT_Driver)ttdriver; - - - /* destroy the execution context */ - if ( driver->context ) - { - TT_Destroy_Context( driver->context, driver->root.root.memory ); - driver->context = NULL; - } -#else - FT_UNUSED( ttdriver ); -#endif - - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttobjs.h b/nx-X11/extras/freetype2/src/truetype/ttobjs.h deleted file mode 100644 index 423d3f005..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttobjs.h +++ /dev/null @@ -1,437 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttobjs.h */ -/* */ -/* Objects manager (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTOBJS_H__ -#define __TTOBJS_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_TRUETYPE_TYPES_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* TT_Driver */ - /* */ - /* <Description> */ - /* A handle to a TrueType driver object. */ - /* */ - typedef struct TT_DriverRec_* TT_Driver; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* TT_Instance */ - /* */ - /* <Description> */ - /* A handle to a TrueType size object. */ - /* */ - typedef struct TT_SizeRec_* TT_Size; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* TT_GlyphSlot */ - /* */ - /* <Description> */ - /* A handle to a TrueType glyph slot object. */ - /* */ - /* <Note> */ - /* This is a direct typedef of FT_GlyphSlot, as there is nothing */ - /* specific about the TrueType glyph slot. */ - /* */ - typedef FT_GlyphSlot TT_GlyphSlot; - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* TT_GraphicsState */ - /* */ - /* <Description> */ - /* The TrueType graphics state used during bytecode interpretation. */ - /* */ - typedef struct TT_GraphicsState_ - { - FT_UShort rp0; - FT_UShort rp1; - FT_UShort rp2; - - FT_UnitVector dualVector; - FT_UnitVector projVector; - FT_UnitVector freeVector; - -#ifdef TT_CONFIG_OPTION_UNPATENTED_HINTING - FT_Bool both_x_axis; -#endif - - FT_Long loop; - FT_F26Dot6 minimum_distance; - FT_Int round_state; - - FT_Bool auto_flip; - FT_F26Dot6 control_value_cutin; - FT_F26Dot6 single_width_cutin; - FT_F26Dot6 single_width_value; - FT_Short delta_base; - FT_Short delta_shift; - - FT_Byte instruct_control; - FT_Bool scan_control; - FT_Int scan_type; - - FT_UShort gep0; - FT_UShort gep1; - FT_UShort gep2; - - } TT_GraphicsState; - - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - FT_LOCAL( void ) - tt_glyphzone_done( TT_GlyphZone zone ); - - FT_LOCAL( FT_Error ) - tt_glyphzone_new( FT_Memory memory, - FT_UShort maxPoints, - FT_Short maxContours, - TT_GlyphZone zone ); - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - - - /*************************************************************************/ - /* */ - /* EXECUTION SUBTABLES */ - /* */ - /* These sub-tables relate to instruction execution. */ - /* */ - /*************************************************************************/ - - -#define TT_MAX_CODE_RANGES 3 - - - /*************************************************************************/ - /* */ - /* There can only be 3 active code ranges at once: */ - /* - the Font Program */ - /* - the CVT Program */ - /* - a glyph's instructions set */ - /* */ - typedef enum TT_CodeRange_Tag_ - { - tt_coderange_none = 0, - tt_coderange_font, - tt_coderange_cvt, - tt_coderange_glyph - - } TT_CodeRange_Tag; - - - typedef struct TT_CodeRange_ - { - FT_Byte* base; - FT_ULong size; - - } TT_CodeRange; - - typedef TT_CodeRange TT_CodeRangeTable[TT_MAX_CODE_RANGES]; - - - /*************************************************************************/ - /* */ - /* Defines a function/instruction definition record. */ - /* */ - typedef struct TT_DefRecord_ - { - FT_Int range; /* in which code range is it located? */ - FT_Long start; /* where does it start? */ - FT_UInt opc; /* function #, or instruction code */ - FT_Bool active; /* is it active? */ - - } TT_DefRecord, *TT_DefArray; - - - /*************************************************************************/ - /* */ - /* Subglyph transformation record. */ - /* */ - typedef struct TT_Transform_ - { - FT_Fixed xx, xy; /* transformation matrix coefficients */ - FT_Fixed yx, yy; - FT_F26Dot6 ox, oy; /* offsets */ - - } TT_Transform; - - - /*************************************************************************/ - /* */ - /* Subglyph loading record. Used to load composite components. */ - /* */ - typedef struct TT_SubglyphRec_ - { - FT_Long index; /* subglyph index; initialized with -1 */ - FT_Bool is_scaled; /* is the subglyph scaled? */ - FT_Bool is_hinted; /* should it be hinted? */ - FT_Bool preserve_pps; /* preserve phantom points? */ - - FT_Long file_offset; - - FT_BBox bbox; - FT_Pos left_bearing; - FT_Pos advance; - - TT_GlyphZoneRec zone; - - FT_Long arg1; /* first argument */ - FT_Long arg2; /* second argument */ - - FT_UShort element_flag; /* current load element flag */ - - TT_Transform transform; /* transformation matrix */ - - FT_Vector pp1, pp2; /* phantom points (horizontal) */ - FT_Vector pp3, pp4; /* phantom points (vertical) */ - - } TT_SubGlyphRec, *TT_SubGlyph_Stack; - - - /*************************************************************************/ - /* */ - /* A note regarding non-squared pixels: */ - /* */ - /* (This text will probably go into some docs at some time; for now, it */ - /* is kept here to explain some definitions in the TIns_Metrics */ - /* record). */ - /* */ - /* The CVT is a one-dimensional array containing values that control */ - /* certain important characteristics in a font, like the height of all */ - /* capitals, all lowercase letter, default spacing or stem width/height. */ - /* */ - /* These values are found in FUnits in the font file, and must be scaled */ - /* to pixel coordinates before being used by the CVT and glyph programs. */ - /* Unfortunately, when using distinct x and y resolutions (or distinct x */ - /* and y pointsizes), there are two possible scalings. */ - /* */ - /* A first try was to implement a `lazy' scheme where all values were */ - /* scaled when first used. However, while some values are always used */ - /* in the same direction, some others are used under many different */ - /* circumstances and orientations. */ - /* */ - /* I have found a simpler way to do the same, and it even seems to work */ - /* in most of the cases: */ - /* */ - /* - All CVT values are scaled to the maximum ppem size. */ - /* */ - /* - When performing a read or write in the CVT, a ratio factor is used */ - /* to perform adequate scaling. Example: */ - /* */ - /* x_ppem = 14 */ - /* y_ppem = 10 */ - /* */ - /* We choose ppem = x_ppem = 14 as the CVT scaling size. All cvt */ - /* entries are scaled to it. */ - /* */ - /* x_ratio = 1.0 */ - /* y_ratio = y_ppem/ppem (< 1.0) */ - /* */ - /* We compute the current ratio like: */ - /* */ - /* - If projVector is horizontal, */ - /* ratio = x_ratio = 1.0 */ - /* */ - /* - if projVector is vertical, */ - /* ratio = y_ratio */ - /* */ - /* - else, */ - /* ratio = sqrt( (proj.x * x_ratio) ^ 2 + (proj.y * y_ratio) ^ 2 ) */ - /* */ - /* Reading a cvt value returns */ - /* ratio * cvt[index] */ - /* */ - /* Writing a cvt value in pixels: */ - /* cvt[index] / ratio */ - /* */ - /* The current ppem is simply */ - /* ratio * ppem */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* Metrics used by the TrueType size and context objects. */ - /* */ - typedef struct TT_Size_Metrics_ - { - /* for non-square pixels */ - FT_Long x_ratio; - FT_Long y_ratio; - - FT_UShort ppem; /* maximum ppem size */ - FT_Long ratio; /* current ratio */ - FT_Fixed scale; - - FT_F26Dot6 compensations[4]; /* device-specific compensations */ - - FT_Bool valid; - - FT_Bool rotated; /* `is the glyph rotated?'-flag */ - FT_Bool stretched; /* `is the glyph stretched?'-flag */ - - } TT_Size_Metrics; - - - /*************************************************************************/ - /* */ - /* TrueType size class. */ - /* */ - typedef struct TT_SizeRec_ - { - FT_SizeRec root; - - FT_Size_Metrics metrics; /* slightly different from the root metrics */ - TT_Size_Metrics ttmetrics; - -#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS - - FT_UInt strike_index; /* 0xFFFF to indicate invalid */ - FT_Size_Metrics strike_metrics; /* current strike's metrics */ - -#endif - -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - - FT_UInt num_function_defs; /* number of function definitions */ - FT_UInt max_function_defs; - TT_DefArray function_defs; /* table of function definitions */ - - FT_UInt num_instruction_defs; /* number of ins. definitions */ - FT_UInt max_instruction_defs; - TT_DefArray instruction_defs; /* table of ins. definitions */ - - FT_UInt max_func; - FT_UInt max_ins; - - TT_CodeRangeTable codeRangeTable; - - TT_GraphicsState GS; - - FT_ULong cvt_size; /* the scaled control value table */ - FT_Long* cvt; - - FT_UShort storage_size; /* The storage area is now part of */ - FT_Long* storage; /* the instance */ - - TT_GlyphZoneRec twilight; /* The instance's twilight zone */ - - /* debugging variables */ - - /* When using the debugger, we must keep the */ - /* execution context tied to the instance */ - /* object rather than asking it on demand. */ - - FT_Bool debug; - TT_ExecContext context; - -#endif /* TT_CONFIG_OPTION_BYTECODE_INTERPRETER */ - - } TT_SizeRec; - - - /*************************************************************************/ - /* */ - /* TrueType driver class. */ - /* */ - typedef struct TT_DriverRec_ - { - FT_DriverRec root; - TT_ExecContext context; /* execution context */ - TT_GlyphZoneRec zone; /* glyph loader points zone */ - - void* extension_component; - - } TT_DriverRec; - - - /* Note: All of the functions below (except tt_size_reset()) are used */ - /* as function pointers in a FT_Driver_ClassRec. Therefore their */ - /* parameters are of types FT_Face, FT_Size, etc., rather than TT_Face, */ - /* TT_Size, etc., so that the compiler can confirm that the types and */ - /* number of parameters are correct. In all cases the FT_xxx types are */ - /* cast to their TT_xxx counterparts inside the functions since FreeType */ - /* will always use the TT driver to create them. */ - - - /*************************************************************************/ - /* */ - /* Face functions */ - /* */ - FT_LOCAL( FT_Error ) - tt_face_init( FT_Stream stream, - FT_Face ttface, /* TT_Face */ - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL( void ) - tt_face_done( FT_Face ttface ); /* TT_Face */ - - - /*************************************************************************/ - /* */ - /* Size functions */ - /* */ - FT_LOCAL( FT_Error ) - tt_size_init( FT_Size ttsize ); /* TT_Size */ - - FT_LOCAL( void ) - tt_size_done( FT_Size ttsize ); /* TT_Size */ - - FT_LOCAL( FT_Error ) - tt_size_reset( TT_Size size ); - - - /*************************************************************************/ - /* */ - /* Driver functions */ - /* */ - FT_LOCAL( FT_Error ) - tt_driver_init( FT_Module ttdriver ); /* TT_Driver */ - - FT_LOCAL( void ) - tt_driver_done( FT_Module ttdriver ); /* TT_Driver */ - - -FT_END_HEADER - -#endif /* __TTOBJS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttpload.c b/nx-X11/extras/freetype2/src/truetype/ttpload.c deleted file mode 100644 index 9cae477c5..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttpload.c +++ /dev/null @@ -1,273 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttpload.c */ -/* */ -/* TrueType glyph data/program tables loader (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_TAGS_H - -#include "ttpload.h" - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT -#include "ttgxvar.h" -#endif - -#include "tterrors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_ttpload - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_loca */ - /* */ - /* <Description> */ - /* Loads the locations table. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* stream :: The input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_loca( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_Short LongOffsets; - FT_ULong table_len; - - - FT_TRACE2(( "Locations " )); - LongOffsets = face->header.Index_To_Loc_Format; - - error = face->goto_table( face, TTAG_loca, stream, &table_len ); - if ( error ) - { - error = TT_Err_Locations_Missing; - goto Exit; - } - - if ( LongOffsets != 0 ) - { - face->num_locations = (FT_UShort)( table_len >> 2 ); - - FT_TRACE2(( "(32bit offsets): %12d ", face->num_locations )); - - if ( FT_NEW_ARRAY( face->glyph_locations, face->num_locations ) ) - goto Exit; - - if ( FT_FRAME_ENTER( face->num_locations * 4L ) ) - goto Exit; - - { - FT_Long* loc = face->glyph_locations; - FT_Long* limit = loc + face->num_locations; - - - for ( ; loc < limit; loc++ ) - *loc = FT_GET_LONG(); - } - - FT_FRAME_EXIT(); - } - else - { - face->num_locations = (FT_UShort)( table_len >> 1 ); - - FT_TRACE2(( "(16bit offsets): %12d ", face->num_locations )); - - if ( FT_NEW_ARRAY( face->glyph_locations, face->num_locations ) ) - goto Exit; - - if ( FT_FRAME_ENTER( face->num_locations * 2L ) ) - goto Exit; - { - FT_Long* loc = face->glyph_locations; - FT_Long* limit = loc + face->num_locations; - - - for ( ; loc < limit; loc++ ) - *loc = (FT_Long)( (FT_ULong)FT_GET_USHORT() * 2 ); - } - FT_FRAME_EXIT(); - } - - FT_TRACE2(( "loaded\n" )); - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_cvt */ - /* */ - /* <Description> */ - /* Loads the control value table into a face object. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* stream :: A handle to the input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_cvt( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_ULong table_len; - - - FT_TRACE2(( "CVT " )); - - error = face->goto_table( face, TTAG_cvt, stream, &table_len ); - if ( error ) - { - FT_TRACE2(( "is missing!\n" )); - - face->cvt_size = 0; - face->cvt = NULL; - error = TT_Err_Ok; - - goto Exit; - } - - face->cvt_size = table_len / 2; - - if ( FT_NEW_ARRAY( face->cvt, face->cvt_size ) ) - goto Exit; - - if ( FT_FRAME_ENTER( face->cvt_size * 2L ) ) - goto Exit; - - { - FT_Short* cur = face->cvt; - FT_Short* limit = cur + face->cvt_size; - - - for ( ; cur < limit; cur++ ) - *cur = FT_GET_SHORT(); - } - - FT_FRAME_EXIT(); - FT_TRACE2(( "loaded\n" )); - -#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT - if ( face->doblend ) - error = tt_face_vary_cvt( face, stream ); -#endif - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* tt_face_load_fpgm */ - /* */ - /* <Description> */ - /* Loads the font program and the cvt program. */ - /* */ - /* <InOut> */ - /* face :: A handle to the target face object. */ - /* */ - /* <Input> */ - /* stream :: A handle to the input stream. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - tt_face_load_fpgm( TT_Face face, - FT_Stream stream ) - { - FT_Error error; - FT_ULong table_len; - - - FT_TRACE2(( "Font program " )); - - /* The font program is optional */ - error = face->goto_table( face, TTAG_fpgm, stream, &table_len ); - if ( error ) - { - face->font_program = NULL; - face->font_program_size = 0; - - FT_TRACE2(( "is missing!\n" )); - } - else - { - face->font_program_size = table_len; - if ( FT_FRAME_EXTRACT( table_len, face->font_program ) ) - goto Exit; - - FT_TRACE2(( "loaded, %12d bytes\n", face->font_program_size )); - } - - FT_TRACE2(( "Prep program " )); - - error = face->goto_table( face, TTAG_prep, stream, &table_len ); - if ( error ) - { - face->cvt_program = NULL; - face->cvt_program_size = 0; - error = TT_Err_Ok; - - FT_TRACE2(( "is missing!\n" )); - } - else - { - face->cvt_program_size = table_len; - if ( FT_FRAME_EXTRACT( table_len, face->cvt_program ) ) - goto Exit; - - FT_TRACE2(( "loaded, %12d bytes\n", face->cvt_program_size )); - } - - Exit: - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/truetype/ttpload.h b/nx-X11/extras/freetype2/src/truetype/ttpload.h deleted file mode 100644 index 3f8cd64ff..000000000 --- a/nx-X11/extras/freetype2/src/truetype/ttpload.h +++ /dev/null @@ -1,48 +0,0 @@ -/***************************************************************************/ -/* */ -/* ttpload.h */ -/* */ -/* TrueType glyph data/program tables loader (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __TTPLOAD_H__ -#define __TTPLOAD_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_TRUETYPE_TYPES_H - - -FT_BEGIN_HEADER - - - FT_LOCAL( FT_Error ) - tt_face_load_loca( TT_Face face, - FT_Stream stream ); - - FT_LOCAL( FT_Error ) - tt_face_load_cvt( TT_Face face, - FT_Stream stream ); - - FT_LOCAL( FT_Error ) - tt_face_load_fpgm( TT_Face face, - FT_Stream stream ); - - -FT_END_HEADER - -#endif /* __TTPLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/Jamfile b/nx-X11/extras/freetype2/src/type1/Jamfile deleted file mode 100644 index 4d966f3d6..000000000 --- a/nx-X11/extras/freetype2/src/type1/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/type1 Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) type1 ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = t1afm t1driver t1objs t1load t1gload t1parse ; - } - else - { - _sources = type1 ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/type1 Jamfile diff --git a/nx-X11/extras/freetype2/src/type1/module.mk b/nx-X11/extras/freetype2/src/type1/module.mk deleted file mode 100644 index 82d9355ba..000000000 --- a/nx-X11/extras/freetype2/src/type1/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 Type1 module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_type1_driver - -add_type1_driver: - $(OPEN_DRIVER)t1_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)type1 $(ECHO_DRIVER_DESC)Postscript font files with extension *.pfa or *.pfb$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/type1/rules.mk b/nx-X11/extras/freetype2/src/type1/rules.mk deleted file mode 100644 index 15087b030..000000000 --- a/nx-X11/extras/freetype2/src/type1/rules.mk +++ /dev/null @@ -1,73 +0,0 @@ -# -# FreeType 2 Type1 driver configuration rules -# - - -# Copyright 1996-2000, 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Type1 driver directory -# -T1_DIR := $(SRC_DIR)/type1 - - -# compilation flags for the driver -# -T1_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(T1_DIR)) - - -# Type1 driver sources (i.e., C files) -# -T1_DRV_SRC := $(T1_DIR)/t1parse.c \ - $(T1_DIR)/t1load.c \ - $(T1_DIR)/t1driver.c \ - $(T1_DIR)/t1afm.c \ - $(T1_DIR)/t1gload.c \ - $(T1_DIR)/t1objs.c - -# Type1 driver headers -# -T1_DRV_H := $(T1_DRV_SRC:%.c=%.h) \ - $(T1_DIR)/t1tokens.h \ - $(T1_DIR)/t1errors.h - - -# Type1 driver object(s) -# -# T1_DRV_OBJ_M is used during `multi' builds -# T1_DRV_OBJ_S is used during `single' builds -# -T1_DRV_OBJ_M := $(T1_DRV_SRC:$(T1_DIR)/%.c=$(OBJ_DIR)/%.$O) -T1_DRV_OBJ_S := $(OBJ_DIR)/type1.$O - -# Type1 driver source file for single build -# -T1_DRV_SRC_S := $(T1_DIR)/type1.c - - -# Type1 driver - single object -# -$(T1_DRV_OBJ_S): $(T1_DRV_SRC_S) $(T1_DRV_SRC) $(FREETYPE_H) $(T1_DRV_H) - $(T1_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(T1_DRV_SRC_S)) - - -# Type1 driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(T1_DIR)/%.c $(FREETYPE_H) $(T1_DRV_H) - $(T1_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(T1_DRV_OBJ_S) -DRV_OBJS_M += $(T1_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/type1/t1afm.c b/nx-X11/extras/freetype2/src/type1/t1afm.c deleted file mode 100644 index 9945ebdf6..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1afm.c +++ /dev/null @@ -1,282 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1afm.c */ -/* */ -/* AFM support for Type 1 fonts (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "t1afm.h" -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_TYPE1_TYPES_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t1afm - - - FT_LOCAL_DEF( void ) - T1_Done_AFM( FT_Memory memory, - T1_AFM* afm ) - { - FT_FREE( afm->kern_pairs ); - afm->num_pairs = 0; - FT_FREE( afm ); - } - - -#undef IS_KERN_PAIR -#define IS_KERN_PAIR( p ) ( p[0] == 'K' && p[1] == 'P' ) - -#define IS_ALPHANUM( c ) ( ft_isalnum( c ) || \ - c == '_' || \ - c == '.' ) - - - /* read a glyph name and return the equivalent glyph index */ - static FT_UInt - afm_atoindex( FT_Byte** start, - FT_Byte* limit, - T1_Font type1 ) - { - FT_Byte* p = *start; - FT_PtrDist len; - FT_UInt result = 0; - char temp[64]; - - - /* skip whitespace */ - while ( ( *p == ' ' || *p == '\t' || *p == ':' || *p == ';' ) && - p < limit ) - p++; - *start = p; - - /* now, read glyph name */ - while ( IS_ALPHANUM( *p ) && p < limit ) - p++; - - len = p - *start; - - if ( len > 0 && len < 64 ) - { - FT_Int n; - - - /* copy glyph name to intermediate array */ - FT_MEM_COPY( temp, *start, len ); - temp[len] = 0; - - /* lookup glyph name in face array */ - for ( n = 0; n < type1->num_glyphs; n++ ) - { - char* gname = (char*)type1->glyph_names[n]; - - - if ( gname && gname[0] == temp[0] && ft_strcmp( gname, temp ) == 0 ) - { - result = n; - break; - } - } - } - *start = p; - return result; - } - - - /* read an integer */ - static int - afm_atoi( FT_Byte** start, - FT_Byte* limit ) - { - FT_Byte* p = *start; - int sum = 0; - int sign = 1; - - - /* skip everything that is not a number */ - while ( p < limit && !isdigit( *p ) ) - { - sign = 1; - if ( *p == '-' ) - sign = -1; - - p++; - } - - while ( p < limit && isdigit( *p ) ) - { - sum = sum * 10 + ( *p - '0' ); - p++; - } - *start = p; - - return sum * sign; - } - - -#undef KERN_INDEX -#define KERN_INDEX( g1, g2 ) ( ( (FT_ULong)g1 << 16 ) | g2 ) - - - /* compare two kerning pairs */ - FT_CALLBACK_DEF( int ) - compare_kern_pairs( const void* a, - const void* b ) - { - T1_Kern_Pair* pair1 = (T1_Kern_Pair*)a; - T1_Kern_Pair* pair2 = (T1_Kern_Pair*)b; - - FT_ULong index1 = KERN_INDEX( pair1->glyph1, pair1->glyph2 ); - FT_ULong index2 = KERN_INDEX( pair2->glyph1, pair2->glyph2 ); - - - return (int)( index1 - index2 ); - } - - - /* parse an AFM file -- for now, only read the kerning pairs */ - FT_LOCAL_DEF( FT_Error ) - T1_Read_AFM( FT_Face t1_face, - FT_Stream stream ) - { - FT_Error error; - FT_Memory memory = stream->memory; - FT_Byte* start; - FT_Byte* limit; - FT_Byte* p; - FT_Int count = 0; - T1_Kern_Pair* pair; - T1_Font type1 = &((T1_Face)t1_face)->type1; - T1_AFM* afm = 0; - - - if ( FT_FRAME_ENTER( stream->size ) ) - return error; - - start = (FT_Byte*)stream->cursor; - limit = (FT_Byte*)stream->limit; - p = start; - - /* we are now going to count the occurences of `KP' or `KPX' in */ - /* the AFM file */ - count = 0; - for ( p = start; p < limit - 3; p++ ) - { - if ( IS_KERN_PAIR( p ) ) - count++; - } - - /* Actually, kerning pairs are simply optional! */ - if ( count == 0 ) - goto Exit; - - /* allocate the pairs */ - if ( FT_NEW( afm ) || FT_NEW_ARRAY( afm->kern_pairs, count ) ) - goto Exit; - - /* now, read each kern pair */ - pair = afm->kern_pairs; - afm->num_pairs = count; - - /* save in face object */ - ((T1_Face)t1_face)->afm_data = afm; - - t1_face->face_flags |= FT_FACE_FLAG_KERNING; - - for ( p = start; p < limit - 3; p++ ) - { - if ( IS_KERN_PAIR( p ) ) - { - FT_Byte* q; - - - /* skip keyword (KP or KPX) */ - q = p + 2; - if ( *q == 'X' ) - q++; - - pair->glyph1 = afm_atoindex( &q, limit, type1 ); - pair->glyph2 = afm_atoindex( &q, limit, type1 ); - pair->kerning.x = afm_atoi( &q, limit ); - - pair->kerning.y = 0; - if ( p[2] != 'X' ) - pair->kerning.y = afm_atoi( &q, limit ); - - pair++; - } - } - - /* now, sort the kern pairs according to their glyph indices */ - ft_qsort( afm->kern_pairs, count, sizeof ( T1_Kern_Pair ), - compare_kern_pairs ); - - Exit: - if ( error ) - FT_FREE( afm ); - - FT_FRAME_EXIT(); - - return error; - } - - - /* find the kerning for a given glyph pair */ - FT_LOCAL_DEF( void ) - T1_Get_Kerning( T1_AFM* afm, - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ) - { - T1_Kern_Pair *min, *mid, *max; - FT_ULong idx = KERN_INDEX( glyph1, glyph2 ); - - - /* simple binary search */ - min = afm->kern_pairs; - max = min + afm->num_pairs - 1; - - while ( min <= max ) - { - FT_ULong midi; - - - mid = min + ( max - min ) / 2; - midi = KERN_INDEX( mid->glyph1, mid->glyph2 ); - - if ( midi == idx ) - { - *kerning = mid->kerning; - return; - } - - if ( midi < idx ) - min = mid + 1; - else - max = mid - 1; - } - - kerning->x = 0; - kerning->y = 0; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1afm.h b/nx-X11/extras/freetype2/src/type1/t1afm.h deleted file mode 100644 index 77cc6a6e9..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1afm.h +++ /dev/null @@ -1,66 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1afm.h */ -/* */ -/* AFM support for Type 1 fonts (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1AFM_H__ -#define __T1AFM_H__ - -#include <ft2build.h> -#include "t1objs.h" - - -FT_BEGIN_HEADER - - - typedef struct T1_Kern_Pair_ - { - FT_UInt glyph1; - FT_UInt glyph2; - FT_Vector kerning; - - } T1_Kern_Pair; - - - typedef struct T1_AFM_ - { - FT_Int num_pairs; - T1_Kern_Pair* kern_pairs; - - } T1_AFM; - - - FT_LOCAL( FT_Error ) - T1_Read_AFM( FT_Face face, - FT_Stream stream ); - - FT_LOCAL( void ) - T1_Done_AFM( FT_Memory memory, - T1_AFM* afm ); - - FT_LOCAL( void ) - T1_Get_Kerning( T1_AFM* afm, - FT_UInt glyph1, - FT_UInt glyph2, - FT_Vector* kerning ); - - -FT_END_HEADER - -#endif /* __T1AFM_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1driver.c b/nx-X11/extras/freetype2/src/type1/t1driver.c deleted file mode 100644 index b37ae77c5..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1driver.c +++ /dev/null @@ -1,303 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1driver.c */ -/* */ -/* Type 1 driver interface (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "t1driver.h" -#include "t1gload.h" -#include "t1load.h" - -#include "t1errors.h" - -#ifndef T1_CONFIG_OPTION_NO_AFM -#include "t1afm.h" -#endif - -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H - -#include FT_SERVICE_MULTIPLE_MASTERS_H -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_XFREE86_NAME_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_SERVICE_POSTSCRIPT_INFO_H - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t1driver - - /* - * GLYPH DICT SERVICE - * - */ - - static FT_Error - t1_get_glyph_name( T1_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) - { - FT_String* gname; - - - gname = face->type1.glyph_names[glyph_index]; - - if ( buffer_max > 0 ) - { - FT_UInt len = (FT_UInt)( ft_strlen( gname ) ); - - - if (len >= buffer_max) - len = buffer_max - 1; - - FT_MEM_COPY( buffer, gname, len ); - ((FT_Byte*)buffer)[len] = 0; - } - - return T1_Err_Ok; - } - - - static FT_UInt - t1_get_name_index( T1_Face face, - FT_String* glyph_name ) - { - FT_Int i; - FT_String* gname; - - - for ( i = 0; i < face->type1.num_glyphs; i++ ) - { - gname = face->type1.glyph_names[i]; - - if ( !ft_strcmp( glyph_name, gname ) ) - return (FT_UInt)i; - } - - return 0; - } - - static const FT_Service_GlyphDictRec t1_service_glyph_dict = - { - (FT_GlyphDict_GetNameFunc) t1_get_glyph_name, - (FT_GlyphDict_NameIndexFunc)t1_get_name_index - }; - - - /* - * POSTSCRIPT NAME SERVICE - * - */ - - static const char* - t1_get_ps_name( T1_Face face ) - { - return (const char*) face->type1.font_name; - } - - static const FT_Service_PsFontNameRec t1_service_ps_name = - { - (FT_PsName_GetFunc)t1_get_ps_name - }; - - - /* - * MULTIPLE MASTERS SERVICE - * - */ - -#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - static const FT_Service_MultiMastersRec t1_service_multi_masters = - { - (FT_Get_MM_Func) T1_Get_Multi_Master, - (FT_Set_MM_Design_Func) T1_Set_MM_Design, - (FT_Set_MM_Blend_Func) T1_Set_MM_Blend, - (FT_Get_MM_Var_Func) T1_Get_MM_Var, - (FT_Set_Var_Design_Func)T1_Set_Var_Design - }; -#endif - - - /* - * POSTSCRIPT INFO SERVICE - * - */ - - static FT_Error - t1_ps_get_font_info( FT_Face face, - PS_FontInfoRec* afont_info ) - { - *afont_info = ((T1_Face)face)->type1.font_info; - return 0; - } - - - static FT_Int - t1_ps_has_glyph_names( FT_Face face ) - { - FT_UNUSED( face ); - return 1; - } - - - static const FT_Service_PsInfoRec t1_service_ps_info = - { - (PS_GetFontInfoFunc) t1_ps_get_font_info, - (PS_HasGlyphNamesFunc)t1_ps_has_glyph_names - }; - - - /* - * SERVICE LIST - * - */ - - static const FT_ServiceDescRec t1_services[] = - { - { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &t1_service_ps_name }, - { FT_SERVICE_ID_GLYPH_DICT, &t1_service_glyph_dict }, - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_TYPE_1 }, - { FT_SERVICE_ID_POSTSCRIPT_INFO, &t1_service_ps_info }, - -#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - { FT_SERVICE_ID_MULTI_MASTERS, &t1_service_multi_masters }, -#endif - { NULL, NULL } - }; - - - static FT_Module_Interface - Get_Interface( FT_Driver driver, - const FT_String* t1_interface ) - { - FT_UNUSED( driver ); - - return ft_service_list_lookup( t1_services, t1_interface ); - } - - -#ifndef T1_CONFIG_OPTION_NO_AFM - - /*************************************************************************/ - /* */ - /* <Function> */ - /* Get_Kerning */ - /* */ - /* <Description> */ - /* A driver method used to return the kerning vector between two */ - /* glyphs of the same face. */ - /* */ - /* <Input> */ - /* face :: A handle to the source face object. */ - /* */ - /* left_glyph :: The index of the left glyph in the kern pair. */ - /* */ - /* right_glyph :: The index of the right glyph in the kern pair. */ - /* */ - /* <Output> */ - /* kerning :: The kerning vector. This is in font units for */ - /* scalable formats, and in pixels for fixed-sizes */ - /* formats. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - /* <Note> */ - /* Only horizontal layouts (left-to-right & right-to-left) are */ - /* supported by this function. Other layouts, or more sophisticated */ - /* kernings are out of scope of this method (the basic driver */ - /* interface is meant to be simple). */ - /* */ - /* They can be implemented by format-specific interfaces. */ - /* */ - static FT_Error - Get_Kerning( T1_Face face, - FT_UInt left_glyph, - FT_UInt right_glyph, - FT_Vector* kerning ) - { - T1_AFM* afm; - - - kerning->x = 0; - kerning->y = 0; - - afm = (T1_AFM*)face->afm_data; - if ( afm ) - T1_Get_Kerning( afm, left_glyph, right_glyph, kerning ); - - return T1_Err_Ok; - } - - -#endif /* T1_CONFIG_OPTION_NO_AFM */ - - - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec t1_driver_class = - { - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_SCALABLE | - FT_MODULE_DRIVER_HAS_HINTER, - - sizeof( FT_DriverRec ), - - "type1", - 0x10000L, - 0x20000L, - - 0, /* format interface */ - - (FT_Module_Constructor)T1_Driver_Init, - (FT_Module_Destructor) T1_Driver_Done, - (FT_Module_Requester) Get_Interface, - }, - - sizeof( T1_FaceRec ), - sizeof( T1_SizeRec ), - sizeof( T1_GlyphSlotRec ), - - (FT_Face_InitFunc) T1_Face_Init, - (FT_Face_DoneFunc) T1_Face_Done, - (FT_Size_InitFunc) T1_Size_Init, - (FT_Size_DoneFunc) T1_Size_Done, - (FT_Slot_InitFunc) T1_GlyphSlot_Init, - (FT_Slot_DoneFunc) T1_GlyphSlot_Done, - - (FT_Size_ResetPointsFunc) T1_Size_Reset, - (FT_Size_ResetPixelsFunc) T1_Size_Reset, - (FT_Slot_LoadFunc) T1_Load_Glyph, - -#ifdef T1_CONFIG_OPTION_NO_AFM - (FT_Face_GetKerningFunc) 0, - (FT_Face_AttachFunc) 0, -#else - (FT_Face_GetKerningFunc) Get_Kerning, - (FT_Face_AttachFunc) T1_Read_AFM, -#endif - (FT_Face_GetAdvancesFunc) 0 - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1driver.h b/nx-X11/extras/freetype2/src/type1/t1driver.h deleted file mode 100644 index ad429440d..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1driver.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1driver.h */ -/* */ -/* High-level Type 1 driver interface (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1DRIVER_H__ -#define __T1DRIVER_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Driver_ClassRec ) t1_driver_class; - - -FT_END_HEADER - -#endif /* __T1DRIVER_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1errors.h b/nx-X11/extras/freetype2/src/type1/t1errors.h deleted file mode 100644 index 81221c343..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1errors.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1errors.h */ -/* */ -/* Type 1 error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the Type 1 error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __T1ERRORS_H__ -#define __T1ERRORS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX T1_Err_ -#define FT_ERR_BASE FT_Mod_Err_Type1 - -#include FT_ERRORS_H - -#endif /* __T1ERRORS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1gload.c b/nx-X11/extras/freetype2/src/type1/t1gload.c deleted file mode 100644 index f45a83b40..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1gload.c +++ /dev/null @@ -1,431 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1gload.c */ -/* */ -/* Type 1 Glyph Loader (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include "t1gload.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_OUTLINE_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H - -#include "t1errors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t1gload - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** COMPUTE THE MAXIMUM ADVANCE WIDTH *********/ - /********** *********/ - /********** The following code is in charge of computing *********/ - /********** the maximum advance width of the font. It *********/ - /********** quickly processes each glyph charstring to *********/ - /********** extract the value from either a `sbw' or `seac' *********/ - /********** operator. *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - T1_Parse_Glyph_And_Get_Char_String( T1_Decoder decoder, - FT_UInt glyph_index, - FT_Data* char_string ) - { - T1_Face face = (T1_Face)decoder->builder.face; - T1_Font type1 = &face->type1; - FT_Error error = T1_Err_Ok; - - - decoder->font_matrix = type1->font_matrix; - decoder->font_offset = type1->font_offset; - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* For incremental fonts get the character data using the */ - /* callback function. */ - if ( face->root.internal->incremental_interface ) - error = face->root.internal->incremental_interface->funcs->get_glyph_data( - face->root.internal->incremental_interface->object, - glyph_index, char_string ); - else - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - /* For ordinary fonts get the character data stored in the face record. */ - { - char_string->pointer = type1->charstrings[glyph_index]; - char_string->length = (FT_Int)type1->charstrings_len[glyph_index]; - } - - if ( !error ) - error = decoder->funcs.parse_charstrings( - decoder, (FT_Byte*)char_string->pointer, - char_string->length ); - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - /* Incremental fonts can optionally override the metrics. */ - if ( !error && face->root.internal->incremental_interface && - face->root.internal->incremental_interface->funcs->get_glyph_metrics ) - { - FT_Incremental_MetricsRec metrics; - - - metrics.bearing_x = decoder->builder.left_bearing.x; - metrics.bearing_y = decoder->builder.left_bearing.y; - metrics.advance = decoder->builder.advance.x; - error = face->root.internal->incremental_interface->funcs->get_glyph_metrics( - face->root.internal->incremental_interface->object, - glyph_index, FALSE, &metrics ); - decoder->builder.left_bearing.x = metrics.bearing_x; - decoder->builder.left_bearing.y = metrics.bearing_y; - decoder->builder.advance.x = metrics.advance; - decoder->builder.advance.y = 0; - } - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - return error; - } - - - FT_CALLBACK_DEF( FT_Error ) - T1_Parse_Glyph( T1_Decoder decoder, - FT_UInt glyph_index ) - { - FT_Data glyph_data; - FT_Error error = T1_Parse_Glyph_And_Get_Char_String( - decoder, glyph_index, &glyph_data ); - - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - - if ( !error ) - { - T1_Face face = (T1_Face)decoder->builder.face; - - - if ( face->root.internal->incremental_interface ) - face->root.internal->incremental_interface->funcs->free_glyph_data( - face->root.internal->incremental_interface->object, - &glyph_data ); - } - -#endif /* FT_CONFIG_OPTION_INCREMENTAL */ - - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - T1_Compute_Max_Advance( T1_Face face, - FT_Pos* max_advance ) - { - FT_Error error; - T1_DecoderRec decoder; - FT_Int glyph_index; - T1_Font type1 = &face->type1; - PSAux_Service psaux = (PSAux_Service)face->psaux; - - - *max_advance = 0; - - /* initialize load decoder */ - error = psaux->t1_decoder_funcs->init( &decoder, - (FT_Face)face, - 0, /* size */ - 0, /* glyph slot */ - (FT_Byte**)type1->glyph_names, - face->blend, - 0, - FT_RENDER_MODE_NORMAL, - T1_Parse_Glyph ); - if ( error ) - return error; - - decoder.builder.metrics_only = 1; - decoder.builder.load_points = 0; - - decoder.num_subrs = type1->num_subrs; - decoder.subrs = type1->subrs; - decoder.subrs_len = type1->subrs_len; - - *max_advance = 0; - - /* for each glyph, parse the glyph charstring and extract */ - /* the advance width */ - for ( glyph_index = 0; glyph_index < type1->num_glyphs; glyph_index++ ) - { - /* now get load the unscaled outline */ - error = T1_Parse_Glyph( &decoder, glyph_index ); - if ( glyph_index == 0 || decoder.builder.advance.x > *max_advance ) - *max_advance = decoder.builder.advance.x; - - /* ignore the error if one occurred - skip to next glyph */ - } - - return T1_Err_Ok; - } - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /********** *********/ - /********** UNHINTED GLYPH LOADER *********/ - /********** *********/ - /********** The following code is in charge of loading a *********/ - /********** single outline. It completely ignores hinting *********/ - /********** and is used when FT_LOAD_NO_HINTING is set. *********/ - /********** *********/ - /********** The Type 1 hinter is located in `t1hint.c' *********/ - /********** *********/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - FT_LOCAL_DEF( FT_Error ) - T1_Load_Glyph( T1_GlyphSlot glyph, - T1_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - FT_Error error; - T1_DecoderRec decoder; - T1_Face face = (T1_Face)glyph->root.face; - FT_Bool hinting; - T1_Font type1 = &face->type1; - PSAux_Service psaux = (PSAux_Service)face->psaux; - const T1_Decoder_Funcs decoder_funcs = psaux->t1_decoder_funcs; - - FT_Matrix font_matrix; - FT_Vector font_offset; - FT_Data glyph_data; -#ifdef FT_CONFIG_OPTION_INCREMENTAL - FT_Bool glyph_data_loaded = 0; -#endif - - - if ( load_flags & FT_LOAD_NO_RECURSE ) - load_flags |= FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING; - - glyph->x_scale = size->root.metrics.x_scale; - glyph->y_scale = size->root.metrics.y_scale; - - glyph->root.outline.n_points = 0; - glyph->root.outline.n_contours = 0; - - hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE ) == 0 && - ( load_flags & FT_LOAD_NO_HINTING ) == 0 ); - - glyph->root.format = FT_GLYPH_FORMAT_OUTLINE; - - error = decoder_funcs->init( &decoder, - (FT_Face)face, - (FT_Size)size, - (FT_GlyphSlot)glyph, - (FT_Byte**)type1->glyph_names, - face->blend, - FT_BOOL( hinting ), - FT_LOAD_TARGET_MODE( load_flags ), - T1_Parse_Glyph ); - if ( error ) - goto Exit; - - decoder.builder.no_recurse = FT_BOOL( - ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ); - - decoder.num_subrs = type1->num_subrs; - decoder.subrs = type1->subrs; - decoder.subrs_len = type1->subrs_len; - - /* now load the unscaled outline */ - error = T1_Parse_Glyph_And_Get_Char_String( &decoder, glyph_index, - &glyph_data ); - if ( error ) - goto Exit; -#ifdef FT_CONFIG_OPTION_INCREMENTAL - glyph_data_loaded = 1; -#endif - - font_matrix = decoder.font_matrix; - font_offset = decoder.font_offset; - - /* save new glyph tables */ - decoder_funcs->done( &decoder ); - - /* now, set the metrics -- this is rather simple, as */ - /* the left side bearing is the xMin, and the top side */ - /* bearing the yMax */ - if ( !error ) - { - glyph->root.outline.flags &= FT_OUTLINE_OWNER; - glyph->root.outline.flags |= FT_OUTLINE_REVERSE_FILL; - - /* for composite glyphs, return only left side bearing and */ - /* advance width */ - if ( load_flags & FT_LOAD_NO_RECURSE ) - { - FT_Slot_Internal internal = glyph->root.internal; - - - glyph->root.metrics.horiBearingX = decoder.builder.left_bearing.x; - glyph->root.metrics.horiAdvance = decoder.builder.advance.x; - internal->glyph_matrix = font_matrix; - internal->glyph_delta = font_offset; - internal->glyph_transformed = 1; - } - else - { - FT_BBox cbox; - FT_Glyph_Metrics* metrics = &glyph->root.metrics; - FT_Vector advance; - - - /* copy the _unscaled_ advance width */ - metrics->horiAdvance = decoder.builder.advance.x; - glyph->root.linearHoriAdvance = decoder.builder.advance.x; - glyph->root.internal->glyph_transformed = 0; - - /* make up vertical metrics */ - metrics->vertBearingX = 0; - metrics->vertBearingY = 0; - metrics->vertAdvance = 0; - - glyph->root.linearVertAdvance = 0; - - glyph->root.format = FT_GLYPH_FORMAT_OUTLINE; - - if ( size && size->root.metrics.y_ppem < 24 ) - glyph->root.outline.flags |= FT_OUTLINE_HIGH_PRECISION; - -#if 1 - /* apply the font matrix, if any */ - FT_Outline_Transform( &glyph->root.outline, &font_matrix ); - - FT_Outline_Translate( &glyph->root.outline, - font_offset.x, - font_offset.y ); - - advance.x = metrics->horiAdvance; - advance.y = 0; - FT_Vector_Transform( &advance, &font_matrix ); - metrics->horiAdvance = advance.x + font_offset.x; - advance.x = 0; - advance.y = metrics->vertAdvance; - FT_Vector_Transform( &advance, &font_matrix ); - metrics->vertAdvance = advance.y + font_offset.y; -#endif - - if ( ( load_flags & FT_LOAD_NO_SCALE ) == 0 ) - { - /* scale the outline and the metrics */ - FT_Int n; - FT_Outline* cur = decoder.builder.base; - FT_Vector* vec = cur->points; - FT_Fixed x_scale = glyph->x_scale; - FT_Fixed y_scale = glyph->y_scale; - - - /* First of all, scale the points, if we are not hinting */ - if ( !hinting ) - for ( n = cur->n_points; n > 0; n--, vec++ ) - { - vec->x = FT_MulFix( vec->x, x_scale ); - vec->y = FT_MulFix( vec->y, y_scale ); - } - - FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - - /* Then scale the metrics */ - metrics->horiAdvance = FT_MulFix( metrics->horiAdvance, x_scale ); - metrics->vertAdvance = FT_MulFix( metrics->vertAdvance, y_scale ); - - metrics->vertBearingX = FT_MulFix( metrics->vertBearingX, x_scale ); - metrics->vertBearingY = FT_MulFix( metrics->vertBearingY, y_scale ); - - if ( hinting ) - { - metrics->horiAdvance = FT_PIX_ROUND( metrics->horiAdvance ); - metrics->vertAdvance = FT_PIX_ROUND( metrics->vertAdvance ); - - metrics->vertBearingX = FT_PIX_ROUND( metrics->vertBearingX ); - metrics->vertBearingY = FT_PIX_ROUND( metrics->vertBearingY ); - } - } - - /* compute the other metrics */ - FT_Outline_Get_CBox( &glyph->root.outline, &cbox ); - - /* grid fit the bounding box if necessary */ - if ( hinting ) - { - cbox.xMin = FT_PIX_FLOOR( cbox.xMin ); - cbox.yMin = FT_PIX_FLOOR( cbox.yMin ); - cbox.xMax = FT_PIX_CEIL( cbox.xMax ); - cbox.yMax = FT_PIX_CEIL( cbox.yMax ); - } - - metrics->width = cbox.xMax - cbox.xMin; - metrics->height = cbox.yMax - cbox.yMin; - - metrics->horiBearingX = cbox.xMin; - metrics->horiBearingY = cbox.yMax; - } - - /* Set control data to the glyph charstrings. Note that this is */ - /* _not_ zero-terminated. */ - glyph->root.control_data = (FT_Byte*)glyph_data.pointer; - glyph->root.control_len = glyph_data.length; - } - - - Exit: - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - if ( glyph_data_loaded && face->root.internal->incremental_interface ) - { - face->root.internal->incremental_interface->funcs->free_glyph_data( - face->root.internal->incremental_interface->object, - &glyph_data ); - - /* Set the control data to null - it is no longer available if */ - /* loaded incrementally. */ - glyph->root.control_data = 0; - glyph->root.control_len = 0; - } -#endif - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1gload.h b/nx-X11/extras/freetype2/src/type1/t1gload.h deleted file mode 100644 index de87896dc..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1gload.h +++ /dev/null @@ -1,46 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1gload.h */ -/* */ -/* Type 1 Glyph Loader (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1GLOAD_H__ -#define __T1GLOAD_H__ - - -#include <ft2build.h> -#include "t1objs.h" - - -FT_BEGIN_HEADER - - - FT_LOCAL( FT_Error ) - T1_Compute_Max_Advance( T1_Face face, - FT_Pos* max_advance ); - - FT_LOCAL( FT_Error ) - T1_Load_Glyph( T1_GlyphSlot glyph, - T1_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - -FT_END_HEADER - -#endif /* __T1GLOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1load.c b/nx-X11/extras/freetype2/src/type1/t1load.c deleted file mode 100644 index 7ec163ad5..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1load.c +++ /dev/null @@ -1,2094 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1load.c */ -/* */ -/* Type 1 font loader (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This is the new and improved Type 1 data loader for FreeType 2. The */ - /* old loader has several problems: it is slow, complex, difficult to */ - /* maintain, and contains incredible hacks to make it accept some */ - /* ill-formed Type 1 fonts without hiccup-ing. Moreover, about 5% of */ - /* the Type 1 fonts on my machine still aren't loaded correctly by it. */ - /* */ - /* This version is much simpler, much faster and also easier to read and */ - /* maintain by a great order of magnitude. The idea behind it is to */ - /* _not_ try to read the Type 1 token stream with a state machine (i.e. */ - /* a Postscript-like interpreter) but rather to perform simple pattern */ - /* matching. */ - /* */ - /* Indeed, nearly all data definitions follow a simple pattern like */ - /* */ - /* ... /Field <data> ... */ - /* */ - /* where <data> can be a number, a boolean, a string, or an array of */ - /* numbers. There are a few exceptions, namely the encoding, font name, */ - /* charstrings, and subrs; they are handled with a special pattern */ - /* matching routine. */ - /* */ - /* All other common cases are handled very simply. The matching rules */ - /* are defined in the file `t1tokens.h' through the use of several */ - /* macros calls PARSE_XXX. This file is included twice here; the first */ - /* time to generate parsing callback functions, the second time to */ - /* generate a table of keywords (with pointers to the associated */ - /* callback functions). */ - /* */ - /* The function `parse_dict' simply scans *linearly* a given dictionary */ - /* (either the top-level or private one) and calls the appropriate */ - /* callback when it encounters an immediate keyword. */ - /* */ - /* This is by far the fastest way one can find to parse and read all */ - /* data. */ - /* */ - /* This led to tremendous code size reduction. Note that later, the */ - /* glyph loader will also be _greatly_ simplified, and the automatic */ - /* hinter will replace the clumsy `t1hinter'. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_CONFIG_CONFIG_H -#include FT_MULTIPLE_MASTERS_H -#include FT_INTERNAL_TYPE1_TYPES_H - -#include "t1load.h" -#include "t1errors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t1load - - -#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** MULTIPLE MASTERS SUPPORT *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static FT_Error - t1_allocate_blend( T1_Face face, - FT_UInt num_designs, - FT_UInt num_axis ) - { - PS_Blend blend; - FT_Memory memory = face->root.memory; - FT_Error error = T1_Err_Ok; - - - blend = face->blend; - if ( !blend ) - { - if ( FT_NEW( blend ) ) - goto Exit; - - face->blend = blend; - } - - /* allocate design data if needed */ - if ( num_designs > 0 ) - { - if ( blend->num_designs == 0 ) - { - FT_UInt nn; - - - /* allocate the blend `private' and `font_info' dictionaries */ - if ( FT_NEW_ARRAY( blend->font_infos[1], num_designs ) || - FT_NEW_ARRAY( blend->privates[1], num_designs ) || - FT_NEW_ARRAY( blend->bboxes[1], num_designs ) || - FT_NEW_ARRAY( blend->weight_vector, num_designs * 2 ) ) - goto Exit; - - blend->default_weight_vector = blend->weight_vector + num_designs; - - blend->font_infos[0] = &face->type1.font_info; - blend->privates [0] = &face->type1.private_dict; - blend->bboxes [0] = &face->type1.font_bbox; - - for ( nn = 2; nn <= num_designs; nn++ ) - { - blend->privates[nn] = blend->privates [nn - 1] + 1; - blend->font_infos[nn] = blend->font_infos[nn - 1] + 1; - blend->bboxes[nn] = blend->bboxes [nn - 1] + 1; - } - - blend->num_designs = num_designs; - } - else if ( blend->num_designs != num_designs ) - goto Fail; - } - - /* allocate axis data if needed */ - if ( num_axis > 0 ) - { - if ( blend->num_axis != 0 && blend->num_axis != num_axis ) - goto Fail; - - blend->num_axis = num_axis; - } - - /* allocate the blend design pos table if needed */ - num_designs = blend->num_designs; - num_axis = blend->num_axis; - if ( num_designs && num_axis && blend->design_pos[0] == 0 ) - { - FT_UInt n; - - - if ( FT_NEW_ARRAY( blend->design_pos[0], num_designs * num_axis ) ) - goto Exit; - - for ( n = 1; n < num_designs; n++ ) - blend->design_pos[n] = blend->design_pos[0] + num_axis * n; - } - - Exit: - return error; - - Fail: - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - - FT_LOCAL_DEF( FT_Error ) - T1_Get_Multi_Master( T1_Face face, - FT_Multi_Master* master ) - { - PS_Blend blend = face->blend; - FT_UInt n; - FT_Error error; - - - error = T1_Err_Invalid_Argument; - - if ( blend ) - { - master->num_axis = blend->num_axis; - master->num_designs = blend->num_designs; - - for ( n = 0; n < blend->num_axis; n++ ) - { - FT_MM_Axis* axis = master->axis + n; - PS_DesignMap map = blend->design_map + n; - - - axis->name = blend->axis_names[n]; - axis->minimum = map->design_points[0]; - axis->maximum = map->design_points[map->num_points - 1]; - } - - error = T1_Err_Ok; - } - - return error; - } - - -#define FT_INT_TO_FIXED( a ) ( (a) << 16 ) -#define FT_FIXED_TO_INT( a ) ( FT_RoundFix( a ) >> 16 ) - - - /*************************************************************************/ - /* */ - /* Given a normalized (blend) coordinate, figure out the design */ - /* coordinate appropriate for that value. */ - /* */ - FT_LOCAL_DEF( FT_Fixed ) - mm_axis_unmap( PS_DesignMap axismap, - FT_Fixed ncv ) - { - int j; - - - if ( ncv <= axismap->blend_points[0] ) - return axismap->design_points[0]; - - for ( j = 1; j < axismap->num_points; ++j ) - { - if ( ncv <= axismap->blend_points[j] ) - { - FT_Fixed t = FT_MulDiv( ncv - axismap->blend_points[j - 1], - 0x10000L, - axismap->blend_points[j] - - axismap->blend_points[j - 1] ); - - - return axismap->design_points[j - 1] + - FT_MulDiv( t, - axismap->design_points[j] - - axismap->design_points[j - 1], - 1L ); - } - } - - return axismap->design_points[axismap->num_points - 1]; - } - - - /*************************************************************************/ - /* */ - /* Given a vector of weights, one for each design, figure out the */ - /* normalized axis coordinates which gave rise to those weights. */ - /* */ - FT_LOCAL_DEF( void ) - mm_weights_unmap( FT_Fixed* weights, - FT_Fixed* axiscoords, - FT_UInt axis_count ) - { - FT_ASSERT( axis_count <= T1_MAX_MM_AXIS ); - - if ( axis_count == 1 ) - axiscoords[0] = weights[1]; - - else if ( axis_count == 2 ) - { - axiscoords[0] = weights[3] + weights[1]; - axiscoords[1] = weights[3] + weights[2]; - } - - else if ( axis_count == 3 ) - { - axiscoords[0] = weights[7] + weights[5] + weights[3] + weights[1]; - axiscoords[1] = weights[7] + weights[6] + weights[3] + weights[2]; - axiscoords[2] = weights[7] + weights[6] + weights[5] + weights[4]; - } - - else - { - axiscoords[0] = weights[15] + weights[13] + weights[11] + weights[9] + - weights[7] + weights[5] + weights[3] + weights[1]; - axiscoords[1] = weights[15] + weights[14] + weights[11] + weights[10] + - weights[7] + weights[6] + weights[3] + weights[2]; - axiscoords[2] = weights[15] + weights[14] + weights[13] + weights[12] + - weights[7] + weights[6] + weights[5] + weights[4]; - axiscoords[3] = weights[15] + weights[14] + weights[13] + weights[12] + - weights[11] + weights[10] + weights[9] + weights[8]; - } - } - - - /*************************************************************************/ - /* */ - /* Just a wrapper around T1_Get_Multi_Master to support the different */ - /* arguments needed by the GX var distortable fonts. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - T1_Get_MM_Var( T1_Face face, - FT_MM_Var* *master ) - { - FT_Memory memory = face->root.memory; - FT_MM_Var *mmvar; - FT_Multi_Master mmaster; - FT_Error error; - FT_UInt i; - FT_Fixed axiscoords[T1_MAX_MM_AXIS]; - PS_Blend blend = face->blend; - - - error = T1_Get_Multi_Master( face, &mmaster ); - if ( error ) - goto Exit; - if ( FT_ALLOC( mmvar, - sizeof ( FT_MM_Var ) + - mmaster.num_axis * sizeof ( FT_Var_Axis ) ) ) - goto Exit; - - mmvar->num_axis = mmaster.num_axis; - mmvar->num_designs = mmaster.num_designs; - mmvar->num_namedstyles = (FT_UInt)-1; /* Does not apply */ - mmvar->axis = (FT_Var_Axis*)&mmvar[1]; - /* Point to axes after MM_Var struct */ - mmvar->namedstyle = NULL; - - for ( i = 0 ; i < mmaster.num_axis; ++i ) - { - mmvar->axis[i].name = mmaster.axis[i].name; - mmvar->axis[i].minimum = FT_INT_TO_FIXED( mmaster.axis[i].minimum); - mmvar->axis[i].maximum = FT_INT_TO_FIXED( mmaster.axis[i].maximum); - mmvar->axis[i].def = ( mmvar->axis[i].minimum + - mmvar->axis[i].maximum ) / 2; - /* Does not apply. But this value is in range */ - mmvar->axis[i].strid = 0xFFFFFFFFLU; /* Does not apply */ - mmvar->axis[i].tag = 0xFFFFFFFFLU; /* Does not apply */ - - if ( ft_strcmp( mmvar->axis[i].name, "Weight" ) == 0 ) - mmvar->axis[i].tag = FT_MAKE_TAG( 'w', 'g', 'h', 't' ); - else if ( ft_strcmp( mmvar->axis[i].name, "Width" ) == 0 ) - mmvar->axis[i].tag = FT_MAKE_TAG( 'w', 'd', 't', 'h' ); - else if ( ft_strcmp( mmvar->axis[i].name, "OpticalSize" ) == 0 ) - mmvar->axis[i].tag = FT_MAKE_TAG( 'o', 'p', 's', 'z' ); - } - - if ( blend->num_designs == 1U << blend->num_axis ) - { - mm_weights_unmap( blend->default_weight_vector, - axiscoords, - blend->num_axis ); - - for ( i = 0; i < mmaster.num_axis; ++i ) - mmvar->axis[i].def = mm_axis_unmap( &blend->design_map[i], - axiscoords[i] ); - } - - *master = mmvar; - - Exit: - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - T1_Set_MM_Blend( T1_Face face, - FT_UInt num_coords, - FT_Fixed* coords ) - { - PS_Blend blend = face->blend; - FT_Error error; - FT_UInt n, m; - - - error = T1_Err_Invalid_Argument; - - if ( blend && blend->num_axis == num_coords ) - { - /* recompute the weight vector from the blend coordinates */ - error = T1_Err_Ok; - - for ( n = 0; n < blend->num_designs; n++ ) - { - FT_Fixed result = 0x10000L; /* 1.0 fixed */ - - - for ( m = 0; m < blend->num_axis; m++ ) - { - FT_Fixed factor; - - - /* get current blend axis position */ - factor = coords[m]; - if ( factor < 0 ) factor = 0; - if ( factor > 0x10000L ) factor = 0x10000L; - - if ( ( n & ( 1 << m ) ) == 0 ) - factor = 0x10000L - factor; - - result = FT_MulFix( result, factor ); - } - blend->weight_vector[n] = result; - } - - error = T1_Err_Ok; - } - - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - T1_Set_MM_Design( T1_Face face, - FT_UInt num_coords, - FT_Long* coords ) - { - PS_Blend blend = face->blend; - FT_Error error; - FT_UInt n, p; - - - error = T1_Err_Invalid_Argument; - if ( blend && blend->num_axis == num_coords ) - { - /* compute the blend coordinates through the blend design map */ - FT_Fixed final_blends[T1_MAX_MM_DESIGNS]; - - - for ( n = 0; n < blend->num_axis; n++ ) - { - FT_Long design = coords[n]; - FT_Fixed the_blend; - PS_DesignMap map = blend->design_map + n; - FT_Long* designs = map->design_points; - FT_Fixed* blends = map->blend_points; - FT_Int before = -1, after = -1; - - - for ( p = 0; p < (FT_UInt)map->num_points; p++ ) - { - FT_Long p_design = designs[p]; - - - /* exact match? */ - if ( design == p_design ) - { - the_blend = blends[p]; - goto Found; - } - - if ( design < p_design ) - { - after = p; - break; - } - - before = p; - } - - /* now interpolate if necessary */ - if ( before < 0 ) - the_blend = blends[0]; - - else if ( after < 0 ) - the_blend = blends[map->num_points - 1]; - - else - the_blend = FT_MulDiv( design - designs[before], - blends [after] - blends [before], - designs[after] - designs[before] ); - - Found: - final_blends[n] = the_blend; - } - - error = T1_Set_MM_Blend( face, num_coords, final_blends ); - } - - return error; - } - - - /*************************************************************************/ - /* */ - /* Just a wrapper around T1_Set_MM_Design to support the different */ - /* arguments needed by the GX var distortable fonts. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - T1_Set_Var_Design( T1_Face face, - FT_UInt num_coords, - FT_Fixed* coords ) - { - FT_Long lcoords[4]; /* maximum axis count is 4 */ - FT_UInt i; - FT_Error error; - - - error = T1_Err_Invalid_Argument; - if ( num_coords <= 4 && num_coords > 0 ) - { - for ( i = 0; i < num_coords; ++i ) - lcoords[i] = FT_FIXED_TO_INT( coords[i] ); - error = T1_Set_MM_Design( face, num_coords, lcoords ); - } - - return error; - } - - - FT_LOCAL_DEF( void ) - T1_Done_Blend( T1_Face face ) - { - FT_Memory memory = face->root.memory; - PS_Blend blend = face->blend; - - - if ( blend ) - { - FT_UInt num_designs = blend->num_designs; - FT_UInt num_axis = blend->num_axis; - FT_UInt n; - - - /* release design pos table */ - FT_FREE( blend->design_pos[0] ); - for ( n = 1; n < num_designs; n++ ) - blend->design_pos[n] = 0; - - /* release blend `private' and `font info' dictionaries */ - FT_FREE( blend->privates[1] ); - FT_FREE( blend->font_infos[1] ); - FT_FREE( blend->bboxes[1] ); - - for ( n = 0; n < num_designs; n++ ) - { - blend->privates [n] = 0; - blend->font_infos[n] = 0; - blend->bboxes [n] = 0; - } - - /* release weight vectors */ - FT_FREE( blend->weight_vector ); - blend->default_weight_vector = 0; - - /* release axis names */ - for ( n = 0; n < num_axis; n++ ) - FT_FREE( blend->axis_names[n] ); - - /* release design map */ - for ( n = 0; n < num_axis; n++ ) - { - PS_DesignMap dmap = blend->design_map + n; - - - FT_FREE( dmap->design_points ); - dmap->num_points = 0; - } - - FT_FREE( face->blend ); - } - } - - - static void - parse_blend_axis_types( T1_Face face, - T1_Loader loader ) - { - T1_TokenRec axis_tokens[T1_MAX_MM_AXIS]; - FT_Int n, num_axis; - FT_Error error = T1_Err_Ok; - PS_Blend blend; - FT_Memory memory; - - - /* take an array of objects */ - T1_ToTokenArray( &loader->parser, axis_tokens, - T1_MAX_MM_AXIS, &num_axis ); - if ( num_axis < 0 ) - { - error = T1_Err_Ignore; - goto Exit; - } - if ( num_axis == 0 || num_axis > T1_MAX_MM_AXIS ) - { - FT_ERROR(( "parse_blend_axis_types: incorrect number of axes: %d\n", - num_axis )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - /* allocate blend if necessary */ - error = t1_allocate_blend( face, 0, (FT_UInt)num_axis ); - if ( error ) - goto Exit; - - blend = face->blend; - memory = face->root.memory; - - /* each token is an immediate containing the name of the axis */ - for ( n = 0; n < num_axis; n++ ) - { - T1_Token token = axis_tokens + n; - FT_Byte* name; - FT_PtrDist len; - - - /* skip first slash, if any */ - if ( token->start[0] == '/' ) - token->start++; - - len = token->limit - token->start; - if ( len == 0 ) - { - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - if ( FT_ALLOC( blend->axis_names[n], len + 1 ) ) - goto Exit; - - name = (FT_Byte*)blend->axis_names[n]; - FT_MEM_COPY( name, token->start, len ); - name[len] = 0; - } - - Exit: - loader->parser.root.error = error; - } - - - static void - parse_blend_design_positions( T1_Face face, - T1_Loader loader ) - { - T1_TokenRec design_tokens[T1_MAX_MM_DESIGNS]; - FT_Int num_designs; - FT_Int num_axis; - T1_Parser parser = &loader->parser; - - FT_Error error = T1_Err_Ok; - PS_Blend blend; - - - /* get the array of design tokens -- compute number of designs */ - T1_ToTokenArray( parser, design_tokens, - T1_MAX_MM_DESIGNS, &num_designs ); - if ( num_designs < 0 ) - { - error = T1_Err_Ignore; - goto Exit; - } - if ( num_designs == 0 || num_designs > T1_MAX_MM_DESIGNS ) - { - FT_ERROR(( "parse_blend_design_positions:" )); - FT_ERROR(( " incorrect number of designs: %d\n", - num_designs )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - { - FT_Byte* old_cursor = parser->root.cursor; - FT_Byte* old_limit = parser->root.limit; - FT_Int n; - - - blend = face->blend; - num_axis = 0; /* make compiler happy */ - - for ( n = 0; n < num_designs; n++ ) - { - T1_TokenRec axis_tokens[T1_MAX_MM_DESIGNS]; - T1_Token token; - FT_Int axis, n_axis; - - - /* read axis/coordinates tokens */ - token = design_tokens + n; - parser->root.cursor = token->start; - parser->root.limit = token->limit; - T1_ToTokenArray( parser, axis_tokens, T1_MAX_MM_AXIS, &n_axis ); - - if ( n == 0 ) - { - num_axis = n_axis; - error = t1_allocate_blend( face, num_designs, num_axis ); - if ( error ) - goto Exit; - blend = face->blend; - } - else if ( n_axis != num_axis ) - { - FT_ERROR(( "parse_blend_design_positions: incorrect table\n" )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - /* now read each axis token into the design position */ - for ( axis = 0; axis < n_axis; axis++ ) - { - T1_Token token2 = axis_tokens + axis; - - - parser->root.cursor = token2->start; - parser->root.limit = token2->limit; - blend->design_pos[n][axis] = T1_ToFixed( parser, 0 ); - } - } - - loader->parser.root.cursor = old_cursor; - loader->parser.root.limit = old_limit; - } - - Exit: - loader->parser.root.error = error; - } - - - static void - parse_blend_design_map( T1_Face face, - T1_Loader loader ) - { - FT_Error error = T1_Err_Ok; - T1_Parser parser = &loader->parser; - PS_Blend blend; - T1_TokenRec axis_tokens[T1_MAX_MM_AXIS]; - FT_Int n, num_axis; - FT_Byte* old_cursor; - FT_Byte* old_limit; - FT_Memory memory = face->root.memory; - - - T1_ToTokenArray( parser, axis_tokens, - T1_MAX_MM_AXIS, &num_axis ); - if ( num_axis < 0 ) - { - error = T1_Err_Ignore; - goto Exit; - } - if ( num_axis == 0 || num_axis > T1_MAX_MM_AXIS ) - { - FT_ERROR(( "parse_blend_design_map: incorrect number of axes: %d\n", - num_axis )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - old_cursor = parser->root.cursor; - old_limit = parser->root.limit; - - error = t1_allocate_blend( face, 0, num_axis ); - if ( error ) - goto Exit; - blend = face->blend; - - /* now read each axis design map */ - for ( n = 0; n < num_axis; n++ ) - { - PS_DesignMap map = blend->design_map + n; - T1_Token axis_token; - T1_TokenRec point_tokens[T1_MAX_MM_MAP_POINTS]; - FT_Int p, num_points; - - - axis_token = axis_tokens + n; - - parser->root.cursor = axis_token->start; - parser->root.limit = axis_token->limit; - T1_ToTokenArray( parser, point_tokens, - T1_MAX_MM_MAP_POINTS, &num_points ); - - if ( num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS ) - { - FT_ERROR(( "parse_blend_design_map: incorrect table\n" )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - /* allocate design map data */ - if ( FT_NEW_ARRAY( map->design_points, num_points * 2 ) ) - goto Exit; - map->blend_points = map->design_points + num_points; - map->num_points = (FT_Byte)num_points; - - for ( p = 0; p < num_points; p++ ) - { - T1_Token point_token; - - - point_token = point_tokens + p; - - /* don't include delimiting brackets */ - parser->root.cursor = point_token->start + 1; - parser->root.limit = point_token->limit - 1; - - map->design_points[p] = T1_ToInt( parser ); - map->blend_points [p] = T1_ToFixed( parser, 0 ); - } - } - - parser->root.cursor = old_cursor; - parser->root.limit = old_limit; - - Exit: - parser->root.error = error; - } - - - static void - parse_weight_vector( T1_Face face, - T1_Loader loader ) - { - T1_TokenRec design_tokens[T1_MAX_MM_DESIGNS]; - FT_Int num_designs; - FT_Error error = T1_Err_Ok; - T1_Parser parser = &loader->parser; - PS_Blend blend = face->blend; - T1_Token token; - FT_Int n; - FT_Byte* old_cursor; - FT_Byte* old_limit; - - - T1_ToTokenArray( parser, design_tokens, - T1_MAX_MM_DESIGNS, &num_designs ); - if ( num_designs < 0 ) - { - error = T1_Err_Ignore; - goto Exit; - } - if ( num_designs == 0 || num_designs > T1_MAX_MM_DESIGNS ) - { - FT_ERROR(( "parse_weight_vector:" )); - FT_ERROR(( " incorrect number of designs: %d\n", - num_designs )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - if ( !blend || !blend->num_designs ) - { - error = t1_allocate_blend( face, num_designs, 0 ); - if ( error ) - goto Exit; - blend = face->blend; - } - else if ( blend->num_designs != (FT_UInt)num_designs ) - { - FT_ERROR(( "parse_weight_vector:" - " /BlendDesignPosition and /WeightVector have\n" )); - FT_ERROR(( " " - " different number of elements!\n" )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - old_cursor = parser->root.cursor; - old_limit = parser->root.limit; - - for ( n = 0; n < num_designs; n++ ) - { - token = design_tokens + n; - parser->root.cursor = token->start; - parser->root.limit = token->limit; - - blend->default_weight_vector[n] = - blend->weight_vector[n] = T1_ToFixed( parser, 0 ); - } - - parser->root.cursor = old_cursor; - parser->root.limit = old_limit; - - Exit: - parser->root.error = error; - } - - -#endif /* T1_CONFIG_OPTION_NO_MM_SUPPORT */ - - - - - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** TYPE 1 SYMBOL PARSING *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - - static FT_Error - t1_load_keyword( T1_Face face, - T1_Loader loader, - const T1_Field field ) - { - FT_Error error; - void* dummy_object; - void** objects; - FT_UInt max_objects; - PS_Blend blend = face->blend; - - - /* if the keyword has a dedicated callback, call it */ - if ( field->type == T1_FIELD_TYPE_CALLBACK ) - { - field->reader( (FT_Face)face, loader ); - error = loader->parser.root.error; - goto Exit; - } - - /* now, the keyword is either a simple field, or a table of fields; */ - /* we are now going to take care of it */ - switch ( field->location ) - { - case T1_FIELD_LOCATION_FONT_INFO: - dummy_object = &face->type1.font_info; - objects = &dummy_object; - max_objects = 0; - - if ( blend ) - { - objects = (void**)blend->font_infos; - max_objects = blend->num_designs; - } - break; - - case T1_FIELD_LOCATION_PRIVATE: - dummy_object = &face->type1.private_dict; - objects = &dummy_object; - max_objects = 0; - - if ( blend ) - { - objects = (void**)blend->privates; - max_objects = blend->num_designs; - } - break; - - case T1_FIELD_LOCATION_BBOX: - dummy_object = &face->type1.font_bbox; - objects = &dummy_object; - max_objects = 0; - - if ( blend ) - { - objects = (void**)blend->bboxes; - max_objects = blend->num_designs; - } - break; - - default: - dummy_object = &face->type1; - objects = &dummy_object; - max_objects = 0; - } - - if ( field->type == T1_FIELD_TYPE_INTEGER_ARRAY || - field->type == T1_FIELD_TYPE_FIXED_ARRAY ) - error = T1_Load_Field_Table( &loader->parser, field, - objects, max_objects, 0 ); - else - error = T1_Load_Field( &loader->parser, field, - objects, max_objects, 0 ); - - Exit: - return error; - } - - - static int - is_space( FT_Byte c ) - { - return ( c == ' ' || c == '\t' || - c == '\r' || c == '\n' || c == '\f' || - c == '\0' ); - } - - - static int - read_binary_data( T1_Parser parser, - FT_Long* size, - FT_Byte** base ) - { - FT_Byte* cur; - FT_Byte* limit = parser->root.limit; - - - /* the binary data has one of the following formats */ - /* */ - /* `size' [white*] RD white ....... ND */ - /* `size' [white*] -| white ....... |- */ - /* */ - - T1_Skip_Spaces( parser ); - - cur = parser->root.cursor; - - if ( cur < limit && ft_isdigit( *cur ) ) - { - *size = T1_ToInt( parser ); - - T1_Skip_PS_Token( parser ); /* `RD' or `-|' or something else */ - - /* there is only one whitespace char after the */ - /* `RD' or `-|' token */ - *base = parser->root.cursor + 1; - - parser->root.cursor += *size + 1; - return 1; - } - - FT_ERROR(( "read_binary_data: invalid size field\n" )); - parser->root.error = T1_Err_Invalid_File_Format; - return 0; - } - - - /* We now define the routines to handle the `/Encoding', `/Subrs', */ - /* and `/CharStrings' dictionaries. */ - - static void - parse_font_matrix( T1_Face face, - T1_Loader loader ) - { - T1_Parser parser = &loader->parser; - FT_Matrix* matrix = &face->type1.font_matrix; - FT_Vector* offset = &face->type1.font_offset; - FT_Face root = (FT_Face)&face->root; - FT_Fixed temp[6]; - FT_Fixed temp_scale; - - - (void)T1_ToFixedArray( parser, 6, temp, 3 ); - - temp_scale = FT_ABS( temp[3] ); - - /* Set Units per EM based on FontMatrix values. We set the value to */ - /* 1000 / temp_scale, because temp_scale was already multiplied by */ - /* 1000 (in t1_tofixed, from psobjs.c). */ - - root->units_per_EM = (FT_UShort)( FT_DivFix( 1000 * 0x10000L, - temp_scale ) >> 16 ); - - /* we need to scale the values by 1.0/temp_scale */ - if ( temp_scale != 0x10000L ) - { - temp[0] = FT_DivFix( temp[0], temp_scale ); - temp[1] = FT_DivFix( temp[1], temp_scale ); - temp[2] = FT_DivFix( temp[2], temp_scale ); - temp[4] = FT_DivFix( temp[4], temp_scale ); - temp[5] = FT_DivFix( temp[5], temp_scale ); - temp[3] = 0x10000L; - } - - matrix->xx = temp[0]; - matrix->yx = temp[1]; - matrix->xy = temp[2]; - matrix->yy = temp[3]; - - /* note that the offsets must be expressed in integer font units */ - offset->x = temp[4] >> 16; - offset->y = temp[5] >> 16; - } - - - static void - parse_encoding( T1_Face face, - T1_Loader loader ) - { - T1_Parser parser = &loader->parser; - FT_Byte* cur; - FT_Byte* limit = parser->root.limit; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - - - T1_Skip_Spaces( parser ); - cur = parser->root.cursor; - if ( cur >= limit ) - { - FT_ERROR(( "parse_encoding: out of bounds!\n" )); - parser->root.error = T1_Err_Invalid_File_Format; - return; - } - - /* if we have a number or `[', the encoding is an array, */ - /* and we must load it now */ - if ( ft_isdigit( *cur ) || *cur == '[' ) - { - T1_Encoding encode = &face->type1.encoding; - FT_Int count, n; - PS_Table char_table = &loader->encoding_table; - FT_Memory memory = parser->root.memory; - FT_Error error; - FT_Bool only_immediates = 0; - - - /* read the number of entries in the encoding; should be 256 */ - if ( *cur == '[' ) - { - count = 256; - only_immediates = 1; - parser->root.cursor++; - } - else - count = (FT_Int)T1_ToInt( parser ); - - T1_Skip_Spaces( parser ); - if ( parser->root.cursor >= limit ) - return; - - /* we use a T1_Table to store our charnames */ - loader->num_chars = encode->num_chars = count; - if ( FT_NEW_ARRAY( encode->char_index, count ) || - FT_NEW_ARRAY( encode->char_name, count ) || - FT_SET_ERROR( psaux->ps_table_funcs->init( - char_table, count, memory ) ) ) - { - parser->root.error = error; - return; - } - - /* We need to `zero' out encoding_table.elements */ - for ( n = 0; n < count; n++ ) - { - char* notdef = (char *)".notdef"; - - - T1_Add_Table( char_table, n, notdef, 8 ); - } - - /* Now we need to read records of the form */ - /* */ - /* ... charcode /charname ... */ - /* */ - /* for each entry in our table. */ - /* */ - /* We simply look for a number followed by an immediate */ - /* name. Note that this ignores correctly the sequence */ - /* that is often seen in type1 fonts: */ - /* */ - /* 0 1 255 { 1 index exch /.notdef put } for dup */ - /* */ - /* used to clean the encoding array before anything else. */ - /* */ - /* Alternatively, if the array is directly given as */ - /* */ - /* /Encoding [ ... ] */ - /* */ - /* we only read immediates. */ - - n = 0; - T1_Skip_Spaces( parser ); - - while ( parser->root.cursor < limit ) - { - cur = parser->root.cursor; - - /* we stop when we encounter a `def' or `]' */ - if ( *cur == 'd' && cur + 3 < limit ) - { - if ( cur[1] == 'e' && - cur[2] == 'f' && - is_space( cur[3] ) ) - { - FT_TRACE6(( "encoding end\n" )); - cur += 3; - break; - } - } - if ( *cur == ']' ) - { - FT_TRACE6(( "encoding end\n" )); - cur++; - break; - } - - /* check whether we've found an entry */ - if ( ft_isdigit( *cur ) || only_immediates ) - { - FT_Int charcode; - - - if ( only_immediates ) - charcode = n; - else - { - charcode = (FT_Int)T1_ToInt( parser ); - T1_Skip_Spaces( parser ); - } - - cur = parser->root.cursor; - - if ( *cur == '/' && cur + 2 < limit && n < count ) - { - FT_PtrDist len; - - - cur++; - - parser->root.cursor = cur; - T1_Skip_PS_Token( parser ); - - len = parser->root.cursor - cur; - - parser->root.error = T1_Add_Table( char_table, charcode, - cur, len + 1 ); - if ( parser->root.error ) - return; - char_table->elements[charcode][len] = '\0'; - - n++; - } - } - else - T1_Skip_PS_Token( parser ); - - T1_Skip_Spaces( parser ); - } - - face->type1.encoding_type = T1_ENCODING_TYPE_ARRAY; - parser->root.cursor = cur; - } - - /* Otherwise, we should have either `StandardEncoding', */ - /* `ExpertEncoding', or `ISOLatin1Encoding' */ - else - { - if ( cur + 17 < limit && - ft_strncmp( (const char*)cur, "StandardEncoding", 16 ) == 0 ) - face->type1.encoding_type = T1_ENCODING_TYPE_STANDARD; - - else if ( cur + 15 < limit && - ft_strncmp( (const char*)cur, "ExpertEncoding", 14 ) == 0 ) - face->type1.encoding_type = T1_ENCODING_TYPE_EXPERT; - - else if ( cur + 18 < limit && - ft_strncmp( (const char*)cur, "ISOLatin1Encoding", 17 ) == 0 ) - face->type1.encoding_type = T1_ENCODING_TYPE_ISOLATIN1; - - else - parser->root.error = T1_Err_Ignore; - } - } - - - static void - parse_subrs( T1_Face face, - T1_Loader loader ) - { - T1_Parser parser = &loader->parser; - PS_Table table = &loader->subrs; - FT_Memory memory = parser->root.memory; - FT_Error error; - FT_Int n, num_subrs; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - - - T1_Skip_Spaces( parser ); - - /* test for empty array */ - if ( parser->root.cursor < parser->root.limit && - *parser->root.cursor == '[' ) - { - T1_Skip_PS_Token( parser ); - T1_Skip_Spaces ( parser ); - if ( parser->root.cursor >= parser->root.limit || - *parser->root.cursor != ']' ) - parser->root.error = T1_Err_Invalid_File_Format; - return; - } - - num_subrs = (FT_Int)T1_ToInt( parser ); - - /* position the parser right before the `dup' of the first subr */ - T1_Skip_PS_Token( parser ); /* `array' */ - T1_Skip_Spaces ( parser ); - - /* initialize subrs array -- with synthetic fonts it is possible */ - /* we get here twice */ - if ( !loader->num_subrs ) - { - error = psaux->ps_table_funcs->init( table, num_subrs, memory ); - if ( error ) - goto Fail; - } - - /* the format is simple: */ - /* */ - /* `index' + binary data */ - /* */ - for ( n = 0; n < num_subrs; n++ ) - { - FT_Long idx, size; - FT_Byte* base; - - - /* If the next token isn't `dup', we are also done. This */ - /* happens when there are `holes' in the Subrs array. */ - if ( ft_strncmp( (char*)parser->root.cursor, "dup", 3 ) != 0 ) - break; - - T1_Skip_PS_Token( parser ); /* `dup' */ - - idx = T1_ToInt( parser ); - - if ( !read_binary_data( parser, &size, &base ) ) - return; - - /* The binary string is followed by one token, e.g. `NP' */ - /* (bound to `noaccess put') or by two separate tokens: */ - /* `noaccess' & `put'. We position the parser right */ - /* before the next `dup', if any. */ - T1_Skip_PS_Token( parser ); /* `NP' or `|' or `noaccess' */ - T1_Skip_Spaces ( parser ); - - if ( ft_strncmp( (char*)parser->root.cursor, "put", 3 ) == 0 ) - { - T1_Skip_PS_Token( parser ); /* skip `put' */ - T1_Skip_Spaces ( parser ); - } - - /* with synthetic fonts it is possible we get here twice */ - if ( loader->num_subrs ) - continue; - - /* some fonts use a value of -1 for lenIV to indicate that */ - /* the charstrings are unencoded */ - /* */ - /* thanks to Tom Kacvinsky for pointing this out */ - /* */ - if ( face->type1.private_dict.lenIV >= 0 ) - { - FT_Byte* temp; - - - /* t1_decrypt() shouldn't write to base -- make temporary copy */ - if ( FT_ALLOC( temp, size ) ) - goto Fail; - FT_MEM_COPY( temp, base, size ); - psaux->t1_decrypt( temp, size, 4330 ); - size -= face->type1.private_dict.lenIV; - error = T1_Add_Table( table, (FT_Int)idx, - temp + face->type1.private_dict.lenIV, size ); - FT_FREE( temp ); - } - else - error = T1_Add_Table( table, (FT_Int)idx, base, size ); - if ( error ) - goto Fail; - } - - if ( !loader->num_subrs ) - loader->num_subrs = num_subrs; - - return; - - Fail: - parser->root.error = error; - } - - -#define TABLE_EXTEND 5 - - - static void - parse_charstrings( T1_Face face, - T1_Loader loader ) - { - T1_Parser parser = &loader->parser; - PS_Table code_table = &loader->charstrings; - PS_Table name_table = &loader->glyph_names; - PS_Table swap_table = &loader->swap_table; - FT_Memory memory = parser->root.memory; - FT_Error error; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - - FT_Byte* cur; - FT_Byte* limit = parser->root.limit; - FT_Int n, num_glyphs; - FT_UInt notdef_index = 0; - FT_Byte notdef_found = 0; - - - num_glyphs = (FT_Int)T1_ToInt( parser ); - /* some fonts like Optima-Oblique not only define the /CharStrings */ - /* array but access it also */ - if ( num_glyphs == 0 || parser->root.error ) - return; - - /* initialize tables, leaving space for addition of .notdef, */ - /* if necessary, and a few other glyphs to handle buggy */ - /* fonts which have more glyphs than specified. */ - - /* for some non-standard fonts like `Optima' which provides */ - /* different outlines depending on the resolution it is */ - /* possible to get here twice */ - if ( !loader->num_glyphs ) - { - error = psaux->ps_table_funcs->init( - code_table, num_glyphs + 1 + TABLE_EXTEND, memory ); - if ( error ) - goto Fail; - - error = psaux->ps_table_funcs->init( - name_table, num_glyphs + 1 + TABLE_EXTEND, memory ); - if ( error ) - goto Fail; - - /* Initialize table for swapping index notdef_index and */ - /* index 0 names and codes (if necessary). */ - - error = psaux->ps_table_funcs->init( swap_table, 4, memory ); - if ( error ) - goto Fail; - } - - n = 0; - - for (;;) - { - FT_Long size; - FT_Byte* base; - - - /* the format is simple: */ - /* `/glyphname' + binary data */ - - T1_Skip_Spaces( parser ); - - cur = parser->root.cursor; - if ( cur >= limit ) - break; - - /* we stop when we find a `def' or `end' keyword */ - if ( cur + 3 < limit && is_space( cur[3] ) ) - { - if ( cur[0] == 'd' && - cur[1] == 'e' && - cur[2] == 'f' ) - break; - - if ( cur[0] == 'e' && - cur[1] == 'n' && - cur[2] == 'd' ) - break; - } - - T1_Skip_PS_Token( parser ); - - if ( *cur == '/' ) - { - FT_PtrDist len; - - - if ( cur + 1 >= limit ) - { - error = T1_Err_Invalid_File_Format; - goto Fail; - } - - cur++; /* skip `/' */ - len = parser->root.cursor - cur; - - if ( !read_binary_data( parser, &size, &base ) ) - return; - - /* for some non-standard fonts like `Optima' which provides */ - /* different outlines depending on the resolution it is */ - /* possible to get here twice */ - if ( loader->num_glyphs ) - continue; - - error = T1_Add_Table( name_table, n, cur, len + 1 ); - if ( error ) - goto Fail; - - /* add a trailing zero to the name table */ - name_table->elements[n][len] = '\0'; - - /* record index of /.notdef */ - if ( *cur == '.' && - ft_strcmp( ".notdef", - (const char*)(name_table->elements[n]) ) == 0 ) - { - notdef_index = n; - notdef_found = 1; - } - - if ( face->type1.private_dict.lenIV >= 0 && - n < num_glyphs + TABLE_EXTEND ) - { - FT_Byte* temp; - - - /* t1_decrypt() shouldn't write to base -- make temporary copy */ - if ( FT_ALLOC( temp, size ) ) - goto Fail; - FT_MEM_COPY( temp, base, size ); - psaux->t1_decrypt( temp, size, 4330 ); - size -= face->type1.private_dict.lenIV; - error = T1_Add_Table( code_table, n, - temp + face->type1.private_dict.lenIV, size ); - FT_FREE( temp ); - } - else - error = T1_Add_Table( code_table, n, base, size ); - if ( error ) - goto Fail; - - n++; - } - } - - if ( loader->num_glyphs ) - return; - else - loader->num_glyphs = n; - - /* if /.notdef is found but does not occupy index 0, do our magic. */ - if ( ft_strcmp( (const char*)".notdef", - (const char*)name_table->elements[0] ) && - notdef_found ) - { - /* Swap glyph in index 0 with /.notdef glyph. First, add index 0 */ - /* name and code entries to swap_table. Then place notdef_index */ - /* name and code entries into swap_table. Then swap name and code */ - /* entries at indices notdef_index and 0 using values stored in */ - /* swap_table. */ - - /* Index 0 name */ - error = T1_Add_Table( swap_table, 0, - name_table->elements[0], - name_table->lengths [0] ); - if ( error ) - goto Fail; - - /* Index 0 code */ - error = T1_Add_Table( swap_table, 1, - code_table->elements[0], - code_table->lengths [0] ); - if ( error ) - goto Fail; - - /* Index notdef_index name */ - error = T1_Add_Table( swap_table, 2, - name_table->elements[notdef_index], - name_table->lengths [notdef_index] ); - if ( error ) - goto Fail; - - /* Index notdef_index code */ - error = T1_Add_Table( swap_table, 3, - code_table->elements[notdef_index], - code_table->lengths [notdef_index] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( name_table, notdef_index, - swap_table->elements[0], - swap_table->lengths [0] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( code_table, notdef_index, - swap_table->elements[1], - swap_table->lengths [1] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( name_table, 0, - swap_table->elements[2], - swap_table->lengths [2] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( code_table, 0, - swap_table->elements[3], - swap_table->lengths [3] ); - if ( error ) - goto Fail; - - } - else if ( !notdef_found ) - { - /* notdef_index is already 0, or /.notdef is undefined in */ - /* charstrings dictionary. Worry about /.notdef undefined. */ - /* We take index 0 and add it to the end of the table(s) */ - /* and add our own /.notdef glyph to index 0. */ - - /* 0 333 hsbw endchar */ - FT_Byte notdef_glyph[] = {0x8B, 0xF7, 0xE1, 0x0D, 0x0E}; - char* notdef_name = (char *)".notdef"; - - - error = T1_Add_Table( swap_table, 0, - name_table->elements[0], - name_table->lengths [0] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( swap_table, 1, - code_table->elements[0], - code_table->lengths [0] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( name_table, 0, notdef_name, 8 ); - if ( error ) - goto Fail; - - error = T1_Add_Table( code_table, 0, notdef_glyph, 5 ); - - if ( error ) - goto Fail; - - error = T1_Add_Table( name_table, n, - swap_table->elements[0], - swap_table->lengths [0] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( code_table, n, - swap_table->elements[1], - swap_table->lengths [1] ); - if ( error ) - goto Fail; - - /* we added a glyph. */ - loader->num_glyphs = n + 1; - } - - return; - - Fail: - parser->root.error = error; - } - - - /*************************************************************************/ - /* */ - /* Define the token field static variables. This is a set of */ - /* T1_FieldRec variables. */ - /* */ - /*************************************************************************/ - - - static - const T1_FieldRec t1_keywords[] = - { - -#include "t1tokens.h" - - /* now add the special functions... */ - T1_FIELD_CALLBACK( "FontMatrix", parse_font_matrix ) - T1_FIELD_CALLBACK( "Encoding", parse_encoding ) - T1_FIELD_CALLBACK( "Subrs", parse_subrs ) - T1_FIELD_CALLBACK( "CharStrings", parse_charstrings ) - -#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - T1_FIELD_CALLBACK( "BlendDesignPositions", parse_blend_design_positions ) - T1_FIELD_CALLBACK( "BlendDesignMap", parse_blend_design_map ) - T1_FIELD_CALLBACK( "BlendAxisTypes", parse_blend_axis_types ) - T1_FIELD_CALLBACK( "WeightVector", parse_weight_vector ) -#endif - - { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0 } - }; - - -#define T1_FIELD_COUNT \ - ( sizeof ( t1_keywords ) / sizeof ( t1_keywords[0] ) ) - - - static FT_Error - parse_dict( T1_Face face, - T1_Loader loader, - FT_Byte* base, - FT_Long size, - FT_Byte* keyword_flags ) - { - T1_Parser parser = &loader->parser; - FT_Byte *limit, *start_binary = NULL; - FT_Bool have_integer = 0; - - - parser->root.cursor = base; - parser->root.limit = base + size; - parser->root.error = T1_Err_Ok; - - limit = parser->root.limit; - - T1_Skip_Spaces( parser ); - - while ( parser->root.cursor < limit ) - { - FT_Byte* cur; - - - cur = parser->root.cursor; - - /* look for `FontDirectory' which causes problems for some fonts */ - if ( *cur == 'F' && cur + 25 < limit && - ft_strncmp( (char*)cur, "FontDirectory", 13 ) == 0 ) - { - FT_Byte* cur2; - - - /* skip the `FontDirectory' keyword */ - T1_Skip_PS_Token( parser ); - T1_Skip_Spaces ( parser ); - cur = cur2 = parser->root.cursor; - - /* look up the `known' keyword */ - while ( cur < limit ) - { - if ( *cur == 'k' && cur + 5 < limit && - ft_strncmp( (char*)cur, "known", 5 ) == 0 ) - break; - - T1_Skip_PS_Token( parser ); - T1_Skip_Spaces ( parser ); - cur = parser->root.cursor; - } - - if ( cur < limit ) - { - T1_TokenRec token; - - - /* skip the `known' keyword and the token following it */ - T1_Skip_PS_Token( parser ); - T1_ToToken( parser, &token ); - - /* if the last token was an array, skip it! */ - if ( token.type == T1_TOKEN_TYPE_ARRAY ) - cur2 = parser->root.cursor; - } - parser->root.cursor = cur2; - have_integer = 0; - } - - /* look for `eexec' */ - else if ( *cur == 'e' && cur + 5 < limit && - ft_strncmp( (char*)cur, "eexec", 5 ) == 0 ) - break; - - /* look for `closefile' which ends the eexec section */ - else if ( *cur == 'c' && cur + 9 < limit && - ft_strncmp( (char*)cur, "closefile", 9 ) == 0 ) - break; - - /* check whether we have an integer */ - else if ( ft_isdigit( *cur ) ) - { - start_binary = cur; - T1_Skip_PS_Token( parser ); - have_integer = 1; - } - - /* in valid Type 1 fonts we don't see `RD' or `-|' directly */ - /* since those tokens are handled by parse_subrs and */ - /* parse_charstrings */ - else if ( *cur == 'R' && cur + 6 < limit && *(cur + 1) == 'D' && - have_integer ) - { - FT_Long s; - FT_Byte* b; - - - parser->root.cursor = start_binary; - if ( !read_binary_data( parser, &s, &b ) ) - return T1_Err_Invalid_File_Format; - have_integer = 0; - } - - else if ( *cur == '-' && cur + 6 < limit && *(cur + 1) == '|' && - have_integer ) - { - FT_Long s; - FT_Byte* b; - - - parser->root.cursor = start_binary; - if ( !read_binary_data( parser, &s, &b ) ) - return T1_Err_Invalid_File_Format; - have_integer = 0; - } - - /* look for immediates */ - else if ( *cur == '/' && cur + 2 < limit ) - { - FT_PtrDist len; - - - cur++; - - parser->root.cursor = cur; - T1_Skip_PS_Token( parser ); - - len = parser->root.cursor - cur; - - if ( len > 0 && len < 22 && parser->root.cursor < limit ) - { - /* now compare the immediate name to the keyword table */ - T1_Field keyword = (T1_Field)t1_keywords; - FT_Byte* keyword_flag = keyword_flags; - - - for (;;) - { - FT_Byte* name; - - - name = (FT_Byte*)keyword->ident; - if ( !name ) - break; - - if ( cur[0] == name[0] && - len == ft_strlen( (const char *)name ) && - ft_memcmp( cur, name, len ) == 0 ) - { - /* We found it -- run the parsing callback! */ - /* We only record the first instance of any */ - /* field to deal adequately with synthetic */ - /* fonts; /Subrs and /CharStrings are */ - /* handled specially. */ - if ( keyword_flag[0] == 0 || - ft_strcmp( (const char*)name, "Subrs" ) == 0 || - ft_strcmp( (const char*)name, "CharStrings") == 0 ) - { - parser->root.error = t1_load_keyword( face, - loader, - keyword ); - if ( parser->root.error == T1_Err_Ok ) - keyword_flag[0] = 1; - else - { - if ( FT_ERROR_BASE( parser->root.error ) == FT_Err_Ignore ) - parser->root.error = T1_Err_Ok; - else - return parser->root.error; - } - } - break; - } - - keyword++; - keyword_flag++; - } - } - - have_integer = 0; - } - else - { - T1_Skip_PS_Token( parser ); - if ( parser->root.error ) - goto Exit; - have_integer = 0; - } - - T1_Skip_Spaces( parser ); - } - - Exit: - return parser->root.error; - } - - - static void - t1_init_loader( T1_Loader loader, - T1_Face face ) - { - FT_UNUSED( face ); - - FT_MEM_ZERO( loader, sizeof ( *loader ) ); - loader->num_glyphs = 0; - loader->num_chars = 0; - - /* initialize the tables -- simply set their `init' field to 0 */ - loader->encoding_table.init = 0; - loader->charstrings.init = 0; - loader->glyph_names.init = 0; - loader->subrs.init = 0; - loader->swap_table.init = 0; - loader->fontdata = 0; - } - - - static void - t1_done_loader( T1_Loader loader ) - { - T1_Parser parser = &loader->parser; - - - /* finalize tables */ - T1_Release_Table( &loader->encoding_table ); - T1_Release_Table( &loader->charstrings ); - T1_Release_Table( &loader->glyph_names ); - T1_Release_Table( &loader->swap_table ); - T1_Release_Table( &loader->subrs ); - - /* finalize parser */ - T1_Finalize_Parser( parser ); - } - - - FT_LOCAL_DEF( FT_Error ) - T1_Open_Face( T1_Face face ) - { - T1_LoaderRec loader; - T1_Parser parser; - T1_Font type1 = &face->type1; - PS_Private priv = &type1->private_dict; - FT_Error error; - FT_Byte keyword_flags[T1_FIELD_COUNT]; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - - - t1_init_loader( &loader, face ); - - /* default values */ - priv->blue_shift = 7; - priv->blue_fuzz = 1; - priv->lenIV = 4; - priv->expansion_factor = (FT_Fixed)( 0.06 * 0x10000L ); - priv->blue_scale = (FT_Fixed)( 0.039625 * 0x10000L * 1000 ); - - parser = &loader.parser; - error = T1_New_Parser( parser, - face->root.stream, - face->root.memory, - psaux ); - if ( error ) - goto Exit; - - { - FT_UInt n; - - - for ( n = 0; n < T1_FIELD_COUNT; n++ ) - keyword_flags[n] = 0; - } - - error = parse_dict( face, &loader, parser->base_dict, parser->base_len, - keyword_flags ); - if ( error ) - goto Exit; - - error = T1_Get_Private_Dict( parser, psaux ); - if ( error ) - goto Exit; - - error = parse_dict( face, &loader, parser->private_dict, - parser->private_len, - keyword_flags ); - if ( error ) - goto Exit; - -#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - - /* the following can happen for MM instances; we then treat the */ - /* font as a normal PS font */ - if ( face->blend && - ( !face->blend->num_designs || !face->blend->num_axis ) ) - T1_Done_Blend( face ); - - /* another safety check */ - if ( face->blend ) - { - FT_UInt i; - - - for ( i = 0; i < face->blend->num_axis; i++ ) - if ( !face->blend->design_map[i].num_points ) - { - T1_Done_Blend( face ); - break; - } - } - -#endif /* T1_CONFIG_OPTION_NO_MM_SUPPORT */ - - /* now, propagate the subrs, charstrings, and glyphnames tables */ - /* to the Type1 data */ - type1->num_glyphs = loader.num_glyphs; - - if ( loader.subrs.init ) - { - loader.subrs.init = 0; - type1->num_subrs = loader.num_subrs; - type1->subrs_block = loader.subrs.block; - type1->subrs = loader.subrs.elements; - type1->subrs_len = loader.subrs.lengths; - } - -#ifdef FT_CONFIG_OPTION_INCREMENTAL - if ( !face->root.internal->incremental_interface ) -#endif - if ( !loader.charstrings.init ) - { - FT_ERROR(( "T1_Open_Face: no `/CharStrings' array in face!\n" )); - error = T1_Err_Invalid_File_Format; - } - - loader.charstrings.init = 0; - type1->charstrings_block = loader.charstrings.block; - type1->charstrings = loader.charstrings.elements; - type1->charstrings_len = loader.charstrings.lengths; - - /* we copy the glyph names `block' and `elements' fields; */ - /* the `lengths' field must be released later */ - type1->glyph_names_block = loader.glyph_names.block; - type1->glyph_names = (FT_String**)loader.glyph_names.elements; - loader.glyph_names.block = 0; - loader.glyph_names.elements = 0; - - /* we must now build type1.encoding when we have a custom array */ - if ( type1->encoding_type == T1_ENCODING_TYPE_ARRAY ) - { - FT_Int charcode, idx, min_char, max_char; - FT_Byte* char_name; - FT_Byte* glyph_name; - - - /* OK, we do the following: for each element in the encoding */ - /* table, look up the index of the glyph having the same name */ - /* the index is then stored in type1.encoding.char_index, and */ - /* a the name to type1.encoding.char_name */ - - min_char = +32000; - max_char = -32000; - - charcode = 0; - for ( ; charcode < loader.encoding_table.max_elems; charcode++ ) - { - type1->encoding.char_index[charcode] = 0; - type1->encoding.char_name [charcode] = (char *)".notdef"; - - char_name = loader.encoding_table.elements[charcode]; - if ( char_name ) - for ( idx = 0; idx < type1->num_glyphs; idx++ ) - { - glyph_name = (FT_Byte*)type1->glyph_names[idx]; - if ( ft_strcmp( (const char*)char_name, - (const char*)glyph_name ) == 0 ) - { - type1->encoding.char_index[charcode] = (FT_UShort)idx; - type1->encoding.char_name [charcode] = (char*)glyph_name; - - /* Change min/max encoded char only if glyph name is */ - /* not /.notdef */ - if ( ft_strcmp( (const char*)".notdef", - (const char*)glyph_name ) != 0 ) - { - if ( charcode < min_char ) - min_char = charcode; - if ( charcode > max_char ) - max_char = charcode; - } - break; - } - } - } - - /* - * Yes, this happens: Certain PDF-embedded fonts have only a - * `.notdef' glyph defined! - */ - - if ( min_char > max_char ) - { - min_char = 0; - max_char = loader.encoding_table.max_elems; - } - - type1->encoding.code_first = min_char; - type1->encoding.code_last = max_char; - type1->encoding.num_chars = loader.num_chars; - } - - Exit: - t1_done_loader( &loader ); - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1load.h b/nx-X11/extras/freetype2/src/type1/t1load.h deleted file mode 100644 index 9823f53e0..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1load.h +++ /dev/null @@ -1,93 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1load.h */ -/* */ -/* Type 1 font loader (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1LOAD_H__ -#define __T1LOAD_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H -#include FT_MULTIPLE_MASTERS_H - -#include "t1parse.h" - - -FT_BEGIN_HEADER - - - typedef struct T1_Loader_ - { - T1_ParserRec parser; /* parser used to read the stream */ - - FT_Int num_chars; /* number of characters in encoding */ - PS_TableRec encoding_table; /* PS_Table used to store the */ - /* encoding character names */ - - FT_Int num_glyphs; - PS_TableRec glyph_names; - PS_TableRec charstrings; - PS_TableRec swap_table; /* For moving .notdef glyph to index 0. */ - - FT_Int num_subrs; - PS_TableRec subrs; - FT_Bool fontdata; - - } T1_LoaderRec, *T1_Loader; - - - FT_LOCAL( FT_Error ) - T1_Open_Face( T1_Face face ); - -#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - - FT_LOCAL( FT_Error ) - T1_Get_Multi_Master( T1_Face face, - FT_Multi_Master* master ); - - FT_LOCAL_DEF( FT_Error ) - T1_Get_MM_Var( T1_Face face, - FT_MM_Var* *master ); - - FT_LOCAL( FT_Error ) - T1_Set_MM_Blend( T1_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - FT_LOCAL( FT_Error ) - T1_Set_MM_Design( T1_Face face, - FT_UInt num_coords, - FT_Long* coords ); - - FT_LOCAL_DEF( FT_Error ) - T1_Set_Var_Design( T1_Face face, - FT_UInt num_coords, - FT_Fixed* coords ); - - FT_LOCAL( void ) - T1_Done_Blend( T1_Face face ); - -#endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */ - - -FT_END_HEADER - -#endif /* __T1LOAD_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1objs.c b/nx-X11/extras/freetype2/src/type1/t1objs.c deleted file mode 100644 index a832ee000..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1objs.c +++ /dev/null @@ -1,552 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1objs.c */ -/* */ -/* Type 1 objects manager (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_TRUETYPE_IDS_H - -#include "t1gload.h" -#include "t1load.h" - -#include "t1errors.h" - -#ifndef T1_CONFIG_OPTION_NO_AFM -#include "t1afm.h" -#endif - -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t1objs - - - /*************************************************************************/ - /* */ - /* SIZE FUNCTIONS */ - /* */ - /* note that we store the global hints in the size's "internal" root */ - /* field */ - /* */ - /*************************************************************************/ - - - static PSH_Globals_Funcs - T1_Size_Get_Globals_Funcs( T1_Size size ) - { - T1_Face face = (T1_Face)size->root.face; - PSHinter_Service pshinter = (PSHinter_Service)face->pshinter; - FT_Module module; - - - module = FT_Get_Module( size->root.face->driver->root.library, - "pshinter" ); - return ( module && pshinter && pshinter->get_globals_funcs ) - ? pshinter->get_globals_funcs( module ) - : 0 ; - } - - - FT_LOCAL_DEF( void ) - T1_Size_Done( T1_Size size ) - { - if ( size->root.internal ) - { - PSH_Globals_Funcs funcs; - - - funcs = T1_Size_Get_Globals_Funcs( size ); - if ( funcs ) - funcs->destroy( (PSH_Globals)size->root.internal ); - - size->root.internal = 0; - } - } - - - FT_LOCAL_DEF( FT_Error ) - T1_Size_Init( T1_Size size ) - { - FT_Error error = 0; - PSH_Globals_Funcs funcs = T1_Size_Get_Globals_Funcs( size ); - - - if ( funcs ) - { - PSH_Globals globals; - T1_Face face = (T1_Face)size->root.face; - - - error = funcs->create( size->root.face->memory, - &face->type1.private_dict, &globals ); - if ( !error ) - size->root.internal = (FT_Size_Internal)(void*)globals; - } - - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - T1_Size_Reset( T1_Size size ) - { - PSH_Globals_Funcs funcs = T1_Size_Get_Globals_Funcs( size ); - FT_Error error = 0; - - - if ( funcs ) - error = funcs->set_scale( (PSH_Globals)size->root.internal, - size->root.metrics.x_scale, - size->root.metrics.y_scale, - 0, 0 ); - return error; - } - - - /*************************************************************************/ - /* */ - /* SLOT FUNCTIONS */ - /* */ - /*************************************************************************/ - - FT_LOCAL_DEF( void ) - T1_GlyphSlot_Done( T1_GlyphSlot slot ) - { - slot->root.internal->glyph_hints = 0; - } - - - FT_LOCAL_DEF( FT_Error ) - T1_GlyphSlot_Init( T1_GlyphSlot slot ) - { - T1_Face face; - PSHinter_Service pshinter; - - - face = (T1_Face)slot->root.face; - pshinter = (PSHinter_Service)face->pshinter; - - if ( pshinter ) - { - FT_Module module; - - - module = FT_Get_Module( slot->root.face->driver->root.library, "pshinter" ); - if (module) - { - T1_Hints_Funcs funcs; - - funcs = pshinter->get_t1_funcs( module ); - slot->root.internal->glyph_hints = (void*)funcs; - } - } - return 0; - } - - - /*************************************************************************/ - /* */ - /* FACE FUNCTIONS */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T1_Face_Done */ - /* */ - /* <Description> */ - /* The face object destructor. */ - /* */ - /* <Input> */ - /* face :: A typeless pointer to the face object to destroy. */ - /* */ - FT_LOCAL_DEF( void ) - T1_Face_Done( T1_Face face ) - { - FT_Memory memory; - T1_Font type1 = &face->type1; - - - if ( face ) - { - memory = face->root.memory; - -#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT - /* release multiple masters information */ - T1_Done_Blend( face ); - face->blend = 0; -#endif - - /* release font info strings */ - { - PS_FontInfo info = &type1->font_info; - - - FT_FREE( info->version ); - FT_FREE( info->notice ); - FT_FREE( info->full_name ); - FT_FREE( info->family_name ); - FT_FREE( info->weight ); - } - - /* release top dictionary */ - FT_FREE( type1->charstrings_len ); - FT_FREE( type1->charstrings ); - FT_FREE( type1->glyph_names ); - - FT_FREE( type1->subrs ); - FT_FREE( type1->subrs_len ); - - FT_FREE( type1->subrs_block ); - FT_FREE( type1->charstrings_block ); - FT_FREE( type1->glyph_names_block ); - - FT_FREE( type1->encoding.char_index ); - FT_FREE( type1->encoding.char_name ); - FT_FREE( type1->font_name ); - -#ifndef T1_CONFIG_OPTION_NO_AFM - /* release afm data if present */ - if ( face->afm_data ) - T1_Done_AFM( memory, (T1_AFM*)face->afm_data ); -#endif - - /* release unicode map, if any */ - FT_FREE( face->unicode_map.maps ); - face->unicode_map.num_maps = 0; - - face->root.family_name = 0; - face->root.style_name = 0; - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T1_Face_Init */ - /* */ - /* <Description> */ - /* The face object constructor. */ - /* */ - /* <Input> */ - /* stream :: input stream where to load font data. */ - /* */ - /* face_index :: The index of the font face in the resource. */ - /* */ - /* num_params :: Number of additional generic parameters. Ignored. */ - /* */ - /* params :: Additional generic parameters. Ignored. */ - /* */ - /* <InOut> */ - /* face :: The face record to build. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - T1_Face_Init( FT_Stream stream, - T1_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error; - FT_Service_PsCMaps psnames; - PSAux_Service psaux; - T1_Font type1 = &face->type1; - PS_FontInfo info = &type1->font_info; - - FT_UNUSED( num_params ); - FT_UNUSED( params ); - FT_UNUSED( face_index ); - FT_UNUSED( stream ); - - - face->root.num_faces = 1; - - FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); - face->psnames = psnames; - - face->psaux = FT_Get_Module_Interface( FT_FACE_LIBRARY( face ), - "psaux" ); - psaux = (PSAux_Service)face->psaux; - - face->pshinter = FT_Get_Module_Interface( FT_FACE_LIBRARY( face ), - "pshinter" ); - - /* open the tokenizer; this will also check the font format */ - error = T1_Open_Face( face ); - if ( error ) - goto Exit; - - /* if we just wanted to check the format, leave successfully now */ - if ( face_index < 0 ) - goto Exit; - - /* check the face index */ - if ( face_index != 0 ) - { - FT_ERROR(( "T1_Face_Init: invalid face index\n" )); - error = T1_Err_Invalid_Argument; - goto Exit; - } - - /* now load the font program into the face object */ - - /* initialize the face object fields */ - - /* set up root face fields */ - { - FT_Face root = (FT_Face)&face->root; - - - root->num_glyphs = type1->num_glyphs; - root->face_index = face_index; - - root->face_flags = FT_FACE_FLAG_SCALABLE; - root->face_flags |= FT_FACE_FLAG_HORIZONTAL; - root->face_flags |= FT_FACE_FLAG_GLYPH_NAMES; - - if ( info->is_fixed_pitch ) - root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; - - if ( face->blend ) - root->face_flags |= FT_FACE_FLAG_MULTIPLE_MASTERS; - - /* XXX: TODO -- add kerning with .afm support */ - - /* get style name -- be careful, some broken fonts only */ - /* have a `/FontName' dictionary entry! */ - root->family_name = info->family_name; - /* assume "Regular" style if we don't know better */ - root->style_name = (char *)"Regular"; - if ( root->family_name ) - { - char* full = info->full_name; - char* family = root->family_name; - - - if ( full ) - { - while ( *full ) - { - if ( *full == *family ) - { - family++; - full++; - } - else - { - if ( *full == ' ' || *full == '-' ) - full++; - else if ( *family == ' ' || *family == '-' ) - family++; - else - { - if ( !*family ) - root->style_name = full; - break; - } - } - } - } - } - else - { - /* do we have a `/FontName'? */ - if ( type1->font_name ) - root->family_name = type1->font_name; - } - - /* compute style flags */ - root->style_flags = 0; - if ( info->italic_angle ) - root->style_flags |= FT_STYLE_FLAG_ITALIC; - if ( info->weight ) - { - if ( !ft_strcmp( info->weight, "Bold" ) || - !ft_strcmp( info->weight, "Black" ) ) - root->style_flags |= FT_STYLE_FLAG_BOLD; - } - - /* no embedded bitmap support */ - root->num_fixed_sizes = 0; - root->available_sizes = 0; - - root->bbox.xMin = type1->font_bbox.xMin >> 16; - root->bbox.yMin = type1->font_bbox.yMin >> 16; - root->bbox.xMax = ( type1->font_bbox.xMax + 0xFFFFU ) >> 16; - root->bbox.yMax = ( type1->font_bbox.yMax + 0xFFFFU ) >> 16; - - /* Set units_per_EM if we didn't set it in parse_font_matrix. */ - if ( !root->units_per_EM ) - root->units_per_EM = 1000; - - root->ascender = (FT_Short)( root->bbox.yMax ); - root->descender = (FT_Short)( root->bbox.yMin ); - root->height = (FT_Short)( - ( ( root->ascender - root->descender ) * 12 ) / 10 ); - - /* now compute the maximum advance width */ - root->max_advance_width = - (FT_Short)( root->bbox.xMax ); - { - FT_Pos max_advance; - - - error = T1_Compute_Max_Advance( face, &max_advance ); - - /* in case of error, keep the standard width */ - if ( !error ) - root->max_advance_width = (FT_Short)max_advance; - else - error = 0; /* clear error */ - } - - root->max_advance_height = root->height; - - root->underline_position = (FT_Short)info->underline_position; - root->underline_thickness = (FT_Short)info->underline_thickness; - - root->internal->max_points = 0; - root->internal->max_contours = 0; - } - - { - FT_Face root = &face->root; - - - if ( psnames && psaux ) - { - FT_CharMapRec charmap; - T1_CMap_Classes cmap_classes = psaux->t1_cmap_classes; - FT_CMap_Class clazz; - - - charmap.face = root; - - /* first of all, try to synthetize a Unicode charmap */ - charmap.platform_id = 3; - charmap.encoding_id = 1; - charmap.encoding = FT_ENCODING_UNICODE; - - FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL ); - - /* now, generate an Adobe Standard encoding when appropriate */ - charmap.platform_id = 7; - clazz = NULL; - - switch ( type1->encoding_type ) - { - case T1_ENCODING_TYPE_STANDARD: - charmap.encoding = FT_ENCODING_ADOBE_STANDARD; - charmap.encoding_id = TT_ADOBE_ID_STANDARD; - clazz = cmap_classes->standard; - break; - - case T1_ENCODING_TYPE_EXPERT: - charmap.encoding = FT_ENCODING_ADOBE_EXPERT; - charmap.encoding_id = TT_ADOBE_ID_EXPERT; - clazz = cmap_classes->expert; - break; - - case T1_ENCODING_TYPE_ARRAY: - charmap.encoding = FT_ENCODING_ADOBE_CUSTOM; - charmap.encoding_id = TT_ADOBE_ID_CUSTOM; - clazz = cmap_classes->custom; - break; - - case T1_ENCODING_TYPE_ISOLATIN1: - charmap.encoding = FT_ENCODING_ADOBE_LATIN_1; - charmap.encoding_id = TT_ADOBE_ID_LATIN_1; - clazz = cmap_classes->unicode; - break; - - default: - ; - } - - if ( clazz ) - FT_CMap_New( clazz, NULL, &charmap, NULL ); - -#if 0 - /* Select default charmap */ - if (root->num_charmaps) - root->charmap = root->charmaps[0]; -#endif - } - } - - Exit: - return error; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T1_Driver_Init */ - /* */ - /* <Description> */ - /* Initializes a given Type 1 driver object. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target driver object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - T1_Driver_Init( T1_Driver driver ) - { - FT_UNUSED( driver ); - - return T1_Err_Ok; - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T1_Driver_Done */ - /* */ - /* <Description> */ - /* Finalizes a given Type 1 driver. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target Type 1 driver. */ - /* */ - FT_LOCAL_DEF( void ) - T1_Driver_Done( T1_Driver driver ) - { - FT_UNUSED( driver ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1objs.h b/nx-X11/extras/freetype2/src/type1/t1objs.h deleted file mode 100644 index 9aeb10dd2..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1objs.h +++ /dev/null @@ -1,170 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1objs.h */ -/* */ -/* Type 1 objects manager (specification). */ -/* */ -/* Copyright 1996-2001, 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1OBJS_H__ -#define __T1OBJS_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_OBJECTS_H -#include FT_CONFIG_CONFIG_H -#include FT_INTERNAL_TYPE1_TYPES_H - - -FT_BEGIN_HEADER - - - /* The following structures must be defined by the hinter */ - typedef struct T1_Size_Hints_ T1_Size_Hints; - typedef struct T1_Glyph_Hints_ T1_Glyph_Hints; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T1_Driver */ - /* */ - /* <Description> */ - /* A handle to a Type 1 driver object. */ - /* */ - typedef struct T1_DriverRec_ *T1_Driver; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T1_Size */ - /* */ - /* <Description> */ - /* A handle to a Type 1 size object. */ - /* */ - typedef struct T1_SizeRec_* T1_Size; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T1_GlyphSlot */ - /* */ - /* <Description> */ - /* A handle to a Type 1 glyph slot object. */ - /* */ - typedef struct T1_GlyphSlotRec_* T1_GlyphSlot; - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T1_CharMap */ - /* */ - /* <Description> */ - /* A handle to a Type 1 character mapping object. */ - /* */ - /* <Note> */ - /* The Type 1 format doesn't use a charmap but an encoding table. */ - /* The driver is responsible for making up charmap objects */ - /* corresponding to these tables. */ - /* */ - typedef struct T1_CharMapRec_* T1_CharMap; - - - /*************************************************************************/ - /* */ - /* HERE BEGINS THE TYPE1 SPECIFIC STUFF */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T1_SizeRec */ - /* */ - /* <Description> */ - /* Type 1 size record. */ - /* */ - typedef struct T1_SizeRec_ - { - FT_SizeRec root; - - } T1_SizeRec; - - - FT_LOCAL( void ) - T1_Size_Done( T1_Size size ); - - FT_LOCAL( FT_Error ) - T1_Size_Reset( T1_Size size ); - - FT_LOCAL( FT_Error ) - T1_Size_Init( T1_Size size ); - - - /*************************************************************************/ - /* */ - /* <Type> */ - /* T1_GlyphSlotRec */ - /* */ - /* <Description> */ - /* Type 1 glyph slot record. */ - /* */ - typedef struct T1_GlyphSlotRec_ - { - FT_GlyphSlotRec root; - - FT_Bool hint; - FT_Bool scaled; - - FT_Int max_points; - FT_Int max_contours; - - FT_Fixed x_scale; - FT_Fixed y_scale; - - } T1_GlyphSlotRec; - - - FT_LOCAL( FT_Error ) - T1_Face_Init( FT_Stream stream, - T1_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - FT_LOCAL( void ) - T1_Face_Done( T1_Face face ); - - FT_LOCAL( FT_Error ) - T1_GlyphSlot_Init( T1_GlyphSlot slot ); - - FT_LOCAL( void ) - T1_GlyphSlot_Done( T1_GlyphSlot slot ); - - FT_LOCAL( FT_Error ) - T1_Driver_Init( T1_Driver driver ); - - FT_LOCAL( void ) - T1_Driver_Done( T1_Driver driver ); - - -FT_END_HEADER - -#endif /* __T1OBJS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1parse.c b/nx-X11/extras/freetype2/src/type1/t1parse.c deleted file mode 100644 index 544aa093f..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1parse.c +++ /dev/null @@ -1,443 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1parse.c */ -/* */ -/* Type 1 parser (body). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* The Type 1 parser is in charge of the following: */ - /* */ - /* - provide an implementation of a growing sequence of objects called */ - /* a `T1_Table' (used to build various tables needed by the loader). */ - /* */ - /* - opening .pfb and .pfa files to extract their top-level and private */ - /* dictionaries. */ - /* */ - /* - read numbers, arrays & strings from any dictionary. */ - /* */ - /* See `t1load.c' to see how data is loaded from the font file. */ - /* */ - /*************************************************************************/ - - -#include <ft2build.h> -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_CALC_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H - -#include "t1parse.h" - -#include "t1errors.h" - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t1parse - - - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - /***** *****/ - /***** INPUT STREAM PARSER *****/ - /***** *****/ - /*************************************************************************/ - /*************************************************************************/ - /*************************************************************************/ - - - static FT_Error - read_pfb_tag( FT_Stream stream, - FT_UShort *atag, - FT_Long *asize ) - { - FT_Error error; - FT_UShort tag; - FT_Long size; - - - *atag = 0; - *asize = 0; - - if ( !FT_READ_USHORT( tag ) ) - { - if ( tag == 0x8001U || tag == 0x8002U ) - { - if ( !FT_READ_LONG_LE( size ) ) - *asize = size; - } - - *atag = tag; - } - - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - T1_New_Parser( T1_Parser parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Service psaux ) - { - FT_Error error; - FT_UShort tag; - FT_Long size; - - - psaux->ps_parser_funcs->init( &parser->root, 0, 0, memory ); - - parser->stream = stream; - parser->base_len = 0; - parser->base_dict = 0; - parser->private_len = 0; - parser->private_dict = 0; - parser->in_pfb = 0; - parser->in_memory = 0; - parser->single_block = 0; - - /******************************************************************/ - /* */ - /* Here a short summary of what is going on: */ - /* */ - /* When creating a new Type 1 parser, we try to locate and load */ - /* the base dictionary if this is possible (i.e. for PFB */ - /* files). Otherwise, we load the whole font into memory. */ - /* */ - /* When `loading' the base dictionary, we only setup pointers */ - /* in the case of a memory-based stream. Otherwise, we */ - /* allocate and load the base dictionary in it. */ - /* */ - /* parser->in_pfb is set if we are in a binary (".pfb") font. */ - /* parser->in_memory is set if we have a memory stream. */ - /* */ - - /* try to compute the size of the base dictionary; */ - /* look for a Postscript binary file tag, i.e 0x8001 */ - if ( FT_STREAM_SEEK( 0L ) ) - goto Exit; - - error = read_pfb_tag( stream, &tag, &size ); - if ( error ) - goto Exit; - - if ( tag != 0x8001U ) - { - /* assume that this is a PFA file for now; an error will */ - /* be produced later when more things are checked */ - if ( FT_STREAM_SEEK( 0L ) ) - goto Exit; - size = stream->size; - } - else - parser->in_pfb = 1; - - /* now, try to load `size' bytes of the `base' dictionary we */ - /* found previously */ - - /* if it is a memory-based resource, set up pointers */ - if ( !stream->read ) - { - parser->base_dict = (FT_Byte*)stream->base + stream->pos; - parser->base_len = size; - parser->in_memory = 1; - - /* check that the `size' field is valid */ - if ( FT_STREAM_SKIP( size ) ) - goto Exit; - } - else - { - /* read segment in memory */ - if ( FT_ALLOC( parser->base_dict, size ) || - FT_STREAM_READ( parser->base_dict, size ) ) - goto Exit; - parser->base_len = size; - } - - /* Now check font format; we must see `%!PS-AdobeFont-1' */ - /* or `%!FontType' */ - { - if ( size <= 16 || - ( ft_strncmp( (const char*)parser->base_dict, - "%!PS-AdobeFont-1", 16 ) && - ft_strncmp( (const char*)parser->base_dict, - "%!FontType", 10 ) ) ) - { - FT_TRACE2(( "[not a Type1 font]\n" )); - error = T1_Err_Unknown_File_Format; - } - else - { - parser->root.base = parser->base_dict; - parser->root.cursor = parser->base_dict; - parser->root.limit = parser->root.cursor + parser->base_len; - } - } - - Exit: - if ( error && !parser->in_memory ) - FT_FREE( parser->base_dict ); - - return error; - } - - - FT_LOCAL_DEF( void ) - T1_Finalize_Parser( T1_Parser parser ) - { - FT_Memory memory = parser->root.memory; - - - /* always free the private dictionary */ - FT_FREE( parser->private_dict ); - - /* free the base dictionary only when we have a disk stream */ - if ( !parser->in_memory ) - FT_FREE( parser->base_dict ); - - parser->root.funcs.done( &parser->root ); - } - - - FT_LOCAL_DEF( FT_Error ) - T1_Get_Private_Dict( T1_Parser parser, - PSAux_Service psaux ) - { - FT_Stream stream = parser->stream; - FT_Memory memory = parser->root.memory; - FT_Error error = T1_Err_Ok; - FT_Long size; - - - if ( parser->in_pfb ) - { - /* in the case of the PFB format, the private dictionary can be */ - /* made of several segments. We thus first read the number of */ - /* segments to compute the total size of the private dictionary */ - /* then re-read them into memory. */ - FT_Long start_pos = FT_STREAM_POS(); - FT_UShort tag; - - - parser->private_len = 0; - for (;;) - { - error = read_pfb_tag( stream, &tag, &size ); - if ( error ) - goto Fail; - - if ( tag != 0x8002U ) - break; - - parser->private_len += size; - - if ( FT_STREAM_SKIP( size ) ) - goto Fail; - } - - /* Check that we have a private dictionary there */ - /* and allocate private dictionary buffer */ - if ( parser->private_len == 0 ) - { - FT_ERROR(( "T1_Get_Private_Dict:" )); - FT_ERROR(( " invalid private dictionary section\n" )); - error = T1_Err_Invalid_File_Format; - goto Fail; - } - - if ( FT_STREAM_SEEK( start_pos ) || - FT_ALLOC( parser->private_dict, parser->private_len ) ) - goto Fail; - - parser->private_len = 0; - for (;;) - { - error = read_pfb_tag( stream, &tag, &size ); - if ( error || tag != 0x8002U ) - { - error = T1_Err_Ok; - break; - } - - if ( FT_STREAM_READ( parser->private_dict + parser->private_len, - size ) ) - goto Fail; - - parser->private_len += size; - } - } - else - { - /* We have already `loaded' the whole PFA font file into memory; */ - /* if this is a memory resource, allocate a new block to hold */ - /* the private dict. Otherwise, simply overwrite into the base */ - /* dictionary block in the heap. */ - - /* first of all, look at the `eexec' keyword */ - FT_Byte* cur = parser->base_dict; - FT_Byte* limit = cur + parser->base_len; - FT_Byte c; - - - Again: - for (;;) - { - c = cur[0]; - if ( c == 'e' && cur + 9 < limit ) /* 9 = 5 letters for `eexec' + */ - /* newline + 4 chars */ - { - if ( cur[1] == 'e' && - cur[2] == 'x' && - cur[3] == 'e' && - cur[4] == 'c' ) - break; - } - cur++; - if ( cur >= limit ) - { - FT_ERROR(( "T1_Get_Private_Dict:" )); - FT_ERROR(( " could not find `eexec' keyword\n" )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - } - - /* check whether `eexec' was real -- it could be in a comment */ - /* or string (as e.g. in u003043t.gsf from ghostscript) */ - - parser->root.cursor = parser->base_dict; - parser->root.limit = cur + 9; - - cur = parser->root.cursor; - limit = parser->root.limit; - - while ( cur < limit ) - { - if ( *cur == 'e' && ft_strncmp( (char*)cur, "eexec", 5 ) == 0 ) - goto Found; - - T1_Skip_PS_Token( parser ); - T1_Skip_Spaces ( parser ); - cur = parser->root.cursor; - } - - /* we haven't found the correct `eexec'; go back and continue */ - /* searching */ - - cur = limit; - limit = parser->base_dict + parser->base_len; - goto Again; - - /* now determine where to write the _encrypted_ binary private */ - /* dictionary. We overwrite the base dictionary for disk-based */ - /* resources and allocate a new block otherwise */ - - Found: - parser->root.limit = parser->base_dict + parser->base_len; - - T1_Skip_PS_Token( parser ); - cur = parser->root.cursor; - if ( *cur == '\r' ) - { - cur++; - if ( *cur == '\n' ) - cur++; - } - else if ( *cur == '\n' ) - cur++; - else - { - FT_ERROR(( "T1_Get_Private_Dict:" )); - FT_ERROR(( " `eexec' not properly terminated\n" )); - error = T1_Err_Invalid_File_Format; - goto Exit; - } - - size = (FT_Long)( parser->base_len - ( cur - parser->base_dict ) ); - - if ( parser->in_memory ) - { - /* note that we allocate one more byte to put a terminating `0' */ - if ( FT_ALLOC( parser->private_dict, size + 1 ) ) - goto Fail; - parser->private_len = size; - } - else - { - parser->single_block = 1; - parser->private_dict = parser->base_dict; - parser->private_len = size; - parser->base_dict = 0; - parser->base_len = 0; - } - - /* now determine whether the private dictionary is encoded in binary */ - /* or hexadecimal ASCII format -- decode it accordingly */ - - /* we need to access the next 4 bytes (after the final \r following */ - /* the `eexec' keyword); if they all are hexadecimal digits, then */ - /* we have a case of ASCII storage */ - - if ( ft_isxdigit( cur[0] ) && ft_isxdigit( cur[1] ) && - ft_isxdigit( cur[2] ) && ft_isxdigit( cur[3] ) ) - { - /* ASCII hexadecimal encoding */ - FT_Long len; - - - parser->root.cursor = cur; - (void)psaux->ps_parser_funcs->to_bytes( &parser->root, - parser->private_dict, - parser->private_len, - &len, - 0 ); - parser->private_len = len; - - /* put a safeguard */ - parser->private_dict[len] = '\0'; - } - else - /* binary encoding -- copy the private dict */ - FT_MEM_MOVE( parser->private_dict, cur, size ); - } - - /* we now decrypt the encoded binary private dictionary */ - psaux->t1_decrypt( parser->private_dict, parser->private_len, 55665U ); - - /* replace the four random bytes at the beginning with whitespace */ - parser->private_dict[0] = ' '; - parser->private_dict[1] = ' '; - parser->private_dict[2] = ' '; - parser->private_dict[3] = ' '; - - parser->root.base = parser->private_dict; - parser->root.cursor = parser->private_dict; - parser->root.limit = parser->root.cursor + parser->private_len; - - Fail: - Exit: - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1parse.h b/nx-X11/extras/freetype2/src/type1/t1parse.h deleted file mode 100644 index 6fa4ca624..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1parse.h +++ /dev/null @@ -1,135 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1parse.h */ -/* */ -/* Type 1 parser (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T1PARSE_H__ -#define __T1PARSE_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_STREAM_H - - -FT_BEGIN_HEADER - - - /*************************************************************************/ - /* */ - /* <Struct> */ - /* T1_ParserRec */ - /* */ - /* <Description> */ - /* A PS_ParserRec is an object used to parse a Type 1 fonts very */ - /* quickly. */ - /* */ - /* <Fields> */ - /* root :: The root parser. */ - /* */ - /* stream :: The current input stream. */ - /* */ - /* base_dict :: A pointer to the top-level dictionary. */ - /* */ - /* base_len :: The length in bytes of the top dictionary. */ - /* */ - /* private_dict :: A pointer to the private dictionary. */ - /* */ - /* private_len :: The length in bytes of the private dictionary. */ - /* */ - /* in_pfb :: A boolean. Indicates that we are handling a PFB */ - /* file. */ - /* */ - /* in_memory :: A boolean. Indicates a memory-based stream. */ - /* */ - /* single_block :: A boolean. Indicates that the private dictionary */ - /* is stored in lieu of the base dictionary. */ - /* */ - typedef struct T1_ParserRec_ - { - PS_ParserRec root; - FT_Stream stream; - - FT_Byte* base_dict; - FT_Long base_len; - - FT_Byte* private_dict; - FT_Long private_len; - - FT_Bool in_pfb; - FT_Bool in_memory; - FT_Bool single_block; - - } T1_ParserRec, *T1_Parser; - - -#define T1_Add_Table( p, i, o, l ) (p)->funcs.add( (p), i, o, l ) -#define T1_Done_Table( p ) \ - do \ - { \ - if ( (p)->funcs.done ) \ - (p)->funcs.done( p ); \ - } while ( 0 ) -#define T1_Release_Table( p ) \ - do \ - { \ - if ( (p)->funcs.release ) \ - (p)->funcs.release( p ); \ - } while ( 0 ) - - -#define T1_Skip_Spaces( p ) (p)->root.funcs.skip_spaces( &(p)->root ) -#define T1_Skip_PS_Token( p ) (p)->root.funcs.skip_PS_token( &(p)->root ) - -#define T1_ToInt( p ) (p)->root.funcs.to_int( &(p)->root ) -#define T1_ToFixed( p, t ) (p)->root.funcs.to_fixed( &(p)->root, t ) - -#define T1_ToCoordArray( p, m, c ) \ - (p)->root.funcs.to_coord_array( &(p)->root, m, c ) -#define T1_ToFixedArray( p, m, f, t ) \ - (p)->root.funcs.to_fixed_array( &(p)->root, m, f, t ) -#define T1_ToToken( p, t ) \ - (p)->root.funcs.to_token( &(p)->root, t ) -#define T1_ToTokenArray( p, t, m, c ) \ - (p)->root.funcs.to_token_array( &(p)->root, t, m, c ) - -#define T1_Load_Field( p, f, o, m, pf ) \ - (p)->root.funcs.load_field( &(p)->root, f, o, m, pf ) - -#define T1_Load_Field_Table( p, f, o, m, pf ) \ - (p)->root.funcs.load_field_table( &(p)->root, f, o, m, pf ) - - - FT_LOCAL( FT_Error ) - T1_New_Parser( T1_Parser parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Service psaux ); - - FT_LOCAL( FT_Error ) - T1_Get_Private_Dict( T1_Parser parser, - PSAux_Service psaux ); - - FT_LOCAL( void ) - T1_Finalize_Parser( T1_Parser parser ); - - -FT_END_HEADER - -#endif /* __T1PARSE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/t1tokens.h b/nx-X11/extras/freetype2/src/type1/t1tokens.h deleted file mode 100644 index a3cc952e0..000000000 --- a/nx-X11/extras/freetype2/src/type1/t1tokens.h +++ /dev/null @@ -1,84 +0,0 @@ -/***************************************************************************/ -/* */ -/* t1tokens.h */ -/* */ -/* Type 1 tokenizer (specification). */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#undef FT_STRUCTURE -#define FT_STRUCTURE PS_FontInfoRec -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_FONT_INFO - - T1_FIELD_STRING( "version", version ) - T1_FIELD_STRING( "Notice", notice ) - T1_FIELD_STRING( "FullName", full_name ) - T1_FIELD_STRING( "FamilyName", family_name ) - T1_FIELD_STRING( "Weight", weight ) - - /* we use pointers to detect modifications made by synthetic fonts */ - T1_FIELD_NUM ( "ItalicAngle", italic_angle ) - T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch ) - T1_FIELD_NUM ( "UnderlinePosition", underline_position ) - T1_FIELD_NUM ( "UnderlineThickness", underline_thickness ) - - -#undef FT_STRUCTURE -#define FT_STRUCTURE PS_PrivateRec -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_PRIVATE - - T1_FIELD_NUM ( "UniqueID", unique_id ) - T1_FIELD_NUM ( "lenIV", lenIV ) - T1_FIELD_NUM ( "LanguageGroup", language_group ) - T1_FIELD_NUM ( "password", password ) - - T1_FIELD_FIXED_1000( "BlueScale", blue_scale ) - T1_FIELD_NUM ( "BlueShift", blue_shift ) - T1_FIELD_NUM ( "BlueFuzz", blue_fuzz ) - - T1_FIELD_NUM_TABLE ( "BlueValues", blue_values, 14 ) - T1_FIELD_NUM_TABLE ( "OtherBlues", other_blues, 10 ) - T1_FIELD_NUM_TABLE ( "FamilyBlues", family_blues, 14 ) - T1_FIELD_NUM_TABLE ( "FamilyOtherBlues", family_other_blues, 10 ) - - T1_FIELD_NUM_TABLE2( "StdHW", standard_width, 1 ) - T1_FIELD_NUM_TABLE2( "StdVW", standard_height, 1 ) - T1_FIELD_NUM_TABLE2( "MinFeature", min_feature, 2 ) - - T1_FIELD_NUM_TABLE ( "StemSnapH", snap_widths, 12 ) - T1_FIELD_NUM_TABLE ( "StemSnapV", snap_heights, 12 ) - - T1_FIELD_FIXED ( "ExpansionFactor", expansion_factor ) - - -#undef FT_STRUCTURE -#define FT_STRUCTURE T1_FontRec -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_FONT_DICT - - T1_FIELD_KEY ( "FontName", font_name ) - T1_FIELD_NUM ( "PaintType", paint_type ) - T1_FIELD_NUM ( "FontType", font_type ) - T1_FIELD_FIXED( "StrokeWidth", stroke_width ) - -#undef FT_STRUCTURE -#define FT_STRUCTURE FT_BBox -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_BBOX - - T1_FIELD_BBOX("FontBBox", xMin ) - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type1/type1.c b/nx-X11/extras/freetype2/src/type1/type1.c deleted file mode 100644 index ccc12be10..000000000 --- a/nx-X11/extras/freetype2/src/type1/type1.c +++ /dev/null @@ -1,33 +0,0 @@ -/***************************************************************************/ -/* */ -/* type1.c */ -/* */ -/* FreeType Type 1 driver component (body only). */ -/* */ -/* Copyright 1996-2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "t1parse.c" -#include "t1load.c" -#include "t1objs.c" -#include "t1driver.c" -#include "t1gload.c" - -#ifndef T1_CONFIG_OPTION_NO_AFM -#include "t1afm.c" -#endif - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/Jamfile b/nx-X11/extras/freetype2/src/type42/Jamfile deleted file mode 100644 index 032ac7179..000000000 --- a/nx-X11/extras/freetype2/src/type42/Jamfile +++ /dev/null @@ -1,21 +0,0 @@ -# FreeType 2 src/type42 Jamfile (c) 2002 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) type42 ; - -{ - local _sources ; - - if $(FT2_MULTI) - { - _sources = t42objs t42parse t42drivr ; - } - else - { - _sources = type42 ; - } - - Library $(FT2_LIB) : $(_sources).c ; -} - -# end of src/type42 Jamfile diff --git a/nx-X11/extras/freetype2/src/type42/descrip.mms b/nx-X11/extras/freetype2/src/type42/descrip.mms deleted file mode 100644 index a52ba06fb..000000000 --- a/nx-X11/extras/freetype2/src/type42/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 Type 42 driver compilation rules for VMS -# - - -# Copyright 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.type42]) - -OBJS=type42.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/type42/module.mk b/nx-X11/extras/freetype2/src/type42/module.mk deleted file mode 100644 index ceaea41b0..000000000 --- a/nx-X11/extras/freetype2/src/type42/module.mk +++ /dev/null @@ -1,22 +0,0 @@ -# -# FreeType 2 Type42 module definition -# - - -# Copyright 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_type42_driver - -add_type42_driver: - $(OPEN_DRIVER)t42_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)type42 $(ECHO_DRIVER_DESC)Type 42 font files with no known extension$(ECHO_DRIVER_DONE) - -# EOF diff --git a/nx-X11/extras/freetype2/src/type42/rules.mk b/nx-X11/extras/freetype2/src/type42/rules.mk deleted file mode 100644 index 556306195..000000000 --- a/nx-X11/extras/freetype2/src/type42/rules.mk +++ /dev/null @@ -1,69 +0,0 @@ -# -# FreeType 2 Type42 driver configuration rules -# - - -# Copyright 2002, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Type42 driver directory -# -T42_DIR := $(SRC_DIR)/type42 - - -# compilation flags for the driver -# -T42_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(T42_DIR)) - - -# Type42 driver source -# -T42_DRV_SRC := $(T42_DIR)/t42objs.c \ - $(T42_DIR)/t42parse.c \ - $(T42_DIR)/t42drivr.c - -# Type42 driver headers -# -T42_DRV_H := $(T42_DRV_SRC:%.c=%.h) \ - $(T42_DIR)/t42error.h - - -# Type42 driver object(s) -# -# T42_DRV_OBJ_M is used during `multi' builds -# T42_DRV_OBJ_S is used during `single' builds -# -T42_DRV_OBJ_M := $(T42_DRV_SRC:$(T42_DIR)/%.c=$(OBJ_DIR)/%.$O) -T42_DRV_OBJ_S := $(OBJ_DIR)/type42.$O - -# Type42 driver source file for single build -# -T42_DRV_SRC_S := $(T42_DIR)/type42.c - - -# Type42 driver - single object -# -$(T42_DRV_OBJ_S): $(T42_DRV_SRC_S) $(T42_DRV_SRC) $(FREETYPE_H) $(T42_DRV_H) - $(T42_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(T42_DRV_SRC_S)) - - -# Type42 driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(T42_DIR)/%.c $(FREETYPE_H) $(T42_DRV_H) - $(T42_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(T42_DRV_OBJ_S) -DRV_OBJS_M += $(T42_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/type42/t42drivr.c b/nx-X11/extras/freetype2/src/type42/t42drivr.c deleted file mode 100644 index 2afe2db84..000000000 --- a/nx-X11/extras/freetype2/src/type42/t42drivr.c +++ /dev/null @@ -1,233 +0,0 @@ -/***************************************************************************/ -/* */ -/* t42drivr.c */ -/* */ -/* High-level Type 42 driver interface (body). */ -/* */ -/* Copyright 2002, 2003, 2004 by Roberto Alameda. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This driver implements Type42 fonts as described in the */ - /* Technical Note #5012 from Adobe, with these limitations: */ - /* */ - /* 1) CID Fonts are not currently supported. */ - /* 2) Incremental fonts making use of the GlyphDirectory keyword */ - /* will be loaded, but the rendering will be using the TrueType */ - /* tables. */ - /* 3) As for Type1 fonts, CDevProc is not supported. */ - /* 4) The Metrics dictionary is not supported. */ - /* 5) AFM metrics are not supported. */ - /* */ - /* In other words, this driver supports Type42 fonts derived from */ - /* TrueType fonts in a non-CID manner, as done by usual conversion */ - /* programs. */ - /* */ - /*************************************************************************/ - - -#include "t42drivr.h" -#include "t42objs.h" -#include "t42error.h" -#include FT_INTERNAL_DEBUG_H - -#include FT_SERVICE_XFREE86_NAME_H -#include FT_SERVICE_GLYPH_DICT_H -#include FT_SERVICE_POSTSCRIPT_NAME_H -#include FT_SERVICE_POSTSCRIPT_INFO_H - -#undef FT_COMPONENT -#define FT_COMPONENT trace_t42 - - - /* - * - * GLYPH DICT SERVICE - * - */ - - static FT_Error - t42_get_glyph_name( T42_Face face, - FT_UInt glyph_index, - FT_Pointer buffer, - FT_UInt buffer_max ) - { - FT_String* gname; - - - gname = face->type1.glyph_names[glyph_index]; - - if ( buffer_max > 0 ) - { - FT_UInt len = (FT_UInt)( ft_strlen( gname ) ); - - - if ( len >= buffer_max ) - len = buffer_max - 1; - - FT_MEM_COPY( buffer, gname, len ); - ((FT_Byte*)buffer)[len] = 0; - } - - return T42_Err_Ok; - } - - - static FT_UInt - t42_get_name_index( T42_Face face, - FT_String* glyph_name ) - { - FT_Int i; - FT_String* gname; - - - for ( i = 0; i < face->type1.num_glyphs; i++ ) - { - gname = face->type1.glyph_names[i]; - - if ( !ft_strcmp( glyph_name, gname ) ) - return (FT_UInt)ft_atol( (const char *)face->type1.charstrings[i] ); - } - - return 0; - } - - - static const FT_Service_GlyphDictRec t42_service_glyph_dict = - { - (FT_GlyphDict_GetNameFunc) t42_get_glyph_name, - (FT_GlyphDict_NameIndexFunc)t42_get_name_index - }; - - - /* - * - * POSTSCRIPT NAME SERVICE - * - */ - - static const char* - t42_get_ps_font_name( T42_Face face ) - { - return (const char*)face->type1.font_name; - } - - - static const FT_Service_PsFontNameRec t42_service_ps_font_name = - { - (FT_PsName_GetFunc)t42_get_ps_font_name - }; - - - /* - * - * POSTSCRIPT INFO SERVICE - * - */ - - static FT_Error - t42_ps_get_font_info( FT_Face face, - PS_FontInfoRec* afont_info ) - { - *afont_info = ((T42_Face)face)->type1.font_info; - return 0; - } - - - static FT_Int - t42_ps_has_glyph_names( FT_Face face ) - { - FT_UNUSED( face ); - return 1; - } - - - static const FT_Service_PsInfoRec t42_service_ps_info = - { - (PS_GetFontInfoFunc) t42_ps_get_font_info, - (PS_HasGlyphNamesFunc)t42_ps_has_glyph_names - }; - - - /* - * - * SERVICE LIST - * - */ - - static const FT_ServiceDescRec t42_services[] = - { - { FT_SERVICE_ID_GLYPH_DICT, &t42_service_glyph_dict }, - { FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &t42_service_ps_font_name }, - { FT_SERVICE_ID_POSTSCRIPT_INFO, &t42_service_ps_info }, - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_TYPE_42 }, - { NULL, NULL } - }; - - - static FT_Module_Interface - T42_Get_Interface( FT_Driver driver, - const FT_String* t42_interface ) - { - FT_UNUSED( driver ); - - return ft_service_list_lookup( t42_services, t42_interface ); - } - - - const FT_Driver_ClassRec t42_driver_class = - { - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_SCALABLE | -#ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER - FT_MODULE_DRIVER_HAS_HINTER, -#else - 0, -#endif - - sizeof ( T42_DriverRec ), - - "type42", - 0x10000L, - 0x20000L, - - 0, /* format interface */ - - (FT_Module_Constructor)T42_Driver_Init, - (FT_Module_Destructor) T42_Driver_Done, - (FT_Module_Requester) T42_Get_Interface, - }, - - sizeof ( T42_FaceRec ), - sizeof ( T42_SizeRec ), - sizeof ( T42_GlyphSlotRec ), - - (FT_Face_InitFunc) T42_Face_Init, - (FT_Face_DoneFunc) T42_Face_Done, - (FT_Size_InitFunc) T42_Size_Init, - (FT_Size_DoneFunc) T42_Size_Done, - (FT_Slot_InitFunc) T42_GlyphSlot_Init, - (FT_Slot_DoneFunc) T42_GlyphSlot_Done, - - (FT_Size_ResetPointsFunc) T42_Size_SetChars, - (FT_Size_ResetPixelsFunc) T42_Size_SetPixels, - (FT_Slot_LoadFunc) T42_GlyphSlot_Load, - - (FT_Face_GetKerningFunc) 0, - (FT_Face_AttachFunc) 0, - - (FT_Face_GetAdvancesFunc) 0 - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/t42drivr.h b/nx-X11/extras/freetype2/src/type42/t42drivr.h deleted file mode 100644 index 98b7410b6..000000000 --- a/nx-X11/extras/freetype2/src/type42/t42drivr.h +++ /dev/null @@ -1,38 +0,0 @@ -/***************************************************************************/ -/* */ -/* t42drivr.h */ -/* */ -/* High-level Type 42 driver interface (specification). */ -/* */ -/* Copyright 2002 by Roberto Alameda. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T42DRIVR_H__ -#define __T42DRIVR_H__ - - -#include <ft2build.h> -#include FT_INTERNAL_DRIVER_H - - -FT_BEGIN_HEADER - - - FT_EXPORT_VAR( const FT_Driver_ClassRec ) t42_driver_class; - - -FT_END_HEADER - - -#endif /* __T42DRIVR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/t42error.h b/nx-X11/extras/freetype2/src/type42/t42error.h deleted file mode 100644 index b23091001..000000000 --- a/nx-X11/extras/freetype2/src/type42/t42error.h +++ /dev/null @@ -1,40 +0,0 @@ -/***************************************************************************/ -/* */ -/* t42error.h */ -/* */ -/* Type 42 error codes (specification only). */ -/* */ -/* Copyright 2002, 2003 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the Type 42 error enumeration constants. */ - /* */ - /*************************************************************************/ - -#ifndef __T42ERROR_H__ -#define __T42ERROR_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX T42_Err_ -#define FT_ERR_BASE FT_Mod_Err_Type42 - -#include FT_ERRORS_H - -#endif /* __T42ERROR_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/t42objs.c b/nx-X11/extras/freetype2/src/type42/t42objs.c deleted file mode 100644 index 8837136ff..000000000 --- a/nx-X11/extras/freetype2/src/type42/t42objs.c +++ /dev/null @@ -1,643 +0,0 @@ -/***************************************************************************/ -/* */ -/* t42objs.c */ -/* */ -/* Type 42 objects manager (body). */ -/* */ -/* Copyright 2002, 2003, 2004 by Roberto Alameda. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "t42objs.h" -#include "t42parse.h" -#include "t42error.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_LIST_H - - -#undef FT_COMPONENT -#define FT_COMPONENT trace_t42 - - - static FT_Error - T42_Open_Face( T42_Face face ) - { - T42_LoaderRec loader; - T42_Parser parser; - T1_Font type1 = &face->type1; - FT_Memory memory = face->root.memory; - FT_Error error; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - - - t42_loader_init( &loader, face ); - - parser = &loader.parser; - - if ( FT_ALLOC( face->ttf_data, 12 ) ) - goto Exit; - - error = t42_parser_init( parser, - face->root.stream, - memory, - psaux); - if ( error ) - goto Exit; - - error = t42_parse_dict( face, &loader, - parser->base_dict, parser->base_len ); - - if ( type1->font_type != 42 ) - { - error = T42_Err_Unknown_File_Format; - goto Exit; - } - - /* now, propagate the charstrings and glyphnames tables */ - /* to the Type1 data */ - type1->num_glyphs = loader.num_glyphs; - - if ( !loader.charstrings.init ) - { - FT_ERROR(( "T42_Open_Face: no charstrings array in face!\n" )); - error = T42_Err_Invalid_File_Format; - } - - loader.charstrings.init = 0; - type1->charstrings_block = loader.charstrings.block; - type1->charstrings = loader.charstrings.elements; - type1->charstrings_len = loader.charstrings.lengths; - - /* we copy the glyph names `block' and `elements' fields; */ - /* the `lengths' field must be released later */ - type1->glyph_names_block = loader.glyph_names.block; - type1->glyph_names = (FT_String**)loader.glyph_names.elements; - loader.glyph_names.block = 0; - loader.glyph_names.elements = 0; - - /* we must now build type1.encoding when we have a custom array */ - if ( type1->encoding_type == T1_ENCODING_TYPE_ARRAY ) - { - FT_Int charcode, idx, min_char, max_char; - FT_Byte* char_name; - FT_Byte* glyph_name; - - - /* OK, we do the following: for each element in the encoding */ - /* table, look up the index of the glyph having the same name */ - /* as defined in the CharStrings array. */ - /* The index is then stored in type1.encoding.char_index, and */ - /* the name in type1.encoding.char_name */ - - min_char = +32000; - max_char = -32000; - - charcode = 0; - for ( ; charcode < loader.encoding_table.max_elems; charcode++ ) - { - type1->encoding.char_index[charcode] = 0; - type1->encoding.char_name [charcode] = (char *)".notdef"; - - char_name = loader.encoding_table.elements[charcode]; - if ( char_name ) - for ( idx = 0; idx < type1->num_glyphs; idx++ ) - { - glyph_name = (FT_Byte*)type1->glyph_names[idx]; - if ( ft_strcmp( (const char*)char_name, - (const char*)glyph_name ) == 0 ) - { - type1->encoding.char_index[charcode] = (FT_UShort)idx; - type1->encoding.char_name [charcode] = (char*)glyph_name; - - /* Change min/max encoded char only if glyph name is */ - /* not /.notdef */ - if ( ft_strcmp( (const char*)".notdef", - (const char*)glyph_name ) != 0 ) - { - if ( charcode < min_char ) - min_char = charcode; - if ( charcode > max_char ) - max_char = charcode; - } - break; - } - } - } - type1->encoding.code_first = min_char; - type1->encoding.code_last = max_char; - type1->encoding.num_chars = loader.num_chars; - } - - Exit: - t42_loader_done( &loader ); - return error; - } - - - /***************** Driver Functions *************/ - - - FT_LOCAL_DEF( FT_Error ) - T42_Face_Init( FT_Stream stream, - T42_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error; - FT_Service_PsCMaps psnames; - PSAux_Service psaux; - FT_Face root = (FT_Face)&face->root; - T1_Font type1 = &face->type1; - PS_FontInfo info = &type1->font_info; - - FT_UNUSED( num_params ); - FT_UNUSED( params ); - FT_UNUSED( face_index ); - FT_UNUSED( stream ); - - - face->ttf_face = NULL; - face->root.num_faces = 1; - - FT_FACE_FIND_GLOBAL_SERVICE( face, psnames, POSTSCRIPT_CMAPS ); - face->psnames = psnames; - - face->psaux = FT_Get_Module_Interface( FT_FACE_LIBRARY( face ), - "psaux" ); - psaux = (PSAux_Service)face->psaux; - - /* open the tokenizer, this will also check the font format */ - error = T42_Open_Face( face ); - if ( error ) - goto Exit; - - /* if we just wanted to check the format, leave successfully now */ - if ( face_index < 0 ) - goto Exit; - - /* check the face index */ - if ( face_index != 0 ) - { - FT_ERROR(( "T42_Face_Init: invalid face index\n" )); - error = T42_Err_Invalid_Argument; - goto Exit; - } - - /* Now load the font program into the face object */ - - /* Init the face object fields */ - /* Now set up root face fields */ - - root->num_glyphs = type1->num_glyphs; - root->num_charmaps = 0; - root->face_index = face_index; - - root->face_flags = FT_FACE_FLAG_SCALABLE; - root->face_flags |= FT_FACE_FLAG_HORIZONTAL; - root->face_flags |= FT_FACE_FLAG_GLYPH_NAMES; - - if ( info->is_fixed_pitch ) - root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; - - /* XXX: TODO -- add kerning with .afm support */ - - /* get style name -- be careful, some broken fonts only */ - /* have a `/FontName' dictionary entry! */ - root->family_name = info->family_name; - /* assume "Regular" style if we don't know better */ - root->style_name = (char *)"Regular"; - if ( root->family_name ) - { - char* full = info->full_name; - char* family = root->family_name; - - - if ( full ) - { - while ( *full ) - { - if ( *full == *family ) - { - family++; - full++; - } - else - { - if ( *full == ' ' || *full == '-' ) - full++; - else if ( *family == ' ' || *family == '-' ) - family++; - else - { - if ( !*family ) - root->style_name = full; - break; - } - } - } - } - } - else - { - /* do we have a `/FontName'? */ - if ( type1->font_name ) - root->family_name = type1->font_name; - } - - /* no embedded bitmap support */ - root->num_fixed_sizes = 0; - root->available_sizes = 0; - - /* Load the TTF font embedded in the T42 font */ - error = FT_New_Memory_Face( FT_FACE_LIBRARY( face ), - face->ttf_data, - face->ttf_size, - 0, - &face->ttf_face ); - if ( error ) - goto Exit; - - FT_Done_Size( face->ttf_face->size ); - - /* Ignore info in FontInfo dictionary and use the info from the */ - /* loaded TTF font. The PostScript interpreter also ignores it. */ - root->bbox = face->ttf_face->bbox; - root->units_per_EM = face->ttf_face->units_per_EM; - - root->ascender = face->ttf_face->ascender; - root->descender = face->ttf_face->descender; - root->height = face->ttf_face->height; - - root->max_advance_width = face->ttf_face->max_advance_width; - root->max_advance_height = face->ttf_face->max_advance_height; - - root->underline_position = (FT_Short)info->underline_position; - root->underline_thickness = (FT_Short)info->underline_thickness; - - root->internal->max_points = 0; - root->internal->max_contours = 0; - - /* compute style flags */ - root->style_flags = 0; - if ( info->italic_angle ) - root->style_flags |= FT_STYLE_FLAG_ITALIC; - - if ( face->ttf_face->style_flags & FT_STYLE_FLAG_BOLD ) - root->style_flags |= FT_STYLE_FLAG_BOLD; - - if ( face->ttf_face->face_flags & FT_FACE_FLAG_VERTICAL ) - root->face_flags |= FT_FACE_FLAG_VERTICAL; - - { - if ( psnames && psaux ) - { - FT_CharMapRec charmap; - T1_CMap_Classes cmap_classes = psaux->t1_cmap_classes; - FT_CMap_Class clazz; - - - charmap.face = root; - - /* first of all, try to synthetize a Unicode charmap */ - charmap.platform_id = 3; - charmap.encoding_id = 1; - charmap.encoding = FT_ENCODING_UNICODE; - - FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL ); - - /* now, generate an Adobe Standard encoding when appropriate */ - charmap.platform_id = 7; - clazz = NULL; - - switch ( type1->encoding_type ) - { - case T1_ENCODING_TYPE_STANDARD: - charmap.encoding = FT_ENCODING_ADOBE_STANDARD; - charmap.encoding_id = 0; - clazz = cmap_classes->standard; - break; - - case T1_ENCODING_TYPE_EXPERT: - charmap.encoding = FT_ENCODING_ADOBE_EXPERT; - charmap.encoding_id = 1; - clazz = cmap_classes->expert; - break; - - case T1_ENCODING_TYPE_ARRAY: - charmap.encoding = FT_ENCODING_ADOBE_CUSTOM; - charmap.encoding_id = 2; - clazz = cmap_classes->custom; - break; - - case T1_ENCODING_TYPE_ISOLATIN1: - charmap.encoding = FT_ENCODING_ADOBE_LATIN_1; - charmap.encoding_id = 3; - clazz = cmap_classes->unicode; - break; - - default: - ; - } - - if ( clazz ) - FT_CMap_New( clazz, NULL, &charmap, NULL ); - -#if 0 - /* Select default charmap */ - if ( root->num_charmaps ) - root->charmap = root->charmaps[0]; -#endif - } - } - Exit: - return error; - } - - - FT_LOCAL_DEF( void ) - T42_Face_Done( T42_Face face ) - { - T1_Font type1; - PS_FontInfo info; - FT_Memory memory; - - - if ( face ) - { - type1 = &face->type1; - info = &type1->font_info; - memory = face->root.memory; - - /* delete internal ttf face prior to freeing face->ttf_data */ - if ( face->ttf_face ) - FT_Done_Face( face->ttf_face ); - - /* release font info strings */ - FT_FREE( info->version ); - FT_FREE( info->notice ); - FT_FREE( info->full_name ); - FT_FREE( info->family_name ); - FT_FREE( info->weight ); - - /* release top dictionary */ - FT_FREE( type1->charstrings_len ); - FT_FREE( type1->charstrings ); - FT_FREE( type1->glyph_names ); - - FT_FREE( type1->charstrings_block ); - FT_FREE( type1->glyph_names_block ); - - FT_FREE( type1->encoding.char_index ); - FT_FREE( type1->encoding.char_name ); - FT_FREE( type1->font_name ); - - FT_FREE( face->ttf_data ); - -#if 0 - /* release afm data if present */ - if ( face->afm_data ) - T1_Done_AFM( memory, (T1_AFM*)face->afm_data ); -#endif - - /* release unicode map, if any */ - FT_FREE( face->unicode_map.maps ); - face->unicode_map.num_maps = 0; - - face->root.family_name = 0; - face->root.style_name = 0; - } - } - - - /*************************************************************************/ - /* */ - /* <Function> */ - /* T42_Driver_Init */ - /* */ - /* <Description> */ - /* Initializes a given Type 42 driver object. */ - /* */ - /* <Input> */ - /* driver :: A handle to the target driver object. */ - /* */ - /* <Return> */ - /* FreeType error code. 0 means success. */ - /* */ - FT_LOCAL_DEF( FT_Error ) - T42_Driver_Init( T42_Driver driver ) - { - FT_Module ttmodule; - - - ttmodule = FT_Get_Module( FT_MODULE(driver)->library, "truetype" ); - driver->ttclazz = (FT_Driver_Class)ttmodule->clazz; - - return T42_Err_Ok; - } - - - FT_LOCAL_DEF( void ) - T42_Driver_Done( T42_Driver driver ) - { - FT_UNUSED( driver ); - } - - - FT_LOCAL_DEF( FT_Error ) - T42_Size_Init( T42_Size size ) - { - FT_Face face = size->root.face; - T42_Face t42face = (T42_Face)face; - FT_Size ttsize; - FT_Error error = T42_Err_Ok; - - - error = FT_New_Size( t42face->ttf_face, &ttsize ); - size->ttsize = ttsize; - - FT_Activate_Size( ttsize ); - - return error; - } - - - FT_LOCAL_DEF( void ) - T42_Size_Done( T42_Size size ) - { - FT_Face face = size->root.face; - T42_Face t42face = (T42_Face)face; - FT_ListNode node; - - - node = FT_List_Find( &t42face->ttf_face->sizes_list, size->ttsize ); - if ( node ) - { - FT_Done_Size( size->ttsize ); - size->ttsize = NULL; - } - } - - - FT_LOCAL_DEF( FT_Error ) - T42_GlyphSlot_Init( T42_GlyphSlot slot ) - { - FT_Face face = slot->root.face; - T42_Face t42face = (T42_Face)face; - FT_GlyphSlot ttslot; - FT_Error error = T42_Err_Ok; - - - if ( face->glyph == NULL ) - { - /* First glyph slot for this face */ - slot->ttslot = t42face->ttf_face->glyph; - } - else - { - error = FT_New_GlyphSlot( t42face->ttf_face, &ttslot ); - slot->ttslot = ttslot; - } - - return error; - } - - - FT_LOCAL_DEF( void ) - T42_GlyphSlot_Done( T42_GlyphSlot slot ) - { - FT_Face face = slot->root.face; - T42_Face t42face = (T42_Face)face; - FT_GlyphSlot cur = t42face->ttf_face->glyph; - - - while ( cur ) - { - if ( cur == slot->ttslot ) - { - FT_Done_GlyphSlot( slot->ttslot ); - break; - } - - cur = cur->next; - } - } - - - - FT_LOCAL_DEF( FT_Error ) - T42_Size_SetChars( T42_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ) - { - FT_Face face = size->root.face; - T42_Face t42face = (T42_Face)face; - - - FT_Activate_Size( size->ttsize ); - - return FT_Set_Char_Size( t42face->ttf_face, - char_width, - char_height, - horz_resolution, - vert_resolution ); - } - - - FT_LOCAL_DEF( FT_Error ) - T42_Size_SetPixels( T42_Size size, - FT_UInt pixel_width, - FT_UInt pixel_height ) - { - FT_Face face = size->root.face; - T42_Face t42face = (T42_Face)face; - - - FT_Activate_Size( size->ttsize ); - - return FT_Set_Pixel_Sizes( t42face->ttf_face, - pixel_width, - pixel_height ); - } - - - static void - t42_glyphslot_clear( FT_GlyphSlot slot ) - { - /* free bitmap if needed */ - ft_glyphslot_free_bitmap( slot ); - - /* clear all public fields in the glyph slot */ - FT_ZERO( &slot->metrics ); - FT_ZERO( &slot->outline ); - FT_ZERO( &slot->bitmap ); - - slot->bitmap_left = 0; - slot->bitmap_top = 0; - slot->num_subglyphs = 0; - slot->subglyphs = 0; - slot->control_data = 0; - slot->control_len = 0; - slot->other = 0; - slot->format = FT_GLYPH_FORMAT_NONE; - - slot->linearHoriAdvance = 0; - slot->linearVertAdvance = 0; - } - - - FT_LOCAL_DEF( FT_Error ) - T42_GlyphSlot_Load( FT_GlyphSlot glyph, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - FT_Error error; - T42_GlyphSlot t42slot = (T42_GlyphSlot)glyph; - T42_Size t42size = (T42_Size)size; - FT_Driver_Class ttclazz = ((T42_Driver)glyph->face->driver)->ttclazz; - - - t42_glyphslot_clear( t42slot->ttslot ); - error = ttclazz->load_glyph( t42slot->ttslot, - t42size->ttsize, - glyph_index, - load_flags | FT_LOAD_NO_BITMAP ); - - if ( !error ) - { - glyph->metrics = t42slot->ttslot->metrics; - - glyph->linearHoriAdvance = t42slot->ttslot->linearHoriAdvance; - glyph->linearVertAdvance = t42slot->ttslot->linearVertAdvance; - - glyph->format = t42slot->ttslot->format; - glyph->outline = t42slot->ttslot->outline; - - glyph->bitmap = t42slot->ttslot->bitmap; - glyph->bitmap_left = t42slot->ttslot->bitmap_left; - glyph->bitmap_top = t42slot->ttslot->bitmap_top; - - glyph->num_subglyphs = t42slot->ttslot->num_subglyphs; - glyph->subglyphs = t42slot->ttslot->subglyphs; - - glyph->control_data = t42slot->ttslot->control_data; - glyph->control_len = t42slot->ttslot->control_len; - } - - return error; - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/t42objs.h b/nx-X11/extras/freetype2/src/type42/t42objs.h deleted file mode 100644 index 623809573..000000000 --- a/nx-X11/extras/freetype2/src/type42/t42objs.h +++ /dev/null @@ -1,126 +0,0 @@ -/***************************************************************************/ -/* */ -/* t42objs.h */ -/* */ -/* Type 42 objects manager (specification). */ -/* */ -/* Copyright 2002, 2003 by Roberto Alameda. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T42OBJS_H__ -#define __T42OBJS_H__ - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_TYPE1_TYPES_H -#include "t42types.h" -#include FT_INTERNAL_OBJECTS_H -#include FT_INTERNAL_DRIVER_H -#include FT_SERVICE_POSTSCRIPT_CMAPS_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H - - -FT_BEGIN_HEADER - - - /* Type42 size */ - typedef struct T42_SizeRec_ - { - FT_SizeRec root; - FT_Size ttsize; - - } T42_SizeRec, *T42_Size; - - - /* Type42 slot */ - typedef struct T42_GlyphSlotRec_ - { - FT_GlyphSlotRec root; - FT_GlyphSlot ttslot; - - } T42_GlyphSlotRec, *T42_GlyphSlot; - - - /* Type 42 driver */ - typedef struct T42_DriverRec_ - { - FT_DriverRec root; - FT_Driver_Class ttclazz; - void* extension_component; - - } T42_DriverRec, *T42_Driver; - - - /* */ - - - FT_LOCAL( FT_Error ) - T42_Face_Init( FT_Stream stream, - T42_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ); - - - FT_LOCAL( void ) - T42_Face_Done( T42_Face face ); - - - FT_LOCAL( FT_Error ) - T42_Size_Init( T42_Size size ); - - - FT_LOCAL( FT_Error ) - T42_Size_SetChars( T42_Size size, - FT_F26Dot6 char_width, - FT_F26Dot6 char_height, - FT_UInt horz_resolution, - FT_UInt vert_resolution ); - - FT_LOCAL( FT_Error ) - T42_Size_SetPixels( T42_Size size, - FT_UInt pixel_width, - FT_UInt pixel_height ); - - FT_LOCAL( void ) - T42_Size_Done( T42_Size size ); - - - FT_LOCAL( FT_Error ) - T42_GlyphSlot_Init( T42_GlyphSlot slot ); - - - FT_LOCAL( FT_Error ) - T42_GlyphSlot_Load( FT_GlyphSlot glyph, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ); - - FT_LOCAL( void ) - T42_GlyphSlot_Done( T42_GlyphSlot slot ); - - - FT_LOCAL( FT_Error ) - T42_Driver_Init( T42_Driver driver ); - - FT_LOCAL( void ) - T42_Driver_Done( T42_Driver driver ); - - /* */ - -FT_END_HEADER - - -#endif /* __T42OBJS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/t42parse.c b/nx-X11/extras/freetype2/src/type42/t42parse.c deleted file mode 100644 index ff53a3eb4..000000000 --- a/nx-X11/extras/freetype2/src/type42/t42parse.c +++ /dev/null @@ -1,1115 +0,0 @@ -/***************************************************************************/ -/* */ -/* t42parse.c */ -/* */ -/* Type 42 font parser (body). */ -/* */ -/* Copyright 2002, 2003, 2004 by Roberto Alameda. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include "t42parse.h" -#include "t42error.h" -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_LIST_H -#include FT_INTERNAL_POSTSCRIPT_AUX_H - - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_t42 - - - static void - t42_parse_font_matrix( T42_Face face, - T42_Loader loader ); - static void - t42_parse_encoding( T42_Face face, - T42_Loader loader ); - - static void - t42_parse_charstrings( T42_Face face, - T42_Loader loader ); - - static void - t42_parse_sfnts( T42_Face face, - T42_Loader loader ); - - - static const - T1_FieldRec t42_keywords[] = { - -#undef FT_STRUCTURE -#define FT_STRUCTURE T1_FontInfo -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_FONT_INFO - - T1_FIELD_STRING( "version", version ) - T1_FIELD_STRING( "Notice", notice ) - T1_FIELD_STRING( "FullName", full_name ) - T1_FIELD_STRING( "FamilyName", family_name ) - T1_FIELD_STRING( "Weight", weight ) - T1_FIELD_NUM ( "ItalicAngle", italic_angle ) - T1_FIELD_BOOL ( "isFixedPitch", is_fixed_pitch ) - T1_FIELD_NUM ( "UnderlinePosition", underline_position ) - T1_FIELD_NUM ( "UnderlineThickness", underline_thickness ) - -#undef FT_STRUCTURE -#define FT_STRUCTURE T1_FontRec -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_FONT_DICT - - T1_FIELD_KEY ( "FontName", font_name ) - T1_FIELD_NUM ( "PaintType", paint_type ) - T1_FIELD_NUM ( "FontType", font_type ) - T1_FIELD_FIXED( "StrokeWidth", stroke_width ) - -#undef FT_STRUCTURE -#define FT_STRUCTURE FT_BBox -#undef T1CODE -#define T1CODE T1_FIELD_LOCATION_BBOX - - T1_FIELD_BBOX("FontBBox", xMin ) - - T1_FIELD_CALLBACK( "FontMatrix", t42_parse_font_matrix ) - T1_FIELD_CALLBACK( "Encoding", t42_parse_encoding ) - T1_FIELD_CALLBACK( "CharStrings", t42_parse_charstrings ) - T1_FIELD_CALLBACK( "sfnts", t42_parse_sfnts ) - - { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0 } - }; - - -#define T1_Add_Table( p, i, o, l ) (p)->funcs.add( (p), i, o, l ) -#define T1_Done_Table( p ) \ - do \ - { \ - if ( (p)->funcs.done ) \ - (p)->funcs.done( p ); \ - } while ( 0 ) -#define T1_Release_Table( p ) \ - do \ - { \ - if ( (p)->funcs.release ) \ - (p)->funcs.release( p ); \ - } while ( 0 ) - -#define T1_Skip_Spaces( p ) (p)->root.funcs.skip_spaces( &(p)->root ) -#define T1_Skip_PS_Token( p ) (p)->root.funcs.skip_PS_token( &(p)->root ) - -#define T1_ToInt( p ) \ - (p)->root.funcs.to_int( &(p)->root ) -#define T1_ToBytes( p, b, m, n, d ) \ - (p)->root.funcs.to_bytes( &(p)->root, b, m, n, d ) - -#define T1_ToFixedArray( p, m, f, t ) \ - (p)->root.funcs.to_fixed_array( &(p)->root, m, f, t ) -#define T1_ToToken( p, t ) \ - (p)->root.funcs.to_token( &(p)->root, t ) - -#define T1_Load_Field( p, f, o, m, pf ) \ - (p)->root.funcs.load_field( &(p)->root, f, o, m, pf ) -#define T1_Load_Field_Table( p, f, o, m, pf ) \ - (p)->root.funcs.load_field_table( &(p)->root, f, o, m, pf ) - - - /********************* Parsing Functions ******************/ - - FT_LOCAL_DEF( FT_Error ) - t42_parser_init( T42_Parser parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Service psaux ) - { - FT_Error error = T42_Err_Ok; - FT_Long size; - - - psaux->ps_parser_funcs->init( &parser->root, 0, 0, memory ); - - parser->stream = stream; - parser->base_len = 0; - parser->base_dict = 0; - parser->in_memory = 0; - - /*******************************************************************/ - /* */ - /* Here a short summary of what is going on: */ - /* */ - /* When creating a new Type 42 parser, we try to locate and load */ - /* the base dictionary, loading the whole font into memory. */ - /* */ - /* When `loading' the base dictionary, we only set up pointers */ - /* in the case of a memory-based stream. Otherwise, we allocate */ - /* and load the base dictionary in it. */ - /* */ - /* parser->in_memory is set if we have a memory stream. */ - /* */ - - if ( FT_STREAM_SEEK( 0L ) ) - goto Exit; - - size = stream->size; - - /* now, try to load `size' bytes of the `base' dictionary we */ - /* found previously */ - - /* if it is a memory-based resource, set up pointers */ - if ( !stream->read ) - { - parser->base_dict = (FT_Byte*)stream->base + stream->pos; - parser->base_len = size; - parser->in_memory = 1; - - /* check that the `size' field is valid */ - if ( FT_STREAM_SKIP( size ) ) - goto Exit; - } - else - { - /* read segment in memory */ - if ( FT_ALLOC( parser->base_dict, size ) || - FT_STREAM_READ( parser->base_dict, size ) ) - goto Exit; - - parser->base_len = size; - } - - /* Now check font format; we must see `%!PS-TrueTypeFont' */ - if ( size <= 17 || - ( ft_strncmp( (const char*)parser->base_dict, - "%!PS-TrueTypeFont", 17 ) ) ) - error = T42_Err_Unknown_File_Format; - else - { - parser->root.base = parser->base_dict; - parser->root.cursor = parser->base_dict; - parser->root.limit = parser->root.cursor + parser->base_len; - } - - Exit: - if ( error && !parser->in_memory ) - FT_FREE( parser->base_dict ); - - return error; - } - - - FT_LOCAL_DEF( void ) - t42_parser_done( T42_Parser parser ) - { - FT_Memory memory = parser->root.memory; - - - /* free the base dictionary only when we have a disk stream */ - if ( !parser->in_memory ) - FT_FREE( parser->base_dict ); - - parser->root.funcs.done( &parser->root ); - } - - - static int - t42_is_space( FT_Byte c ) - { - return ( c == ' ' || c == '\t' || - c == '\r' || c == '\n' || c == '\f' || - c == '\0' ); - } - - - static void - t42_parse_font_matrix( T42_Face face, - T42_Loader loader ) - { - T42_Parser parser = &loader->parser; - FT_Matrix* matrix = &face->type1.font_matrix; - FT_Vector* offset = &face->type1.font_offset; - FT_Face root = (FT_Face)&face->root; - FT_Fixed temp[6]; - FT_Fixed temp_scale; - - - (void)T1_ToFixedArray( parser, 6, temp, 3 ); - - temp_scale = FT_ABS( temp[3] ); - - /* Set Units per EM based on FontMatrix values. We set the value to */ - /* 1000 / temp_scale, because temp_scale was already multiplied by */ - /* 1000 (in t1_tofixed, from psobjs.c). */ - - root->units_per_EM = (FT_UShort)( FT_DivFix( 1000 * 0x10000L, - temp_scale ) >> 16 ); - - /* we need to scale the values by 1.0/temp_scale */ - if ( temp_scale != 0x10000L ) { - temp[0] = FT_DivFix( temp[0], temp_scale ); - temp[1] = FT_DivFix( temp[1], temp_scale ); - temp[2] = FT_DivFix( temp[2], temp_scale ); - temp[4] = FT_DivFix( temp[4], temp_scale ); - temp[5] = FT_DivFix( temp[5], temp_scale ); - temp[3] = 0x10000L; - } - - matrix->xx = temp[0]; - matrix->yx = temp[1]; - matrix->xy = temp[2]; - matrix->yy = temp[3]; - - /* note that the offsets must be expressed in integer font units */ - offset->x = temp[4] >> 16; - offset->y = temp[5] >> 16; - } - - - static void - t42_parse_encoding( T42_Face face, - T42_Loader loader ) - { - T42_Parser parser = &loader->parser; - FT_Byte* cur; - FT_Byte* limit = parser->root.limit; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - - - T1_Skip_Spaces( parser ); - cur = parser->root.cursor; - if ( cur >= limit ) - { - FT_ERROR(( "t42_parse_encoding: out of bounds!\n" )); - parser->root.error = T42_Err_Invalid_File_Format; - return; - } - - /* if we have a number or `[', the encoding is an array, */ - /* and we must load it now */ - if ( ft_isdigit( *cur ) || *cur == '[' ) - { - T1_Encoding encode = &face->type1.encoding; - FT_UInt count, n; - PS_Table char_table = &loader->encoding_table; - FT_Memory memory = parser->root.memory; - FT_Error error; - FT_Bool only_immediates = 0; - - - /* read the number of entries in the encoding; should be 256 */ - if ( *cur == '[' ) - { - count = 256; - only_immediates = 1; - parser->root.cursor++; - } - else - count = (FT_UInt)T1_ToInt( parser ); - - T1_Skip_Spaces( parser ); - if ( parser->root.cursor >= limit ) - return; - - /* we use a T1_Table to store our charnames */ - loader->num_chars = encode->num_chars = count; - if ( FT_NEW_ARRAY( encode->char_index, count ) || - FT_NEW_ARRAY( encode->char_name, count ) || - FT_SET_ERROR( psaux->ps_table_funcs->init( - char_table, count, memory ) ) ) - { - parser->root.error = error; - return; - } - - /* We need to `zero' out encoding_table.elements */ - for ( n = 0; n < count; n++ ) - { - char* notdef = (char *)".notdef"; - - - T1_Add_Table( char_table, n, notdef, 8 ); - } - - /* Now we need to read records of the form */ - /* */ - /* ... charcode /charname ... */ - /* */ - /* for each entry in our table. */ - /* */ - /* We simply look for a number followed by an immediate */ - /* name. Note that this ignores correctly the sequence */ - /* that is often seen in type42 fonts: */ - /* */ - /* 0 1 255 { 1 index exch /.notdef put } for dup */ - /* */ - /* used to clean the encoding array before anything else. */ - /* */ - /* Alternatively, if the array is directly given as */ - /* */ - /* /Encoding [ ... ] */ - /* */ - /* we only read immediates. */ - - n = 0; - T1_Skip_Spaces( parser ); - - while ( parser->root.cursor < limit ) - { - cur = parser->root.cursor; - - /* we stop when we encounter `def' or `]' */ - if ( *cur == 'd' && cur + 3 < limit ) - { - if ( cur[1] == 'e' && - cur[2] == 'f' && - t42_is_space( cur[3] ) ) - { - FT_TRACE6(( "encoding end\n" )); - cur += 3; - break; - } - } - if ( *cur == ']' ) - { - FT_TRACE6(( "encoding end\n" )); - cur++; - break; - } - - /* check whether we've found an entry */ - if ( ft_isdigit( *cur ) || only_immediates ) - { - FT_Int charcode; - - - if ( only_immediates ) - charcode = n; - else - { - charcode = (FT_Int)T1_ToInt( parser ); - T1_Skip_Spaces( parser ); - } - - cur = parser->root.cursor; - - if ( *cur == '/' && cur + 2 < limit && n < count ) - { - FT_PtrDist len; - - - cur++; - - parser->root.cursor = cur; - T1_Skip_PS_Token( parser ); - - len = parser->root.cursor - cur; - - parser->root.error = T1_Add_Table( char_table, charcode, - cur, len + 1 ); - char_table->elements[charcode][len] = '\0'; - if ( parser->root.error ) - return; - - n++; - } - } - else - T1_Skip_PS_Token( parser ); - - T1_Skip_Spaces( parser ); - } - - face->type1.encoding_type = T1_ENCODING_TYPE_ARRAY; - parser->root.cursor = cur; - } - - /* Otherwise, we should have either `StandardEncoding', */ - /* `ExpertEncoding', or `ISOLatin1Encoding' */ - else - { - if ( cur + 17 < limit && - ft_strncmp( (const char*)cur, "StandardEncoding", 16 ) == 0 ) - face->type1.encoding_type = T1_ENCODING_TYPE_STANDARD; - - else if ( cur + 15 < limit && - ft_strncmp( (const char*)cur, "ExpertEncoding", 14 ) == 0 ) - face->type1.encoding_type = T1_ENCODING_TYPE_EXPERT; - - else if ( cur + 18 < limit && - ft_strncmp( (const char*)cur, "ISOLatin1Encoding", 17 ) == 0 ) - face->type1.encoding_type = T1_ENCODING_TYPE_ISOLATIN1; - - else - { - FT_ERROR(( "t42_parse_encoding: invalid token!\n" )); - parser->root.error = T42_Err_Invalid_File_Format; - } - } - } - - - typedef enum - { - BEFORE_START, - BEFORE_TABLE_DIR, - OTHER_TABLES - - } T42_Load_Status; - - - static void - t42_parse_sfnts( T42_Face face, - T42_Loader loader ) - { - T42_Parser parser = &loader->parser; - FT_Memory memory = parser->root.memory; - FT_Byte* cur; - FT_Byte* limit = parser->root.limit; - FT_Error error; - FT_Int num_tables = 0; - FT_ULong count, ttf_size = 0; - - FT_Long n, string_size, old_string_size, real_size; - FT_Byte* string_buf = NULL; - FT_Bool alloc = 0; - - T42_Load_Status status; - - - /* The format is */ - /* */ - /* /sfnts [ <hexstring> <hexstring> ... ] def */ - /* */ - /* or */ - /* */ - /* /sfnts [ */ - /* <num_bin_bytes> RD <binary data> */ - /* <num_bin_bytes> RD <binary data> */ - /* ... */ - /* ] def */ - /* */ - /* with exactly one space after the `RD' token. */ - - T1_Skip_Spaces( parser ); - - if ( parser->root.cursor >= limit || *parser->root.cursor++ != '[' ) - { - FT_ERROR(( "t42_parse_sfnts: can't find begin of sfnts vector!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - - T1_Skip_Spaces( parser ); - status = BEFORE_START; - string_size = 0; - old_string_size = 0; - count = 0; - - while ( parser->root.cursor < limit ) - { - cur = parser->root.cursor; - - if ( *cur == ']' ) - { - parser->root.cursor++; - goto Exit; - } - - else if ( *cur == '<' ) - { - T1_Skip_PS_Token( parser ); - if ( parser->root.error ) - goto Exit; - - /* don't include delimiters */ - string_size = (FT_Long)( ( parser->root.cursor - cur - 2 + 1 ) / 2 ); - if ( FT_REALLOC( string_buf, old_string_size, string_size ) ) - goto Fail; - - alloc = 1; - - parser->root.cursor = cur; - (void)T1_ToBytes( parser, string_buf, string_size, &real_size, 1 ); - old_string_size = string_size; - string_size = real_size; - } - - else if ( ft_isdigit( *cur ) ) - { - string_size = T1_ToInt( parser ); - - T1_Skip_PS_Token( parser ); /* `RD' */ - - string_buf = parser->root.cursor + 1; /* one space after `RD' */ - - parser->root.cursor += string_size + 1; - if ( parser->root.cursor >= limit ) - { - FT_ERROR(( "t42_parse_sfnts: too many binary data!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - } - - /* A string can have a trailing zero byte for padding. Ignore it. */ - if ( string_buf[string_size - 1] == 0 && ( string_size % 2 == 1 ) ) - string_size--; - - for ( n = 0; n < string_size; n++ ) - { - switch ( status ) - { - case BEFORE_START: - /* load offset table, 12 bytes */ - if ( count < 12 ) - { - face->ttf_data[count++] = string_buf[n]; - continue; - } - else - { - num_tables = 16 * face->ttf_data[4] + face->ttf_data[5]; - status = BEFORE_TABLE_DIR; - ttf_size = 12 + 16 * num_tables; - - if ( FT_REALLOC( face->ttf_data, 12, ttf_size ) ) - goto Fail; - } - /* fall through */ - - case BEFORE_TABLE_DIR: - /* the offset table is read; read the table directory */ - if ( count < ttf_size ) - { - face->ttf_data[count++] = string_buf[n]; - continue; - } - else - { - int i; - FT_ULong len; - - - for ( i = 0; i < num_tables; i++ ) - { - FT_Byte* p = face->ttf_data + 12 + 16 * i + 12; - - - len = FT_PEEK_ULONG( p ); - - /* Pad to a 4-byte boundary length */ - ttf_size += ( len + 3 ) & ~3; - } - - status = OTHER_TABLES; - face->ttf_size = ttf_size; - - if ( FT_REALLOC( face->ttf_data, 12 + 16 * num_tables, - ttf_size + 1 ) ) - goto Fail; - } - /* fall through */ - - case OTHER_TABLES: - /* all other tables are just copied */ - if ( count >= ttf_size ) - { - FT_ERROR(( "t42_parse_sfnts: too many binary data!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - face->ttf_data[count++] = string_buf[n]; - } - } - - T1_Skip_Spaces( parser ); - } - - /* if control reaches this point, the format was not valid */ - error = T42_Err_Invalid_File_Format; - - Fail: - parser->root.error = error; - - Exit: - if ( alloc ) - FT_FREE( string_buf ); - } - - - static void - t42_parse_charstrings( T42_Face face, - T42_Loader loader ) - { - T42_Parser parser = &loader->parser; - PS_Table code_table = &loader->charstrings; - PS_Table name_table = &loader->glyph_names; - PS_Table swap_table = &loader->swap_table; - FT_Memory memory = parser->root.memory; - FT_Error error; - - PSAux_Service psaux = (PSAux_Service)face->psaux; - - FT_Byte* cur; - FT_Byte* limit = parser->root.limit; - FT_UInt n; - FT_UInt notdef_index = 0; - FT_Byte notdef_found = 0; - - - T1_Skip_Spaces( parser ); - - if ( parser->root.cursor >= limit ) - { - FT_ERROR(( "t42_parse_charstrings: out of bounds!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - - if ( ft_isdigit( *parser->root.cursor ) ) - { - loader->num_glyphs = (FT_UInt)T1_ToInt( parser ); - if ( parser->root.error ) - return; - } - else if ( *parser->root.cursor == '<' ) - { - /* We have `<< ... >>'. Count the number of `/' in the dictionary */ - /* to get its size. */ - FT_UInt count = 0; - - - T1_Skip_PS_Token( parser ); - T1_Skip_Spaces( parser ); - cur = parser->root.cursor; - - while ( parser->root.cursor < limit ) - { - if ( *parser->root.cursor == '/' ) - count++; - else if ( *parser->root.cursor == '>' ) - { - loader->num_glyphs = count; - parser->root.cursor = cur; /* rewind */ - break; - } - T1_Skip_PS_Token( parser ); - T1_Skip_Spaces( parser ); - } - } - else - { - FT_ERROR(( "t42_parse_charstrings: invalid token!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - - if ( parser->root.cursor >= limit ) - { - FT_ERROR(( "t42_parse_charstrings: out of bounds!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - - /* initialize tables */ - - error = psaux->ps_table_funcs->init( code_table, - loader->num_glyphs, - memory ); - if ( error ) - goto Fail; - - error = psaux->ps_table_funcs->init( name_table, - loader->num_glyphs, - memory ); - if ( error ) - goto Fail; - - /* Initialize table for swapping index notdef_index and */ - /* index 0 names and codes (if necessary). */ - - error = psaux->ps_table_funcs->init( swap_table, 4, memory ); - if ( error ) - goto Fail; - - n = 0; - - for (;;) - { - /* The format is simple: */ - /* `/glyphname' + index [+ def] */ - - T1_Skip_Spaces( parser ); - - cur = parser->root.cursor; - if ( cur >= limit ) - break; - - /* We stop when we find an `end' keyword or '>' */ - if ( *cur == 'e' && - cur + 3 < limit && - cur[1] == 'n' && - cur[2] == 'd' && - t42_is_space( cur[3] ) ) - break; - if ( *cur == '>' ) - break; - - T1_Skip_PS_Token( parser ); - - if ( *cur == '/' ) - { - FT_PtrDist len; - - - if ( cur + 1 >= limit ) - { - FT_ERROR(( "t42_parse_charstrings: out of bounds!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - - cur++; /* skip `/' */ - len = parser->root.cursor - cur; - - error = T1_Add_Table( name_table, n, cur, len + 1 ); - if ( error ) - goto Fail; - - /* add a trailing zero to the name table */ - name_table->elements[n][len] = '\0'; - - /* record index of /.notdef */ - if ( *cur == '.' && - ft_strcmp( ".notdef", - (const char*)(name_table->elements[n]) ) == 0 ) - { - notdef_index = n; - notdef_found = 1; - } - - T1_Skip_Spaces( parser ); - - cur = parser->root.cursor; - - (void)T1_ToInt( parser ); - if ( parser->root.cursor >= limit ) - { - FT_ERROR(( "t42_parse_charstrings: out of bounds!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - - len = parser->root.cursor - cur; - - error = T1_Add_Table( code_table, n, cur, len + 1 ); - if ( error ) - goto Fail; - - code_table->elements[n][len] = '\0'; - - n++; - if ( n >= loader->num_glyphs ) - break; - } - } - - loader->num_glyphs = n; - - if ( !notdef_found ) - { - FT_ERROR(( "t42_parse_charstrings: no /.notdef glyph!\n" )); - error = T42_Err_Invalid_File_Format; - goto Fail; - } - - /* if /.notdef does not occupy index 0, do our magic. */ - if ( ft_strcmp( (const char*)".notdef", - (const char*)name_table->elements[0] ) ) - { - /* Swap glyph in index 0 with /.notdef glyph. First, add index 0 */ - /* name and code entries to swap_table. Then place notdef_index */ - /* name and code entries into swap_table. Then swap name and code */ - /* entries at indices notdef_index and 0 using values stored in */ - /* swap_table. */ - - /* Index 0 name */ - error = T1_Add_Table( swap_table, 0, - name_table->elements[0], - name_table->lengths [0] ); - if ( error ) - goto Fail; - - /* Index 0 code */ - error = T1_Add_Table( swap_table, 1, - code_table->elements[0], - code_table->lengths [0] ); - if ( error ) - goto Fail; - - /* Index notdef_index name */ - error = T1_Add_Table( swap_table, 2, - name_table->elements[notdef_index], - name_table->lengths [notdef_index] ); - if ( error ) - goto Fail; - - /* Index notdef_index code */ - error = T1_Add_Table( swap_table, 3, - code_table->elements[notdef_index], - code_table->lengths [notdef_index] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( name_table, notdef_index, - swap_table->elements[0], - swap_table->lengths [0] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( code_table, notdef_index, - swap_table->elements[1], - swap_table->lengths [1] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( name_table, 0, - swap_table->elements[2], - swap_table->lengths [2] ); - if ( error ) - goto Fail; - - error = T1_Add_Table( code_table, 0, - swap_table->elements[3], - swap_table->lengths [3] ); - if ( error ) - goto Fail; - - } - - return; - - Fail: - parser->root.error = error; - } - - - static FT_Error - t42_load_keyword( T42_Face face, - T42_Loader loader, - T1_Field field ) - { - FT_Error error; - void* dummy_object; - void** objects; - FT_UInt max_objects = 0; - - - /* if the keyword has a dedicated callback, call it */ - if ( field->type == T1_FIELD_TYPE_CALLBACK ) - { - field->reader( (FT_Face)face, loader ); - error = loader->parser.root.error; - goto Exit; - } - - /* now the keyword is either a simple field or a table of fields; */ - /* we are now going to take care of it */ - - switch ( field->location ) - { - case T1_FIELD_LOCATION_FONT_INFO: - dummy_object = &face->type1.font_info; - break; - - case T1_FIELD_LOCATION_BBOX: - dummy_object = &face->type1.font_bbox; - break; - - default: - dummy_object = &face->type1; - } - - objects = &dummy_object; - - if ( field->type == T1_FIELD_TYPE_INTEGER_ARRAY || - field->type == T1_FIELD_TYPE_FIXED_ARRAY ) - error = T1_Load_Field_Table( &loader->parser, field, - objects, max_objects, 0 ); - else - error = T1_Load_Field( &loader->parser, field, - objects, max_objects, 0 ); - - Exit: - return error; - } - - - FT_LOCAL_DEF( FT_Error ) - t42_parse_dict( T42_Face face, - T42_Loader loader, - FT_Byte* base, - FT_Long size ) - { - T42_Parser parser = &loader->parser; - FT_Byte* limit; - FT_Int n_keywords = (FT_Int)( sizeof ( t42_keywords ) / - sizeof ( t42_keywords[0] ) ); - - - parser->root.cursor = base; - parser->root.limit = base + size; - parser->root.error = T42_Err_Ok; - - limit = parser->root.limit; - - T1_Skip_Spaces( parser ); - - while ( parser->root.cursor < limit ) - { - FT_Byte* cur; - - - cur = parser->root.cursor; - - /* look for `FontDirectory' which causes problems for some fonts */ - if ( *cur == 'F' && cur + 25 < limit && - ft_strncmp( (char*)cur, "FontDirectory", 13 ) == 0 ) - { - FT_Byte* cur2; - - - /* skip the `FontDirectory' keyword */ - T1_Skip_PS_Token( parser ); - T1_Skip_Spaces ( parser ); - cur = cur2 = parser->root.cursor; - - /* look up the `known' keyword */ - while ( cur < limit ) - { - if ( *cur == 'k' && cur + 5 < limit && - ft_strncmp( (char*)cur, "known", 5 ) == 0 ) - break; - - T1_Skip_PS_Token( parser ); - T1_Skip_Spaces ( parser ); - cur = parser->root.cursor; - } - - if ( cur < limit ) - { - T1_TokenRec token; - - - /* skip the `known' keyword and the token following it */ - T1_Skip_PS_Token( parser ); - T1_ToToken( parser, &token ); - - /* if the last token was an array, skip it! */ - if ( token.type == T1_TOKEN_TYPE_ARRAY ) - cur2 = parser->root.cursor; - } - parser->root.cursor = cur2; - } - - /* look for immediates */ - else if ( *cur == '/' && cur + 2 < limit ) - { - FT_PtrDist len; - - - cur++; - - parser->root.cursor = cur; - T1_Skip_PS_Token( parser ); - - len = parser->root.cursor - cur; - - if ( len > 0 && len < 22 && parser->root.cursor < limit ) - { - int i; - - - /* now compare the immediate name to the keyword table */ - - /* loop through all known keywords */ - for ( i = 0; i < n_keywords; i++ ) - { - T1_Field keyword = (T1_Field)&t42_keywords[i]; - FT_Byte *name = (FT_Byte*)keyword->ident; - - - if ( !name ) - continue; - - if ( cur[0] == name[0] && - len == ft_strlen( (const char *)name ) && - ft_memcmp( cur, name, len ) == 0 ) - { - /* we found it -- run the parsing callback! */ - parser->root.error = t42_load_keyword( face, - loader, - keyword ); - if ( parser->root.error ) - return parser->root.error; - break; - } - } - } - } - else - T1_Skip_PS_Token( parser ); - - T1_Skip_Spaces( parser ); - } - - return parser->root.error; - } - - - FT_LOCAL_DEF( void ) - t42_loader_init( T42_Loader loader, - T42_Face face ) - { - FT_UNUSED( face ); - - FT_MEM_ZERO( loader, sizeof ( *loader ) ); - loader->num_glyphs = 0; - loader->num_chars = 0; - - /* initialize the tables -- simply set their `init' field to 0 */ - loader->encoding_table.init = 0; - loader->charstrings.init = 0; - loader->glyph_names.init = 0; - } - - - FT_LOCAL_DEF( void ) - t42_loader_done( T42_Loader loader ) - { - T42_Parser parser = &loader->parser; - - - /* finalize tables */ - T1_Release_Table( &loader->encoding_table ); - T1_Release_Table( &loader->charstrings ); - T1_Release_Table( &loader->glyph_names ); - T1_Release_Table( &loader->swap_table ); - - /* finalize parser */ - t42_parser_done( parser ); - } - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/t42parse.h b/nx-X11/extras/freetype2/src/type42/t42parse.h deleted file mode 100644 index f77ec4af4..000000000 --- a/nx-X11/extras/freetype2/src/type42/t42parse.h +++ /dev/null @@ -1,90 +0,0 @@ -/***************************************************************************/ -/* */ -/* t42parse.h */ -/* */ -/* Type 42 font parser (specification). */ -/* */ -/* Copyright 2002, 2003 by Roberto Alameda. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T42PARSE_H__ -#define __T42PARSE_H__ - - -#include "t42objs.h" -#include FT_INTERNAL_POSTSCRIPT_AUX_H - - -FT_BEGIN_HEADER - - typedef struct T42_ParserRec_ - { - PS_ParserRec root; - FT_Stream stream; - - FT_Byte* base_dict; - FT_Long base_len; - - FT_Bool in_memory; - - } T42_ParserRec, *T42_Parser; - - - typedef struct T42_Loader_ - { - T42_ParserRec parser; /* parser used to read the stream */ - - FT_UInt num_chars; /* number of characters in encoding */ - PS_TableRec encoding_table; /* PS_Table used to store the */ - /* encoding character names */ - - FT_UInt num_glyphs; - PS_TableRec glyph_names; - PS_TableRec charstrings; - PS_TableRec swap_table; /* For moving .notdef glyph to index 0. */ - - } T42_LoaderRec, *T42_Loader; - - - FT_LOCAL( FT_Error ) - t42_parser_init( T42_Parser parser, - FT_Stream stream, - FT_Memory memory, - PSAux_Service psaux ); - - FT_LOCAL( void ) - t42_parser_done( T42_Parser parser ); - - - FT_LOCAL( FT_Error ) - t42_parse_dict( T42_Face face, - T42_Loader loader, - FT_Byte* base, - FT_Long size ); - - - FT_LOCAL( void ) - t42_loader_init( T42_Loader loader, - T42_Face face ); - - FT_LOCAL( void ) - t42_loader_done( T42_Loader loader ); - - - /* */ - -FT_END_HEADER - - -#endif /* __T42PARSE_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/t42types.h b/nx-X11/extras/freetype2/src/type42/t42types.h deleted file mode 100644 index d44ac4e67..000000000 --- a/nx-X11/extras/freetype2/src/type42/t42types.h +++ /dev/null @@ -1,54 +0,0 @@ -/***************************************************************************/ -/* */ -/* t42types.h */ -/* */ -/* Type 42 font data types (specification only). */ -/* */ -/* Copyright 2002, 2003 by Roberto Alameda. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __T42TYPES_H__ -#define __T42TYPES_H__ - - -#include <ft2build.h> -#include FT_FREETYPE_H -#include FT_TYPE1_TABLES_H -#include FT_INTERNAL_TYPE1_TYPES_H -#include FT_INTERNAL_POSTSCRIPT_HINTS_H - - -FT_BEGIN_HEADER - - - typedef struct T42_FaceRec_ - { - FT_FaceRec root; - T1_FontRec type1; - const void* psnames; - const void* psaux; - const void* afm_data; - FT_Byte* ttf_data; - FT_ULong ttf_size; - FT_Face ttf_face; - FT_CharMapRec charmaprecs[2]; - FT_CharMap charmaps[2]; - PS_Unicodes unicode_map; - - } T42_FaceRec, *T42_Face; - - -FT_END_HEADER - -#endif /* __T1TYPES_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/type42/type42.c b/nx-X11/extras/freetype2/src/type42/type42.c deleted file mode 100644 index d13df56b1..000000000 --- a/nx-X11/extras/freetype2/src/type42/type42.c +++ /dev/null @@ -1,25 +0,0 @@ -/***************************************************************************/ -/* */ -/* type42.c */ -/* */ -/* FreeType Type 42 driver component. */ -/* */ -/* Copyright 2002 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - -#define FT_MAKE_OPTION_SINGLE_OBJECT - -#include <ft2build.h> -#include "t42objs.c" -#include "t42parse.c" -#include "t42drivr.c" - -/* END */ diff --git a/nx-X11/extras/freetype2/src/winfonts/Jamfile b/nx-X11/extras/freetype2/src/winfonts/Jamfile deleted file mode 100644 index a903f8938..000000000 --- a/nx-X11/extras/freetype2/src/winfonts/Jamfile +++ /dev/null @@ -1,8 +0,0 @@ -# FreeType 2 src/winfonts Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP $(FT2_SRC_DIR) winfonts ; - -Library $(FT2_LIB) : winfnt.c ; - -# end of src/winfonts Jamfile diff --git a/nx-X11/extras/freetype2/src/winfonts/descrip.mms b/nx-X11/extras/freetype2/src/winfonts/descrip.mms deleted file mode 100644 index 475cdbb6b..000000000 --- a/nx-X11/extras/freetype2/src/winfonts/descrip.mms +++ /dev/null @@ -1,23 +0,0 @@ -# -# FreeType 2 Windows FNT/FON driver compilation rules for VMS -# - - -# Copyright 2001, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.winfonts]) - -OBJS=winfnt.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF diff --git a/nx-X11/extras/freetype2/src/winfonts/fnterrs.h b/nx-X11/extras/freetype2/src/winfonts/fnterrs.h deleted file mode 100644 index ea8090971..000000000 --- a/nx-X11/extras/freetype2/src/winfonts/fnterrs.h +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************/ -/* */ -/* fnterrs.h */ -/* */ -/* Win FNT/FON error codes (specification only). */ -/* */ -/* Copyright 2001 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - - /*************************************************************************/ - /* */ - /* This file is used to define the Windows FNT/FON error enumeration */ - /* constants. */ - /* */ - /*************************************************************************/ - -#ifndef __FNTERRS_H__ -#define __FNTERRS_H__ - -#include FT_MODULE_ERRORS_H - -#undef __FTERRORS_H__ - -#define FT_ERR_PREFIX FNT_Err_ -#define FT_ERR_BASE FT_Mod_Err_Winfonts - -#include FT_ERRORS_H - -#endif /* __FNTERRS_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/winfonts/module.mk b/nx-X11/extras/freetype2/src/winfonts/module.mk deleted file mode 100644 index 99be845c1..000000000 --- a/nx-X11/extras/freetype2/src/winfonts/module.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# FreeType 2 Windows FNT/FON module definition -# - - -# Copyright 1996-2000 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -make_module_list: add_windows_driver - -add_windows_driver: - $(OPEN_DRIVER)winfnt_driver_class$(CLOSE_DRIVER) - $(ECHO_DRIVER)winfnt $(ECHO_DRIVER_DESC)Windows bitmap fonts with extension *.fnt or *.fon$(ECHO_DRIVER_DONE) - diff --git a/nx-X11/extras/freetype2/src/winfonts/rules.mk b/nx-X11/extras/freetype2/src/winfonts/rules.mk deleted file mode 100644 index 71a7df2d8..000000000 --- a/nx-X11/extras/freetype2/src/winfonts/rules.mk +++ /dev/null @@ -1,65 +0,0 @@ -# -# FreeType 2 Windows FNT/FON driver configuration rules -# - - -# Copyright 1996-2000, 2001, 2003 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -# Windows driver directory -# -FNT_DIR := $(SRC_DIR)/winfonts - - -FNT_COMPILE := $(FT_COMPILE) $I$(subst /,$(COMPILER_SEP),$(FNT_DIR)) - - -# Windows driver sources (i.e., C files) -# -FNT_DRV_SRC := $(FNT_DIR)/winfnt.c - -# Windows driver headers -# -FNT_DRV_H := $(FNT_DRV_SRC:%.c=%.h) \ - $(FNT_DIR)/fnterrs.h - - -# Windows driver object(s) -# -# FNT_DRV_OBJ_M is used during `multi' builds -# FNT_DRV_OBJ_S is used during `single' builds -# -FNT_DRV_OBJ_M := $(FNT_DRV_SRC:$(FNT_DIR)/%.c=$(OBJ_DIR)/%.$O) -FNT_DRV_OBJ_S := $(OBJ_DIR)/winfnt.$O - -# Windows driver source file for single build -# -FNT_DRV_SRC_S := $(FNT_DIR)/winfnt.c - - -# Windows driver - single object -# -$(FNT_DRV_OBJ_S): $(FNT_DRV_SRC_S) $(FNT_DRV_SRC) $(FREETYPE_H) $(FNT_DRV_H) - $(FNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $(FNT_DRV_SRC_S)) - - -# Windows driver - multiple objects -# -$(OBJ_DIR)/%.$O: $(FNT_DIR)/%.c $(FREETYPE_H) $(FNT_DRV_H) - $(FNT_COMPILE) $T$(subst /,$(COMPILER_SEP),$@ $<) - - -# update main driver object lists -# -DRV_OBJS_S += $(FNT_DRV_OBJ_S) -DRV_OBJS_M += $(FNT_DRV_OBJ_M) - - -# EOF diff --git a/nx-X11/extras/freetype2/src/winfonts/winfnt.c b/nx-X11/extras/freetype2/src/winfonts/winfnt.c deleted file mode 100644 index 92174aedb..000000000 --- a/nx-X11/extras/freetype2/src/winfonts/winfnt.c +++ /dev/null @@ -1,754 +0,0 @@ -/***************************************************************************/ -/* */ -/* winfnt.c */ -/* */ -/* FreeType font driver for Windows FNT/FON files */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#include <ft2build.h> -#include FT_WINFONTS_H -#include FT_INTERNAL_DEBUG_H -#include FT_INTERNAL_STREAM_H -#include FT_INTERNAL_OBJECTS_H - -#include "winfnt.h" -#include "fnterrs.h" -#include FT_SERVICE_WINFNT_H -#include FT_SERVICE_XFREE86_NAME_H - - /*************************************************************************/ - /* */ - /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ - /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ - /* messages during execution. */ - /* */ -#undef FT_COMPONENT -#define FT_COMPONENT trace_winfnt - - - static const FT_Frame_Field winmz_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE WinMZ_HeaderRec - - FT_FRAME_START( 64 ), - FT_FRAME_USHORT_LE ( magic ), - FT_FRAME_SKIP_BYTES( 29 * 2 ), - FT_FRAME_ULONG_LE ( lfanew ), - FT_FRAME_END - }; - - static const FT_Frame_Field winne_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE WinNE_HeaderRec - - FT_FRAME_START( 40 ), - FT_FRAME_USHORT_LE ( magic ), - FT_FRAME_SKIP_BYTES( 34 ), - FT_FRAME_USHORT_LE ( resource_tab_offset ), - FT_FRAME_USHORT_LE ( rname_tab_offset ), - FT_FRAME_END - }; - - static const FT_Frame_Field winfnt_header_fields[] = - { -#undef FT_STRUCTURE -#define FT_STRUCTURE FT_WinFNT_HeaderRec - - FT_FRAME_START( 148 ), - FT_FRAME_USHORT_LE( version ), - FT_FRAME_ULONG_LE ( file_size ), - FT_FRAME_BYTES ( copyright, 60 ), - FT_FRAME_USHORT_LE( file_type ), - FT_FRAME_USHORT_LE( nominal_point_size ), - FT_FRAME_USHORT_LE( vertical_resolution ), - FT_FRAME_USHORT_LE( horizontal_resolution ), - FT_FRAME_USHORT_LE( ascent ), - FT_FRAME_USHORT_LE( internal_leading ), - FT_FRAME_USHORT_LE( external_leading ), - FT_FRAME_BYTE ( italic ), - FT_FRAME_BYTE ( underline ), - FT_FRAME_BYTE ( strike_out ), - FT_FRAME_USHORT_LE( weight ), - FT_FRAME_BYTE ( charset ), - FT_FRAME_USHORT_LE( pixel_width ), - FT_FRAME_USHORT_LE( pixel_height ), - FT_FRAME_BYTE ( pitch_and_family ), - FT_FRAME_USHORT_LE( avg_width ), - FT_FRAME_USHORT_LE( max_width ), - FT_FRAME_BYTE ( first_char ), - FT_FRAME_BYTE ( last_char ), - FT_FRAME_BYTE ( default_char ), - FT_FRAME_BYTE ( break_char ), - FT_FRAME_USHORT_LE( bytes_per_row ), - FT_FRAME_ULONG_LE ( device_offset ), - FT_FRAME_ULONG_LE ( face_name_offset ), - FT_FRAME_ULONG_LE ( bits_pointer ), - FT_FRAME_ULONG_LE ( bits_offset ), - FT_FRAME_BYTE ( reserved ), - FT_FRAME_ULONG_LE ( flags ), - FT_FRAME_USHORT_LE( A_space ), - FT_FRAME_USHORT_LE( B_space ), - FT_FRAME_USHORT_LE( C_space ), - FT_FRAME_ULONG_LE ( color_table_offset ), - FT_FRAME_BYTES ( reserved1, 16 ), - FT_FRAME_END - }; - - - static void - fnt_font_done( FNT_Face face ) - { - FT_Memory memory = FT_FACE( face )->memory; - FT_Stream stream = FT_FACE( face )->stream; - FNT_Font font = face->font; - - - if ( !font ) - return; - - if ( font->fnt_frame ) - FT_FRAME_RELEASE( font->fnt_frame ); - FT_FREE( font->family_name ); - - FT_FREE( font ); - face->font = 0; - } - - - static FT_Error - fnt_font_load( FNT_Font font, - FT_Stream stream ) - { - FT_Error error; - FT_WinFNT_Header header = &font->header; - FT_Bool new_format; - FT_UInt size; - - - /* first of all, read the FNT header */ - if ( FT_STREAM_SEEK( font->offset ) || - FT_STREAM_READ_FIELDS( winfnt_header_fields, header ) ) - goto Exit; - - /* check header */ - if ( header->version != 0x200 && - header->version != 0x300 ) - { - FT_TRACE2(( "[not a valid FNT file]\n" )); - error = FNT_Err_Unknown_File_Format; - goto Exit; - } - - new_format = FT_BOOL( font->header.version == 0x300 ); - size = new_format ? 148 : 118; - - if ( header->file_size < size ) - { - FT_TRACE2(( "[not a valid FNT file]\n" )); - error = FNT_Err_Unknown_File_Format; - goto Exit; - } - - /* Version 2 doesn't have these fields */ - if ( header->version == 0x200 ) - { - header->flags = 0; - header->A_space = 0; - header->B_space = 0; - header->C_space = 0; - - header->color_table_offset = 0; - } - - if ( header->file_type & 1 ) - { - FT_TRACE2(( "[can't handle vector FNT fonts]\n" )); - error = FNT_Err_Unknown_File_Format; - goto Exit; - } - - /* this is a FNT file/table; extract its frame */ - if ( FT_STREAM_SEEK( font->offset ) || - FT_FRAME_EXTRACT( header->file_size, font->fnt_frame ) ) - goto Exit; - - Exit: - return error; - } - - - static FT_Error - fnt_face_get_dll_font( FNT_Face face, - FT_Int face_index ) - { - FT_Error error; - FT_Stream stream = FT_FACE( face )->stream; - FT_Memory memory = FT_FACE( face )->memory; - WinMZ_HeaderRec mz_header; - - - face->font = 0; - - /* does it begin with an MZ header? */ - if ( FT_STREAM_SEEK( 0 ) || - FT_STREAM_READ_FIELDS( winmz_header_fields, &mz_header ) ) - goto Exit; - - error = FNT_Err_Unknown_File_Format; - if ( mz_header.magic == WINFNT_MZ_MAGIC ) - { - /* yes, now look for an NE header in the file */ - WinNE_HeaderRec ne_header; - - - if ( FT_STREAM_SEEK( mz_header.lfanew ) || - FT_STREAM_READ_FIELDS( winne_header_fields, &ne_header ) ) - goto Exit; - - error = FNT_Err_Unknown_File_Format; - if ( ne_header.magic == WINFNT_NE_MAGIC ) - { - /* good, now look into the resource table for each FNT resource */ - FT_ULong res_offset = mz_header.lfanew + - ne_header.resource_tab_offset; - FT_UShort size_shift; - FT_UShort font_count = 0; - FT_ULong font_offset = 0; - - - if ( FT_STREAM_SEEK( res_offset ) || - FT_FRAME_ENTER( ne_header.rname_tab_offset - - ne_header.resource_tab_offset ) ) - goto Exit; - - size_shift = FT_GET_USHORT_LE(); - - for (;;) - { - FT_UShort type_id, count; - - - type_id = FT_GET_USHORT_LE(); - if ( !type_id ) - break; - - count = FT_GET_USHORT_LE(); - - if ( type_id == 0x8008U ) - { - font_count = count; - font_offset = (FT_ULong)( FT_STREAM_POS() + 4 + - ( stream->cursor - stream->limit ) ); - break; - } - - stream->cursor += 4 + count * 12; - } - - FT_FRAME_EXIT(); - - if ( !font_count || !font_offset ) - { - FT_TRACE2(( "this file doesn't contain any FNT resources!\n" )); - error = FNT_Err_Unknown_File_Format; - goto Exit; - } - - face->root.num_faces = font_count; - - if ( face_index >= font_count ) - { - error = FNT_Err_Bad_Argument; - goto Exit; - } - - if ( FT_NEW( face->font ) ) - goto Exit; - - if ( FT_STREAM_SEEK( font_offset + face_index * 12 ) || - FT_FRAME_ENTER( 12 ) ) - goto Fail; - - face->font->offset = (FT_ULong)FT_GET_USHORT_LE() << size_shift; - face->font->fnt_size = (FT_ULong)FT_GET_USHORT_LE() << size_shift; - face->font->size_shift = size_shift; - - stream->cursor += 8; - - FT_FRAME_EXIT(); - - error = fnt_font_load( face->font, stream ); - } - } - - Fail: - if ( error ) - fnt_font_done( face ); - - Exit: - return error; - } - - - typedef struct FNT_CMapRec_ - { - FT_CMapRec cmap; - FT_UInt32 first; - FT_UInt32 count; - - } FNT_CMapRec, *FNT_CMap; - - - static FT_Error - fnt_cmap_init( FNT_CMap cmap ) - { - FNT_Face face = (FNT_Face)FT_CMAP_FACE( cmap ); - FNT_Font font = face->font; - - - cmap->first = (FT_UInt32) font->header.first_char; - cmap->count = (FT_UInt32)( font->header.last_char - cmap->first + 1 ); - - return 0; - } - - - static FT_UInt - fnt_cmap_char_index( FNT_CMap cmap, - FT_UInt32 char_code ) - { - FT_UInt gindex = 0; - - - char_code -= cmap->first; - if ( char_code < cmap->count ) - gindex = char_code + 1; /* we artificially increase the glyph index; */ - /* FNT_Load_Glyph reverts to the right one */ - return gindex; - } - - - static FT_UInt - fnt_cmap_char_next( FNT_CMap cmap, - FT_UInt32 *pchar_code ) - { - FT_UInt gindex = 0; - FT_UInt32 result = 0; - FT_UInt32 char_code = *pchar_code + 1; - - - if ( char_code <= cmap->first ) - { - result = cmap->first; - gindex = 1; - } - else - { - char_code -= cmap->first; - if ( char_code < cmap->count ) - { - result = cmap->first + char_code; - gindex = char_code + 1; - } - } - - *pchar_code = result; - return gindex; - } - - - static const FT_CMap_ClassRec fnt_cmap_class_rec = - { - sizeof ( FNT_CMapRec ), - - (FT_CMap_InitFunc) fnt_cmap_init, - (FT_CMap_DoneFunc) NULL, - (FT_CMap_CharIndexFunc)fnt_cmap_char_index, - (FT_CMap_CharNextFunc) fnt_cmap_char_next - }; - - static FT_CMap_Class const fnt_cmap_class = &fnt_cmap_class_rec; - - - static void - FNT_Face_Done( FNT_Face face ) - { - FT_Memory memory = FT_FACE_MEMORY( face ); - - - fnt_font_done( face ); - - FT_FREE( face->root.available_sizes ); - face->root.num_fixed_sizes = 0; - } - - - static FT_Error - FNT_Face_Init( FT_Stream stream, - FNT_Face face, - FT_Int face_index, - FT_Int num_params, - FT_Parameter* params ) - { - FT_Error error; - FT_Memory memory = FT_FACE_MEMORY( face ); - - FT_UNUSED( num_params ); - FT_UNUSED( params ); - - - /* try to load font from a DLL */ - error = fnt_face_get_dll_font( face, face_index ); - if ( error ) - { - /* this didn't work; try to load a single FNT font */ - FNT_Font font; - - - if ( FT_NEW( face->font ) ) - goto Exit; - - face->root.num_faces = 1; - - font = face->font; - font->offset = 0; - font->fnt_size = stream->size; - - error = fnt_font_load( font, stream ); - if ( error ) - goto Fail; - } - - /* we now need to fill the root FT_Face fields */ - /* with relevant information */ - { - FT_Face root = FT_FACE( face ); - FNT_Font font = face->font; - FT_PtrDist family_size; - - - root->face_flags = FT_FACE_FLAG_FIXED_SIZES | - FT_FACE_FLAG_HORIZONTAL; - - if ( font->header.avg_width == font->header.max_width ) - root->face_flags |= FT_FACE_FLAG_FIXED_WIDTH; - - if ( font->header.italic ) - root->style_flags |= FT_STYLE_FLAG_ITALIC; - - if ( font->header.weight >= 800 ) - root->style_flags |= FT_STYLE_FLAG_BOLD; - - /* set up the `fixed_sizes' array */ - if ( FT_NEW_ARRAY( root->available_sizes, 1 ) ) - goto Fail; - - root->num_fixed_sizes = 1; - - { - FT_Bitmap_Size* bsize = root->available_sizes; - - - bsize->width = font->header.avg_width; - bsize->height = (FT_Short)( - font->header.pixel_height + font->header.external_leading ); - bsize->size = font->header.nominal_point_size << 6; - bsize->x_ppem = font->header.pixel_width << 6; - bsize->y_ppem = font->header.pixel_height << 6; - } - - { - FT_CharMapRec charmap; - - - charmap.encoding = FT_ENCODING_NONE; - charmap.platform_id = 0; - charmap.encoding_id = 0; - charmap.face = root; - - if ( font->header.charset == FT_WinFNT_ID_MAC ) - { - charmap.encoding = FT_ENCODING_APPLE_ROMAN; - charmap.platform_id = 1; -/* charmap.encoding_id = 0; */ - } - - error = FT_CMap_New( fnt_cmap_class, - NULL, - &charmap, - NULL ); - if ( error ) - goto Fail; - - /* Select default charmap */ - if ( root->num_charmaps ) - root->charmap = root->charmaps[0]; - } - - /* setup remaining flags */ - - /* reserve one slot for the .notdef glyph at index 0 */ - root->num_glyphs = font->header.last_char - - font->header.first_char + 1 + 1; - - /* Some broken fonts don't delimit the face name with a final */ - /* NULL byte -- the frame is erroneously one byte too small. */ - /* We thus allocate one more byte, setting it explicitly to */ - /* zero. */ - family_size = font->header.file_size - font->header.face_name_offset; - if ( FT_ALLOC( font->family_name, family_size + 1 ) ) - goto Fail; - FT_MEM_COPY( font->family_name, - font->fnt_frame + font->header.face_name_offset, - family_size ); - font->family_name[family_size] = '\0'; - if ( FT_REALLOC( font->family_name, - family_size, - ft_strlen( font->family_name ) + 1 ) ) - goto Fail; - root->family_name = font->family_name; - root->style_name = (char *)"Regular"; - - if ( root->style_flags & FT_STYLE_FLAG_BOLD ) - { - if ( root->style_flags & FT_STYLE_FLAG_ITALIC ) - root->style_name = (char *)"Bold Italic"; - else - root->style_name = (char *)"Bold"; - } - else if ( root->style_flags & FT_STYLE_FLAG_ITALIC ) - root->style_name = (char *)"Italic"; - } - goto Exit; - - Fail: - FNT_Face_Done( face ); - - Exit: - return error; - } - - - static FT_Error - FNT_Size_Set_Pixels( FT_Size size ) - { - FNT_Face face = (FNT_Face)FT_SIZE_FACE( size ); - FT_Face root = FT_FACE( face ); - - - if ( size->metrics.y_ppem == root->available_sizes->y_ppem >> 6 ) - { - FNT_Font font = face->font; - - - size->metrics.ascender = font->header.ascent * 64; - size->metrics.descender = -( font->header.pixel_height - - font->header.ascent ) * 64; - size->metrics.height = font->header.pixel_height * 64; - size->metrics.max_advance = font->header.max_width * 64; - - return FNT_Err_Ok; - } - else - return FNT_Err_Invalid_Pixel_Size; - } - - - static FT_Error - FNT_Load_Glyph( FT_GlyphSlot slot, - FT_Size size, - FT_UInt glyph_index, - FT_Int32 load_flags ) - { - FNT_Face face = (FNT_Face)FT_SIZE_FACE( size ); - FNT_Font font = face->font; - FT_Error error = FNT_Err_Ok; - FT_Byte* p; - FT_Int len; - FT_Bitmap* bitmap = &slot->bitmap; - FT_ULong offset; - FT_Bool new_format; - - FT_UNUSED( load_flags ); - - - if ( !face || !font ) - { - error = FNT_Err_Invalid_Argument; - goto Exit; - } - - if ( glyph_index > 0 ) - glyph_index--; /* revert to real index */ - else - glyph_index = font->header.default_char; /* the .notdef glyph */ - - new_format = FT_BOOL( font->header.version == 0x300 ); - len = new_format ? 6 : 4; - - /* jump to glyph entry */ - p = font->fnt_frame + ( new_format ? 148 : 118 ) + len * glyph_index; - - bitmap->width = FT_NEXT_SHORT_LE( p ); - - if ( new_format ) - offset = FT_NEXT_ULONG_LE( p ); - else - offset = FT_NEXT_USHORT_LE( p ); - - if ( offset >= font->header.file_size ) - { - FT_TRACE2(( "invalid FNT offset!\n" )); - error = FNT_Err_Invalid_File_Format; - goto Exit; - } - - /* jump to glyph data */ - p = font->fnt_frame + /* font->header.bits_offset */ + offset; - - /* allocate and build bitmap */ - { - FT_Memory memory = FT_FACE_MEMORY( slot->face ); - FT_Int pitch = ( bitmap->width + 7 ) >> 3; - FT_Byte* column; - FT_Byte* write; - - - bitmap->pitch = pitch; - bitmap->rows = font->header.pixel_height; - bitmap->pixel_mode = FT_PIXEL_MODE_MONO; - - /* note: since glyphs are stored in columns and not in rows we */ - /* can't use ft_glyphslot_set_bitmap */ - if ( FT_ALLOC( bitmap->buffer, pitch * bitmap->rows ) ) - goto Exit; - - column = (FT_Byte*)bitmap->buffer; - - for ( ; pitch > 0; pitch--, column++ ) - { - FT_Byte* limit = p + bitmap->rows; - - - for ( write = column; p < limit; p++, write += bitmap->pitch ) - *write = *p; - } - } - - slot->internal->flags = FT_GLYPH_OWN_BITMAP; - slot->bitmap_left = 0; - slot->bitmap_top = font->header.ascent; - slot->format = FT_GLYPH_FORMAT_BITMAP; - - /* now set up metrics */ - slot->metrics.width = bitmap->width << 6; - slot->metrics.height = bitmap->rows << 6; - slot->metrics.horiAdvance = bitmap->width << 6; - slot->metrics.horiBearingX = 0; - slot->metrics.horiBearingY = slot->bitmap_top << 6; - - slot->linearHoriAdvance = (FT_Fixed)bitmap->width << 16; - slot->format = FT_GLYPH_FORMAT_BITMAP; - - Exit: - return error; - } - - - static FT_Error - winfnt_get_header( FT_Face face, - FT_WinFNT_HeaderRec *aheader ) - { - FNT_Font font = ((FNT_Face)face)->font; - - - *aheader = font->header; - - return 0; - } - - - static const FT_Service_WinFntRec winfnt_service_rec = - { - winfnt_get_header - }; - - /* - * SERVICE LIST - * - */ - - static const FT_ServiceDescRec winfnt_services[] = - { - { FT_SERVICE_ID_XF86_NAME, FT_XF86_FORMAT_WINFNT }, - { FT_SERVICE_ID_WINFNT, &winfnt_service_rec }, - { NULL, NULL } - }; - - - static FT_Module_Interface - winfnt_get_service( FT_Driver driver, - const FT_String* service_id ) - { - FT_UNUSED( driver ); - - return ft_service_list_lookup( winfnt_services, service_id ); - } - - - - - FT_CALLBACK_TABLE_DEF - const FT_Driver_ClassRec winfnt_driver_class = - { - { - FT_MODULE_FONT_DRIVER | - FT_MODULE_DRIVER_NO_OUTLINES, - sizeof ( FT_DriverRec ), - - "winfonts", - 0x10000L, - 0x20000L, - - 0, - - (FT_Module_Constructor)0, - (FT_Module_Destructor) 0, - (FT_Module_Requester) winfnt_get_service - }, - - sizeof( FNT_FaceRec ), - sizeof( FT_SizeRec ), - sizeof( FT_GlyphSlotRec ), - - (FT_Face_InitFunc) FNT_Face_Init, - (FT_Face_DoneFunc) FNT_Face_Done, - (FT_Size_InitFunc) 0, - (FT_Size_DoneFunc) 0, - (FT_Slot_InitFunc) 0, - (FT_Slot_DoneFunc) 0, - - (FT_Size_ResetPointsFunc) FNT_Size_Set_Pixels, - (FT_Size_ResetPixelsFunc) FNT_Size_Set_Pixels, - (FT_Slot_LoadFunc) FNT_Load_Glyph, - - (FT_Face_GetKerningFunc) 0, - (FT_Face_AttachFunc) 0, - (FT_Face_GetAdvancesFunc) 0 - }; - - -/* END */ diff --git a/nx-X11/extras/freetype2/src/winfonts/winfnt.h b/nx-X11/extras/freetype2/src/winfonts/winfnt.h deleted file mode 100644 index 32ab6daf0..000000000 --- a/nx-X11/extras/freetype2/src/winfonts/winfnt.h +++ /dev/null @@ -1,107 +0,0 @@ -/***************************************************************************/ -/* */ -/* winfnt.h */ -/* */ -/* FreeType font driver for Windows FNT/FON files */ -/* */ -/* Copyright 1996-2001, 2002, 2003, 2004 by */ -/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -/* */ -/* This file is part of the FreeType project, and may only be used, */ -/* modified, and distributed under the terms of the FreeType project */ -/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -/* this file you indicate that you have read the license and */ -/* understand and accept it fully. */ -/* */ -/***************************************************************************/ - - -#ifndef __WINFNT_H__ -#define __WINFNT_H__ - - -#include <ft2build.h> -#include FT_WINFONTS_H -#include FT_INTERNAL_DRIVER_H - - -FT_BEGIN_HEADER - - typedef struct WinMZ_HeaderRec_ - { - FT_UShort magic; - /* skipped content */ - FT_UShort lfanew; - - } WinMZ_HeaderRec; - - - typedef struct WinNE_HeaderRec_ - { - FT_UShort magic; - /* skipped content */ - FT_UShort resource_tab_offset; - FT_UShort rname_tab_offset; - - } WinNE_HeaderRec; - - - typedef struct WinNameInfoRec_ - { - FT_UShort offset; - FT_UShort length; - FT_UShort flags; - FT_UShort id; - FT_UShort handle; - FT_UShort usage; - - } WinNameInfoRec; - - - typedef struct WinResourceInfoRec_ - { - FT_UShort type_id; - FT_UShort count; - - } WinResourceInfoRec; - - -#define WINFNT_MZ_MAGIC 0x5A4D -#define WINFNT_NE_MAGIC 0x454E - - - typedef struct FNT_FontRec_ - { - FT_ULong offset; - FT_Int size_shift; - - FT_WinFNT_HeaderRec header; - - FT_Byte* fnt_frame; - FT_ULong fnt_size; - FT_String* family_name; - - } FNT_FontRec, *FNT_Font; - - - typedef struct FNT_FaceRec_ - { - FT_FaceRec root; - FNT_Font font; - - FT_CharMap charmap_handle; - FT_CharMapRec charmap; /* a single charmap per face */ - - } FNT_FaceRec, *FNT_Face; - - - FT_EXPORT_VAR( const FT_Driver_ClassRec ) winfnt_driver_class; - - -FT_END_HEADER - - -#endif /* __WINFNT_H__ */ - - -/* END */ diff --git a/nx-X11/extras/freetype2/tests/Jamfile b/nx-X11/extras/freetype2/tests/Jamfile deleted file mode 100644 index 0470922de..000000000 --- a/nx-X11/extras/freetype2/tests/Jamfile +++ /dev/null @@ -1,41 +0,0 @@ -# FreeType 2 src Jamfile (c) 2001 David Turner -# - -SubDir FT2_TOP tests ; - -test_programs = gview ; - -SubDirHdrs [ FT2_SubDir .. nirvana include ] ; - -NV_TOP = [ FT2_SubDir .. .. nirvana ] ; - -NIRVANA_LINKLIBS = $(NV_TOP)/objs/libnirvana$(SUFLIB) ; - -{ - local t ; - - for t in $(test_programs) - { - Main $(t) : $(t).c ; - - LinkLibraries $(t) : $(FT2_LIB) ; - - if $(WIN) - { - if $(TOOLSET) = MINGW - { - LINKKLIBS on $(t)$(SUFEXE) = "-luser32 -lgdi32" ; - } - else - { - LINKLIBS on $(t)$(SUFEXE) = user32.lib gdi32.lib ; - } - } - else - { - LINKLIBS on $(t)$(SUFEXE) = -L/usr/X11R6/lib -lX11 -lm ; - } - - NEEDLIBS on $(t)$(SUFEXE) += $(NIRVANA_LINKLIBS) ; - } -} diff --git a/nx-X11/extras/freetype2/tests/gview.c b/nx-X11/extras/freetype2/tests/gview.c deleted file mode 100644 index f68598512..000000000 --- a/nx-X11/extras/freetype2/tests/gview.c +++ /dev/null @@ -1,1292 +0,0 @@ -#include <nirvana.h> -#include NV_VIEWPORT_H -#include <stdio.h> - -#include <ft2build.h> -#include FT_FREETYPE_H - -/* include FreeType internals to debug hints */ -#include <../src/pshinter/pshrec.h> -#include <../src/pshinter/pshalgo.h> - -#include <../src/autohint/ahtypes.h> - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** ROOT DEFINITIONS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - - -#include <time.h> /* for clock() */ - - /* SunOS 4.1.* does not define CLOCKS_PER_SEC, so include <sys/param.h> */ - /* to get the HZ macro which is the equivalent. */ -#if defined( __sun__ ) && !defined( SVR4 ) && !defined( __SVR4 ) -#include <sys/param.h> -#define CLOCKS_PER_SEC HZ -#endif - -static int first_glyph = 0; - -static NV_Renderer renderer; -static NV_Painter painter; -static NV_Pixmap target; -static NV_Error error; -static NV_Memory memory; -static NVV_Display display; -static NVV_Surface surface; - -static FT_Library freetype; -static FT_Face face; - - -static NV_Pos glyph_scale; -static NV_Pos glyph_org_x; -static NV_Pos glyph_org_y; -static NV_Transform glyph_transform; /* font units -> device pixels */ -static NV_Transform size_transform; /* subpixels -> device pixels */ - -static NV_Scale grid_scale = 1.0; - -static int glyph_index; -static int pixel_size = 12; - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** OPTIONS, COLORS and OTHERS *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -static int option_show_axis = 1; -static int option_show_dots = 1; -static int option_show_stroke = 0; -static int option_show_glyph = 1; -static int option_show_grid = 1; -static int option_show_em = 0; -static int option_show_smooth = 1; -static int option_show_blues = 0; -static int option_show_edges = 0; -static int option_show_segments = 1; -static int option_show_links = 1; -static int option_show_indices = 0; - -static int option_show_ps_hints = 1; -static int option_show_horz_hints = 1; -static int option_show_vert_hints = 1; - - -static int option_hinting = 1; - -static char temp_message[1024]; - -static NV_Path symbol_dot = NULL; -static NV_Path symbol_circle = NULL; -static NV_Path symbol_square = NULL; -static NV_Path symbol_rect_h = NULL; -static NV_Path symbol_rect_v = NULL; - - - -#define AXIS_COLOR 0xFFFF0000 -#define GRID_COLOR 0xFFD0D0D0 -#define ON_COLOR 0xFFFF2000 -#define OFF_COLOR 0xFFFF0080 -#define STRONG_COLOR 0xFF404040 -#define INTERP_COLOR 0xFF206040 -#define SMOOTH_COLOR 0xF000B040 -#define BACKGROUND_COLOR 0xFFFFFFFF -#define TEXT_COLOR 0xFF000000 -#define EM_COLOR 0x80008000 -#define BLUES_TOP_COLOR 0x4000008F -#define BLUES_BOT_COLOR 0x40008F00 - -#define GHOST_HINT_COLOR 0xE00000FF -#define STEM_HINT_COLOR 0xE02020FF -#define STEM_JOIN_COLOR 0xE020FF20 - -#define EDGE_COLOR 0xF0704070 -#define SEGMENT_COLOR 0xF0206040 -#define LINK_COLOR 0xF0FFFF00 -#define SERIF_LINK_COLOR 0xF0FF808F - - -/* print message and abort program */ -static void -Panic( const char* message ) -{ - fprintf( stderr, "PANIC: %s\n", message ); - exit(1); -} - - -static void -init_symbols( void ) -{ - nv_path_new_rectangle( renderer, -1, -1, 3, 3, 0, 0, &symbol_square ); - nv_path_new_rectangle( renderer, -1, -6, 2, 12, 0, 0, &symbol_rect_v ); - nv_path_new_rectangle( renderer, -6, -1, 12, 2, 0, 0, &symbol_rect_h ); - - nv_path_new_circle( renderer, 0, 0, 3., &symbol_dot ); - - nv_path_stroke( symbol_dot, 0.6, - nv_path_linecap_butt, - nv_path_linejoin_miter, 1., - &symbol_circle ); - - nv_path_destroy( symbol_dot ); - - nv_path_new_circle( renderer, 0, 0, 2., &symbol_dot ); - } - - -static void -done_symbols( void ) -{ - nv_path_destroy( symbol_circle ); - nv_path_destroy( symbol_dot ); - nv_path_destroy( symbol_rect_v ); - nv_path_destroy( symbol_rect_h ); - nv_path_destroy( symbol_square ); -} - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** COMMON GRID DRAWING ROUTINES *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -static void -reset_scale( NV_Scale scale ) -{ - /* compute font units -> grid pixels scale factor */ - glyph_scale = target->width*0.75 / face->units_per_EM * scale; - - /* setup font units -> grid pixels transform */ - nv_transform_set_scale( &glyph_transform, glyph_scale, -glyph_scale ); - glyph_org_x = glyph_transform.delta.x = target->width*0.125; - glyph_org_y = glyph_transform.delta.y = target->height*0.875; - - /* setup subpixels -> grid pixels transform */ - nv_transform_set_scale( - &size_transform, - glyph_scale / nv_fromfixed( face->size->metrics.x_scale ), - -glyph_scale / nv_fromfixed( face->size->metrics.y_scale ) ); - - size_transform.delta = glyph_transform.delta; -} - - -static void -reset_size( int pixel_size, - NV_Scale scale ) -{ - FT_Set_Pixel_Sizes( face, pixel_size, pixel_size ); - reset_scale( scale ); -} - - -static void -clear_background( void ) -{ - nv_pixmap_fill_rect( target, 0, 0, target->width, target->height, - BACKGROUND_COLOR ); -} - - -static void -draw_grid( void ) -{ - int x = (int)glyph_org_x; - int y = (int)glyph_org_y; - - - /* draw grid */ - if ( option_show_grid ) - { - NV_Scale min, max, x, step; - - - /* draw vertical grid bars */ - step = 64. * size_transform.matrix.xx; - if ( step > 1. ) - { - min = max = glyph_org_x; - while ( min - step >= 0 ) min -= step; - while ( max + step < target->width ) max += step; - - for ( x = min; x <= max; x += step ) - nv_pixmap_fill_rect( target, (NV_Int)(x + .5), 0, - 1, target->height, GRID_COLOR ); - } - - /* draw horizontal grid bars */ - step = -64. * size_transform.matrix.yy; - if ( step > 1. ) - { - min = max = glyph_org_y; - while ( min - step >= 0 ) min -= step; - while ( max + step < target->height ) max += step; - - for ( x = min; x <= max; x += step ) - nv_pixmap_fill_rect( target, 0, (NV_Int)(x + .5), - target->width, 1, GRID_COLOR ); - } - } - - /* draw axis */ - if ( option_show_axis ) - { - nv_pixmap_fill_rect( target, x, 0, 1, target->height, AXIS_COLOR ); - nv_pixmap_fill_rect( target, 0, y, target->width, 1, AXIS_COLOR ); - } - - if ( option_show_em ) - { - NV_Path path; - NV_Path stroke; - NV_UInt units = (NV_UInt)face->units_per_EM; - - - nv_path_new_rectangle( renderer, 0, 0, units, units, 0, 0, &path ); - nv_path_transform( path, &glyph_transform ); - - nv_path_stroke( path, 1.5, nv_path_linecap_butt, nv_path_linejoin_miter, - 4.0, &stroke ); - - nv_painter_set_color( painter, EM_COLOR, 256 ); - nv_painter_fill_path( painter, NULL, 0, stroke ); - - nv_path_destroy( stroke ); - nv_path_destroy( path ); - } - -} - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** POSTSCRIPT GLOBALS ROUTINES *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -#include <../src/pshinter/pshglob.h> - -static void -draw_ps_blue_zones( void ) -{ - if ( option_show_blues && ps_debug_globals ) - { - PSH_Blues blues = &ps_debug_globals->blues; - PSH_Blue_Table table; - NV_Vector v; - FT_Int y1, y2; - FT_UInt count; - PSH_Blue_Zone zone; - - - /* draw top zones */ - table = &blues->normal_top; - count = table->count; - zone = table->zones; - - for ( ; count > 0; count--, zone++ ) - { - v.x = 0; - if ( !ps_debug_no_horz_hints ) - { - v.y = zone->cur_ref + zone->cur_delta; - nv_vector_transform( &v, &size_transform ); - } - else - { - v.y = zone->org_ref + zone->org_delta; - nv_vector_transform( &v, &glyph_transform ); - } - y1 = (int)(v.y + 0.5); - - v.x = 0; - if ( !ps_debug_no_horz_hints ) - { - v.y = zone->cur_ref; - nv_vector_transform( &v, &size_transform ); - } - else - { - v.y = zone->org_ref; - nv_vector_transform( &v, &glyph_transform ); - } - y2 = (int)(v.y + 0.5); - - nv_pixmap_fill_rect( target, 0, y1, - target->width, y2-y1+1, - BLUES_TOP_COLOR ); - -#if 0 - printf( "top [%.3f %.3f]\n", zone->cur_bottom/64.0, zone->cur_top/64.0 ); -#endif - } - - - /* draw bottom zones */ - table = &blues->normal_bottom; - count = table->count; - zone = table->zones; - - for ( ; count > 0; count--, zone++ ) - { - v.x = 0; - v.y = zone->cur_ref; - nv_vector_transform( &v, &size_transform ); - y1 = (int)(v.y + 0.5); - - v.x = 0; - v.y = zone->cur_ref + zone->cur_delta; - nv_vector_transform( &v, &size_transform ); - y2 = (int)(v.y + 0.5); - - nv_pixmap_fill_rect( target, 0, y1, - target->width, y2 - y1 + 1, - BLUES_BOT_COLOR ); - -#if 0 - printf( "bot [%.3f %.3f]\n", zone->cur_bottom/64.0, zone->cur_top/64.0 ); -#endif - } - } -} - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** POSTSCRIPT HINTER ALGORITHM ROUTINES *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -#include <../src/pshinter/pshalgo.h> - -static void -draw_ps_hint( PSH_Hint hint, - FT_Bool vertical ) -{ - int x1, x2; - NV_Vector v; - - - if ( pshint_vertical != vertical ) - { - if ( vertical ) - pshint_cpos = 40; - else - pshint_cpos = 10; - - pshint_vertical = vertical; - } - - if ( !vertical ) - { - if ( !option_show_vert_hints ) - return; - - v.x = hint->cur_pos; - v.y = 0; - nv_vector_transform( &v, &size_transform ); - x1 = (int)(v.x + 0.5); - - v.x = hint->cur_pos + hint->cur_len; - v.y = 0; - nv_vector_transform( &v, &size_transform ); - x2 = (int)(v.x + 0.5); - - nv_pixmap_fill_rect( target, x1, 0, 1, target->height, - psh_hint_is_ghost( hint ) - ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); - - if ( psh_hint_is_ghost( hint ) ) - { - x1 --; - x2 = x1 + 2; - } - else - nv_pixmap_fill_rect( target, x2, 0, 1, target->height, - psh_hint_is_ghost( hint ) - ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); - - nv_pixmap_fill_rect( target, x1, pshint_cpos, x2 + 1 - x1, 1, - STEM_JOIN_COLOR ); - } - else - { - if ( !option_show_horz_hints ) - return; - - v.y = hint->cur_pos; - v.x = 0; - nv_vector_transform( &v, &size_transform ); - x1 = (int)(v.y + 0.5); - - v.y = hint->cur_pos + hint->cur_len; - v.x = 0; - nv_vector_transform( &v, &size_transform ); - x2 = (int)(v.y + 0.5); - - nv_pixmap_fill_rect( target, 0, x1, target->width, 1, - psh_hint_is_ghost( hint ) - ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); - - if ( psh_hint_is_ghost( hint ) ) - { - x1 --; - x2 = x1 + 2; - } - else - nv_pixmap_fill_rect( target, 0, x2, target->width, 1, - psh_hint_is_ghost(hint) - ? GHOST_HINT_COLOR : STEM_HINT_COLOR ); - - nv_pixmap_fill_rect( target, pshint_cpos, x2, 1, x1 + 1 - x2, - STEM_JOIN_COLOR ); - } - -#if 0 - printf( "[%7.3f %7.3f] %c\n", hint->cur_pos/64.0, (hint->cur_pos+hint->cur_len)/64.0, vertical ? 'v' : 'h' ); -#endif - - pshint_cpos += 10; -} - - -static void -ps_draw_control_points( void ) -{ - if ( ps_debug_glyph ) - { - PSH_Glyph glyph = ps_debug_glyph; - PSH_Point point = glyph->points; - FT_UInt count = glyph->num_points; - NV_Transform transform, *trans = &transform; - NV_Path vert_rect; - NV_Path horz_rect; - NV_Path dot, circle; - - - for ( ; count > 0; count--, point++ ) - { - NV_Vector vec; - - - vec.x = point->cur_x; - vec.y = point->cur_y; - nv_vector_transform( &vec, &size_transform ); - - nv_transform_set_translate( trans, vec.x, vec.y ); - - if ( option_show_smooth && !psh_point_is_smooth(point) ) - { - nv_painter_set_color( painter, SMOOTH_COLOR, 256 ); - nv_painter_fill_path( painter, trans, 0, symbol_circle ); - } - - if ( option_show_horz_hints ) - { - if ( point->flags_y & PSH_POINT_STRONG ) - { - nv_painter_set_color( painter, STRONG_COLOR, 256 ); - nv_painter_fill_path( painter, trans, 0, symbol_rect_h ); - } - } - - if ( option_show_vert_hints ) - { - if ( point->flags_x & PSH_POINT_STRONG ) - { - nv_painter_set_color( painter, STRONG_COLOR, 256 ); - nv_painter_fill_path( painter, trans, 0, symbol_rect_v ); - } - } - } - } -} - - -static void -ps_print_hints( void ) -{ - if ( ps_debug_hints ) - { - FT_Int dimension; - - - for ( dimension = 1; dimension >= 0; dimension-- ) - { - PS_Dimension dim = &ps_debug_hints->dimension[ dimension ]; - PS_Mask mask = dim->masks.masks; - FT_UInt count = dim->masks.num_masks; - - - printf( "%s hints -------------------------\n", - dimension ? "vertical" : "horizontal" ); - - for ( ; count > 0; count--, mask++ ) - { - FT_UInt index; - - - printf( "mask -> %d\n", mask->end_point ); - for ( index = 0; index < mask->num_bits; index++ ) - { - if ( mask->bytes[ index >> 3 ] & (0x80 >> (index & 7)) ) - { - PS_Hint hint = dim->hints.hints + index; - - - printf( "%c [%3d %3d (%4d)]\n", dimension ? "v" : "h", - hint->pos, hint->pos + hint->len, hint->len ); - } - } - } - } - } -} - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** AUTOHINTER DRAWING ROUTINES *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -static NV_Path -ah_link_path( NV_Vector* p1, - NV_Vector* p4, - NV_Bool vertical ) -{ - NV_PathWriter writer; - NV_Vector p2, p3; - NV_Path path, stroke; - - - if ( vertical ) - { - p2.x = p4->x; - p2.y = p1->y; - - p3.x = p1->x; - p3.y = p4->y; - } - else - { - p2.x = p1->x; - p2.y = p4->y; - - p3.x = p4->x; - p3.y = p1->y; - } - - nv_path_writer_new( renderer, &writer ); - nv_path_writer_moveto( writer, p1 ); - nv_path_writer_cubicto( writer, &p2, &p3, p4 ); - nv_path_writer_end( writer ); - - path = nv_path_writer_get_path( writer ); - nv_path_writer_destroy( writer ); - - nv_path_stroke( path, 1., - nv_path_linecap_butt, nv_path_linejoin_round, - 1., &stroke ); - - nv_path_destroy( path ); - - return stroke; -} - - -static void -ah_draw_smooth_points( void ) -{ - if ( ah_debug_hinter && option_show_smooth ) - { - AH_Outline glyph = ah_debug_hinter->glyph; - FT_UInt count = glyph->num_points; - AH_Point point = glyph->points; - - - nv_painter_set_color( painter, SMOOTH_COLOR, 256 ); - - for ( ; count > 0; count--, point++ ) - { - if ( !( point->flags & AH_FLAG_WEAK_INTERPOLATION ) ) - { - NV_Transform transform, *trans = &transform; - NV_Vector vec; - - - vec.x = point->x - ah_debug_hinter->pp1.x; - vec.y = point->y; - nv_vector_transform( &vec, &size_transform ); - - nv_transform_set_translate( &transform, vec.x, vec.y ); - nv_painter_fill_path( painter, trans, 0, symbol_circle ); - } - } - } -} - - -static void -ah_draw_edges( void ) -{ - if ( ah_debug_hinter ) - { - AH_Outline glyph = ah_debug_hinter->glyph; - FT_UInt count; - AH_Edge edge; - FT_Pos pp1 = ah_debug_hinter->pp1.x; - - - nv_painter_set_color( painter, EDGE_COLOR, 256 ); - - if ( option_show_edges ) - { - /* draw vertical edges */ - if ( option_show_vert_hints ) - { - count = glyph->num_vedges; - edge = glyph->vert_edges; - for ( ; count > 0; count--, edge++ ) - { - NV_Vector vec; - NV_Pos x; - - - vec.x = edge->pos - pp1; - vec.y = 0; - - nv_vector_transform( &vec, &size_transform ); - x = (FT_Pos)( vec.x + 0.5 ); - - nv_pixmap_fill_rect( target, x, 0, 1, target->height, EDGE_COLOR ); - } - } - - /* draw horizontal edges */ - if ( option_show_horz_hints ) - { - count = glyph->num_hedges; - edge = glyph->horz_edges; - for ( ; count > 0; count--, edge++ ) - { - NV_Vector vec; - NV_Pos x; - - - vec.x = 0; - vec.y = edge->pos; - - nv_vector_transform( &vec, &size_transform ); - x = (FT_Pos)( vec.y + 0.5 ); - - nv_pixmap_fill_rect( target, 0, x, target->width, 1, EDGE_COLOR ); - } - } - } - - if ( option_show_segments ) - { - /* draw vertical segments */ - if ( option_show_vert_hints ) - { - AH_Segment seg = glyph->vert_segments; - FT_UInt count = glyph->num_vsegments; - - - for ( ; count > 0; count--, seg++ ) - { - AH_PointRec *first, *last; - NV_Vector v1, v2; - NV_Pos y1, y2, x; - - - first = seg->first; - last = seg->last; - - v1.x = v2.x = first->x - pp1; - - if ( first->y <= last->y ) - { - v1.y = first->y; - v2.y = last->y; - } - else - { - v1.y = last->y; - v2.y = first->y; - } - - nv_vector_transform( &v1, &size_transform ); - nv_vector_transform( &v2, &size_transform ); - - y1 = (NV_Pos)( v1.y + 0.5 ); - y2 = (NV_Pos)( v2.y + 0.5 ); - x = (NV_Pos)( v1.x + 0.5 ); - - nv_pixmap_fill_rect( target, x - 1, y2, 3, - FT_ABS( y1 - y2 ) + 1, SEGMENT_COLOR ); - } - } - - /* draw horizontal segments */ - if ( option_show_horz_hints ) - { - AH_Segment seg = glyph->horz_segments; - FT_UInt count = glyph->num_hsegments; - - - for ( ; count > 0; count--, seg++ ) - { - AH_PointRec *first, *last; - NV_Vector v1, v2; - NV_Pos y1, y2, x; - - - first = seg->first; - last = seg->last; - - v1.y = v2.y = first->y; - - if ( first->x <= last->x ) - { - v1.x = first->x - pp1; - v2.x = last->x - pp1; - } - else - { - v1.x = last->x - pp1; - v2.x = first->x - pp1; - } - - nv_vector_transform( &v1, &size_transform ); - nv_vector_transform( &v2, &size_transform ); - - y1 = (NV_Pos)( v1.x + 0.5 ); - y2 = (NV_Pos)( v2.x + 0.5 ); - x = (NV_Pos)( v1.y + 0.5 ); - - nv_pixmap_fill_rect( target, y1, x - 1, - FT_ABS( y1 - y2 ) + 1, 3, SEGMENT_COLOR ); - } - } - - if ( option_show_vert_hints && option_show_links ) - { - AH_Segment seg = glyph->vert_segments; - FT_UInt count = glyph->num_vsegments; - - - for ( ; count > 0; count--, seg++ ) - { - AH_Segment seg2 = NULL; - NV_Path link; - NV_Vector v1, v2; - - - if ( seg->link ) - { - if ( seg->link > seg ) - seg2 = seg->link; - } - else if ( seg->serif ) - seg2 = seg->serif; - - if ( seg2 ) - { - v1.x = seg->first->x - pp1; - v2.x = seg2->first->x - pp1; - v1.y = ( seg->first->y + seg->last->y ) / 2; - v2.y = ( seg2->first->y + seg2->last->y ) / 2; - - link = ah_link_path( &v1, &v2, 1 ); - - nv_painter_set_color( painter, - seg->serif ? SERIF_LINK_COLOR : LINK_COLOR, - 256 ); - nv_painter_fill_path( painter, &size_transform, 0, link ); - - nv_path_destroy( link ); - } - } - } - - if ( option_show_horz_hints && option_show_links ) - { - AH_Segment seg = glyph->horz_segments; - FT_UInt count = glyph->num_hsegments; - - - for ( ; count > 0; count--, seg++ ) - { - AH_Segment seg2 = NULL; - NV_Path link; - NV_Vector v1, v2; - - - if ( seg->link ) - { - if ( seg->link > seg ) - seg2 = seg->link; - } - else if ( seg->serif ) - seg2 = seg->serif; - - if ( seg2 ) - { - v1.y = seg->first->y; - v2.y = seg2->first->y; - v1.x = ( seg->first->x + seg->last->x ) / 2 - pp1; - v2.x = ( seg2->first->x + seg2->last->x ) / 2 - pp1; - - link = ah_link_path( &v1, &v2, 0 ); - - nv_painter_set_color( painter, - seg->serif ? SERIF_LINK_COLOR : LINK_COLOR, - 256 ); - nv_painter_fill_path( painter, &size_transform, 0, link ); - - nv_path_destroy( link ); - } - } - } - } - } -} - - - /************************************************************************/ - /************************************************************************/ - /***** *****/ - /***** MAIN LOOP(S) *****/ - /***** *****/ - /************************************************************************/ - /************************************************************************/ - -static void -draw_glyph( int glyph_index ) -{ - NV_Path path; - - - pshint_vertical = -1; - - ps_debug_hint_func = option_show_ps_hints ? draw_ps_hint : 0; - - ah_debug_hinter = NULL; - - error = FT_Load_Glyph( face, glyph_index, FT_LOAD_NO_BITMAP ); - if ( error ) - Panic( "could not load glyph" ); - - if ( face->glyph->format != FT_GLYPH_FORMAT_OUTLINE ) - Panic( "could not load glyph outline" ); - - error = nv_path_new_from_outline( renderer, - (NV_Outline*)&face->glyph->outline, - &size_transform, - &path ); - if ( error ) - Panic( "could not create glyph path" ); - - /* trac� du glyphe plein */ - if ( option_show_glyph ) - { - nv_painter_set_color( painter, 0xFF404080, 128 ); - nv_painter_fill_path( painter, 0, 0, path ); - } - - if ( option_show_stroke ) - { - NV_Path stroke; - - - error = nv_path_stroke( path, 0.6, - nv_path_linecap_butt, - nv_path_linejoin_miter, - 1.0, &stroke ); - if ( error ) - Panic( "could not stroke glyph path" ); - - nv_painter_set_color( painter, 0xFF000040, 256 ); - nv_painter_fill_path( painter, 0, 0, stroke ); - - nv_path_destroy( stroke ); - } - - /* trac� des points de controle */ - if ( option_show_dots ) - { - NV_Path plot; - NV_Outline out; - NV_Scale r = 2; - NV_Int n, first, last; - - - nv_path_get_outline( path, NULL, memory, &out ); - - first = 0; - for ( n = 0; n < out.n_contours; n++ ) - { - int m; - NV_Transform trans; - NV_Color color; - NV_SubVector* vec; - - - last = out.contours[n]; - - for ( m = first; m <= last; m++ ) - { - color = (out.tags[m] & FT_CURVE_TAG_ON) - ? ON_COLOR - : OFF_COLOR; - - vec = out.points + m; - - nv_transform_set_translate( &trans, vec->x / 64.0, vec->y / 64.0 ); - - nv_painter_set_color( painter, color, 256 ); - nv_painter_fill_path( painter, &trans, 0, symbol_dot ); - - if ( option_show_indices ) - { - char temp[5]; - - - sprintf( temp, "%d", m ); - nv_pixmap_cell_text( target, vec->x / 64 + 4, vec->y / 64 - 4, - temp, TEXT_COLOR ); - } - } - - first = last + 1; - } - } - - ah_draw_smooth_points(); - ah_draw_edges(); - - nv_path_destroy( path ); - - /* autre infos */ - { - char temp[1024]; - char temp2[64]; - - - sprintf( temp, "font name : %s (%s)", face->family_name, - face->style_name ); - nv_pixmap_cell_text( target, 0, 0, temp, TEXT_COLOR ); - - FT_Get_Glyph_Name( face, glyph_index, temp2, 63 ); - temp2[63] = 0; - - sprintf( temp, "glyph %4d: %s", glyph_index, temp2 ); - nv_pixmap_cell_text( target, 0, 8, temp, TEXT_COLOR ); - - if ( temp_message[0] ) - { - nv_pixmap_cell_text( target, 0, 16, temp_message, TEXT_COLOR ); - temp_message[0] = 0; - } - } -} - - -#define TOGGLE_OPTION(var,prefix) \ - do \ - { \ - var = !var; \ - sprintf( temp_message, prefix " is now %s", \ - var ? "on" : "off" ); \ - } \ - while() - - -#define TOGGLE_OPTION_NEG(var,prefix) \ - do \ - { \ - var = !var; \ - sprintf( temp_message, prefix " is now %s", \ - !var ? "on" : "off" ); \ - } \ - while - - -static void -handle_event( NVV_EventRec* ev ) -{ - switch ( ev->key ) - { - case NVV_Key_Left: - if ( glyph_index > 0 ) - glyph_index--; - break; - - case NVV_Key_Right: - if ( glyph_index + 1 < face->num_glyphs ) - glyph_index++; - break; - - case NVV_KEY( 'x' ): - TOGGLE_OPTION( option_show_axis, "grid axis display" ); - break; - - case NVV_KEY( 's' ): - TOGGLE_OPTION( option_show_stroke, "glyph stroke display" ); - break; - - case NVV_KEY( 'g' ): - TOGGLE_OPTION( option_show_glyph, "glyph fill display" ); - break; - - case NVV_KEY( 'd' ): - TOGGLE_OPTION( option_show_dots, "control points display" ); - break - - case NVV_KEY( 'e' ): - TOGGLE_OPTION( option_show_em, "EM square display" ); - break; - - case NVV_KEY( '+' ): - grid_scale *= 1.2; - reset_scale( grid_scale ); - break; - - case NVV_KEY( '-' ): - if ( grid_scale > 0.3 ) - { - grid_scale /= 1.2; - reset_scale( grid_scale ); - } - break; - - case NVV_Key_Up: - pixel_size++; - reset_size( pixel_size, grid_scale ); - sprintf( temp_message, "pixel size = %d", pixel_size ); - break; - - case NVV_Key_Down: - if ( pixel_size > 1 ) - { - pixel_size--; - reset_size( pixel_size, grid_scale ); - sprintf( temp_message, "pixel size = %d", pixel_size ); - } - break; - - case NVV_KEY( 'z' ): - TOGGLE_OPTION_NEG( ps_debug_no_vert_hints, "vertical hints processing" ); - break; - - case NVV_KEY( 'a' ): - TOGGLE_OPTION_NEG( ps_debug_no_horz_hints, "horizontal hints processing" ); - break; - - case NVV_KEY( 'Z' ): - TOGGLE_OPTION( option_show_vert_hints, "vertical hints display" ); - break; - - case NVV_KEY( 'A' ): - TOGGLE_OPTION( option_show_horz_hints, "horizontal hints display" ); - break; - - case NVV_KEY( 'S' ): - TOGGLE_OPTION( option_show_smooth, "smooth points display" ); - break; - - case NVV_KEY( 'i' ): - TOGGLE_OPTION( option_show_indices, "point index display" ); - break; - - case NVV_KEY( 'b' ): - TOGGLE_OPTION( option_show_blues, "blue zones display" ); - break; - - case NVV_KEY( 'h' ): - ps_debug_no_horz_hints = option_hinting; - ps_debug_no_vert_hints = option_hinting; - - TOGGLE_OPTION( option_hinting, "hinting" ); - break; - - case NVV_KEY( 'H' ): - ps_print_hints(); - break; - - default: - ; - } -} - - -static void -usage() -{ - Panic( "no usage" ); -} - - -#define OPTION1(n,code) \ - case n : \ - code \ - argc--; \ - argv++; \ - break; - -#define OPTION2(n,code) \ - case n : \ - code \ - argc -= 2; \ - argv += 2; \ - break; - - -static void -parse_options( int* argc_p, - char*** argv_p ) -{ - int argc = *argc_p; - char** argv = *argv_p; - - - while ( argc > 2 && argv[1][0] == '-' ) - { - switch ( argv[1][1] ) - { - OPTION2( 'f', first_glyph = atoi( argv[2] ); ) - - OPTION2( 's', pixel_size = atoi( argv[2] ); ) - - default: - usage(); - } - } - - *argc_p = argc; - *argv_p = argv; -} - - -int -main( int argc, - char** argv ) -{ - char* filename = "/winnt/fonts/arial.ttf"; - - - parse_options( &argc, &argv ); - - if ( argc >= 2 ) - filename = argv[1]; - - - /* create library */ - error = nv_renderer_new( 0, &renderer ); - if ( error ) - Panic( "could not create Nirvana renderer" ); - - memory = nv_renderer_get_memory( renderer ); - init_symbols(); - - error = nvv_display_new( renderer, &display ); - if ( error ) - Panic( "could not create display" ); - - error = nvv_surface_new( display, 460, 460, nv_pixmap_type_argb, &surface ); - if ( error ) - Panic( "could not create surface" ); - - target = nvv_surface_get_pixmap( surface ); - - error = nv_painter_new( renderer, &painter ); - if ( error ) - Panic( "could not create painter" ); - - nv_painter_set_target( painter, target ); - - clear_background(); - - error = FT_Init_FreeType( &freetype ); - if ( error ) - Panic( "could not initialize FreeType" ); - - error = FT_New_Face( freetype, filename, 0, &face ); - if ( error ) - Panic( "could not open font face" ); - - reset_size( pixel_size, grid_scale ); - - nvv_surface_set_title( surface, "FreeType Glyph Viewer" ); - - { - NVV_EventRec event; - - - glyph_index = first_glyph; - for ( ;; ) - { - clear_background(); - draw_grid(); - - ps_debug_hints = 0; - ah_debug_hinter = 0; - - ah_debug_disable_vert = ps_debug_no_vert_hints; - ah_debug_disable_horz = ps_debug_no_horz_hints; - - draw_ps_blue_zones(); - draw_glyph( glyph_index ); - ps_draw_control_points(); - - nvv_surface_refresh( surface, NULL ); - - nvv_surface_listen( surface, 0, &event ); - if ( event.key == NVV_Key_Esc ) - break; - - handle_event( &event ); - switch ( event.key ) - { - case NVV_Key_Esc: - goto Exit; - - default: - ; - } - } - } - -Exit: - /* wait for escape */ - - /* destroy display (and surface) */ - nvv_display_unref( display ); - - done_symbols(); - nv_renderer_unref( renderer ); - - return 0; -} diff --git a/nx-X11/extras/freetype2/vms_make.com b/nx-X11/extras/freetype2/vms_make.com deleted file mode 100644 index 12152ad04..000000000 --- a/nx-X11/extras/freetype2/vms_make.com +++ /dev/null @@ -1,549 +0,0 @@ -$!---------------vms_make.com for Freetype2------------------------------------ -$! make Freetype2 under OpenVMS -$! -$! In case of problems with the build you might want to contact me at -$! zinser@decus.de (preferred) or zinser@sysdev.deutsche-boerse.com (Work) -$! -$! This procedure currently does support the following commandline options -$! in arbitrary order -$! -$! * DEBUG - Compile modules with /noopt/debug and link shareable image -$! with /debug -$! * LOPTS - Options to be passed to the link command -$! * CCOPT - Options to be passed to the C compiler -$!------------------------------------------------------------------------------ -$! -$! Just some general constants -$! -$ true = 1 -$ false = 0 -$ Make = "" -$! -$! Setup variables holding "config" information -$! -$ name = "Freetype2" -$ mapfile = name + ".map" -$ optfile = name + ".opt" -$ s_case = false -$ libdefs = "" -$ libincs = "" -$ liblist = "" -$ ccopt = "" -$ lopts = "" -$! -$! Check for MMK/MMS -$! -$ If F$Search ("Sys$System:MMS.EXE") .nes. "" Then Make = "MMS" -$ If F$Type (MMK) .eqs. "STRING" Then Make = "MMK" -$! -$! Which command parameters were given -$! -$ gosub check_opts -$! -$! Create option file -$! -$ open/write optf 'optfile' -$! -$! Pull in external libraries -$! -$ create libs.opt -$ gosub check_create_vmslib -$! -$! Create objects -$! -$ if libdefs .nes. "" then ccopt = ccopt + "/define=(" + libdefs + ")" -$! -$ if f$locate("AS_IS",f$edit(ccopt,"UPCASE")) .lt. f$length(ccopt) - - then s_case = true -$ gosub crea_mms -$! -$ 'Make' /macro=(comp_flags="''ccopt'") -$ purge/nolog [...]descrip.mms -$! -$! Add them to options -$! -$FLOOP: -$ file = f$edit(f$search("[...]*.obj"),"UPCASE") -$ if (file .nes. "") -$ then -$ if f$locate("DEMOS",file) .eqs. f$length(file) then write optf file -$ goto floop -$ endif -$! -$ close optf -$! -$! -$! Alpha gets a shareable image -$! -$ If f$getsyi("HW_MODEL") .gt. 1024 -$ Then -$ write sys$output "Creating freetype2shr.exe" -$ call anal_obj_axp 'optfile' _link.opt -$ open/append optf 'optfile' -$ if s_case then WRITE optf "case_sensitive=YES" -$ close optf -$ LINK_/NODEB/SHARE=[.lib]freetype2shr.exe - - 'optfile'/opt,libs.opt/opt,_link.opt/opt -$ endif -$! -$ exit -$! -$!------------------------------------------------------------------------------ -$! -$! If MMS/MMK are available dump out the descrip.mms if required -$! -$CREA_MMS: -$ write sys$output "Creating descrip.mms files ..." -$ write sys$output "... Main directory" -$ create descrip.mms -$ open/append out descrip.mms -$ copy sys$input: out -$ deck -# -# FreeType 2 build system -- top-level Makefile for OpenVMS -# - - -# Copyright 2001 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. -$ EOD -$ write out "CFLAGS = ", ccopt -$ copy sys$input: out -$ deck - - -all : - define freetype [--.include.freetype] - define psaux [-.psaux] - define autohint [-.autohint] - define base [-.base] - define cache [-.cache] - define cff [-.cff] - define cid [-.cid] - define pcf [-.pcf] - define psnames [-.psnames] - define raster [-.raster] - define sfnt [-.sfnt] - define smooth [-.smooth] - define truetype [-.truetype] - define type1 [-.type1] - define winfonts [-.winfonts] - if f$search("lib.dir") .eqs. "" then create/directory [.lib] - set default [.builds.vms] - $(MMS)$(MMSQUALIFIERS) - set default [--.src.autohint] - $(MMS)$(MMSQUALIFIERS) - set default [-.base] - $(MMS)$(MMSQUALIFIERS) - set default [-.bdf] - $(MMS)$(MMSQUALIFIERS) - set default [-.cache] - $(MMS)$(MMSQUALIFIERS) - set default [-.cff] - $(MMS)$(MMSQUALIFIERS) - set default [-.cid] - $(MMS)$(MMSQUALIFIERS) - set default [-.gzip] - $(MMS)$(MMSQUALIFIERS) - set default [-.lzw] - $(MMS)$(MMSQUALIFIERS) - set default [-.pcf] - $(MMS)$(MMSQUALIFIERS) - set default [-.pfr] - $(MMS)$(MMSQUALIFIERS) - set default [-.psaux] - $(MMS)$(MMSQUALIFIERS) - set default [-.pshinter] - $(MMS)$(MMSQUALIFIERS) - set default [-.psnames] - $(MMS)$(MMSQUALIFIERS) - set default [-.raster] - $(MMS)$(MMSQUALIFIERS) - set default [-.sfnt] - $(MMS)$(MMSQUALIFIERS) - set default [-.smooth] - $(MMS)$(MMSQUALIFIERS) - set default [-.truetype] - $(MMS)$(MMSQUALIFIERS) - set default [-.type1] - $(MMS)$(MMSQUALIFIERS) - set default [-.type42] - $(MMS)$(MMSQUALIFIERS) - set default [-.winfonts] - $(MMS)$(MMSQUALIFIERS) - set default [--] - -# EOF -$ eod -$ close out -$ write sys$output "... [.builds.vms] directory" -$ create [.builds.vms]descrip.mms -$ open/append out [.builds.vms]descrip.mms -$ copy sys$input: out -$ deck -# -# FreeType 2 system rules for VMS -# - - -# Copyright 2001 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([],[--.include],[--.src.base]) - -OBJS=ftsystem.obj - -all : $(OBJS) - library/create [--.lib]freetype.olb $(OBJS) - -ftsystem.obj : ftsystem.c ftconfig.h - -# EOF -$ eod -$ close out -$ write sys$output "... [.src.autohint] directory" -$ create [.src.autohint]descrip.mms -$ open/append out [.src.autohint]descrip.mms -$ copy sys$input: out -$ deck -# -# FreeType 2 auto-hinter module compilation rules for VMS -# - - -# Copyright 2001, 2002 Catharon Productions Inc. -# -# This file is part of the Catharon Typography Project and shall only -# be used, modified, and distributed under the terms of the Catharon -# Open Source License that should come with this file under the name -# `CatharonLicense.txt'. By continuing to use, modify, or distribute -# this file you indicate that you have read the license and -# understand and accept it fully. -# -# Note that this license is compatible with the FreeType license. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/incl=([--.include],[--.src.autohint]) - -OBJS=autohint.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF -$ eod -$ close out -$ write sys$output "... [.src.gzip] directory" -$ create [.src.gzip]descrip.mms -$ open/append out [.src.gzip]descrip.mms -$ copy sys$input: out -$ deck -# -# FreeType 2 GZip support compilation rules for VMS -# - - -# Copyright 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. -$EOD -$ if libincs .nes. "" then write out "LIBINCS = ", libincs, "," -$ copy sys$input: out -$ deck - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=($(LIBINCS)[--.include],[--.src.gzip]) - -OBJS=ftgzip.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF -$ eod -$ close out -$ write sys$output "... [.src.lzw] directory" -$ create [.src.lzw]descrip.mms -$ open/append out [.src.lzw]descrip.mms -$ copy sys$input: out -$ deck -# -# FreeType 2 LZW support compilation rules for VMS -# - - -# Copyright 2004 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. -$EOD -$ if libincs .nes. "" then write out "LIBINCS = ", libincs, "," -$ copy sys$input: out -$ deck - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=($(LIBINCS)[--.include],[--.src.lzw]) - -OBJS=ftlzw.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -# EOF -$ eod -$ close out -$ write sys$output "... [.src.type1] directory" -$ create [.src.type1]descrip.mms -$ open/append out [.src.type1]descrip.mms -$ copy sys$input: out -$ deck -# -# FreeType 2 Type1 driver compilation rules for VMS -# - - -# Copyright 1996-2000, 2002 by -# David Turner, Robert Wilhelm, and Werner Lemberg. -# -# This file is part of the FreeType project, and may only be used, modified, -# and distributed under the terms of the FreeType project license, -# LICENSE.TXT. By continuing to use, modify, or distribute this file you -# indicate that you have read the license and understand and accept it -# fully. - - -CFLAGS=$(COMP_FLAGS)$(DEBUG)/include=([--.include],[--.src.type1]) - -OBJS=type1.obj - -all : $(OBJS) - library [--.lib]freetype.olb $(OBJS) - -type1.obj : type1.c t1parse.c t1load.c t1objs.c t1driver.c t1gload.c t1afm.c - -# EOF -$ eod -$ close out -$ return -$!------------------------------------------------------------------------------ -$! -$! Check command line options and set symbols accordingly -$! -$ CHECK_OPTS: -$ i = 1 -$ OPT_LOOP: -$ if i .lt. 9 -$ then -$ cparm = f$edit(p'i',"upcase") -$ if cparm .eqs. "DEBUG" -$ then -$ ccopt = ccopt + "/noopt/deb" -$ lopts = lopts + "/deb" -$ endif -$! if cparm .eqs. "LINK" then linkonly = true -$ if f$locate("LOPTS",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ lopts = lopts + f$extract(start,len,cparm) -$ endif -$ if f$locate("CCOPT",cparm) .lt. f$length(cparm) -$ then -$ start = f$locate("=",cparm) + 1 -$ len = f$length(cparm) - start -$ ccopt = ccopt + f$extract(start,len,cparm) -$ endif -$ i = i + 1 -$ goto opt_loop -$ endif -$ return -$!------------------------------------------------------------------------------ -$! -$! Take care of driver file with information about external libraries -$! -$CHECK_CREATE_VMSLIB: -$! -$ if f$search("VMSLIB.DAT") .eqs. "" -$ then -$ type/out=vmslib.dat sys$input -! -! This is a simple driver file with information used by make.com to -! check if external libraries (like t1lib and freetype) are available on -! the system. -! -! Layout of the file: -! -! - Lines starting with ! are treated as comments -! - Elements in a data line are separated by # signs -! - The elements need to be listed in the following order -! 1.) Name of the Library -! 2.) Location where the object library can be found -! 3.) Location where the include files for the library can be found -! 4.) Include file used to verify library location -! 5.) CPP define to pass to the build to indicate availability of -! the library -! -! Example: The following lines show how definitions -! might look like. They are site specific and the locations of the -! library and include files need almost certainly to be changed. -! -! Location: All of the libaries can be found at the following addresses -! -! ZLIB: http://www.decus.de:8080/www/vms/sw/zlib.htmlx -! -!ZLIB # pubbin:libz.olb # public$Root:[util.libs.zlib] # zlib.h # FT_CONFIG_OPTION_SYSTEM_ZLIB -$ write sys$output "New driver file vmslib.dat created." -$ write sys$output "Please customize libary locations for your site" -$ write sys$output "and afterwards re-execute vms_make.com" -$ write sys$output "Exiting..." -$ close/nolog optf -$ exit -$ endif -$! -$! Open data file with location of libraries -$! -$ open/read/end=end_lib/err=lib_err libdata VMSLIB.DAT -$ open/append loptf libs.opt -$LIB_LOOP: -$ read/end=end_lib libdata libline -$ libline = f$edit(libline, "UNCOMMENT,COLLAPSE") -$ if libline .eqs. "" then goto LIB_LOOP ! Comment line -$ libname = f$edit(f$element(0,"#",libline),"UPCASE") -$ liblist = liblist + "#" + libname -$ write sys$output "Processing ''libname' setup ..." -$ libloc = f$element(1,"#",libline) -$ libsrc = f$element(2,"#",libline) -$ testinc = f$element(3,"#",libline) -$ cppdef = f$element(4,"#",libline) -$ old_cpp = f$locate("=1",cppdef) -$ if old_cpp.lt.f$length(cppdef) then cppdef = f$extract(0,old_cpp,cppdef) -$ if f$search("''libloc'").eqs. "" -$ then -$ write sys$output "Can not find library ''libloc' - Skipping ''libname'" -$ goto LIB_LOOP -$ endif -$ libsrc_elem = 0 -$ libsrc_found = false -$LIBSRC_LOOP: -$ libsrcdir = f$element(libsrc_elem,",",libsrc) -$ if (libsrcdir .eqs. ",") then goto END_LIBSRC -$ if f$search("''libsrcdir'''testinc'") .nes. "" then libsrc_found = true -$ libsrc_elem = libsrc_elem + 1 -$ goto LIBSRC_LOOP -$END_LIBSRC: -$ if .not. libsrc_found -$ then -$ write sys$output "Can not find includes at ''libsrc' - Skipping ''libname'" -$ goto LIB_LOOP -$ endif -$ if cppdef .nes. "" then libdefs = libdefs + "," + cppdef -$ libincs = libincs + "," + libsrc -$ lqual = "/lib" -$ libtype = f$parse(libloc,,,"TYPE") -$ if f$locate("EXE",libtype) .lt. f$length(libtype) then lqual = "/share" -$ write loptf libloc , lqual -$ goto LIB_LOOP -$END_LIB: -$ close libdata -$ close loptf -$ libincs = libincs - "," -$ libdefs = libdefs - "," -$ return -$!------------------------------------------------------------------------------ -$! -$! Analyze Object files for OpenVMS AXP to extract Procedure and Data -$! information to build a symbol vector for a shareable image -$! All the "brains" of this logic was suggested by Hartmut Becker -$! (Hartmut.Becker@compaq.com). All the bugs were introduced by me -$! (zinser@decus.de), so if you do have problem reports please do not -$! bother Hartmut/HP, but get in touch with me -$! -$ ANAL_OBJ_AXP: Subroutine -$ V = 'F$Verify(0) -$ SAY := "WRITE_ SYS$OUTPUT" -$ -$ IF F$SEARCH("''P1'") .EQS. "" -$ THEN -$ SAY "ANAL_OBJ_AXP-E-NOSUCHFILE: Error, inputfile ''p1' not available" -$ goto exit_aa -$ ENDIF -$ IF "''P2'" .EQS. "" -$ THEN -$ SAY "ANAL_OBJ_AXP: Error, no output file provided" -$ goto exit_aa -$ ENDIF -$ -$ open/read in 'p1 -$ create a.tmp -$ open/append atmp a.tmp -$ loop: -$ read/end=end_loop in line -$ f= f$search(line) -$ if f .eqs. "" -$ then -$ write sys$output "ANAL_OBJ_AXP-w-nosuchfile, ''line'" -$ goto loop -$ endif -$ def/user sys$output nl: -$ def/user sys$error nl: -$ anal/obj/gsd 'f /out=x.tmp -$ open/read xtmp x.tmp -$ XLOOP: -$ read/end=end_xloop xtmp xline -$ xline = f$edit(xline,"compress") -$ write atmp xline -$ goto xloop -$ END_XLOOP: -$ close xtmp -$ goto loop -$ end_loop: -$ close in -$ close atmp -$ if f$search("a.tmp") .eqs. "" - - then $ exit -$ ! all global definitions -$ search a.tmp "symbol:","EGSY$V_DEF 1","EGSY$V_NORM 1"/out=b.tmp -$ ! all procedures -$ search b.tmp "EGSY$V_NORM 1"/wind=(0,1) /out=c.tmp -$ search c.tmp "symbol:"/out=d.tmp -$ def/user sys$output nl: -$ edito/edt/command=sys$input d.tmp -sub/symbol: "/symbol_vector=(/whole -sub/"/=procedure)/whole -exit -$ ! all data -$ search b.tmp "EGSY$V_DEF 1"/wind=(0,1) /out=e.tmp -$ search e.tmp "symbol:"/out=f.tmp -$ def/user sys$output nl: -$ edito/edt/command=sys$input f.tmp -sub/symbol: "/symbol_vector=(/whole -sub/"/=data)/whole -exit -$ sort/nodupl d.tmp,f.tmp 'p2' -$ delete a.tmp;*,b.tmp;*,c.tmp;*,d.tmp;*,e.tmp;*,f.tmp;* -$ if f$search("x.tmp") .nes. "" - - then $ delete x.tmp;* -$! -$ EXIT_AA: -$ if V then set verify -$ endsubroutine -- cgit v1.2.3