8222362: Upgrade to Freetype 2.10.0
authorprr
Thu, 09 May 2019 16:09:39 -0700
changeset 54876 da3834261f0c
parent 54875 bcfedddcf4ce
child 54877 dde07ac16610
8222362: Upgrade to Freetype 2.10.0 Reviewed-by: serb, erikj
make/lib/Awt2dLibraries.gmk
src/java.desktop/share/legal/freetype.md
src/java.desktop/share/native/libfreetype/UPDATING.txt
src/java.desktop/share/native/libfreetype/include/freetype/config/ftconfig.h
src/java.desktop/share/native/libfreetype/include/freetype/config/ftheader.h
src/java.desktop/share/native/libfreetype/include/freetype/config/ftmodule.h
src/java.desktop/share/native/libfreetype/include/freetype/config/ftoption.h
src/java.desktop/share/native/libfreetype/include/freetype/config/ftstdlib.h
src/java.desktop/share/native/libfreetype/include/freetype/freetype.h
src/java.desktop/share/native/libfreetype/include/freetype/ftadvanc.h
src/java.desktop/share/native/libfreetype/include/freetype/ftbbox.h
src/java.desktop/share/native/libfreetype/include/freetype/ftbdf.h
src/java.desktop/share/native/libfreetype/include/freetype/ftbitmap.h
src/java.desktop/share/native/libfreetype/include/freetype/ftchapters.h
src/java.desktop/share/native/libfreetype/include/freetype/ftcid.h
src/java.desktop/share/native/libfreetype/include/freetype/ftcolor.h
src/java.desktop/share/native/libfreetype/include/freetype/ftdriver.h
src/java.desktop/share/native/libfreetype/include/freetype/fterrdef.h
src/java.desktop/share/native/libfreetype/include/freetype/fterrors.h
src/java.desktop/share/native/libfreetype/include/freetype/ftfntfmt.h
src/java.desktop/share/native/libfreetype/include/freetype/ftgasp.h
src/java.desktop/share/native/libfreetype/include/freetype/ftglyph.h
src/java.desktop/share/native/libfreetype/include/freetype/ftgzip.h
src/java.desktop/share/native/libfreetype/include/freetype/ftimage.h
src/java.desktop/share/native/libfreetype/include/freetype/ftincrem.h
src/java.desktop/share/native/libfreetype/include/freetype/ftlcdfil.h
src/java.desktop/share/native/libfreetype/include/freetype/ftlist.h
src/java.desktop/share/native/libfreetype/include/freetype/ftmac.h
src/java.desktop/share/native/libfreetype/include/freetype/ftmm.h
src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h
src/java.desktop/share/native/libfreetype/include/freetype/ftmoderr.h
src/java.desktop/share/native/libfreetype/include/freetype/ftoutln.h
src/java.desktop/share/native/libfreetype/include/freetype/ftparams.h
src/java.desktop/share/native/libfreetype/include/freetype/ftrender.h
src/java.desktop/share/native/libfreetype/include/freetype/ftsizes.h
src/java.desktop/share/native/libfreetype/include/freetype/ftsnames.h
src/java.desktop/share/native/libfreetype/include/freetype/ftstroke.h
src/java.desktop/share/native/libfreetype/include/freetype/ftsynth.h
src/java.desktop/share/native/libfreetype/include/freetype/ftsystem.h
src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h
src/java.desktop/share/native/libfreetype/include/freetype/fttypes.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/autohint.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/cffotypes.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/cfftypes.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftcalc.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdebug.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdrv.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftgloadr.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/fthash.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmemory.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpic.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpsprop.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftrfork.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftserv.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftstream.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/ftvalid.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/internal.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/psaux.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/pshints.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svbdf.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcfftl.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcid.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svfntfmt.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgldict.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgxval.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svkern.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmetric.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmm.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svotval.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpfr.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpostnm.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svprop.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpscmap.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpsinfo.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svsfnt.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttcmap.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svtteng.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttglyf.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svwinfnt.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/t1types.h
src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h
src/java.desktop/share/native/libfreetype/include/freetype/t1tables.h
src/java.desktop/share/native/libfreetype/include/freetype/ttnameid.h
src/java.desktop/share/native/libfreetype/include/freetype/tttables.h
src/java.desktop/share/native/libfreetype/include/freetype/tttags.h
src/java.desktop/share/native/libfreetype/include/ft2build.h
src/java.desktop/share/native/libfreetype/src/autofit/afangles.c
src/java.desktop/share/native/libfreetype/src/autofit/afangles.h
src/java.desktop/share/native/libfreetype/src/autofit/afblue.c
src/java.desktop/share/native/libfreetype/src/autofit/afblue.cin
src/java.desktop/share/native/libfreetype/src/autofit/afblue.dat
src/java.desktop/share/native/libfreetype/src/autofit/afblue.h
src/java.desktop/share/native/libfreetype/src/autofit/afblue.hin
src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c
src/java.desktop/share/native/libfreetype/src/autofit/afcjk.h
src/java.desktop/share/native/libfreetype/src/autofit/afcover.h
src/java.desktop/share/native/libfreetype/src/autofit/afdummy.c
src/java.desktop/share/native/libfreetype/src/autofit/afdummy.h
src/java.desktop/share/native/libfreetype/src/autofit/aferrors.h
src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c
src/java.desktop/share/native/libfreetype/src/autofit/afglobal.h
src/java.desktop/share/native/libfreetype/src/autofit/afhints.c
src/java.desktop/share/native/libfreetype/src/autofit/afhints.h
src/java.desktop/share/native/libfreetype/src/autofit/afindic.c
src/java.desktop/share/native/libfreetype/src/autofit/afindic.h
src/java.desktop/share/native/libfreetype/src/autofit/aflatin.c
src/java.desktop/share/native/libfreetype/src/autofit/aflatin.h
src/java.desktop/share/native/libfreetype/src/autofit/afloader.c
src/java.desktop/share/native/libfreetype/src/autofit/afloader.h
src/java.desktop/share/native/libfreetype/src/autofit/afmodule.c
src/java.desktop/share/native/libfreetype/src/autofit/afmodule.h
src/java.desktop/share/native/libfreetype/src/autofit/afpic.c
src/java.desktop/share/native/libfreetype/src/autofit/afpic.h
src/java.desktop/share/native/libfreetype/src/autofit/afranges.c
src/java.desktop/share/native/libfreetype/src/autofit/afranges.h
src/java.desktop/share/native/libfreetype/src/autofit/afscript.h
src/java.desktop/share/native/libfreetype/src/autofit/afshaper.c
src/java.desktop/share/native/libfreetype/src/autofit/afshaper.h
src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h
src/java.desktop/share/native/libfreetype/src/autofit/aftypes.h
src/java.desktop/share/native/libfreetype/src/autofit/afwarp.c
src/java.desktop/share/native/libfreetype/src/autofit/afwarp.h
src/java.desktop/share/native/libfreetype/src/autofit/afwrtsys.h
src/java.desktop/share/native/libfreetype/src/base/basepic.c
src/java.desktop/share/native/libfreetype/src/base/basepic.h
src/java.desktop/share/native/libfreetype/src/base/ftadvanc.c
src/java.desktop/share/native/libfreetype/src/base/ftapi.c
src/java.desktop/share/native/libfreetype/src/base/ftbase.h
src/java.desktop/share/native/libfreetype/src/base/ftbbox.c
src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c
src/java.desktop/share/native/libfreetype/src/base/ftcalc.c
src/java.desktop/share/native/libfreetype/src/base/ftcid.c
src/java.desktop/share/native/libfreetype/src/base/ftdbgmem.c
src/java.desktop/share/native/libfreetype/src/base/ftdebug.c
src/java.desktop/share/native/libfreetype/src/base/ftfntfmt.c
src/java.desktop/share/native/libfreetype/src/base/ftfstype.c
src/java.desktop/share/native/libfreetype/src/base/ftgasp.c
src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c
src/java.desktop/share/native/libfreetype/src/base/ftglyph.c
src/java.desktop/share/native/libfreetype/src/base/fthash.c
src/java.desktop/share/native/libfreetype/src/base/ftinit.c
src/java.desktop/share/native/libfreetype/src/base/ftlcdfil.c
src/java.desktop/share/native/libfreetype/src/base/ftmac.c
src/java.desktop/share/native/libfreetype/src/base/ftmm.c
src/java.desktop/share/native/libfreetype/src/base/ftobjs.c
src/java.desktop/share/native/libfreetype/src/base/ftoutln.c
src/java.desktop/share/native/libfreetype/src/base/ftpatent.c
src/java.desktop/share/native/libfreetype/src/base/ftpic.c
src/java.desktop/share/native/libfreetype/src/base/ftpsprop.c
src/java.desktop/share/native/libfreetype/src/base/ftrfork.c
src/java.desktop/share/native/libfreetype/src/base/ftsnames.c
src/java.desktop/share/native/libfreetype/src/base/ftstream.c
src/java.desktop/share/native/libfreetype/src/base/ftstroke.c
src/java.desktop/share/native/libfreetype/src/base/ftsynth.c
src/java.desktop/share/native/libfreetype/src/base/ftsystem.c
src/java.desktop/share/native/libfreetype/src/base/fttrigon.c
src/java.desktop/share/native/libfreetype/src/base/fttype1.c
src/java.desktop/share/native/libfreetype/src/base/ftutil.c
src/java.desktop/share/native/libfreetype/src/base/md5.c
src/java.desktop/share/native/libfreetype/src/base/md5.h
src/java.desktop/share/native/libfreetype/src/cff/cffcmap.c
src/java.desktop/share/native/libfreetype/src/cff/cffcmap.h
src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c
src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.h
src/java.desktop/share/native/libfreetype/src/cff/cfferrs.h
src/java.desktop/share/native/libfreetype/src/cff/cffgload.c
src/java.desktop/share/native/libfreetype/src/cff/cffgload.h
src/java.desktop/share/native/libfreetype/src/cff/cffload.c
src/java.desktop/share/native/libfreetype/src/cff/cffload.h
src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c
src/java.desktop/share/native/libfreetype/src/cff/cffobjs.h
src/java.desktop/share/native/libfreetype/src/cff/cffparse.c
src/java.desktop/share/native/libfreetype/src/cff/cffparse.h
src/java.desktop/share/native/libfreetype/src/cff/cffpic.c
src/java.desktop/share/native/libfreetype/src/cff/cffpic.h
src/java.desktop/share/native/libfreetype/src/cff/cfftoken.h
src/java.desktop/share/native/libfreetype/src/cid/ciderrs.h
src/java.desktop/share/native/libfreetype/src/cid/cidgload.c
src/java.desktop/share/native/libfreetype/src/cid/cidgload.h
src/java.desktop/share/native/libfreetype/src/cid/cidload.c
src/java.desktop/share/native/libfreetype/src/cid/cidload.h
src/java.desktop/share/native/libfreetype/src/cid/cidobjs.c
src/java.desktop/share/native/libfreetype/src/cid/cidobjs.h
src/java.desktop/share/native/libfreetype/src/cid/cidparse.c
src/java.desktop/share/native/libfreetype/src/cid/cidparse.h
src/java.desktop/share/native/libfreetype/src/cid/cidriver.c
src/java.desktop/share/native/libfreetype/src/cid/cidriver.h
src/java.desktop/share/native/libfreetype/src/cid/cidtoken.h
src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c
src/java.desktop/share/native/libfreetype/src/psaux/afmparse.h
src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.c
src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.h
src/java.desktop/share/native/libfreetype/src/psaux/psarrst.c
src/java.desktop/share/native/libfreetype/src/psaux/psarrst.h
src/java.desktop/share/native/libfreetype/src/psaux/psauxerr.h
src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.c
src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.h
src/java.desktop/share/native/libfreetype/src/psaux/psblues.c
src/java.desktop/share/native/libfreetype/src/psaux/psblues.h
src/java.desktop/share/native/libfreetype/src/psaux/psconv.c
src/java.desktop/share/native/libfreetype/src/psaux/psconv.h
src/java.desktop/share/native/libfreetype/src/psaux/pserror.c
src/java.desktop/share/native/libfreetype/src/psaux/pserror.h
src/java.desktop/share/native/libfreetype/src/psaux/psfixed.h
src/java.desktop/share/native/libfreetype/src/psaux/psfont.c
src/java.desktop/share/native/libfreetype/src/psaux/psfont.h
src/java.desktop/share/native/libfreetype/src/psaux/psft.c
src/java.desktop/share/native/libfreetype/src/psaux/psft.h
src/java.desktop/share/native/libfreetype/src/psaux/psglue.h
src/java.desktop/share/native/libfreetype/src/psaux/pshints.c
src/java.desktop/share/native/libfreetype/src/psaux/pshints.h
src/java.desktop/share/native/libfreetype/src/psaux/psintrp.c
src/java.desktop/share/native/libfreetype/src/psaux/psintrp.h
src/java.desktop/share/native/libfreetype/src/psaux/psobjs.c
src/java.desktop/share/native/libfreetype/src/psaux/psobjs.h
src/java.desktop/share/native/libfreetype/src/psaux/psread.c
src/java.desktop/share/native/libfreetype/src/psaux/psread.h
src/java.desktop/share/native/libfreetype/src/psaux/psstack.c
src/java.desktop/share/native/libfreetype/src/psaux/psstack.h
src/java.desktop/share/native/libfreetype/src/psaux/pstypes.h
src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.c
src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.h
src/java.desktop/share/native/libfreetype/src/psaux/t1decode.c
src/java.desktop/share/native/libfreetype/src/psaux/t1decode.h
src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.c
src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.h
src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.c
src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.h
src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.c
src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.h
src/java.desktop/share/native/libfreetype/src/pshinter/pshnterr.h
src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.c
src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.h
src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.c
src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.h
src/java.desktop/share/native/libfreetype/src/psnames/psmodule.c
src/java.desktop/share/native/libfreetype/src/psnames/psmodule.h
src/java.desktop/share/native/libfreetype/src/psnames/psnamerr.h
src/java.desktop/share/native/libfreetype/src/psnames/pspic.c
src/java.desktop/share/native/libfreetype/src/psnames/pspic.h
src/java.desktop/share/native/libfreetype/src/psnames/pstables.h
src/java.desktop/share/native/libfreetype/src/raster/ftmisc.h
src/java.desktop/share/native/libfreetype/src/raster/ftraster.c
src/java.desktop/share/native/libfreetype/src/raster/ftraster.h
src/java.desktop/share/native/libfreetype/src/raster/ftrend1.c
src/java.desktop/share/native/libfreetype/src/raster/ftrend1.h
src/java.desktop/share/native/libfreetype/src/raster/rasterrs.h
src/java.desktop/share/native/libfreetype/src/raster/rastpic.c
src/java.desktop/share/native/libfreetype/src/raster/rastpic.h
src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.c
src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.h
src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c
src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.h
src/java.desktop/share/native/libfreetype/src/sfnt/sferrors.h
src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.c
src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.h
src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c
src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c
src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttcmapc.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.c
src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.c
src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.c
src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttload.c
src/java.desktop/share/native/libfreetype/src/sfnt/ttload.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c
src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.c
src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.h
src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.c
src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.h
src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c
src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.h
src/java.desktop/share/native/libfreetype/src/smooth/ftsmerrs.h
src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c
src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.h
src/java.desktop/share/native/libfreetype/src/smooth/ftspic.c
src/java.desktop/share/native/libfreetype/src/smooth/ftspic.h
src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c
src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.h
src/java.desktop/share/native/libfreetype/src/truetype/tterrors.h
src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c
src/java.desktop/share/native/libfreetype/src/truetype/ttgload.h
src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c
src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h
src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c
src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.h
src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c
src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.h
src/java.desktop/share/native/libfreetype/src/truetype/ttpic.c
src/java.desktop/share/native/libfreetype/src/truetype/ttpic.h
src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c
src/java.desktop/share/native/libfreetype/src/truetype/ttpload.h
src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.c
src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.h
src/java.desktop/share/native/libfreetype/src/type1/t1afm.c
src/java.desktop/share/native/libfreetype/src/type1/t1afm.h
src/java.desktop/share/native/libfreetype/src/type1/t1driver.c
src/java.desktop/share/native/libfreetype/src/type1/t1driver.h
src/java.desktop/share/native/libfreetype/src/type1/t1errors.h
src/java.desktop/share/native/libfreetype/src/type1/t1gload.c
src/java.desktop/share/native/libfreetype/src/type1/t1gload.h
src/java.desktop/share/native/libfreetype/src/type1/t1load.c
src/java.desktop/share/native/libfreetype/src/type1/t1load.h
src/java.desktop/share/native/libfreetype/src/type1/t1objs.c
src/java.desktop/share/native/libfreetype/src/type1/t1objs.h
src/java.desktop/share/native/libfreetype/src/type1/t1parse.c
src/java.desktop/share/native/libfreetype/src/type1/t1parse.h
src/java.desktop/share/native/libfreetype/src/type1/t1tokens.h
--- a/make/lib/Awt2dLibraries.gmk	Wed May 08 22:59:20 2019 -0700
+++ b/make/lib/Awt2dLibraries.gmk	Thu May 09 16:09:39 2019 -0700
@@ -506,6 +506,8 @@
   LIBFREETYPE_CFLAGS := -I$(BUILD_LIBFREETYPE_HEADER_DIRS)
   ifeq ($(call isTargetOs, windows), true)
     LIBFREETYPE_LIBS := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfreetype/freetype.lib
+    # freetype now requires you to manually define this (see ftconfig.h)
+    BUILD_LIBFREETYPE_CFLAGS += -DDLL_EXPORT
   else
     LIBFREETYPE_LIBS := -lfreetype
   endif
@@ -519,8 +521,8 @@
       DISABLED_WARNINGS_solstudio := \
          E_STATEMENT_NOT_REACHED \
          E_END_OF_LOOP_CODE_NOT_REACHED, \
-      DISABLED_WARNINGS_microsoft := 4267 4244 4312 4819, \
-      DISABLED_WARNINGS_gcc := implicit-fallthrough, \
+      DISABLED_WARNINGS_microsoft := 4018 4267 4244 4312 4819, \
+      DISABLED_WARNINGS_gcc := implicit-fallthrough cast-function-type bad-function-cast, \
       LDFLAGS := $(LDFLAGS_JDKLIB) \
           $(call SET_SHARED_LIBRARY_ORIGIN), \
   ))
--- a/src/java.desktop/share/legal/freetype.md	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/legal/freetype.md	Thu May 09 16:09:39 2019 -0700
@@ -1,4 +1,4 @@
-## The FreeType Project: Freetype v2.9.1
+## The FreeType Project: Freetype v2.10.0
 
 
 ### FreeType Notice
--- a/src/java.desktop/share/native/libfreetype/UPDATING.txt	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/UPDATING.txt	Thu May 09 16:09:39 2019 -0700
@@ -21,9 +21,16 @@
 
 Use "expand" and "sed" to remove tabs and trailing white space from the imported
 sources. The current version of freetype is quite clean in this respect.
-./src/base/md5.h and ./src/base/md5.c are the only files with tabs,
-and ./include/freetype/ftdriver.h has the only trailing white space.
+None of files we import have tabs, and ./include/freetype/freetype.h,
+./include/freetype/ftlcdfil.h and ./include/freetype/ftstroke.h have the
+only trailing white space.
 If you forget this step, or aren't thorough, jcheck will remind you.
 
 Remember to update the freetype version identified in
 src/java.desktop/share/legal/freetype.md
+
+When updating specify --with-freetype=bundled to test builds to
+expose build issues.
+This is important because presently on Linux and Solaris the build
+defaults to linking against the system library and does not attempt
+to compile the sources.
--- a/src/java.desktop/share/native/libfreetype/include/freetype/config/ftconfig.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/config/ftconfig.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,38 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftconfig.h                                                             */
-/*                                                                         */
-/*    ANSI-specific configuration file (specification only).               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftconfig.h
+ *
+ *   ANSI-specific configuration file (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 `builds/<system>', and contains        */
-  /* system-specific files that are always included first when building    */
-  /* the library.                                                          */
-  /*                                                                       */
-  /* This ANSI version should stay in `include/config/'.                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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 `builds/<system>`, and contains
+   * system-specific files that are always included first when building the
+   * library.
+   *
+   * This ANSI version should stay in `include/config/`.
+   *
+   */
 
 #ifndef FTCONFIG_H_
 #define FTCONFIG_H_
@@ -46,32 +45,32 @@
 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     */
-  /* `builds/<system>' directory, and edit it to port the engine.          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *              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
+   * `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.                                                        */
+  /* 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.  */
+  /* The size of an `int` type. */
 #if                                 FT_UINT_MAX == 0xFFFFUL
 #define FT_SIZEOF_INT  ( 16 / FT_CHAR_BIT )
 #elif                               FT_UINT_MAX == 0xFFFFFFFFUL
@@ -82,7 +81,7 @@
 #error "Unsupported size of `int' type!"
 #endif
 
-  /* The size of a `long' type.  A five-byte `long' (as used e.g. on the */
+  /* The size of a `long` type.  A five-byte `long` (as used e.g. on the */
   /* DM642) is recognized but avoided.                                   */
 #if                                  FT_ULONG_MAX == 0xFFFFFFFFUL
 #define FT_SIZEOF_LONG  ( 32 / FT_CHAR_BIT )
@@ -95,35 +94,35 @@
 #endif
 
 
-  /* 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 */
+  /* `FT_UNUSED` indicates 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.                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                    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.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Mac support
+   *
+   *   This is the only necessary change, so it is defined here instead
+   *   providing a new configuration file.
+   */
 #if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
-  /* no Carbon frameworks for 64bit 10.4.x */
-  /* AvailabilityMacros.h is available since Mac OS X 10.2,        */
-  /* so guess the system version by maximum errno before inclusion */
+  /* No Carbon frameworks for 64bit 10.4.x.                         */
+  /* `AvailabilityMacros.h` is available since Mac OS X 10.2,       */
+  /* so guess the system version by maximum errno before inclusion. */
 #include <errno.h>
 #ifdef ECANCELED /* defined since 10.2 */
 #include "AvailabilityMacros.h"
@@ -143,7 +142,7 @@
 #endif
 
 
-  /* Fix compiler warning with sgi compiler */
+  /* Fix compiler warning with sgi compiler. */
 #if defined( __sgi ) && !defined( __GNUC__ )
 #if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
 #pragma set woff 3505
@@ -151,33 +150,33 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    basic_types                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   basic_types
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int16                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 16bit signed integer type.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Int16
+   *
+   * @description:
+   *   A typedef for a 16bit signed integer type.
+   */
   typedef signed short  FT_Int16;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt16                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 16bit unsigned integer type.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UInt16
+   *
+   * @description:
+   *   A typedef for a 16bit unsigned integer type.
+   */
   typedef unsigned short  FT_UInt16;
 
   /* */
@@ -186,50 +185,50 @@
   /* this #if 0 ... #endif clause is for documentation purposes */
 #if 0
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int32                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 32bit signed integer type.  The size depends on    */
-  /*    the configuration.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Int32
+   *
+   * @description:
+   *   A typedef for a 32bit signed integer type.  The size depends on the
+   *   configuration.
+   */
   typedef signed XXX  FT_Int32;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt32                                                          */
-  /*                                                                       */
-  /*    A typedef for a 32bit unsigned integer type.  The size depends on  */
-  /*    the configuration.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UInt32
+   *
+   *   A typedef for a 32bit unsigned integer type.  The size depends on the
+   *   configuration.
+   */
   typedef unsigned XXX  FT_UInt32;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int64                                                           */
-  /*                                                                       */
-  /*    A typedef for a 64bit signed integer type.  The size depends on    */
-  /*    the configuration.  Only defined if there is real 64bit support;   */
-  /*    otherwise, it gets emulated with a structure (if necessary).       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Int64
+   *
+   *   A typedef for a 64bit signed integer type.  The size depends on the
+   *   configuration.  Only defined if there is real 64bit support;
+   *   otherwise, it gets emulated with a structure (if necessary).
+   */
   typedef signed XXX  FT_Int64;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt64                                                          */
-  /*                                                                       */
-  /*    A typedef for a 64bit unsigned integer type.  The size depends on  */
-  /*    the configuration.  Only defined if there is real 64bit support;   */
-  /*    otherwise, it gets emulated with a structure (if necessary).       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_UInt64
+   *
+   *   A typedef for a 64bit unsigned integer type.  The size depends on the
+   *   configuration.  Only defined if there is real 64bit support;
+   *   otherwise, it gets emulated with a structure (if necessary).
+   */
   typedef unsigned XXX  FT_UInt64;
 
   /* */
@@ -251,7 +250,7 @@
 #endif
 
 
-  /* look up an integer type that is at least 32 bits */
+  /* look up an integer type that is at least 32~bits */
 #if FT_SIZEOF_INT >= ( 32 / FT_CHAR_BIT )
 
   typedef int            FT_Fast;
@@ -265,22 +264,22 @@
 #endif
 
 
-  /* determine whether we have a 64-bit int type for platforms without */
-  /* Autoconf                                                          */
+  /* 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 */
+  /* `FT_LONG64` must be defined if a 64-bit type is available */
 #define FT_LONG64
 #define FT_INT64   long
 #define FT_UINT64  unsigned long
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* A 64-bit data type may create compilation problems if you compile     */
-  /* in strict ANSI mode.  To avoid them, we disable other 64-bit data     */
-  /* types if __STDC__ is defined.  You can however ignore this rule       */
-  /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * A 64-bit data type may create compilation problems if you compile in
+   * strict ANSI mode.  To avoid them, we disable other 64-bit data types if
+   * `__STDC__` is defined.  You can however ignore this rule by defining the
+   * `FT_CONFIG_OPTION_FORCE_INT64` configuration macro.
+   */
 #elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
 
 #if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
@@ -289,19 +288,19 @@
 #define FT_INT64   long long int
 #define FT_UINT64  unsigned long long int
 
-#elif defined( _MSC_VER ) && _MSC_VER >= 900  /* Visual C++ (and Intel C++) */
+#elif defined( _MSC_VER ) && _MSC_VER >= 900 /* Visual C++ (and Intel C++) */
 
-  /* this compiler provides the __int64 type */
+  /* this compiler provides the `__int64` type */
 #define FT_LONG64
 #define FT_INT64   __int64
 #define FT_UINT64  unsigned __int64
 
 #elif defined( __BORLANDC__ )  /* Borland C++ */
 
-  /* XXXX: We should probably check the value of __BORLANDC__ in order */
-  /*       to test the compiler version.                               */
+  /* XXXX: We should probably check the value of `__BORLANDC__` in order */
+  /*       to test the compiler version.                                 */
 
-  /* this compiler provides the __int64 type */
+  /* this compiler provides the `__int64` type */
 #define FT_LONG64
 #define FT_INT64   __int64
 #define FT_UINT64  unsigned __int64
@@ -318,7 +317,7 @@
 
 #elif defined( __GNUC__ )
 
-  /* GCC provides the `long long' type */
+  /* GCC provides the `long long` type */
 #define FT_LONG64
 #define FT_INT64   long long int
 #define FT_UINT64  unsigned long long int
@@ -342,11 +341,11 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* miscellaneous                                                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * miscellaneous
+   *
+   */
 
 
 #define FT_BEGIN_STMNT  do {
@@ -354,7 +353,7 @@
 #define FT_DUMMY_STMNT  FT_BEGIN_STMNT FT_END_STMNT
 
 
-  /* typeof condition taken from gnulib's `intprops.h' header file */
+  /* `typeof` condition taken from gnulib's `intprops.h` header file */
 #if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 )                       || \
       ( defined( __IBMC__ ) && __IBMC__ >= 1210 &&                      \
         defined( __IBM__TYPEOF__ ) )                                 || \
@@ -365,14 +364,14 @@
 #endif
 
 
-  /* Use FT_LOCAL and FT_LOCAL_DEF to declare and define, respectively, */
-  /* a function that gets used only within the scope of a module.       */
-  /* Normally, both the header and source code files for such a         */
-  /* function are within a single module directory.                     */
-  /*                                                                    */
-  /* Intra-module arrays should be tagged with FT_LOCAL_ARRAY and       */
-  /* FT_LOCAL_ARRAY_DEF.                                                */
-  /*                                                                    */
+  /* Use `FT_LOCAL` and `FT_LOCAL_DEF` to declare and define,            */
+  /* respectively, a function that gets used only within the scope of a  */
+  /* module.  Normally, both the header and source code files for such a */
+  /* function are within a single module directory.                      */
+  /*                                                                     */
+  /* Intra-module arrays should be tagged with `FT_LOCAL_ARRAY` and      */
+  /* `FT_LOCAL_ARRAY_DEF`.                                               */
+  /*                                                                     */
 #ifdef FT_MAKE_OPTION_SINGLE_OBJECT
 
 #define FT_LOCAL( x )      static  x
@@ -394,12 +393,12 @@
 #define FT_LOCAL_ARRAY_DEF( x )  const  x
 
 
-  /* Use FT_BASE and FT_BASE_DEF to declare and define, respectively, */
-  /* functions that are used in more than a single module.  In the    */
-  /* current setup this implies that the declaration is in a header   */
-  /* file in the `include/freetype/internal' directory, and the       */
-  /* function body is in a file in `src/base'.                        */
-  /*                                                                  */
+  /* Use `FT_BASE` and `FT_BASE_DEF` to declare and define, respectively, */
+  /* functions that are used in more than a single module.  In the        */
+  /* current setup this implies that the declaration is in a header file  */
+  /* in the `include/freetype/internal` directory, and the function body  */
+  /* is in a file in `src/base`.                                          */
+  /*                                                                      */
 #ifndef FT_BASE
 
 #ifdef __cplusplus
@@ -422,45 +421,50 @@
 #endif /* !FT_BASE_DEF */
 
 
-  /*   When compiling FreeType as a DLL or DSO with hidden visibility      */
-  /*   some systems/compilers need a special attribute 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.                                     */
-  /*                                                                       */
-  /*   To export a variable, use FT_EXPORT_VAR.                            */
-  /*                                                                       */
+  /* When compiling FreeType as a DLL or DSO with hidden visibility    */
+  /* some systems/compilers need a special attribute 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.                                 */
+  /*                                                                   */
+  /* To export a variable, use `FT_EXPORT_VAR`.                        */
+  /*                                                                   */
 #ifndef FT_EXPORT
 
 #ifdef FT2_BUILD_LIBRARY
 
-#if defined( _WIN32 ) && ( defined( _DLL ) || defined( DLL_EXPORT ) )
+#if defined( _WIN32 ) && defined( DLL_EXPORT )
 #define FT_EXPORT( x )  __declspec( dllexport )  x
 #elif defined( __GNUC__ ) && __GNUC__ >= 4
 #define FT_EXPORT( x )  __attribute__(( visibility( "default" ) ))  x
+#elif defined( __SUNPRO_C ) && __SUNPRO_C >= 0x550
+#define FT_EXPORT( x )  __global  x
 #elif defined( __cplusplus )
 #define FT_EXPORT( x )  extern "C"  x
 #else
@@ -469,7 +473,7 @@
 
 #else
 
-#if defined( FT2_DLLIMPORT )
+#if defined( _WIN32 ) && defined( DLL_IMPORT )
 #define FT_EXPORT( x )  __declspec( dllimport )  x
 #elif defined( __cplusplus )
 #define FT_EXPORT( x )  extern "C"  x
@@ -508,7 +512,7 @@
   /* C++ compiler and with 16bit compilers.                          */
   /*                                                                 */
 
-  /* This is special.  Within C++, you must specify `extern "C"' for */
+  /* 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 */
@@ -531,7 +535,7 @@
   /*                                                                 */
   /*                                                                 */
   /* Some 16bit compilers have to redefine these macros to insert    */
-  /* the infamous `_cdecl' or `__fastcall' declarations.             */
+  /* the infamous `_cdecl` or `__fastcall` declarations.             */
   /*                                                                 */
 #ifndef FT_CALLBACK_DEF
 #ifdef __cplusplus
--- a/src/java.desktop/share/native/libfreetype/include/freetype/config/ftheader.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/config/ftheader.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftheader.h                                                             */
-/*                                                                         */
-/*    Build macros of the FreeType 2 library.                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftheader.h
+ *
+ *   Build macros of the FreeType 2 library.
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTHEADER_H_
 #define FTHEADER_H_
@@ -27,7 +27,7 @@
   /* <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  */
+  /*    encapsulated in an `extern "C" { .. }` block when included from a  */
   /*    C++ compiler.                                                      */
   /*                                                                       */
 #ifdef __cplusplus
@@ -45,7 +45,7 @@
   /* <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  */
+  /*    encapsulated in an `extern "C" { .. }` block when included from a  */
   /*    C++ compiler.                                                      */
   /*                                                                       */
 #ifdef __cplusplus
@@ -55,54 +55,54 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Aliases for the FreeType 2 public and configuration files.            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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 it allows for more flexibility in the    */
-  /*    way FreeType~2 is installed on a given system.                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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 it 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
+   *   A macro used in `#include` statements to name the file containing
    *   FreeType~2 configuration data.
    *
    */
@@ -111,13 +111,13 @@
 #endif
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_CONFIG_STANDARD_LIBRARY_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing
+   *   A macro used in `#include` statements to name the file containing
    *   FreeType~2 interface to the standard C library functions.
    *
    */
@@ -126,13 +126,13 @@
 #endif
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_CONFIG_OPTIONS_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing
+   *   A macro used in `#include` statements to name the file containing
    *   FreeType~2 project-specific configuration options.
    *
    */
@@ -141,13 +141,13 @@
 #endif
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_CONFIG_MODULES_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   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.
    *
@@ -160,26 +160,26 @@
 
   /* public headers */
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_FREETYPE_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   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
+   *   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.
@@ -188,26 +188,26 @@
 #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
+   *   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
+   *   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).
    *
@@ -217,13 +217,13 @@
 #define FT_SYSTEM_H  <freetype/ftsystem.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_IMAGE_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing type
+   *   A macro used in `#include` statements to name the file containing type
    *   definitions related to glyph images (i.e., bitmaps, outlines,
    *   scan-converter parameters).
    *
@@ -233,13 +233,13 @@
 #define FT_IMAGE_H  <freetype/ftimage.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_TYPES_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   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.
@@ -248,13 +248,13 @@
 #define FT_TYPES_H  <freetype/fttypes.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_LIST_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   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.)
@@ -263,151 +263,151 @@
 #define FT_LIST_H  <freetype/ftlist.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_OUTLINE_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   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
+   *   A macro used in `#include` statements to name the file containing the
    *   API which manages 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
+   *   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
+   *   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_DRIVER_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing
+   *   A macro used in `#include` statements to name the file containing
    *   structures and macros related to the driver modules.
    *
    */
 #define FT_DRIVER_H  <freetype/ftdriver.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_AUTOHINTER_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing
+   *   A macro used in `#include` statements to name the file containing
    *   structures and macros related to the auto-hinting module.
    *
-   *   Deprecated since version 2.9; use @FT_DRIVER_H instead.
+   *   Deprecated since version~2.9; use @FT_DRIVER_H instead.
    *
    */
 #define FT_AUTOHINTER_H  FT_DRIVER_H
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_CFF_DRIVER_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing
+   *   A macro used in `#include` statements to name the file containing
    *   structures and macros related to the CFF driver module.
    *
-   *   Deprecated since version 2.9; use @FT_DRIVER_H instead.
+   *   Deprecated since version~2.9; use @FT_DRIVER_H instead.
    *
    */
 #define FT_CFF_DRIVER_H  FT_DRIVER_H
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_TRUETYPE_DRIVER_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing
+   *   A macro used in `#include` statements to name the file containing
    *   structures and macros related to the TrueType driver module.
    *
-   *   Deprecated since version 2.9; use @FT_DRIVER_H instead.
+   *   Deprecated since version~2.9; use @FT_DRIVER_H instead.
    *
    */
 #define FT_TRUETYPE_DRIVER_H  FT_DRIVER_H
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_PCF_DRIVER_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing
+   *   A macro used in `#include` statements to name the file containing
    *   structures and macros related to the PCF driver module.
    *
-   *   Deprecated since version 2.9; use @FT_DRIVER_H instead.
+   *   Deprecated since version~2.9; use @FT_DRIVER_H instead.
    *
    */
 #define FT_PCF_DRIVER_H  FT_DRIVER_H
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_TYPE1_TABLES_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   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
+   *   A macro used in `#include` statements to name the file containing the
    *   enumeration values which identify name strings, languages, encodings,
    *   etc.  This file really contains a _large_ set of constant macro
    *   definitions, taken from the TrueType and OpenType specifications.
@@ -416,174 +416,172 @@
 #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
+   *   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 four-byte `tags' which identify blocks in
+   *   A macro used in `#include` statements to name the file containing the
+   *   definitions of TrueType four-byte 'tags' which 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 which accesses BDF-specific strings from a
-   *   face.
+   *   A macro used in `#include` statements to name the file containing the
+   *   definitions of an API which accesses BDF-specific strings from a face.
    *
    */
 #define FT_BDF_H  <freetype/ftbdf.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_CID_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
-   *   definitions of an API which access CID font information from a
-   *   face.
+   *   A macro used in `#include` statements to name the file containing the
+   *   definitions of an API which access CID font information from a face.
    *
    */
 #define FT_CID_H  <freetype/ftcid.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_GZIP_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   definitions of an API which supports 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
+   *   A macro used in `#include` statements to name the file containing the
    *   definitions of an API which supports LZW-compressed files.
    *
    */
 #define FT_LZW_H  <freetype/ftlzw.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_BZIP2_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   definitions of an API which supports bzip2-compressed files.
    *
    */
 #define FT_BZIP2_H  <freetype/ftbzip2.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_WINFONTS_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   definitions of an API which supports 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
+   *   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_BITMAP_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   API of the optional bitmap conversion component.
    *
    */
 #define FT_BITMAP_H  <freetype/ftbitmap.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_BBOX_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   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
+   *   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_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.
+   *   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).
@@ -592,105 +590,105 @@
 #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
+   *   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 which accesses embedded `name' strings in
+   *   A macro used in `#include` statements to name the file containing the
+   *   optional FreeType~2 API which accesses embedded 'name' strings in
    *   SFNT-based font formats (i.e., TrueType and OpenType).
    *
    */
 #define FT_SFNT_NAMES_H  <freetype/ftsnames.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_OPENTYPE_VALIDATE_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
-   *   optional FreeType~2 API which validates OpenType tables (BASE, GDEF,
-   *   GPOS, GSUB, JSTF).
+   *   A macro used in `#include` statements to name the file containing the
+   *   optional FreeType~2 API which validates OpenType tables ('BASE',
+   *   'GDEF', 'GPOS', 'GSUB', 'JSTF').
    *
    */
 #define FT_OPENTYPE_VALIDATE_H  <freetype/ftotval.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_GX_VALIDATE_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
-   *   optional FreeType~2 API which validates TrueTypeGX/AAT tables (feat,
-   *   mort, morx, bsln, just, kern, opbd, trak, prop).
+   *   A macro used in `#include` statements to name the file containing the
+   *   optional FreeType~2 API which validates TrueTypeGX/AAT tables ('feat',
+   *   'mort', 'morx', 'bsln', 'just', 'kern', 'opbd', 'trak', 'prop').
    *
    */
 #define FT_GX_VALIDATE_H  <freetype/ftgxval.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_PFR_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which accesses PFR-specific data.
    *
    */
 #define FT_PFR_H  <freetype/ftpfr.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_STROKER_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which provides functions to stroke outline paths.
    */
 #define FT_STROKER_H  <freetype/ftstroke.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_SYNTHESIS_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which performs artificial obliquing and emboldening.
    */
 #define FT_SYNTHESIS_H  <freetype/ftsynth.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_FONT_FORMATS_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which provides functions specific to font formats.
    */
 #define FT_FONT_FORMATS_H  <freetype/ftfntfmt.h>
@@ -699,67 +697,79 @@
 #define FT_XFREE86_H  FT_FONT_FORMATS_H
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_TRIGONOMETRY_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which performs trigonometric computations (e.g.,
    *   cosines and arc tangents).
    */
 #define FT_TRIGONOMETRY_H  <freetype/fttrigon.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_LCD_FILTER_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which performs color filtering for subpixel rendering.
    */
 #define FT_LCD_FILTER_H  <freetype/ftlcdfil.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_INCREMENTAL_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which performs incremental glyph loading.
    */
 #define FT_INCREMENTAL_H  <freetype/ftincrem.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_GASP_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which returns entries from the TrueType GASP table.
    */
 #define FT_GASP_H  <freetype/ftgasp.h>
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_ADVANCES_H
    *
    * @description:
-   *   A macro used in #include statements to name the file containing the
+   *   A macro used in `#include` statements to name the file containing the
    *   FreeType~2 API which returns individual and ranged glyph advances.
    */
 #define FT_ADVANCES_H  <freetype/ftadvanc.h>
 
 
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_COLOR_H
+   *
+   * @description:
+   *   A macro used in `#include` statements to name the file containing the
+   *   FreeType~2 API which handles the OpenType 'CPAL' table.
+   */
+#define FT_COLOR_H  <freetype/ftcolor.h>
+
+
   /* */
 
   /* These header files don't need to be included by the user. */
@@ -770,14 +780,14 @@
 #define FT_UNPATENTED_HINTING_H   <freetype/ftparams.h>
 #define FT_TRUETYPE_UNPATENTED_H  <freetype/ftparams.h>
 
-  /* FT_CACHE_H is the only header file needed for the cache subsystem. */
+  /* `FT_CACHE_H` is the only header file needed for the cache subsystem. */
 #define FT_CACHE_IMAGE_H          FT_CACHE_H
 #define FT_CACHE_SMALL_BITMAPS_H  FT_CACHE_H
 #define FT_CACHE_CHARMAP_H        FT_CACHE_H
 
   /* The internals of the cache sub-system are no longer exposed.  We */
-  /* default to FT_CACHE_H at the moment just in case, but we know of */
-  /* no rogue client that uses them.                                  */
+  /* default to `FT_CACHE_H` at the moment just in case, but we know  */
+  /* of no rogue client that uses them.                               */
   /*                                                                  */
 #define FT_CACHE_MANAGER_H           FT_CACHE_H
 #define FT_CACHE_INTERNAL_MRU_H      FT_CACHE_H
@@ -789,8 +799,8 @@
 
 
   /*
-   * Include internal headers definitions from <internal/...>
-   * only when building the library.
+   * Include internal headers definitions from `<internal/...>` only when
+   * building the library.
    */
 #ifdef FT2_BUILD_LIBRARY
 #define  FT_INTERNAL_INTERNAL_H  <freetype/internal/internal.h>
--- a/src/java.desktop/share/native/libfreetype/include/freetype/config/ftmodule.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/config/ftmodule.h	Thu May 09 16:09:39 2019 -0700
@@ -1,12 +1,12 @@
 /*
- *  This file registers the FreeType modules compiled into the library.
+ * This file registers the FreeType modules compiled into the library.
  *
- *  If you use GNU make, this file IS NOT USED!  Instead, it is created in
- *  the objects directory (normally `<topdir>/objs/') based on information
- *  from `<topdir>/modules.cfg'.
+ * If you use GNU make, this file IS NOT USED!  Instead, it is created in
+ * the objects directory (normally `<topdir>/objs/`) based on information
+ * from `<topdir>/modules.cfg`.
  *
- *  Please read `docs/INSTALL.ANY' and `docs/CUSTOMIZE' how to compile
- *  FreeType without GNU make.
+ * Please read `docs/INSTALL.ANY` and `docs/CUSTOMIZE` how to compile
+ * FreeType without GNU make.
  *
  */
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/config/ftoption.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/config/ftoption.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftoption.h                                                             */
-/*                                                                         */
-/*    User-selectable configuration macros (specification only).           */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftoption.h
+ *
+ *   User-selectable configuration macros (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -25,45 +25,47 @@
 
 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.         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                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.
+   *
+   */
 
 
   /*************************************************************************/
@@ -75,444 +77,433 @@
   /*************************************************************************/
 
 
-  /*#***********************************************************************/
-  /*                                                                       */
-  /* If you enable this configuration option, FreeType recognizes an       */
-  /* environment variable called `FREETYPE_PROPERTIES', which can be used  */
-  /* to control the various font drivers and modules.  The controllable    */
-  /* properties are listed in the section @properties.                     */
-  /*                                                                       */
-  /* You have to undefine this configuration option on platforms that lack */
-  /* the concept of environment variables (and thus don't have the         */
-  /* `getenv' function), for example Windows CE.                           */
-  /*                                                                       */
-  /* `FREETYPE_PROPERTIES' has the following syntax form (broken here into */
-  /* multiple lines for better readability).                               */
-  /*                                                                       */
-  /* {                                                                     */
-  /*   <optional whitespace>                                               */
-  /*   <module-name1> ':'                                                  */
-  /*   <property-name1> '=' <property-value1>                              */
-  /*   <whitespace>                                                        */
-  /*   <module-name2> ':'                                                  */
-  /*   <property-name2> '=' <property-value2>                              */
-  /*   ...                                                                 */
-  /* }                                                                     */
-  /*                                                                       */
-  /* Example:                                                              */
-  /*                                                                       */
-  /*   FREETYPE_PROPERTIES=truetype:interpreter-version=35 \               */
-  /*                       cff:no-stem-darkening=1 \                       */
-  /*                       autofitter:warping=1                            */
-  /*                                                                       */
+  /*#************************************************************************
+   *
+   * If you enable this configuration option, FreeType recognizes an
+   * environment variable called `FREETYPE_PROPERTIES`, which can be used to
+   * control the various font drivers and modules.  The controllable
+   * properties are listed in the section @properties.
+   *
+   * You have to undefine this configuration option on platforms that lack
+   * the concept of environment variables (and thus don't have the `getenv`
+   * function), for example Windows CE.
+   *
+   * `FREETYPE_PROPERTIES` has the following syntax form (broken here into
+   * multiple lines for better readability).
+   *
+   * ```
+   *   <optional whitespace>
+   *   <module-name1> ':'
+   *   <property-name1> '=' <property-value1>
+   *   <whitespace>
+   *   <module-name2> ':'
+   *   <property-name2> '=' <property-value2>
+   *   ...
+   * ```
+   *
+   * Example:
+   *
+   * ```
+   *   FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
+   *                       cff:no-stem-darkening=1 \
+   *                       autofitter:warping=1
+   * ```
+   *
+   */
 #define FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Uncomment the line below if you want to activate LCD rendering        */
-  /* technology similar to ClearType in this build of the library.  This   */
-  /* technology triples the resolution in the direction color subpixels.   */
-  /* To mitigate color fringes inherent to this technology, you also need  */
-  /* to explicitly set up LCD filtering.                                   */
-  /*                                                                       */
-  /* Note that this feature is covered by several Microsoft patents        */
-  /* and should not be activated in any default build of the library.      */
-  /* When this macro is not defined, FreeType offers alternative LCD       */
-  /* rendering technology that produces excellent output without LCD       */
-  /* filtering.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Uncomment the line below if you want to activate LCD rendering
+   * technology similar to ClearType in this build of the library.  This
+   * technology triples the resolution in the direction color subpixels.  To
+   * mitigate color fringes inherent to this technology, you also need to
+   * explicitly set up LCD filtering.
+   *
+   * Note that this feature is covered by several Microsoft patents and
+   * should not be activated in any default build of the library.  When this
+   * macro is not defined, FreeType offers alternative LCD rendering
+   * technology that produces excellent output without LCD filtering.
+   */
 /* #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* If this macro is defined, do not try to use an assembler version of   */
-  /* performance-critical functions (e.g. FT_MulFix).  You should only do  */
-  /* that to verify that the assembler function works properly, or to      */
-  /* execute benchmark tests of the various implementations.               */
+  /**************************************************************************
+   *
+   * If this macro is defined, do not try to use an assembler version of
+   * performance-critical functions (e.g., @FT_MulFix).  You should only do
+   * that to verify that the assembler function works properly, or to execute
+   * benchmark tests of the various implementations.
+   */
 /* #define FT_CONFIG_OPTION_NO_ASSEMBLER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* If this macro is defined, try to use an inlined assembler version of  */
-  /* the `FT_MulFix' function, which is a `hotspot' when loading and       */
-  /* hinting glyphs, and which should be executed as fast as possible.     */
-  /*                                                                       */
-  /* Note that if your compiler or CPU is not supported, this will default */
-  /* to the standard and portable implementation found in `ftcalc.c'.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * If this macro is defined, try to use an inlined assembler version of the
+   * @FT_MulFix function, which is a 'hotspot' when loading and hinting
+   * glyphs, and which should be executed as fast as possible.
+   *
+   * Note that if your compiler or CPU is not supported, this will default to
+   * the standard and portable implementation found in `ftcalc.c`.
+   */
 #define FT_CONFIG_OPTION_INLINE_MULFIX
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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'.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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.                                 */
-  /*                                                                       */
-  /*   If you use a build system like cmake or the `configure' script,     */
-  /*   options set by those programs have precendence, overwriting the     */
-  /*   value here with the configured one.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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.
+   *
+   *   If you use a build system like cmake or the `configure` script,
+   *   options set by those programs have precedence, overwriting the value
+   *   here with the configured one.
+   */
 /* #define FT_CONFIG_OPTION_SYSTEM_ZLIB */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Bzip2-compressed file support.                                        */
-  /*                                                                       */
-  /*   FreeType now handles font files that have been compressed with the  */
-  /*   `bzip2' program.  This is mostly used to parse many of the PCF      */
-  /*   files that come with XFree86.  The implementation uses `libbz2' to  */
-  /*   partially uncompress the file on the fly (see src/bzip2/ftbzip2.c). */
-  /*   Contrary to gzip, bzip2 currently is not included and need to use   */
-  /*   the system available bzip2 implementation.                          */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
-  /*   If you use a build system like cmake or the `configure' script,     */
-  /*   options set by those programs have precendence, overwriting the     */
-  /*   value here with the configured one.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Bzip2-compressed file support.
+   *
+   *   FreeType now handles font files that have been compressed with the
+   *   `bzip2` program.  This is mostly used to parse many of the PCF files
+   *   that come with XFree86.  The implementation uses `libbz2` to partially
+   *   uncompress the file on the fly (see `src/bzip2/ftbzip2.c`).  Contrary
+   *   to gzip, bzip2 currently is not included and need to use the system
+   *   available bzip2 implementation.
+   *
+   *   Define this macro if you want to enable this 'feature'.
+   *
+   *   If you use a build system like cmake or the `configure` script,
+   *   options set by those programs have precedence, overwriting the value
+   *   here with the configured one.
+   */
 /* #define FT_CONFIG_OPTION_USE_BZIP2 */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define to disable the use of file stream functions and types, FILE,   */
-  /* fopen() etc.  Enables the use of smaller system libraries on embedded */
-  /* systems that have multiple system libraries, some with or without     */
-  /* file stream support, in the cases where file stream support is not    */
-  /* necessary such as memory loading of font files.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define to disable the use of file stream functions and types, `FILE`,
+   * `fopen`, etc.  Enables the use of smaller system libraries on embedded
+   * systems that have multiple system libraries, some with or without file
+   * stream support, in the cases where file stream support is not necessary
+   * such as memory loading of font files.
+   */
 /* #define FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PNG bitmap support.                                                   */
-  /*                                                                       */
-  /*   FreeType now handles loading color bitmap glyphs in the PNG format. */
-  /*   This requires help from the external libpng library.  Uncompressed  */
-  /*   color bitmaps do not need any external libraries and will be        */
-  /*   supported regardless of this configuration.                         */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
-  /*   If you use a build system like cmake or the `configure' script,     */
-  /*   options set by those programs have precendence, overwriting the     */
-  /*   value here with the configured one.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * PNG bitmap support.
+   *
+   *   FreeType now handles loading color bitmap glyphs in the PNG format.
+   *   This requires help from the external libpng library.  Uncompressed
+   *   color bitmaps do not need any external libraries and will be supported
+   *   regardless of this configuration.
+   *
+   *   Define this macro if you want to enable this 'feature'.
+   *
+   *   If you use a build system like cmake or the `configure` script,
+   *   options set by those programs have precedence, overwriting the value
+   *   here with the configured one.
+   */
 /* #define FT_CONFIG_OPTION_USE_PNG */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* HarfBuzz support.                                                     */
-  /*                                                                       */
-  /*   FreeType uses the HarfBuzz library to improve auto-hinting of       */
-  /*   OpenType fonts.  If available, many glyphs not directly addressable */
-  /*   by a font's character map will be hinted also.                      */
-  /*                                                                       */
-  /*   Define this macro if you want to enable this `feature'.             */
-  /*                                                                       */
-  /*   If you use a build system like cmake or the `configure' script,     */
-  /*   options set by those programs have precendence, overwriting the     */
-  /*   value here with the configured one.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * HarfBuzz support.
+   *
+   *   FreeType uses the HarfBuzz library to improve auto-hinting of OpenType
+   *   fonts.  If available, many glyphs not directly addressable by a font's
+   *   character map will be hinted also.
+   *
+   *   Define this macro if you want to enable this 'feature'.
+   *
+   *   If you use a build system like cmake or the `configure` script,
+   *   options set by those programs have precedence, overwriting the value
+   *   here with the configured one.
+   */
 /* #define FT_CONFIG_OPTION_USE_HARFBUZZ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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, but will not synthesize a missing Unicode charmap.  */
-  /*                                                                       */
-  /*   - The Type 1 driver will not be able to synthesize 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.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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,
+   *     but will not synthesize a missing Unicode charmap.
+   *
+   *   - The Type~1 driver will not be able to synthesize 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        */
-  /*   synthesize 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 synthesize a Unicode charmap out of the glyphs found in the */
-  /*   fonts.                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 synthesize 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
+   *   synthesize 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.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 is required by clients supporting document formats which         */
-  /* supply font data incrementally as the document is parsed, such        */
-  /* as the Ghostscript interpreter for the PostScript language.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Allow the use of `FT_Incremental_Interface` to load typefaces that
+   * contain no glyph data, but supply it via a callback function.  This is
+   * required by clients supporting document formats which supply font data
+   * incrementally as the document is parsed, such as the Ghostscript
+   * interpreter for the PostScript language.
+   */
 #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.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The size in bytes of the render pool used by the scan-line converter to
+   * do all of its work.
+   */
 #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.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Autofitter debugging                                                  */
-  /*                                                                       */
-  /*   If FT_DEBUG_AUTOFIT is defined, FreeType provides some means to     */
-  /*   control the autofitter behaviour for debugging purposes with global */
-  /*   boolean variables (consequently, you should *never* enable this     */
-  /*   while compiling in `release' mode):                                 */
-  /*                                                                       */
-  /*     _af_debug_disable_horz_hints                                      */
-  /*     _af_debug_disable_vert_hints                                      */
-  /*     _af_debug_disable_blue_hints                                      */
-  /*                                                                       */
-  /*   Additionally, the following functions provide dumps of various      */
-  /*   internal autofit structures to stdout (using `printf'):             */
-  /*                                                                       */
-  /*     af_glyph_hints_dump_points                                        */
-  /*     af_glyph_hints_dump_segments                                      */
-  /*     af_glyph_hints_dump_edges                                         */
-  /*     af_glyph_hints_get_num_segments                                   */
-  /*     af_glyph_hints_get_segment_offset                                 */
-  /*                                                                       */
-  /*   As an argument, they use another global variable:                   */
-  /*                                                                       */
-  /*     _af_debug_hints                                                   */
-  /*                                                                       */
-  /*   Please have a look at the `ftgrid' demo program to see how those    */
-  /*   variables and macros should be used.                                */
-  /*                                                                       */
-  /*   Do not #undef these macros here since the build system might define */
-  /*   them for certain configurations only.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Autofitter debugging
+   *
+   *   If `FT_DEBUG_AUTOFIT` is defined, FreeType provides some means to
+   *   control the autofitter behaviour for debugging purposes with global
+   *   boolean variables (consequently, you should **never** enable this
+   *   while compiling in 'release' mode):
+   *
+   *   ```
+   *     _af_debug_disable_horz_hints
+   *     _af_debug_disable_vert_hints
+   *     _af_debug_disable_blue_hints
+   *   ```
+   *
+   *   Additionally, the following functions provide dumps of various
+   *   internal autofit structures to stdout (using `printf`):
+   *
+   *   ```
+   *     af_glyph_hints_dump_points
+   *     af_glyph_hints_dump_segments
+   *     af_glyph_hints_dump_edges
+   *     af_glyph_hints_get_num_segments
+   *     af_glyph_hints_get_segment_offset
+   *   ```
+   *
+   *   As an argument, they use another global variable:
+   *
+   *   ```
+   *     _af_debug_hints
+   *   ```
+   *
+   *   Please have a look at the `ftgrid` demo program to see how those
+   *   variables and macros should be used.
+   *
+   *   Do not `#undef` these macros here since the build system might define
+   *   them for certain configurations only.
+   */
 /* #define FT_DEBUG_AUTOFIT */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Position Independent Code                                             */
-  /*                                                                       */
-  /*   If this macro is set (which is _not_ the default), FreeType2 will   */
-  /*   avoid creating constants that require address fixups.  Instead the  */
-  /*   constants will be moved into a struct and additional intialization  */
-  /*   code will be used.                                                  */
-  /*                                                                       */
-  /*   Setting this macro is needed for systems that prohibit address      */
-  /*   fixups, such as BREW.  [Note that standard compilers like gcc or    */
-  /*   clang handle PIC generation automatically; you don't have to set    */
-  /*   FT_CONFIG_OPTION_PIC, which is only necessary for very special      */
-  /*   compilers.]                                                         */
-  /*                                                                       */
-  /*   Note that FT_CONFIG_OPTION_PIC support is not available for all     */
-  /*   modules (see `modules.cfg' for a complete list).  For building with */
-  /*   FT_CONFIG_OPTION_PIC support, do the following.                     */
-  /*                                                                       */
-  /*     0. Clone the repository.                                          */
-  /*     1. Define FT_CONFIG_OPTION_PIC.                                   */
-  /*     2. Remove all subdirectories in `src' that don't have             */
-  /*        FT_CONFIG_OPTION_PIC support.                                  */
-  /*     3. Comment out the corresponding modules in `modules.cfg'.        */
-  /*     4. Compile.                                                       */
-  /*                                                                       */
-/* #define FT_CONFIG_OPTION_PIC */
+  /**************************************************************************
+   *
+   * Error Strings
+   *
+   *   If this macro is set, `FT_Error_String` will return meaningful
+   *   descriptions.  This is not enabled by default to reduce the overall
+   *   size of FreeType.
+   *
+   *   More details can be found in the file `fterrors.h`.
+   */
+/* #define FT_CONFIG_OPTION_ERROR_STRINGS */
 
 
   /*************************************************************************/
@@ -524,50 +515,60 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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` 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_COLOR_LAYERS` if you want to support coloured
+   * outlines (from the 'COLR'/'CPAL' tables) in all formats using the 'sfnt'
+   * module (namely TrueType~& OpenType).
+   */
+#define TT_CONFIG_OPTION_COLOR_LAYERS
+
+
+  /**************************************************************************
+   *
+   * 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        */
-  /* `ftsnames.h'.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+   * `ftsnames.h`.
+   */
 #define TT_CONFIG_OPTION_SFNT_NAMES
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TrueType CMap support                                                 */
-  /*                                                                       */
-  /*   Here you can fine-tune which TrueType CMap table format shall be    */
-  /*   supported.                                                          */
+  /**************************************************************************
+   *
+   * 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
@@ -587,131 +588,130 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_BYTECODE_INTERPRETER if you want to compile   */
-  /* a bytecode interpreter in the TrueType driver.                        */
-  /*                                                                       */
-  /* 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` if you want to compile a
+   * bytecode interpreter in the TrueType driver.
+   *
+   * 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_SUBPIXEL_HINTING if you want to compile       */
-  /* subpixel hinting support into the TrueType driver.  This modifies the */
-  /* TrueType hinting mechanism when anything but FT_RENDER_MODE_MONO is   */
-  /* requested.                                                            */
-  /*                                                                       */
-  /* In particular, it modifies the bytecode interpreter to interpret (or  */
-  /* not) instructions in a certain way so that all TrueType fonts look    */
-  /* like they do in a Windows ClearType (DirectWrite) environment.  See   */
-  /* [1] for a technical overview on what this means.  See `ttinterp.h'    */
-  /* for more details on the LEAN option.                                  */
-  /*                                                                       */
-  /* There are three possible values.                                      */
-  /*                                                                       */
-  /* Value 1:                                                              */
-  /*    This value is associated with the `Infinality' moniker,            */
-  /*    contributed by an individual nicknamed Infinality with the goal of */
-  /*    making TrueType fonts render better than on Windows.  A high       */
-  /*    amount of configurability and flexibility, down to rules for       */
-  /*    single glyphs in fonts, but also very slow.  Its experimental and  */
-  /*    slow nature and the original developer losing interest meant that  */
-  /*    this option was never enabled in default builds.                   */
-  /*                                                                       */
-  /*    The corresponding interpreter version is v38.                      */
-  /*                                                                       */
-  /* Value 2:                                                              */
-  /*    The new default mode for the TrueType driver.  The Infinality code */
-  /*    base was stripped to the bare minimum and all configurability      */
-  /*    removed in the name of speed and simplicity.  The configurability  */
-  /*    was mainly aimed at legacy fonts like Arial, Times New Roman, or   */
-  /*    Courier.  Legacy fonts are fonts that modify vertical stems to     */
-  /*    achieve clean black-and-white bitmaps.  The new mode focuses on    */
-  /*    applying a minimal set of rules to all fonts indiscriminately so   */
-  /*    that modern and web fonts render well while legacy fonts render    */
-  /*    okay.                                                              */
-  /*                                                                       */
-  /*    The corresponding interpreter version is v40.                      */
-  /*                                                                       */
-  /* Value 3:                                                              */
-  /*    Compile both, making both v38 and v40 available (the latter is the */
-  /*    default).                                                          */
-  /*                                                                       */
-  /* By undefining these, you get rendering behavior like on Windows       */
-  /* without ClearType, i.e., Windows XP without ClearType enabled and     */
-  /* Win9x (interpreter version v35).  Or not, depending on how much       */
-  /* hinting blood and testing tears the font designer put into a given    */
-  /* font.  If you define one or both subpixel hinting options, you can    */
-  /* switch between between v35 and the ones you define (using             */
-  /* `FT_Property_Set').                                                   */
-  /*                                                                       */
-  /* This option requires TT_CONFIG_OPTION_BYTECODE_INTERPRETER to be      */
-  /* defined.                                                              */
-  /*                                                                       */
-  /* [1] https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define `TT_CONFIG_OPTION_SUBPIXEL_HINTING` if you want to compile
+   * subpixel hinting support into the TrueType driver.  This modifies the
+   * TrueType hinting mechanism when anything but `FT_RENDER_MODE_MONO` is
+   * requested.
+   *
+   * In particular, it modifies the bytecode interpreter to interpret (or
+   * not) instructions in a certain way so that all TrueType fonts look like
+   * they do in a Windows ClearType (DirectWrite) environment.  See [1] for a
+   * technical overview on what this means.  See `ttinterp.h` for more
+   * details on the LEAN option.
+   *
+   * There are three possible values.
+   *
+   * Value 1:
+   *   This value is associated with the 'Infinality' moniker, contributed by
+   *   an individual nicknamed Infinality with the goal of making TrueType
+   *   fonts render better than on Windows.  A high amount of configurability
+   *   and flexibility, down to rules for single glyphs in fonts, but also
+   *   very slow.  Its experimental and slow nature and the original
+   *   developer losing interest meant that this option was never enabled in
+   *   default builds.
+   *
+   *   The corresponding interpreter version is v38.
+   *
+   * Value 2:
+   *   The new default mode for the TrueType driver.  The Infinality code
+   *   base was stripped to the bare minimum and all configurability removed
+   *   in the name of speed and simplicity.  The configurability was mainly
+   *   aimed at legacy fonts like 'Arial', 'Times New Roman', or 'Courier'.
+   *   Legacy fonts are fonts that modify vertical stems to achieve clean
+   *   black-and-white bitmaps.  The new mode focuses on applying a minimal
+   *   set of rules to all fonts indiscriminately so that modern and web
+   *   fonts render well while legacy fonts render okay.
+   *
+   *   The corresponding interpreter version is v40.
+   *
+   * Value 3:
+   *   Compile both, making both v38 and v40 available (the latter is the
+   *   default).
+   *
+   * By undefining these, you get rendering behavior like on Windows without
+   * ClearType, i.e., Windows XP without ClearType enabled and Win9x
+   * (interpreter version v35).  Or not, depending on how much hinting blood
+   * and testing tears the font designer put into a given font.  If you
+   * define one or both subpixel hinting options, you can switch between
+   * between v35 and the ones you define (using `FT_Property_Set`).
+   *
+   * This option requires `TT_CONFIG_OPTION_BYTECODE_INTERPRETER` to be
+   * defined.
+   *
+   * [1]
+   * https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
+   */
 /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  1         */
 #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  2
 /* #define TT_CONFIG_OPTION_SUBPIXEL_HINTING  ( 1 | 2 ) */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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 scaling  */
-  /* 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.                                             */
-  /*                                                                       */
-  /*   https://www.microsoft.com/typography/otspec/glyf.htm                */
-  /*   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 scaling
+   * 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.
+   *
+   *   https://www.microsoft.com/typography/otspec/glyf.htm
+   *   https://developer.apple.com/fonts/TrueType-Reference-Manual/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` if you want to include support
+   * for Apple's distortable font technology ('fvar', 'gvar', 'cvar', and
+   * 'avar' tables).  Tagged 'Font Variations', this is now part of OpenType
+   * also.  This has many similarities to Type~1 Multiple Masters support.
+   */
 #define TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define TT_CONFIG_OPTION_BDF if you want to include support for        */
-  /* an embedded `BDF ' table within SFNT-based bitmap formats.            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define `TT_CONFIG_OPTION_BDF` if you want to include support for an
+   * embedded 'BDF~' table within SFNT-based bitmap formats.
+   */
 /* #define TT_CONFIG_OPTION_BDF */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Option TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES controls the maximum     */
-  /* number of bytecode instructions executed for a single run of the      */
-  /* bytecode interpreter, needed to prevent infinite loops.  You don't    */
-  /* want to change this except for very special situations (e.g., making  */
-  /* a library fuzzer spend less time to handle broken fonts).             */
-  /*                                                                       */
-  /* It is not expected that this value is ever modified by a configuring  */
-  /* script; instead, it gets surrounded with #ifndef ... #endif so that   */
-  /* the value can be set as a preprocessor option on the compiler's       */
-  /* command line.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Option `TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES` controls the maximum
+   * number of bytecode instructions executed for a single run of the
+   * bytecode interpreter, needed to prevent infinite loops.  You don't want
+   * to change this except for very special situations (e.g., making a
+   * library fuzzer spend less time to handle broken fonts).
+   *
+   * It is not expected that this value is ever modified by a configuring
+   * script; instead, it gets surrounded with `#ifndef ... #endif` so that
+   * the value can be set as a preprocessor option on the compiler's command
+   * line.
+   */
 #ifndef TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES
 #define TT_CONFIG_OPTION_MAX_RUNNABLE_OPCODES  1000000L
 #endif
@@ -726,59 +726,58 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_DICT_DEPTH is the maximum depth of nest dictionaries and       */
-  /* arrays in the Type 1 stream (see t1load.c).  A minimum of 4 is        */
-  /* required.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * `T1_MAX_DICT_DEPTH` is the maximum 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.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * `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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * `T1_MAX_CHARSTRING_OPERANDS` is the charstring stack's capacity.  A
+   * minimum of~16 is required.
+   *
+   * The Chinese font 'MingTiEG-Medium' (covering the 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.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Define this configuration macro if you want to prevent the compilation
+   * of the 't1afm' module, which is in charge of reading Type~1 AFM files
+   * into an existing face.  Note that if set, the Type~1 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.                                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe Type 1     */
-  /* engine gets compiled into FreeType.  If defined, it is possible to    */
-  /* switch between the two engines using the `hinting-engine' property of */
-  /* the type1 driver module.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * `T1_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe Type~1
+   * engine gets compiled into FreeType.  If defined, it is possible to
+   * switch between the two engines using the `hinting-engine` property of
+   * the 'type1' driver module.
+   */
 /* #define T1_CONFIG_OPTION_OLD_ENGINE */
 
 
@@ -791,17 +790,16 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Using CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4} it is      */
-  /* possible to set up the default values of the four control points that */
-  /* define the stem darkening behaviour of the (new) CFF engine.  For     */
-  /* more details please read the documentation of the                     */
-  /* `darkening-parameters' property (file `ftdriver.h'), which allows the */
-  /* control at run-time.                                                  */
-  /*                                                                       */
-  /* Do *not* undefine these macros!                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Using `CFF_CONFIG_OPTION_DARKENING_PARAMETER_{X,Y}{1,2,3,4}` it is
+   * possible to set up the default values of the four control points that
+   * define the stem darkening behaviour of the (new) CFF engine.  For more
+   * details please read the documentation of the `darkening-parameters`
+   * property (file `ftdriver.h`), which allows the control at run-time.
+   *
+   * Do **not** undefine these macros!
+   */
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1   500
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y1   400
 
@@ -815,13 +813,13 @@
 #define CFF_CONFIG_OPTION_DARKENING_PARAMETER_Y4     0
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CFF_CONFIG_OPTION_OLD_ENGINE controls whether the pre-Adobe CFF       */
-  /* engine gets compiled into FreeType.  If defined, it is possible to    */
-  /* switch between the two engines using the `hinting-engine' property of */
-  /* the cff driver module.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * `CFF_CONFIG_OPTION_OLD_ENGINE` controls whether the pre-Adobe CFF engine
+   * gets compiled into FreeType.  If defined, it is possible to switch
+   * between the two engines using the `hinting-engine` property of the 'cff'
+   * driver module.
+   */
 /* #define CFF_CONFIG_OPTION_OLD_ENGINE */
 
 
@@ -834,21 +832,21 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* There are many PCF fonts just called `Fixed' which look completely    */
-  /* different, and which have nothing to do with each other.  When        */
-  /* selecting `Fixed' in KDE or Gnome one gets results that appear rather */
-  /* random, the style changes often if one changes the size and one       */
-  /* cannot select some fonts at all.  This option makes the PCF module    */
-  /* prepend the foundry name (plus a space) to the family name.           */
-  /*                                                                       */
-  /* We also check whether we have `wide' characters; all put together, we */
-  /* get family names like `Sony Fixed' or `Misc Fixed Wide'.              */
-  /*                                                                       */
-  /* If this option is activated, it can be controlled with the            */
-  /* `no-long-family-names' property of the pcf driver module.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * There are many PCF fonts just called 'Fixed' which look completely
+   * different, and which have nothing to do with each other.  When selecting
+   * 'Fixed' in KDE or Gnome one gets results that appear rather random, the
+   * style changes often if one changes the size and one cannot select some
+   * fonts at all.  This option makes the 'pcf' module prepend the foundry
+   * name (plus a space) to the family name.
+   *
+   * We also check whether we have 'wide' characters; all put together, we
+   * get family names like 'Sony Fixed' or 'Misc Fixed Wide'.
+   *
+   * If this option is activated, it can be controlled with the
+   * `no-long-family-names` property of the 'pcf' driver module.
+   */
 /* #define PCF_CONFIG_OPTION_LONG_FAMILY_NAMES */
 
 
@@ -861,69 +859,76 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with CJK (Chinese, Japanese, Korean) script    */
-  /* support.                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Compile 'autofit' module with CJK (Chinese, Japanese, Korean) script
+   * support.
+   */
 #define AF_CONFIG_OPTION_CJK
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with fallback Indic script support, covering   */
-  /* some scripts that the `latin' submodule of the autofit module doesn't */
-  /* (yet) handle.                                                         */
-  /*                                                                       */
+
+  /**************************************************************************
+   *
+   * Compile 'autofit' module with fallback Indic script support, covering
+   * some scripts that the 'latin' submodule of the 'autofit' module doesn't
+   * (yet) handle.
+   */
 #define AF_CONFIG_OPTION_INDIC
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Compile autofit module with warp hinting.  The idea of the warping    */
-  /* code is to slightly scale and shift a glyph within a single dimension */
-  /* so that as much of its segments are aligned (more or less) on the     */
-  /* grid.  To find out the optimal scaling and shifting value, various    */
-  /* parameter combinations are tried and scored.                          */
-  /*                                                                       */
-  /* This experimental option is active only if the rendering mode is      */
-  /* FT_RENDER_MODE_LIGHT; you can switch warping on and off with the      */
-  /* `warping' property of the auto-hinter (see file `ftdriver.h' for more */
-  /* information; by default it is switched off).                          */
-  /*                                                                       */
+
+  /**************************************************************************
+   *
+   * Compile 'autofit' module with warp hinting.  The idea of the warping
+   * code is to slightly scale and shift a glyph within a single dimension so
+   * that as much of its segments are aligned (more or less) on the grid.  To
+   * find out the optimal scaling and shifting value, various parameter
+   * combinations are tried and scored.
+   *
+   * You can switch warping on and off with the `warping` property of the
+   * auto-hinter (see file `ftdriver.h` for more information; by default it
+   * is switched off).
+   *
+   * This experimental option is not active if the rendering mode is
+   * `FT_RENDER_MODE_LIGHT`.
+   */
 #define AF_CONFIG_OPTION_USE_WARPER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Use TrueType-like size metrics for `light' auto-hinting.              */
-  /*                                                                       */
-  /* It is strongly recommended to avoid this option, which exists only to */
-  /* help some legacy applications retain its appearance and behaviour     */
-  /* with respect to auto-hinted TrueType fonts.                           */
-  /*                                                                       */
-  /* The very reason this option exists at all are GNU/Linux distributions */
-  /* like Fedora that did not un-patch the following change (which was     */
-  /* present in FreeType between versions 2.4.6 and 2.7.1, inclusive).     */
-  /*                                                                       */
-  /*   2011-07-16  Steven Chu  <steven.f.chu@gmail.com>                    */
-  /*                                                                       */
-  /*     [truetype] Fix metrics on size request for scalable fonts.        */
-  /*                                                                       */
-  /* This problematic commit is now reverted (more or less).               */
-  /*                                                                       */
+
+  /**************************************************************************
+   *
+   * Use TrueType-like size metrics for 'light' auto-hinting.
+   *
+   * It is strongly recommended to avoid this option, which exists only to
+   * help some legacy applications retain its appearance and behaviour with
+   * respect to auto-hinted TrueType fonts.
+   *
+   * The very reason this option exists at all are GNU/Linux distributions
+   * like Fedora that did not un-patch the following change (which was
+   * present in FreeType between versions 2.4.6 and 2.7.1, inclusive).
+   *
+   * ```
+   *   2011-07-16  Steven Chu  <steven.f.chu@gmail.com>
+   *
+   *     [truetype] Fix metrics on size request for scalable fonts.
+   * ```
+   *
+   * This problematic commit is now reverted (more or less).
+   */
 /* #define AF_CONFIG_OPTION_TT_SIZE_METRICS */
 
   /* */
 
 
   /*
-   * This macro is obsolete.  Support has been removed in FreeType
-   * version 2.5.
+   * This macro is obsolete.  Support has been removed in FreeType version
+   * 2.5.
    */
 /* #define FT_CONFIG_OPTION_OLD_INTERNALS */
 
 
   /*
-   * This macro is defined if native TrueType hinting is requested by the
-   * definitions above.
+   * The next three macros are defined if native TrueType hinting is
+   * requested by the definitions above.  Don't change this.
    */
 #ifdef TT_CONFIG_OPTION_BYTECODE_INTERPRETER
 #define  TT_USE_BYTECODE_INTERPRETER
@@ -942,7 +947,7 @@
 
   /*
    * Check CFF darkening parameters.  The checks are the same as in function
-   * `cff_property_set' in file `cffdrivr.c'.
+   * `cff_property_set` in file `cffdrivr.c`.
    */
 #if CFF_CONFIG_OPTION_DARKENING_PARAMETER_X1 < 0   || \
     CFF_CONFIG_OPTION_DARKENING_PARAMETER_X2 < 0   || \
--- a/src/java.desktop/share/native/libfreetype/include/freetype/config/ftstdlib.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/config/ftstdlib.h	Thu May 09 16:09:39 2019 -0700
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstdlib.h                                                             */
-/*                                                                         */
-/*    ANSI-specific library and header configuration file (specification   */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstdlib.h
+ *
+ *   ANSI-specific library and header configuration file (specification
+ *   only).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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. */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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_
@@ -37,23 +37,23 @@
 #define ft_ptrdiff_t  ptrdiff_t
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                           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.     */
-  /*                                                                    */
-  /**********************************************************************/
+  /**************************************************************************
+   *
+   *                          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 FreeType~2 with all fonts.
+   *
+   * In these cases, `ftconfig.h` will refuse to compile anyway with a
+   * message like 'couldn't find 32-bit type' or something similar.
+   *
+   */
 
 
 #include <limits.h>
@@ -68,11 +68,11 @@
 #define FT_ULONG_MAX   ULONG_MAX
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                 character and string processing                    */
-  /*                                                                    */
-  /**********************************************************************/
+  /**************************************************************************
+   *
+   *                character and string processing
+   *
+   */
 
 
 #include <string.h>
@@ -92,11 +92,11 @@
 #define ft_strstr   strstr
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                           file handling                            */
-  /*                                                                    */
-  /**********************************************************************/
+  /**************************************************************************
+   *
+   *                          file handling
+   *
+   */
 
 
 #include <stdio.h>
@@ -110,11 +110,11 @@
 #define ft_sprintf  sprintf
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                             sorting                                */
-  /*                                                                    */
-  /**********************************************************************/
+  /**************************************************************************
+   *
+   *                            sorting
+   *
+   */
 
 
 #include <stdlib.h>
@@ -122,11 +122,11 @@
 #define ft_qsort  qsort
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                        memory allocation                           */
-  /*                                                                    */
-  /**********************************************************************/
+  /**************************************************************************
+   *
+   *                       memory allocation
+   *
+   */
 
 
 #define ft_scalloc   calloc
@@ -135,36 +135,36 @@
 #define ft_srealloc  realloc
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                          miscellaneous                             */
-  /*                                                                    */
-  /**********************************************************************/
+  /**************************************************************************
+   *
+   *                         miscellaneous
+   *
+   */
 
 
 #define ft_strtol  strtol
 #define ft_getenv  getenv
 
 
-  /**********************************************************************/
-  /*                                                                    */
-  /*                         execution control                          */
-  /*                                                                    */
-  /**********************************************************************/
+  /**************************************************************************
+   *
+   *                        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_jmp_buf     jmp_buf  /* note: this cannot be a typedef since  */
+                                /*       `jmp_buf` is defined as a macro */
+                                /*       on certain platforms            */
 
 #define ft_longjmp     longjmp
 #define ft_setjmp( b ) setjmp( *(ft_jmp_buf*) &(b) ) /* same thing here */
 
 
-  /* the following is only used for debugging purposes, i.e., if */
-  /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined    */
+  /* The following is only used for debugging purposes, i.e., if   */
+  /* `FT_DEBUG_LEVEL_ERROR` or `FT_DEBUG_LEVEL_TRACE` are defined. */
 
 #include <stdarg.h>
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/freetype.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/freetype.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  freetype.h                                                             */
-/*                                                                         */
-/*    FreeType high-level API and common types (specification only).       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * freetype.h
+ *
+ *   FreeType high-level API and common types (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FREETYPE_H_
@@ -39,56 +39,55 @@
 
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    header_inclusion                                                   */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    FreeType's header inclusion scheme                                 */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    How client applications should include FreeType header files.      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    To be as flexible as possible (and for historical reasons),        */
-  /*    FreeType uses a very special inclusion scheme to load header       */
-  /*    files, for example                                                 */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      #include <ft2build.h>                                            */
-  /*                                                                       */
-  /*      #include FT_FREETYPE_H                                           */
-  /*      #include FT_OUTLINE_H                                            */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    A compiler and its preprocessor only needs an include path to find */
-  /*    the file `ft2build.h'; the exact locations and names of the other  */
-  /*    FreeType header files are hidden by preprocessor macro names,      */
-  /*    loaded by `ft2build.h'.  The API documentation always gives the    */
-  /*    header macro name needed for a particular function.                */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    user_allocation                                                    */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    User allocation                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    How client applications should allocate FreeType data structures.  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FreeType assumes that structures allocated by the user and passed  */
-  /*    as arguments are zeroed out except for the actual data.  In other  */
-  /*    words, it is recommended to use `calloc' (or variants of it)       */
-  /*    instead of `malloc' for allocation.                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   header_inclusion
+   *
+   * @title:
+   *   FreeType's header inclusion scheme
+   *
+   * @abstract:
+   *   How client applications should include FreeType header files.
+   *
+   * @description:
+   *   To be as flexible as possible (and for historical reasons), FreeType
+   *   uses a very special inclusion scheme to load header files, for example
+   *
+   *   ```
+   *     #include <ft2build.h>
+   *
+   *     #include FT_FREETYPE_H
+   *     #include FT_OUTLINE_H
+   *   ```
+   *
+   *   A compiler and its preprocessor only needs an include path to find the
+   *   file `ft2build.h`; the exact locations and names of the other FreeType
+   *   header files are hidden by @header_file_macros, loaded by
+   *   `ft2build.h`.  The API documentation always gives the header macro
+   *   name needed for a particular function.
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * @section:
+   *   user_allocation
+   *
+   * @title:
+   *   User allocation
+   *
+   * @abstract:
+   *   How client applications should allocate FreeType data structures.
+   *
+   * @description:
+   *   FreeType assumes that structures allocated by the user and passed as
+   *   arguments are zeroed out except for the actual data.  In other words,
+   *   it is recommended to use `calloc` (or variants of it) instead of
+   *   `malloc` for allocation.
+   *
+   */
 
 
 
@@ -101,219 +100,219 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    base_interface                                                     */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Base Interface                                                     */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    The FreeType~2 base font interface.                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section describes the most important public high-level API    */
-  /*    functions of FreeType~2.                                           */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Library                                                         */
-  /*    FT_Face                                                            */
-  /*    FT_Size                                                            */
-  /*    FT_GlyphSlot                                                       */
-  /*    FT_CharMap                                                         */
-  /*    FT_Encoding                                                        */
-  /*    FT_ENC_TAG                                                         */
-  /*                                                                       */
-  /*    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_COLOR                                                 */
-  /*    FT_FACE_FLAG_SFNT                                                  */
-  /*    FT_FACE_FLAG_CID_KEYED                                             */
-  /*    FT_FACE_FLAG_TRICKY                                                */
-  /*    FT_FACE_FLAG_KERNING                                               */
-  /*    FT_FACE_FLAG_MULTIPLE_MASTERS                                      */
-  /*    FT_FACE_FLAG_VARIATION                                             */
-  /*    FT_FACE_FLAG_GLYPH_NAMES                                           */
-  /*    FT_FACE_FLAG_EXTERNAL_STREAM                                       */
-  /*    FT_FACE_FLAG_HINTER                                                */
-  /*                                                                       */
-  /*    FT_HAS_HORIZONTAL                                                  */
-  /*    FT_HAS_VERTICAL                                                    */
-  /*    FT_HAS_KERNING                                                     */
-  /*    FT_HAS_FIXED_SIZES                                                 */
-  /*    FT_HAS_GLYPH_NAMES                                                 */
-  /*    FT_HAS_COLOR                                                       */
-  /*    FT_HAS_MULTIPLE_MASTERS                                            */
-  /*                                                                       */
-  /*    FT_IS_SFNT                                                         */
-  /*    FT_IS_SCALABLE                                                     */
-  /*    FT_IS_FIXED_WIDTH                                                  */
-  /*    FT_IS_CID_KEYED                                                    */
-  /*    FT_IS_TRICKY                                                       */
-  /*    FT_IS_NAMED_INSTANCE                                               */
-  /*    FT_IS_VARIATION                                                    */
-  /*                                                                       */
-  /*    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_New_Face                                                        */
-  /*    FT_Done_Face                                                       */
-  /*    FT_Reference_Face                                                  */
-  /*    FT_New_Memory_Face                                                 */
-  /*    FT_Face_Properties                                                 */
-  /*    FT_Open_Face                                                       */
-  /*    FT_Open_Args                                                       */
-  /*    FT_Parameter                                                       */
-  /*    FT_Attach_File                                                     */
-  /*    FT_Attach_Stream                                                   */
-  /*                                                                       */
-  /*    FT_Set_Char_Size                                                   */
-  /*    FT_Set_Pixel_Sizes                                                 */
-  /*    FT_Request_Size                                                    */
-  /*    FT_Select_Size                                                     */
-  /*    FT_Size_Request_Type                                               */
-  /*    FT_Size_RequestRec                                                 */
-  /*    FT_Size_Request                                                    */
-  /*    FT_Set_Transform                                                   */
-  /*    FT_Load_Glyph                                                      */
-  /*    FT_Get_Char_Index                                                  */
-  /*    FT_Get_First_Char                                                  */
-  /*    FT_Get_Next_Char                                                   */
-  /*    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_NO_AUTOHINT                                                */
-  /*    FT_LOAD_COLOR                                                      */
-  /*                                                                       */
-  /*    FT_LOAD_VERTICAL_LAYOUT                                            */
-  /*    FT_LOAD_IGNORE_TRANSFORM                                           */
-  /*    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_LOAD_TARGET_MODE                                                */
-  /*                                                                       */
-  /*    FT_Render_Glyph                                                    */
-  /*    FT_Render_Mode                                                     */
-  /*    FT_Get_Kerning                                                     */
-  /*    FT_Kerning_Mode                                                    */
-  /*    FT_Get_Track_Kerning                                               */
-  /*    FT_Get_Glyph_Name                                                  */
-  /*    FT_Get_Postscript_Name                                             */
-  /*                                                                       */
-  /*    FT_CharMapRec                                                      */
-  /*    FT_Select_Charmap                                                  */
-  /*    FT_Set_Charmap                                                     */
-  /*    FT_Get_Charmap_Index                                               */
-  /*                                                                       */
-  /*    FT_Get_FSType_Flags                                                */
-  /*    FT_Get_SubGlyph_Info                                               */
-  /*                                                                       */
-  /*    FT_Face_Internal                                                   */
-  /*    FT_Size_Internal                                                   */
-  /*    FT_Slot_Internal                                                   */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_XXX                                                   */
-  /*    FT_STYLE_FLAG_XXX                                                  */
-  /*    FT_OPEN_XXX                                                        */
-  /*    FT_LOAD_XXX                                                        */
-  /*    FT_LOAD_TARGET_XXX                                                 */
-  /*    FT_SUBGLYPH_FLAG_XXX                                               */
-  /*    FT_FSTYPE_XXX                                                      */
-  /*                                                                       */
-  /*    FT_HAS_FAST_GLYPHS                                                 */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Glyph_Metrics                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure 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 has been used while loading the glyph, values    */
-  /*    are expressed 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.  Larger positive values    */
-  /*      mean further below the vertical glyph origin.                    */
-  /*                                                                       */
-  /*    vertAdvance ::                                                     */
-  /*      Advance height for vertical layout.  Positive values mean the    */
-  /*      glyph has a positive advance downward.                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If not disabled with @FT_LOAD_NO_HINTING, the values represent     */
-  /*    dimensions of the hinted glyph (in case hinting is applicable).    */
-  /*                                                                       */
-  /*    Stroking a glyph with an outside border does not increase          */
-  /*    `horiAdvance' or `vertAdvance'; you have to manually adjust these  */
-  /*    values to account for the added width and height.                  */
-  /*                                                                       */
-  /*    FreeType doesn't use the `VORG' table data for CFF fonts because   */
-  /*    it doesn't have an interface to quickly retrieve the glyph height. */
-  /*    The y~coordinate of the vertical origin can be simply computed as  */
-  /*    `vertBearingY + height' after loading a glyph.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @section:
+   *   base_interface
+   *
+   * @title:
+   *   Base Interface
+   *
+   * @abstract:
+   *   The FreeType~2 base font interface.
+   *
+   * @description:
+   *   This section describes the most important public high-level API
+   *   functions of FreeType~2.
+   *
+   * @order:
+   *   FT_Library
+   *   FT_Face
+   *   FT_Size
+   *   FT_GlyphSlot
+   *   FT_CharMap
+   *   FT_Encoding
+   *   FT_ENC_TAG
+   *
+   *   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_COLOR
+   *   FT_FACE_FLAG_SFNT
+   *   FT_FACE_FLAG_CID_KEYED
+   *   FT_FACE_FLAG_TRICKY
+   *   FT_FACE_FLAG_KERNING
+   *   FT_FACE_FLAG_MULTIPLE_MASTERS
+   *   FT_FACE_FLAG_VARIATION
+   *   FT_FACE_FLAG_GLYPH_NAMES
+   *   FT_FACE_FLAG_EXTERNAL_STREAM
+   *   FT_FACE_FLAG_HINTER
+   *
+   *   FT_HAS_HORIZONTAL
+   *   FT_HAS_VERTICAL
+   *   FT_HAS_KERNING
+   *   FT_HAS_FIXED_SIZES
+   *   FT_HAS_GLYPH_NAMES
+   *   FT_HAS_COLOR
+   *   FT_HAS_MULTIPLE_MASTERS
+   *
+   *   FT_IS_SFNT
+   *   FT_IS_SCALABLE
+   *   FT_IS_FIXED_WIDTH
+   *   FT_IS_CID_KEYED
+   *   FT_IS_TRICKY
+   *   FT_IS_NAMED_INSTANCE
+   *   FT_IS_VARIATION
+   *
+   *   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_New_Face
+   *   FT_Done_Face
+   *   FT_Reference_Face
+   *   FT_New_Memory_Face
+   *   FT_Face_Properties
+   *   FT_Open_Face
+   *   FT_Open_Args
+   *   FT_Parameter
+   *   FT_Attach_File
+   *   FT_Attach_Stream
+   *
+   *   FT_Set_Char_Size
+   *   FT_Set_Pixel_Sizes
+   *   FT_Request_Size
+   *   FT_Select_Size
+   *   FT_Size_Request_Type
+   *   FT_Size_RequestRec
+   *   FT_Size_Request
+   *   FT_Set_Transform
+   *   FT_Load_Glyph
+   *   FT_Get_Char_Index
+   *   FT_Get_First_Char
+   *   FT_Get_Next_Char
+   *   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_NO_AUTOHINT
+   *   FT_LOAD_COLOR
+   *
+   *   FT_LOAD_VERTICAL_LAYOUT
+   *   FT_LOAD_IGNORE_TRANSFORM
+   *   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_LOAD_TARGET_MODE
+   *
+   *   FT_Render_Glyph
+   *   FT_Render_Mode
+   *   FT_Get_Kerning
+   *   FT_Kerning_Mode
+   *   FT_Get_Track_Kerning
+   *   FT_Get_Glyph_Name
+   *   FT_Get_Postscript_Name
+   *
+   *   FT_CharMapRec
+   *   FT_Select_Charmap
+   *   FT_Set_Charmap
+   *   FT_Get_Charmap_Index
+   *
+   *   FT_Get_FSType_Flags
+   *   FT_Get_SubGlyph_Info
+   *
+   *   FT_Face_Internal
+   *   FT_Size_Internal
+   *   FT_Slot_Internal
+   *
+   *   FT_FACE_FLAG_XXX
+   *   FT_STYLE_FLAG_XXX
+   *   FT_OPEN_XXX
+   *   FT_LOAD_XXX
+   *   FT_LOAD_TARGET_XXX
+   *   FT_SUBGLYPH_FLAG_XXX
+   *   FT_FSTYPE_XXX
+   *
+   *   FT_HAS_FAST_GLYPHS
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Glyph_Metrics
+   *
+   * @description:
+   *   A structure 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 has been used while loading the glyph, values are
+   *   expressed 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.  Larger positive values mean
+   *     further below the vertical glyph origin.
+   *
+   *   vertAdvance ::
+   *     Advance height for vertical layout.  Positive values mean the glyph
+   *     has a positive advance downward.
+   *
+   * @note:
+   *   If not disabled with @FT_LOAD_NO_HINTING, the values represent
+   *   dimensions of the hinted glyph (in case hinting is applicable).
+   *
+   *   Stroking a glyph with an outside border does not increase
+   *   `horiAdvance` or `vertAdvance`; you have to manually adjust these
+   *   values to account for the added width and height.
+   *
+   *   FreeType doesn't use the 'VORG' table data for CFF fonts because it
+   *   doesn't have an interface to quickly retrieve the glyph height.  The
+   *   y~coordinate of the vertical origin can be simply computed as
+   *   `vertBearingY + height` after loading a glyph.
+   */
   typedef struct  FT_Glyph_Metrics_
   {
     FT_Pos  width;
@@ -330,44 +329,45 @@
   } FT_Glyph_Metrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Bitmap_Size                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure models the metrics of a bitmap strike (i.e., a set  */
-  /*    of glyphs for a given point size and resolution) in a bitmap font. */
-  /*    It is used for the `available_sizes' field of @FT_Face.            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    height :: The vertical distance, in pixels, between two            */
-  /*              consecutive baselines.  It is always positive.           */
-  /*                                                                       */
-  /*    width  :: The average width, in pixels, of all glyphs in the       */
-  /*              strike.                                                  */
-  /*                                                                       */
-  /*    size   :: The nominal size of the strike in 26.6 fractional        */
-  /*              points.  This field is not very useful.                  */
-  /*                                                                       */
-  /*    x_ppem :: The horizontal ppem (nominal width) in 26.6 fractional   */
-  /*              pixels.                                                  */
-  /*                                                                       */
-  /*    y_ppem :: The vertical ppem (nominal height) in 26.6 fractional    */
-  /*              pixels.                                                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Windows FNT:                                                       */
-  /*      The nominal size given in a FNT font is not reliable.  If the    */
-  /*      driver finds it incorrect, it sets `size' to some calculated     */
-  /*      values, and `x_ppem' and `y_ppem' to the pixel width and height  */
-  /*      given in the font, respectively.                                 */
-  /*                                                                       */
-  /*    TrueType embedded bitmaps:                                         */
-  /*      `size', `width', and `height' values are not contained in the    */
-  /*      bitmap strike itself.  They are computed from the global font    */
-  /*      parameters.                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Bitmap_Size
+   *
+   * @description:
+   *   This structure models the metrics of a bitmap strike (i.e., a set of
+   *   glyphs for a given point size and resolution) in a bitmap font.  It is
+   *   used for the `available_sizes` field of @FT_Face.
+   *
+   * @fields:
+   *   height ::
+   *     The vertical distance, in pixels, between two consecutive baselines.
+   *     It is always positive.
+   *
+   *   width ::
+   *     The average width, in pixels, of all glyphs in the strike.
+   *
+   *   size ::
+   *     The nominal size of the strike in 26.6 fractional points.  This
+   *     field is not very useful.
+   *
+   *   x_ppem ::
+   *     The horizontal ppem (nominal width) in 26.6 fractional pixels.
+   *
+   *   y_ppem ::
+   *     The vertical ppem (nominal height) in 26.6 fractional pixels.
+   *
+   * @note:
+   *   Windows FNT:
+   *     The nominal size given in a FNT font is not reliable.  If the driver
+   *     finds it incorrect, it sets `size` to some calculated values, and
+   *     `x_ppem` and `y_ppem` to the pixel width and height given in the
+   *     font, respectively.
+   *
+   *   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;
@@ -389,225 +389,218 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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).                       */
-  /*                                                                       */
-  /*    In multi-threaded applications it is easiest to use one            */
-  /*    `FT_Library' object per thread.  In case this is too cumbersome,   */
-  /*    a single `FT_Library' object across threads is possible also       */
-  /*    (since FreeType version 2.5.6), as long as a mutex lock is used    */
-  /*    around @FT_New_Face and @FT_Done_Face.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Library objects are normally created by @FT_Init_FreeType, and     */
-  /*    destroyed with @FT_Done_FreeType.  If you need reference-counting  */
-  /*    (cf. @FT_Reference_Library), use @FT_New_Library and               */
-  /*    @FT_Done_Library.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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).
+   *
+   *   [Since 2.5.6] In multi-threaded applications it is easiest to use one
+   *   `FT_Library` object per thread.  In case this is too cumbersome, a
+   *   single `FT_Library` object across threads is possible also, as long as
+   *   a mutex lock is used around @FT_New_Face and @FT_Done_Face.
+   *
+   * @note:
+   *   Library objects are normally created by @FT_Init_FreeType, and
+   *   destroyed with @FT_Done_FreeType.  If you need reference-counting
+   *   (cf. @FT_Reference_Library), use @FT_New_Library and @FT_Done_Library.
+   */
   typedef struct FT_LibraryRec_  *FT_Library;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    module_management                                                  */
-  /*                                                                       */
-  /*************************************************************************/
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Module                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a given FreeType module object.  A module can be a     */
-  /*    font driver, a renderer, or anything else that provides services   */
-  /*    to the former.                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @section:
+   *   module_management
+   *
+   */
+
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Module
+   *
+   * @description:
+   *   A handle to a given FreeType module object.  A module can be a font
+   *   driver, a renderer, or anything else that provides services to the
+   *   former.
+   */
   typedef struct FT_ModuleRec_*  FT_Module;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Driver                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a given FreeType font driver object.  A font driver    */
-  /*    is a module capable of creating faces from font files.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Driver
+   *
+   * @description:
+   *   A handle to a given FreeType font driver object.  A font driver is a
+   *   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 module in  */
-  /*    charge of converting a glyph's outline image to a bitmap.  It      */
-  /*    supports a single glyph image format, and one or more target       */
-  /*    surface depths.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Renderer
+   *
+   * @description:
+   *   A handle to a given FreeType renderer.  A renderer is a module in
+   *   charge of converting a glyph's outline image to a bitmap.  It supports
+   *   a single glyph image format, and one or more target surface depths.
+   */
   typedef struct FT_RendererRec_*  FT_Renderer;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    base_interface                                                     */
-  /*                                                                       */
-  /*************************************************************************/
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Face                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a typographic face object.  A face object models a     */
-  /*    given typeface, in a given style.                                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    A 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 filepath or a custom input stream.                         */
-  /*                                                                       */
-  /*    Use @FT_Done_Face to destroy it (along with its slot and sizes).   */
-  /*                                                                       */
-  /*    An `FT_Face' object can only be safely used from one thread at a   */
-  /*    time.  Similarly, creation and destruction of `FT_Face' with the   */
-  /*    same @FT_Library object can only be done from one thread at a      */
-  /*    time.  On the other hand, functions like @FT_Load_Glyph and its    */
-  /*    siblings are thread-safe and do not need the lock to be held as    */
-  /*    long as the same `FT_Face' object is not used from multiple        */
-  /*    threads at the same time.                                          */
-  /*                                                                       */
-  /* <Also>                                                                */
-  /*    See @FT_FaceRec for the publicly accessible fields of a given face */
-  /*    object.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @section:
+   *   base_interface
+   *
+   */
+
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Face
+   *
+   * @description:
+   *   A handle to a typographic face object.  A face object models a given
+   *   typeface, in a given style.
+   *
+   * @note:
+   *   A 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 filepath or a custom input stream.
+   *
+   *   Use @FT_Done_Face to destroy it (along with its slot and sizes).
+   *
+   *   An `FT_Face` object can only be safely used from one thread at a time.
+   *   Similarly, creation and destruction of `FT_Face` with the same
+   *   @FT_Library object can only be done from one thread at a time.  On the
+   *   other hand, functions like @FT_Load_Glyph and its siblings are
+   *   thread-safe and do not need the lock to be held as long as the same
+   *   `FT_Face` object is not used from multiple threads at the same time.
+   *
+   * @also:
+   *   See @FT_FaceRec for the publicly accessible fields of a given face
+   *   object.
+   */
   typedef struct FT_FaceRec_*  FT_Face;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Size                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an object that models a face scaled to a given         */
-  /*    character size.                                                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    An @FT_Face has one _active_ @FT_Size object that is used by       */
-  /*    functions like @FT_Load_Glyph to determine the scaling             */
-  /*    transformation that in turn is used to load and hint glyphs and    */
-  /*    metrics.                                                           */
-  /*                                                                       */
-  /*    You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes,                */
-  /*    @FT_Request_Size or even @FT_Select_Size to change the content     */
-  /*    (i.e., the scaling values) of the active @FT_Size.                 */
-  /*                                                                       */
-  /*    You can use @FT_New_Size to create additional size objects for a   */
-  /*    given @FT_Face, but they won't be used by other functions until    */
-  /*    you activate it through @FT_Activate_Size.  Only one size can be   */
-  /*    activated at any given time per face.                              */
-  /*                                                                       */
-  /* <Also>                                                                */
-  /*    See @FT_SizeRec for the publicly accessible fields of a given size */
-  /*    object.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Size
+   *
+   * @description:
+   *   A handle to an object that models a face scaled to a given character
+   *   size.
+   *
+   * @note:
+   *   An @FT_Face has one _active_ @FT_Size object that is used by functions
+   *   like @FT_Load_Glyph to determine the scaling transformation that in
+   *   turn is used to load and hint glyphs and metrics.
+   *
+   *   You can use @FT_Set_Char_Size, @FT_Set_Pixel_Sizes, @FT_Request_Size
+   *   or even @FT_Select_Size to change the content (i.e., the scaling
+   *   values) of the active @FT_Size.
+   *
+   *   You can use @FT_New_Size to create additional size objects for a given
+   *   @FT_Face, but they won't be used by other functions until you activate
+   *   it through @FT_Activate_Size.  Only one size can be activated at any
+   *   given time per face.
+   *
+   * @also:
+   *   See @FT_SizeRec for the publicly accessible fields of a given size
+   *   object.
+   */
   typedef struct FT_SizeRec_*  FT_Size;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_GlyphSlot                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a given `glyph slot'.  A slot is a container that can  */
-  /*    hold any 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>                                                                */
-  /*    See @FT_GlyphSlotRec for the publicly accessible glyph fields.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_GlyphSlot
+   *
+   * @description:
+   *   A handle to a given 'glyph slot'.  A slot is a container that can hold
+   *   any 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:
+   *   See @FT_GlyphSlotRec for the publicly accessible glyph fields.
+   */
   typedef struct FT_GlyphSlotRec_*  FT_GlyphSlot;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_CharMap                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a character map (usually abbreviated to `charmap').  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', providing the data 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.  If there is no Unicode   */
-  /*    charmap, FreeType doesn't set an `active' charmap.                 */
-  /*                                                                       */
-  /* <Also>                                                                */
-  /*    See @FT_CharMapRec for the publicly accessible fields of a given   */
-  /*    character map.                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_CharMap
+   *
+   * @description:
+   *   A handle to a character map (usually abbreviated to 'charmap').  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', providing the data 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.  If there is no Unicode charmap,
+   *   FreeType doesn't set an 'active' charmap.
+   *
+   * @also:
+   *   See @FT_CharMapRec for 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 16-bit compilers don't like 32-bit 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.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 16-bit compilers don't like 32-bit 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 )         \
@@ -619,150 +612,147 @@
 #endif /* FT_ENC_TAG */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Encoding                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration to specify character sets supported by charmaps.    */
-  /*    Used in the @FT_Select_Charmap API function.                       */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Despite the name, this enumeration lists specific character        */
-  /*    repertories (i.e., charsets), and not text encoding methods (e.g., */
-  /*    UTF-8, UTF-16, etc.).                                              */
-  /*                                                                       */
-  /*    Other encodings might be defined in the future.                    */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_ENCODING_NONE ::                                                */
-  /*      The encoding value~0 is reserved.                                */
-  /*                                                                       */
-  /*    FT_ENCODING_UNICODE ::                                             */
-  /*      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.                  */
-  /*                                                                       */
-  /*      For example, if you want to access Unicode value U+1F028 (and    */
-  /*      the font contains it), use value 0x1F028 as the input value for  */
-  /*      @FT_Get_Char_Index.                                              */
-  /*                                                                       */
-  /*    FT_ENCODING_MS_SYMBOL ::                                           */
-  /*      Microsoft Symbol encoding, used to encode mathematical symbols   */
-  /*      and wingdings.  For more information, see                        */
-  /*      `https://www.microsoft.com/typography/otspec/recom.htm',         */
-  /*      `http://www.kostis.net/charsets/symbol.htm', and                 */
-  /*      `http://www.kostis.net/charsets/wingding.htm'.                   */
-  /*                                                                       */
-  /*      This encoding uses character codes from the PUA (Private Unicode */
-  /*      Area) in the range U+F020-U+F0FF.                                */
-  /*                                                                       */
-  /*    FT_ENCODING_SJIS ::                                                */
-  /*      Shift JIS encoding for Japanese.  More info at                   */
-  /*      `https://en.wikipedia.org/wiki/Shift_JIS'.  See note on          */
-  /*      multi-byte encodings below.                                      */
-  /*                                                                       */
-  /*    FT_ENCODING_PRC ::                                                 */
-  /*      Corresponds to encoding systems mainly for Simplified Chinese as */
-  /*      used in People's Republic of China (PRC).  The encoding layout   */
-  /*      is based on GB~2312 and its supersets GBK and GB~18030.          */
-  /*                                                                       */
-  /*    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 Extended      */
-  /*      Wansung (MS Windows code page 949).                              */
-  /*      For more information see                                         */
-  /*      `https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit949.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 Hangul 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 ::                                      */
-  /*      Adobe Standard encoding, as found in Type~1, CFF, and            */
-  /*      OpenType/CFF fonts.  It is limited to 256 character codes.       */
-  /*                                                                       */
-  /*    FT_ENCODING_ADOBE_EXPERT ::                                        */
-  /*      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 ::                                         */
-  /*      Apple roman encoding.  Many TrueType and OpenType fonts contain  */
-  /*      a charmap for this 8-bit encoding, since older versions of Mac   */
-  /*      OS are able to use it.                                           */
-  /*                                                                       */
-  /*    FT_ENCODING_OLD_LATIN_2 ::                                         */
-  /*      This value is deprecated and was neither 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_PRC.  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 enables a Unicode charmap and tags it with    */
-  /*    FT_ENCODING_UNICODE when it is either provided or can be generated */
-  /*    from PostScript glyph name dictionaries in the font file.          */
-  /*    All other encodings are considered legacy and tagged only if       */
-  /*    explicitly defined in the font file.  Otherwise, FT_ENCODING_NONE  */
-  /*    is used.                                                           */
-  /*                                                                       */
-  /*    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 that may     */
-  /*    be needed to be able to distinguish Apple encoding variants.  See  */
-  /*                                                                       */
-  /*      https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt */
-  /*                                                                       */
-  /*    to get an idea how to do that.  Basically, if the language ID      */
-  /*    is~0, don't 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.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Encoding
+   *
+   * @description:
+   *   An enumeration to specify character sets supported by charmaps.  Used
+   *   in the @FT_Select_Charmap API function.
+   *
+   * @note:
+   *   Despite the name, this enumeration lists specific character
+   *   repertories (i.e., charsets), and not text encoding methods (e.g.,
+   *   UTF-8, UTF-16, etc.).
+   *
+   *   Other encodings might be defined in the future.
+   *
+   * @values:
+   *   FT_ENCODING_NONE ::
+   *     The encoding value~0 is reserved for all formats except BDF, PCF,
+   *     and Windows FNT; see below for more information.
+   *
+   *   FT_ENCODING_UNICODE ::
+   *     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.
+   *
+   *     For example, if you want to access Unicode value U+1F028 (and the
+   *     font contains it), use value 0x1F028 as the input value for
+   *     @FT_Get_Char_Index.
+   *
+   *   FT_ENCODING_MS_SYMBOL ::
+   *     Microsoft Symbol encoding, used to encode mathematical symbols and
+   *     wingdings.  For more information, see
+   *     'https://www.microsoft.com/typography/otspec/recom.htm',
+   *     'http://www.kostis.net/charsets/symbol.htm', and
+   *     'http://www.kostis.net/charsets/wingding.htm'.
+   *
+   *     This encoding uses character codes from the PUA (Private Unicode
+   *     Area) in the range U+F020-U+F0FF.
+   *
+   *   FT_ENCODING_SJIS ::
+   *     Shift JIS encoding for Japanese.  More info at
+   *     'https://en.wikipedia.org/wiki/Shift_JIS'.  See note on multi-byte
+   *     encodings below.
+   *
+   *   FT_ENCODING_PRC ::
+   *     Corresponds to encoding systems mainly for Simplified Chinese as
+   *     used in People's Republic of China (PRC).  The encoding layout is
+   *     based on GB~2312 and its supersets GBK and GB~18030.
+   *
+   *   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 Extended Wansung
+   *     (MS Windows code page 949).  For more information see
+   *     'https://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WindowsBestFit/bestfit949.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 Hangul 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 ::
+   *     Adobe Standard encoding, as found in Type~1, CFF, and OpenType/CFF
+   *     fonts.  It is limited to 256 character codes.
+   *
+   *   FT_ENCODING_ADOBE_EXPERT ::
+   *     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 ::
+   *     Apple roman encoding.  Many TrueType and OpenType fonts contain a
+   *     charmap for this 8-bit encoding, since older versions of Mac OS are
+   *     able to use it.
+   *
+   *   FT_ENCODING_OLD_LATIN_2 ::
+   *     This value is deprecated and was neither 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_PRC.  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 enables a Unicode charmap and tags it with
+   *   `FT_ENCODING_UNICODE` when it is either provided or can be generated
+   *   from PostScript glyph name dictionaries in the font file.  All other
+   *   encodings are considered legacy and tagged only if explicitly defined
+   *   in the font file.  Otherwise, `FT_ENCODING_NONE` is used.
+   *
+   *   `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 that may be
+   *   needed to be able to distinguish Apple encoding variants.  See
+   *
+   *     https://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/Readme.txt
+   *
+   *   to get an idea how to do that.  Basically, if the language ID is~0,
+   *   don't 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 ),
@@ -796,7 +786,7 @@
   } FT_Encoding;
 
 
-  /* these constants are deprecated; use the corresponding `FT_Encoding' */
+  /* these constants are deprecated; use the corresponding `FT_Encoding` */
   /* values instead                                                      */
 #define ft_encoding_none            FT_ENCODING_NONE
 #define ft_encoding_unicode         FT_ENCODING_UNICODE
@@ -815,29 +805,31 @@
 #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 gets emulated for    */
-  /*                   other formats.                                      */
-  /*                                                                       */
-  /*    encoding_id :: A platform specific encoding number.  This also     */
-  /*                   comes from the TrueType specification and gets      */
-  /*                   emulated similarly.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 gets
+   *     emulated for other formats.
+   *
+   *   encoding_id ::
+   *     A platform-specific encoding number.  This also comes from the
+   *     TrueType specification and gets emulated similarly.
+   */
   typedef struct  FT_CharMapRec_
   {
     FT_Face      face;
@@ -857,215 +849,195 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Face_Internal                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An opaque handle to an `FT_Face_InternalRec' structure that models */
-  /*    the 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.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Face_Internal
+   *
+   * @description:
+   *   An opaque handle to an `FT_Face_InternalRec` structure that models the
+   *   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 a        */
-  /*    typeface in a font file.                                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_faces           :: The number of faces in the font file.  Some */
-  /*                           font formats can have multiple faces in     */
-  /*                           a single font file.                         */
-  /*                                                                       */
-  /*    face_index          :: This field holds two different values.      */
-  /*                           Bits 0-15 are the index of the face in the  */
-  /*                           font file (starting with value~0).  They    */
-  /*                           are set to~0 if there is only one face in   */
-  /*                           the font file.                              */
-  /*                                                                       */
-  /*                           [Since 2.6.1] Bits 16-30 are relevant to GX */
-  /*                           and OpenType variation fonts only, holding  */
-  /*                           the named instance index for the current    */
-  /*                           face index (starting with value~1; value~0  */
-  /*                           indicates font access without a named       */
-  /*                           instance).  For non-variation fonts, bits   */
-  /*                           16-30 are ignored.  If we have the third    */
-  /*                           named instance of face~4, say, `face_index' */
-  /*                           is set to 0x00030004.                       */
-  /*                                                                       */
-  /*                           Bit 31 is always zero (this is,             */
-  /*                           `face_index' is always a positive value).   */
-  /*                                                                       */
-  /*                           [Since 2.9] Changing the design coordinates */
-  /*                           with @FT_Set_Var_Design_Coordinates or      */
-  /*                           @FT_Set_Var_Blend_Coordinates does not      */
-  /*                           influence the named instance index value    */
-  /*                           (only @FT_Set_Named_Instance does that).    */
-  /*                                                                       */
-  /*    face_flags          :: A set of bit flags that give important      */
-  /*                           information about the face; see             */
-  /*                           @FT_FACE_FLAG_XXX for the details.          */
-  /*                                                                       */
-  /*    style_flags         :: The lower 16~bits contain a set of bit      */
-  /*                           flags indicating the style of the face; see */
-  /*                           @FT_STYLE_FLAG_XXX for the details.         */
-  /*                                                                       */
-  /*                           [Since 2.6.1] Bits 16-30 hold the number    */
-  /*                           of named instances available for the        */
-  /*                           current face if we have a GX or OpenType    */
-  /*                           variation (sub)font.  Bit 31 is always zero */
-  /*                           (this is, `style_flags' is always a         */
-  /*                           positive value).  Note that a variation     */
-  /*                           font has always at least one named          */
-  /*                           instance, namely the default instance.      */
-  /*                                                                       */
-  /*    num_glyphs          :: The number of glyphs in the face.  If the   */
-  /*                           face is scalable and has sbits (see         */
-  /*                           `num_fixed_sizes'), it is set to the number */
-  /*                           of outline glyphs.                          */
-  /*                                                                       */
-  /*                           For CID-keyed fonts (not in an SFNT         */
-  /*                           wrapper) this value gives the highest CID   */
-  /*                           used in the font.                           */
-  /*                                                                       */
-  /*    family_name         :: The face's family name.  This is an ASCII   */
-  /*                           string, usually in English, that 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.   */
-  /*                           Can be NULL (e.g., in fonts embedded in a   */
-  /*                           PDF file).                                  */
-  /*                                                                       */
-  /*                           In case the font doesn't provide a specific */
-  /*                           family name entry, FreeType tries to        */
-  /*                           synthesize one, deriving it from other name */
-  /*                           entries.                                    */
-  /*                                                                       */
-  /*    style_name          :: The face's style name.  This is an ASCII    */
-  /*                           string, usually in English, that 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 and Unicode versions of this      */
-  /*                           string.  Applications should use the format */
-  /*                           specific interface to access them.          */
-  /*                                                                       */
-  /*    num_fixed_sizes     :: The number of bitmap strikes in the face.   */
-  /*                           Even if the face is scalable, there might   */
-  /*                           still be bitmap strikes, which are called   */
-  /*                           `sbits' in that case.                       */
-  /*                                                                       */
-  /*    available_sizes     :: An array of @FT_Bitmap_Size for all bitmap  */
-  /*                           strikes in the face.  It is set to NULL if  */
-  /*                           there is no bitmap strike.                  */
-  /*                                                                       */
-  /*                           Note that FreeType tries to sanitize the    */
-  /*                           strike data since they are sometimes sloppy */
-  /*                           or incorrect, but this can easily fail.     */
-  /*                                                                       */
-  /*    num_charmaps        :: The number of charmaps in the face.         */
-  /*                                                                       */
-  /*    charmaps            :: An array of the charmaps of the face.       */
-  /*                                                                       */
-  /*    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 `maximum     */
-  /*                           ascender', and `bbox.yMin' as the `minimum  */
-  /*                           descender'.  Only relevant for scalable     */
-  /*                           formats.                                    */
-  /*                                                                       */
-  /*                           Note that the bounding box might be off by  */
-  /*                           (at least) one pixel for hinted fonts.  See */
-  /*                           @FT_Size_Metrics for further discussion.    */
-  /*                                                                       */
-  /*    units_per_EM        :: The number of font units per EM square for  */
-  /*                           this face.  This is typically 2048 for      */
-  /*                           TrueType fonts, and 1000 for Type~1 fonts.  */
-  /*                           Only relevant for scalable formats.         */
-  /*                                                                       */
-  /*    ascender            :: The typographic ascender of the face,       */
-  /*                           expressed in font units.  For font formats  */
-  /*                           not having this information, it is set to   */
-  /*                           `bbox.yMax'.  Only relevant for scalable    */
-  /*                           formats.                                    */
-  /*                                                                       */
-  /*    descender           :: The typographic descender of the face,      */
-  /*                           expressed in font units.  For font formats  */
-  /*                           not having this information, it is set to   */
-  /*                           `bbox.yMin'.  Note that this field is       */
-  /*                           negative for values below the baseline.     */
-  /*                           Only relevant for scalable formats.         */
-  /*                                                                       */
-  /*    height              :: This value is the vertical distance         */
-  /*                           between two consecutive baselines,          */
-  /*                           expressed in font units.  It is always      */
-  /*                           positive.  Only relevant for scalable       */
-  /*                           formats.                                    */
-  /*                                                                       */
-  /*                           If you want the global glyph height, use    */
-  /*                           `ascender - descender'.                     */
-  /*                                                                       */
-  /*    max_advance_width   :: The maximum 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 maximum advance height, in font units,  */
-  /*                           for all glyphs in this face.  This is only  */
-  /*                           relevant for vertical layouts, and is set   */
-  /*                           to `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 is 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).        */
-  /*                                                                       */
-  /*    size                :: The current active size for this face.      */
-  /*                                                                       */
-  /*    charmap             :: The current active charmap for this face.   */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Fields may be changed after a call to @FT_Attach_File or           */
-  /*    @FT_Attach_Stream.                                                 */
-  /*                                                                       */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `ascender',         */
-  /*    `descender', `height', `underline_position', and                   */
-  /*    `underline_thickness'.                                             */
-  /*                                                                       */
-  /*    Especially for TrueType fonts see also the documentation for       */
-  /*    @FT_Size_Metrics.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_FaceRec
+   *
+   * @description:
+   *   FreeType root face class structure.  A face object models a typeface
+   *   in a font file.
+   *
+   * @fields:
+   *   num_faces ::
+   *     The number of faces in the font file.  Some font formats can have
+   *     multiple faces in a single font file.
+   *
+   *   face_index ::
+   *     This field holds two different values.  Bits 0-15 are the index of
+   *     the face in the font file (starting with value~0).  They are set
+   *     to~0 if there is only one face in the font file.
+   *
+   *     [Since 2.6.1] Bits 16-30 are relevant to GX and OpenType variation
+   *     fonts only, holding the named instance index for the current face
+   *     index (starting with value~1; value~0 indicates font access without
+   *     a named instance).  For non-variation fonts, bits 16-30 are ignored.
+   *     If we have the third named instance of face~4, say, `face_index` is
+   *     set to 0x00030004.
+   *
+   *     Bit 31 is always zero (this is, `face_index` is always a positive
+   *     value).
+   *
+   *     [Since 2.9] Changing the design coordinates with
+   *     @FT_Set_Var_Design_Coordinates or @FT_Set_Var_Blend_Coordinates does
+   *     not influence the named instance index value (only
+   *     @FT_Set_Named_Instance does that).
+   *
+   *   face_flags ::
+   *     A set of bit flags that give important information about the face;
+   *     see @FT_FACE_FLAG_XXX for the details.
+   *
+   *   style_flags ::
+   *     The lower 16~bits contain a set of bit flags indicating the style of
+   *     the face; see @FT_STYLE_FLAG_XXX for the details.
+   *
+   *     [Since 2.6.1] Bits 16-30 hold the number of named instances
+   *     available for the current face if we have a GX or OpenType variation
+   *     (sub)font.  Bit 31 is always zero (this is, `style_flags` is always
+   *     a positive value).  Note that a variation font has always at least
+   *     one named instance, namely the default instance.
+   *
+   *   num_glyphs ::
+   *     The number of glyphs in the face.  If the face is scalable and has
+   *     sbits (see `num_fixed_sizes`), it is set to the number of outline
+   *     glyphs.
+   *
+   *     For CID-keyed fonts (not in an SFNT wrapper) this value gives the
+   *     highest CID used in the font.
+   *
+   *   family_name ::
+   *     The face's family name.  This is an ASCII string, usually in
+   *     English, that 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.  Can be
+   *     `NULL` (e.g., in fonts embedded in a PDF file).
+   *
+   *     In case the font doesn't provide a specific family name entry,
+   *     FreeType tries to synthesize one, deriving it from other name
+   *     entries.
+   *
+   *   style_name ::
+   *     The face's style name.  This is an ASCII string, usually in English,
+   *     that 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 and Unicode versions
+   *     of this string.  Applications should use the format-specific
+   *     interface to access them.
+   *
+   *   num_fixed_sizes ::
+   *     The number of bitmap strikes in the face.  Even if the face is
+   *     scalable, there might still be bitmap strikes, which are called
+   *     'sbits' in that case.
+   *
+   *   available_sizes ::
+   *     An array of @FT_Bitmap_Size for all bitmap strikes in the face.  It
+   *     is set to `NULL` if there is no bitmap strike.
+   *
+   *     Note that FreeType tries to sanitize the strike data since they are
+   *     sometimes sloppy or incorrect, but this can easily fail.
+   *
+   *   num_charmaps ::
+   *     The number of charmaps in the face.
+   *
+   *   charmaps ::
+   *     An array of the charmaps of the face.
+   *
+   *   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 'maximum ascender',
+   *     and `bbox.yMin` as the 'minimum descender'.  Only relevant for
+   *     scalable formats.
+   *
+   *     Note that the bounding box might be off by (at least) one pixel for
+   *     hinted fonts.  See @FT_Size_Metrics for further discussion.
+   *
+   *   units_per_EM ::
+   *     The number of font units per EM square for this face.  This is
+   *     typically 2048 for TrueType fonts, and 1000 for Type~1 fonts.  Only
+   *     relevant for scalable formats.
+   *
+   *   ascender ::
+   *     The typographic ascender of the face, expressed in font units.  For
+   *     font formats not having this information, it is set to `bbox.yMax`.
+   *     Only relevant for scalable formats.
+   *
+   *   descender ::
+   *     The typographic descender of the face, expressed in font units.  For
+   *     font formats not having this information, it is set to `bbox.yMin`.
+   *     Note that this field is negative for values below the baseline.
+   *     Only relevant for scalable formats.
+   *
+   *   height ::
+   *     This value is the vertical distance between two consecutive
+   *     baselines, expressed in font units.  It is always positive.  Only
+   *     relevant for scalable formats.
+   *
+   *     If you want the global glyph height, use `ascender - descender`.
+   *
+   *   max_advance_width ::
+   *     The maximum 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 maximum advance height, in font units, for all glyphs in this
+   *     face.  This is only relevant for vertical layouts, and is set to
+   *     `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 is 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).
+   *
+   *   size ::
+   *     The current active size for this face.
+   *
+   *   charmap ::
+   *     The current active charmap for this face.
+   *
+   * @note:
+   *   Fields may be changed after a call to @FT_Attach_File or
+   *   @FT_Attach_Stream.
+   *
+   *   For an OpenType variation font, the values of the following fields can
+   *   change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+   *   the font contains an 'MVAR' table: `ascender`, `descender`, `height`,
+   *   `underline_position`, and `underline_thickness`.
+   *
+   *   Especially for TrueType fonts see also the documentation for
+   *   @FT_Size_Metrics.
+   */
   typedef struct  FT_FaceRec_
   {
     FT_Long           num_faces;
@@ -1087,7 +1059,7 @@
 
     FT_Generic        generic;
 
-    /*# The following member variables (down to `underline_thickness') */
+    /*# The following member variables (down to `underline_thickness`) */
     /*# are only relevant to scalable outlines; cf. @FT_Bitmap_Size    */
     /*# for bitmap fonts.                                              */
     FT_BBox           bbox;
@@ -1125,117 +1097,116 @@
   } 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 ::                                           */
-  /*      The face contains outline glyphs.  Note that a face can contain  */
-  /*      bitmap strikes also, i.e., a face can have both this flag and    */
-  /*      @FT_FACE_FLAG_FIXED_SIZES set.                                   */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_FIXED_SIZES ::                                        */
-  /*      The face contains bitmap strikes.  See also the                  */
-  /*      `num_fixed_sizes' and `available_sizes' fields of @FT_FaceRec.   */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_FIXED_WIDTH ::                                        */
-  /*      The face contains fixed-width characters (like Courier, Lucida,  */
-  /*      MonoType, etc.).                                                 */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_SFNT ::                                               */
-  /*      The face uses the SFNT storage scheme.  For now, this means      */
-  /*      TrueType and OpenType.                                           */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_HORIZONTAL ::                                         */
-  /*      The face contains horizontal glyph metrics.  This should be set  */
-  /*      for all common formats.                                          */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_VERTICAL ::                                           */
-  /*      The face contains vertical glyph metrics.  This is only          */
-  /*      available in some formats, not all of them.                      */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_KERNING ::                                            */
-  /*      The face contains kerning information.  If set, the kerning      */
-  /*      distance can be retrieved using the function @FT_Get_Kerning.    */
-  /*      Otherwise the function always return the vector (0,0).  Note     */
-  /*      that FreeType doesn't handle kerning data from the SFNT `GPOS'   */
-  /*      table (as present in many OpenType fonts).                       */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_FAST_GLYPHS ::                                        */
-  /*      THIS FLAG IS DEPRECATED.  DO NOT USE OR TEST IT.                 */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_MULTIPLE_MASTERS ::                                   */
-  /*      The face contains multiple masters and is capable of             */
-  /*      interpolating between them.  Supported formats are Adobe MM,     */
-  /*      TrueType GX, and OpenType variation fonts.                       */
-  /*                                                                       */
-  /*      See section @multiple_masters for API details.                   */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_GLYPH_NAMES ::                                        */
-  /*      The face contains glyph names, which can be retrieved using      */
-  /*      @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.     */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_HINTER ::                                             */
-  /*      The font driver has a hinting machine of its own.  For example,  */
-  /*      with TrueType fonts, it makes sense to use data from the SFNT    */
-  /*      `gasp' table only if the native TrueType hinting engine (with    */
-  /*      the bytecode interpreter) is available and active.               */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_CID_KEYED ::                                          */
-  /*      The face is CID-keyed.  In that case, the face is not accessed   */
-  /*      by glyph indices but by CID values.  For subsetted CID-keyed     */
-  /*      fonts this has the consequence that not all index values are a   */
-  /*      valid argument to @FT_Load_Glyph.  Only the CID values for which */
-  /*      corresponding glyphs in the subsetted font exist make            */
-  /*      `FT_Load_Glyph' return successfully; in all other cases you get  */
-  /*      an `FT_Err_Invalid_Argument' error.                              */
-  /*                                                                       */
-  /*      Note that CID-keyed fonts that are in an SFNT wrapper (this is,  */
-  /*      all OpenType/CFF fonts) don't have this flag set since the       */
-  /*      glyphs are accessed in the normal way (using contiguous          */
-  /*      indices); the `CID-ness' isn't visible to the application.       */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_TRICKY ::                                             */
-  /*      The face is `tricky', this is, it always needs the font format's */
-  /*      native hinting engine to get a reasonable result.  A typical     */
-  /*      example is the old Chinese font `mingli.ttf' (but not            */
-  /*      `mingliu.ttc') that uses TrueType bytecode instructions to move  */
-  /*      and scale all of its subglyphs.                                  */
-  /*                                                                       */
-  /*      It is not possible to auto-hint such fonts using                 */
-  /*      @FT_LOAD_FORCE_AUTOHINT; it will also ignore                     */
-  /*      @FT_LOAD_NO_HINTING.  You have to set both @FT_LOAD_NO_HINTING   */
-  /*      and @FT_LOAD_NO_AUTOHINT to really disable hinting; however, you */
-  /*      probably never want this except for demonstration purposes.      */
-  /*                                                                       */
-  /*      Currently, there are about a dozen TrueType fonts in the list of */
-  /*      tricky fonts; they are hard-coded in file `ttobjs.c'.            */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_COLOR ::                                              */
-  /*      [Since 2.5.1] The face has color glyph tables.  To access color  */
-  /*      glyphs use @FT_LOAD_COLOR.                                       */
-  /*                                                                       */
-  /*    FT_FACE_FLAG_VARIATION ::                                          */
-  /*      [Since 2.9] Set if the current face (or named instance) has been */
-  /*      altered with @FT_Set_MM_Design_Coordinates,                      */
-  /*      @FT_Set_Var_Design_Coordinates, or                               */
-  /*      @FT_Set_Var_Blend_Coordinates.  This flag is unset by a call to  */
-  /*      @FT_Set_Named_Instance.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 ::
+   *     The face contains outline glyphs.  Note that a face can contain
+   *     bitmap strikes also, i.e., a face can have both this flag and
+   *     @FT_FACE_FLAG_FIXED_SIZES set.
+   *
+   *   FT_FACE_FLAG_FIXED_SIZES ::
+   *     The face contains bitmap strikes.  See also the `num_fixed_sizes`
+   *     and `available_sizes` fields of @FT_FaceRec.
+   *
+   *   FT_FACE_FLAG_FIXED_WIDTH ::
+   *     The face contains fixed-width characters (like Courier, Lucida,
+   *     MonoType, etc.).
+   *
+   *   FT_FACE_FLAG_SFNT ::
+   *     The face uses the SFNT storage scheme.  For now, this means TrueType
+   *     and OpenType.
+   *
+   *   FT_FACE_FLAG_HORIZONTAL ::
+   *     The face contains horizontal glyph metrics.  This should be set for
+   *     all common formats.
+   *
+   *   FT_FACE_FLAG_VERTICAL ::
+   *     The face contains vertical glyph metrics.  This is only available in
+   *     some formats, not all of them.
+   *
+   *   FT_FACE_FLAG_KERNING ::
+   *     The face contains kerning information.  If set, the kerning distance
+   *     can be retrieved using the function @FT_Get_Kerning.  Otherwise the
+   *     function always return the vector (0,0).  Note that FreeType doesn't
+   *     handle kerning data from the SFNT 'GPOS' table (as present in many
+   *     OpenType fonts).
+   *
+   *   FT_FACE_FLAG_FAST_GLYPHS ::
+   *     THIS FLAG IS DEPRECATED.  DO NOT USE OR TEST IT.
+   *
+   *   FT_FACE_FLAG_MULTIPLE_MASTERS ::
+   *     The face contains multiple masters and is capable of interpolating
+   *     between them.  Supported formats are Adobe MM, TrueType GX, and
+   *     OpenType variation fonts.
+   *
+   *     See section @multiple_masters for API details.
+   *
+   *   FT_FACE_FLAG_GLYPH_NAMES ::
+   *     The face contains glyph names, which can be retrieved using
+   *     @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.
+   *
+   *   FT_FACE_FLAG_HINTER ::
+   *     The font driver has a hinting machine of its own.  For example, with
+   *     TrueType fonts, it makes sense to use data from the SFNT 'gasp'
+   *     table only if the native TrueType hinting engine (with the bytecode
+   *     interpreter) is available and active.
+   *
+   *   FT_FACE_FLAG_CID_KEYED ::
+   *     The face is CID-keyed.  In that case, the face is not accessed by
+   *     glyph indices but by CID values.  For subsetted CID-keyed fonts this
+   *     has the consequence that not all index values are a valid argument
+   *     to @FT_Load_Glyph.  Only the CID values for which corresponding
+   *     glyphs in the subsetted font exist make `FT_Load_Glyph` return
+   *     successfully; in all other cases you get an
+   *     `FT_Err_Invalid_Argument` error.
+   *
+   *     Note that CID-keyed fonts that are in an SFNT wrapper (this is, all
+   *     OpenType/CFF fonts) don't have this flag set since the glyphs are
+   *     accessed in the normal way (using contiguous indices); the
+   *     'CID-ness' isn't visible to the application.
+   *
+   *   FT_FACE_FLAG_TRICKY ::
+   *     The face is 'tricky', this is, it always needs the font format's
+   *     native hinting engine to get a reasonable result.  A typical example
+   *     is the old Chinese font `mingli.ttf` (but not `mingliu.ttc`) that
+   *     uses TrueType bytecode instructions to move and scale all of its
+   *     subglyphs.
+   *
+   *     It is not possible to auto-hint such fonts using
+   *     @FT_LOAD_FORCE_AUTOHINT; it will also ignore @FT_LOAD_NO_HINTING.
+   *     You have to set both @FT_LOAD_NO_HINTING and @FT_LOAD_NO_AUTOHINT to
+   *     really disable hinting; however, you probably never want this except
+   *     for demonstration purposes.
+   *
+   *     Currently, there are about a dozen TrueType fonts in the list of
+   *     tricky fonts; they are hard-coded in file `ttobjs.c`.
+   *
+   *   FT_FACE_FLAG_COLOR ::
+   *     [Since 2.5.1] The face has color glyph tables.  See @FT_LOAD_COLOR
+   *     for more information.
+   *
+   *   FT_FACE_FLAG_VARIATION ::
+   *     [Since 2.9] Set if the current face (or named instance) has been
+   *     altered with @FT_Set_MM_Design_Coordinates,
+   *     @FT_Set_Var_Design_Coordinates, or @FT_Set_Var_Blend_Coordinates.
+   *     This flag is unset by a call to @FT_Set_Named_Instance.
+   */
 #define FT_FACE_FLAG_SCALABLE          ( 1L <<  0 )
 #define FT_FACE_FLAG_FIXED_SIZES       ( 1L <<  1 )
 #define FT_FACE_FLAG_FIXED_WIDTH       ( 1L <<  2 )
@@ -1254,14 +1225,14 @@
 #define FT_FACE_FLAG_VARIATION         ( 1L << 15 )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_HAS_HORIZONTAL( face )
+   *   FT_HAS_HORIZONTAL
    *
    * @description:
-   *   A macro that returns true whenever a face object contains
-   *   horizontal metrics (this is true for all font formats though).
+   *   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.
@@ -1271,10 +1242,10 @@
           ( (face)->face_flags & FT_FACE_FLAG_HORIZONTAL )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_HAS_VERTICAL( face )
+   *   FT_HAS_VERTICAL
    *
    * @description:
    *   A macro that returns true whenever a face object contains real
@@ -1285,45 +1256,45 @@
           ( (face)->face_flags & FT_FACE_FLAG_VERTICAL )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_HAS_KERNING( face )
+   *   FT_HAS_KERNING
    *
    * @description:
-   *   A macro that returns true whenever a face object contains kerning
-   *   data that can be accessed with @FT_Get_Kerning.
+   *   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 )
+   *   FT_IS_SCALABLE
    *
    * @description:
    *   A macro that returns true whenever a face object contains a scalable
-   *   font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF,
-   *   and PFR font formats).
+   *   font face (true for TrueType, Type~1, Type~42, CID, OpenType/CFF, and
+   *   PFR font formats).
    *
    */
 #define FT_IS_SCALABLE( face ) \
           ( (face)->face_flags & FT_FACE_FLAG_SCALABLE )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_IS_SFNT( face )
+   *   FT_IS_SFNT
    *
    * @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.
+   *   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.
@@ -1333,14 +1304,14 @@
           ( (face)->face_flags & FT_FACE_FLAG_SFNT )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_IS_FIXED_WIDTH( face )
+   *   FT_IS_FIXED_WIDTH
    *
    * @description:
    *   A macro that returns true whenever a face object contains a font face
-   *   that contains fixed-width (or `monospace', `fixed-pitch', etc.)
+   *   that contains fixed-width (or 'monospace', 'fixed-pitch', etc.)
    *   glyphs.
    *
    */
@@ -1348,25 +1319,25 @@
           ( (face)->face_flags & FT_FACE_FLAG_FIXED_WIDTH )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_HAS_FIXED_SIZES( face )
+   *   FT_HAS_FIXED_SIZES
    *
    * @description:
    *   A macro that returns true whenever a face object contains some
-   *   embedded bitmaps.  See the `available_sizes' field of the
-   *   @FT_FaceRec structure.
+   *   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 )
+   *   FT_HAS_FAST_GLYPHS
    *
    * @description:
    *   Deprecated.
@@ -1375,10 +1346,10 @@
 #define FT_HAS_FAST_GLYPHS( face )  0
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_HAS_GLYPH_NAMES( face )
+   *   FT_HAS_GLYPH_NAMES
    *
    * @description:
    *   A macro that returns true whenever a face object contains some glyph
@@ -1389,10 +1360,10 @@
           ( (face)->face_flags & FT_FACE_FLAG_GLYPH_NAMES )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_HAS_MULTIPLE_MASTERS( face )
+   *   FT_HAS_MULTIPLE_MASTERS
    *
    * @description:
    *   A macro that returns true whenever a face object contains some
@@ -1404,10 +1375,10 @@
           ( (face)->face_flags & FT_FACE_FLAG_MULTIPLE_MASTERS )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_IS_NAMED_INSTANCE( face )
+   *   FT_IS_NAMED_INSTANCE
    *
    * @description:
    *   A macro that returns true whenever a face object is a named instance
@@ -1426,14 +1397,14 @@
           ( (face)->face_index & 0x7FFF0000L )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_IS_VARIATION( face )
+   *   FT_IS_VARIATION
    *
    * @description:
-   *   A macro that returns true whenever a face object has been altered
-   *   by @FT_Set_MM_Design_Coordinates, @FT_Set_Var_Design_Coordinates, or
+   *   A macro that returns true whenever a face object has been altered by
+   *   @FT_Set_MM_Design_Coordinates, @FT_Set_Var_Design_Coordinates, or
    *   @FT_Set_Var_Blend_Coordinates.
    *
    * @since:
@@ -1444,15 +1415,14 @@
           ( (face)->face_flags & FT_FACE_FLAG_VARIATION )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_IS_CID_KEYED( face )
+   *   FT_IS_CID_KEYED
    *
    * @description:
    *   A macro that returns true whenever a face object contains a CID-keyed
-   *   font.  See the discussion of @FT_FACE_FLAG_CID_KEYED for more
-   *   details.
+   *   font.  See the discussion of @FT_FACE_FLAG_CID_KEYED for more details.
    *
    *   If this macro is true, all functions defined in @FT_CID_H are
    *   available.
@@ -1462,13 +1432,13 @@
           ( (face)->face_flags & FT_FACE_FLAG_CID_KEYED )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_IS_TRICKY( face )
+   *   FT_IS_TRICKY
    *
    * @description:
-   *   A macro that returns true whenever a face represents a `tricky' font.
+   *   A macro that returns true whenever a face represents a 'tricky' font.
    *   See the discussion of @FT_FACE_FLAG_TRICKY for more details.
    *
    */
@@ -1476,14 +1446,14 @@
           ( (face)->face_flags & FT_FACE_FLAG_TRICKY )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
-   *   FT_HAS_COLOR( face )
+   *   FT_HAS_COLOR
    *
    * @description:
-   *   A macro that returns true whenever a face object contains
-   *   tables for color glyphs.
+   *   A macro that returns true whenever a face object contains tables for
+   *   color glyphs.
    *
    * @since:
    *   2.5.1
@@ -1493,149 +1463,148 @@
           ( (face)->face_flags & FT_FACE_FLAG_COLOR )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Const>                                                               */
-  /*    FT_STYLE_FLAG_XXX                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit flags to indicate the style of a given face.  These  */
-  /*    are used in the `style_flags' field of @FT_FaceRec.                */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_STYLE_FLAG_ITALIC ::                                            */
-  /*      The face style is italic or oblique.                             */
-  /*                                                                       */
-  /*    FT_STYLE_FLAG_BOLD ::                                              */
-  /*      The face is bold.                                                */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The style information as provided by FreeType is very basic.  More */
-  /*    details are beyond the scope and should be done on a higher level  */
-  /*    (for example, by analyzing various fields of the `OS/2' table in   */
-  /*    SFNT based fonts).                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_STYLE_FLAG_XXX
+   *
+   * @description:
+   *   A list of bit flags to indicate the style of a given face.  These are
+   *   used in the `style_flags` field of @FT_FaceRec.
+   *
+   * @values:
+   *   FT_STYLE_FLAG_ITALIC ::
+   *     The face style is italic or oblique.
+   *
+   *   FT_STYLE_FLAG_BOLD ::
+   *     The face is bold.
+   *
+   * @note:
+   *   The style information as provided by FreeType is very basic.  More
+   *   details are beyond the scope and should be done on a higher level (for
+   *   example, by analyzing various fields of the 'OS/2' table in SFNT based
+   *   fonts).
+   */
 #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.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 gives the metrics of a size object.     */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    x_ppem       :: The width of the scaled EM square in pixels, hence */
-  /*                    the term `ppem' (pixels per EM).  It is also       */
-  /*                    referred to as `nominal width'.                    */
-  /*                                                                       */
-  /*    y_ppem       :: The height of the scaled EM square in pixels,      */
-  /*                    hence the term `ppem' (pixels per EM).  It is also */
-  /*                    referred to as `nominal height'.                   */
-  /*                                                                       */
-  /*    x_scale      :: A 16.16 fractional scaling value to convert        */
-  /*                    horizontal metrics from font units to 26.6         */
-  /*                    fractional pixels.  Only relevant for scalable     */
-  /*                    font formats.                                      */
-  /*                                                                       */
-  /*    y_scale      :: A 16.16 fractional scaling value to convert        */
-  /*                    vertical metrics from font units to 26.6           */
-  /*                    fractional pixels.  Only relevant for scalable     */
-  /*                    font formats.                                      */
-  /*                                                                       */
-  /*    ascender     :: The ascender in 26.6 fractional pixels, rounded up */
-  /*                    to an integer value.  See @FT_FaceRec for the      */
-  /*                    details.                                           */
-  /*                                                                       */
-  /*    descender    :: The descender in 26.6 fractional pixels, rounded   */
-  /*                    down to an integer value.  See @FT_FaceRec for the */
-  /*                    details.                                           */
-  /*                                                                       */
-  /*    height       :: The height in 26.6 fractional pixels, rounded to   */
-  /*                    an integer value.  See @FT_FaceRec for the         */
-  /*                    details.                                           */
-  /*                                                                       */
-  /*    max_advance  :: The maximum advance width in 26.6 fractional       */
-  /*                    pixels, rounded to an integer value.  See          */
-  /*                    @FT_FaceRec for the details.                       */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The scaling values, if relevant, are determined first during a     */
-  /*    size changing operation.  The remaining fields are then set by the */
-  /*    driver.  For scalable formats, they are usually set to scaled      */
-  /*    values of the corresponding fields in @FT_FaceRec.  Some values    */
-  /*    like ascender or descender are rounded for historical reasons;     */
-  /*    more precise values (for outline fonts) can be derived by scaling  */
-  /*    the corresponding @FT_FaceRec values manually, with code similar   */
-  /*    to the following.                                                  */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      scaled_ascender = FT_MulFix( face->ascender,                     */
-  /*                                   size_metrics->y_scale );            */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Note that due to glyph hinting and the selected rendering mode     */
-  /*    these values are usually not exact; consequently, they must be     */
-  /*    treated as unreliable with an error margin of at least one pixel!  */
-  /*                                                                       */
-  /*    Indeed, the only way to get the exact metrics is to render _all_   */
-  /*    glyphs.  As this would be a definite performance hit, it is up to  */
-  /*    client applications to perform such computations.                  */
-  /*                                                                       */
-  /*    The `FT_Size_Metrics' structure is valid for bitmap fonts also.    */
-  /*                                                                       */
-  /*                                                                       */
-  /*    *TrueType* *fonts* *with* *native* *bytecode* *hinting*            */
-  /*                                                                       */
-  /*    All applications that handle TrueType fonts with native hinting    */
-  /*    must be aware that TTFs expect different rounding of vertical font */
-  /*    dimensions.  The application has to cater for this, especially if  */
-  /*    it wants to rely on a TTF's vertical data (for example, to         */
-  /*    properly align box characters vertically).                         */
-  /*                                                                       */
-  /*    Only the application knows _in_ _advance_ that it is going to use  */
-  /*    native hinting for TTFs!  FreeType, on the other hand, selects the */
-  /*    hinting mode not at the time of creating an @FT_Size object but    */
-  /*    much later, namely while calling @FT_Load_Glyph.                   */
-  /*                                                                       */
-  /*    Here is some pseudo code that illustrates a possible solution.     */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      font_format = FT_Get_Font_Format( face );                        */
-  /*                                                                       */
-  /*      if ( !strcmp( font_format, "TrueType" ) &&                       */
-  /*           do_native_bytecode_hinting         )                        */
-  /*      {                                                                */
-  /*        ascender  = ROUND( FT_MulFix( face->ascender,                  */
-  /*                                      size_metrics->y_scale ) );       */
-  /*        descender = ROUND( FT_MulFix( face->descender,                 */
-  /*                                      size_metrics->y_scale ) );       */
-  /*      }                                                                */
-  /*      else                                                             */
-  /*      {                                                                */
-  /*        ascender  = size_metrics->ascender;                            */
-  /*        descender = size_metrics->descender;                           */
-  /*      }                                                                */
-  /*                                                                       */
-  /*      height      = size_metrics->height;                              */
-  /*      max_advance = size_metrics->max_advance;                         */
-  /*    }                                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Size_Metrics
+   *
+   * @description:
+   *   The size metrics structure gives the metrics of a size object.
+   *
+   * @fields:
+   *   x_ppem ::
+   *     The width of the scaled EM square in pixels, hence the term 'ppem'
+   *     (pixels per EM).  It is also referred to as 'nominal width'.
+   *
+   *   y_ppem ::
+   *     The height of the scaled EM square in pixels, hence the term 'ppem'
+   *     (pixels per EM).  It is also referred to as 'nominal height'.
+   *
+   *   x_scale ::
+   *     A 16.16 fractional scaling value to convert horizontal metrics from
+   *     font units to 26.6 fractional pixels.  Only relevant for scalable
+   *     font formats.
+   *
+   *   y_scale ::
+   *     A 16.16 fractional scaling value to convert vertical metrics from
+   *     font units to 26.6 fractional pixels.  Only relevant for scalable
+   *     font formats.
+   *
+   *   ascender ::
+   *     The ascender in 26.6 fractional pixels, rounded up to an integer
+   *     value.  See @FT_FaceRec for the details.
+   *
+   *   descender ::
+   *     The descender in 26.6 fractional pixels, rounded down to an integer
+   *     value.  See @FT_FaceRec for the details.
+   *
+   *   height ::
+   *     The height in 26.6 fractional pixels, rounded to an integer value.
+   *     See @FT_FaceRec for the details.
+   *
+   *   max_advance ::
+   *     The maximum advance width in 26.6 fractional pixels, rounded to an
+   *     integer value.  See @FT_FaceRec for the details.
+   *
+   * @note:
+   *   The scaling values, if relevant, are determined first during a size
+   *   changing operation.  The remaining fields are then set by the driver.
+   *   For scalable formats, they are usually set to scaled values of the
+   *   corresponding fields in @FT_FaceRec.  Some values like ascender or
+   *   descender are rounded for historical reasons; more precise values (for
+   *   outline fonts) can be derived by scaling the corresponding @FT_FaceRec
+   *   values manually, with code similar to the following.
+   *
+   *   ```
+   *     scaled_ascender = FT_MulFix( face->ascender,
+   *                                  size_metrics->y_scale );
+   *   ```
+   *
+   *   Note that due to glyph hinting and the selected rendering mode these
+   *   values are usually not exact; consequently, they must be treated as
+   *   unreliable with an error margin of at least one pixel!
+   *
+   *   Indeed, the only way to get the exact metrics is to render _all_
+   *   glyphs.  As this would be a definite performance hit, it is up to
+   *   client applications to perform such computations.
+   *
+   *   The `FT_Size_Metrics` structure is valid for bitmap fonts also.
+   *
+   *
+   *   **TrueType fonts with native bytecode hinting**
+   *
+   *   All applications that handle TrueType fonts with native hinting must
+   *   be aware that TTFs expect different rounding of vertical font
+   *   dimensions.  The application has to cater for this, especially if it
+   *   wants to rely on a TTF's vertical data (for example, to properly align
+   *   box characters vertically).
+   *
+   *   Only the application knows _in advance_ that it is going to use native
+   *   hinting for TTFs!  FreeType, on the other hand, selects the hinting
+   *   mode not at the time of creating an @FT_Size object but much later,
+   *   namely while calling @FT_Load_Glyph.
+   *
+   *   Here is some pseudo code that illustrates a possible solution.
+   *
+   *   ```
+   *     font_format = FT_Get_Font_Format( face );
+   *
+   *     if ( !strcmp( font_format, "TrueType" ) &&
+   *          do_native_bytecode_hinting         )
+   *     {
+   *       ascender  = ROUND( FT_MulFix( face->ascender,
+   *                                     size_metrics->y_scale ) );
+   *       descender = ROUND( FT_MulFix( face->descender,
+   *                                     size_metrics->y_scale ) );
+   *     }
+   *     else
+   *     {
+   *       ascender  = size_metrics->ascender;
+   *       descender = size_metrics->descender;
+   *     }
+   *
+   *     height      = size_metrics->height;
+   *     max_advance = size_metrics->max_advance;
+   *   ```
+   */
   typedef struct  FT_Size_Metrics_
   {
     FT_UShort  x_ppem;      /* horizontal pixels per EM               */
@@ -1652,25 +1621,27 @@
   } FT_Size_Metrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_SizeRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FreeType root size class structure.  A size object models a face   */
-  /*    object at a given size.                                            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    face    :: Handle to the parent face object.                       */
-  /*                                                                       */
-  /*    generic :: A typeless pointer, 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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_SizeRec
+   *
+   * @description:
+   *   FreeType root size class structure.  A size object models a face
+   *   object at a given size.
+   *
+   * @fields:
+   *   face ::
+   *     Handle to the parent face object.
+   *
+   *   generic ::
+   *     A typeless pointer, 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              */
@@ -1681,237 +1652,234 @@
   } 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.                           */
-  /*                                                                       */
-  /*    You can however retrieve subglyph information with                 */
-  /*    @FT_Get_SubGlyph_Info.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   You can however retrieve subglyph information with
+   *   @FT_Get_SubGlyph_Info.
+   */
   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.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 in        */
-  /*    outline or bitmap format.                                          */
-  /*                                                                       */
-  /* <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 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 :: The advance width of the unhinted glyph.      */
-  /*                         Its value is expressed in 16.16 fractional    */
-  /*                         pixels, unless @FT_LOAD_LINEAR_DESIGN is set  */
-  /*                         when loading the glyph.  This field can be    */
-  /*                         important to perform correct WYSIWYG layout.  */
-  /*                         Only relevant for outline glyphs.             */
-  /*                                                                       */
-  /*    linearVertAdvance :: The advance height of the unhinted glyph.     */
-  /*                         Its value is expressed in 16.16 fractional    */
-  /*                         pixels, unless @FT_LOAD_LINEAR_DESIGN is set  */
-  /*                         when loading the glyph.  This field can be    */
-  /*                         important to perform correct WYSIWYG layout.  */
-  /*                         Only relevant for outline glyphs.             */
-  /*                                                                       */
-  /*    advance           :: This shorthand is, depending on               */
-  /*                         @FT_LOAD_IGNORE_TRANSFORM, the transformed    */
-  /*                         (hinted) advance width for the glyph, in 26.6 */
-  /*                         fractional pixel format.  As specified with   */
-  /*                         @FT_LOAD_VERTICAL_LAYOUT, it uses either the  */
-  /*                         `horiAdvance' or the `vertAdvance' value of   */
-  /*                         `metrics' field.                              */
-  /*                                                                       */
-  /*    format            :: This field indicates the format of the image  */
-  /*                         contained in the glyph slot.  Typically       */
-  /*                         @FT_GLYPH_FORMAT_BITMAP,                      */
-  /*                         @FT_GLYPH_FORMAT_OUTLINE, or                  */
-  /*                         @FT_GLYPH_FORMAT_COMPOSITE, but other values  */
-  /*                         are possible.                                 */
-  /*                                                                       */
-  /*    bitmap            :: This field is used as a bitmap descriptor.    */
-  /*                         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       :: The bitmap's left bearing expressed in        */
-  /*                         integer pixels.                               */
-  /*                                                                       */
-  /*    bitmap_top        :: The bitmap's top bearing expressed in integer */
-  /*                         pixels.  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.  Once a glyph is    */
-  /*                         loaded, `outline' can be transformed,         */
-  /*                         distorted, emboldened, etc.  However, it must */
-  /*                         not be freed.                                 */
-  /*                                                                       */
-  /*    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.     */
-  /*                                                                       */
-  /*    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; it is   */
-  /*                         currently internal to FreeType.               */
-  /*                                                                       */
-  /*    control_len       :: This is the length in bytes of the control    */
-  /*                         data.  Currently internal to FreeType.        */
-  /*                                                                       */
-  /*    other             :: Reserved.                                     */
-  /*                                                                       */
-  /*    lsb_delta         :: The difference between hinted and unhinted    */
-  /*                         left side bearing while auto-hinting is       */
-  /*                         active.  Zero otherwise.                      */
-  /*                                                                       */
-  /*    rsb_delta         :: The difference between hinted and unhinted    */
-  /*                         right side bearing while auto-hinting 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., an outline glyph for TrueType and Type~1  */
-  /*    formats).  [Since 2.9] The prospective bitmap metrics are          */
-  /*    calculated according to @FT_LOAD_TARGET_XXX and other flags even   */
-  /*    for the outline glyph, even if @FT_LOAD_RENDER is not set.         */
-  /*                                                                       */
-  /*    This image can later be converted into a bitmap by calling         */
-  /*    @FT_Render_Glyph.  This function searches 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 converting 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.         */
-  /*                                                                       */
-  /*    Here is a small pseudo code fragment that shows how to use         */
-  /*    `lsb_delta' and `rsb_delta' to do fractional positioning of        */
-  /*    glyphs:                                                            */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FT_GlyphSlot  slot     = face->glyph;                            */
-  /*      FT_Pos        origin_x = 0;                                      */
-  /*                                                                       */
-  /*                                                                       */
-  /*      for all glyphs do                                                */
-  /*        <load glyph with `FT_Load_Glyph'>                              */
-  /*                                                                       */
-  /*        FT_Outline_Translate( slot->outline, origin_x & 63, 0 );       */
-  /*                                                                       */
-  /*        <save glyph image, or render glyph, or ...>                    */
-  /*                                                                       */
-  /*        <compute kern between current and next glyph                   */
-  /*         and add it to `origin_x'>                                     */
-  /*                                                                       */
-  /*        origin_x += slot->advance.x;                                   */
-  /*        origin_x += slot->rsb_delta - slot->lsb_delta;                 */
-  /*      endfor                                                           */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Here is another small pseudo code fragment that shows how to use   */
-  /*    `lsb_delta' and `rsb_delta' to improve integer positioning of      */
-  /*    glyphs:                                                            */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FT_GlyphSlot  slot           = face->glyph;                      */
-  /*      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 - slot->lsb_delta >  32 )                  */
-  /*          origin_x -= 64;                                              */
-  /*        else if ( prev_rsb_delta - slot->lsb_delta < -31 )             */
-  /*          origin_x += 64;                                              */
-  /*                                                                       */
-  /*        prev_rsb_delta = slot->rsb_delta;                              */
-  /*                                                                       */
-  /*        <save glyph image, or render glyph, or ...>                    */
-  /*                                                                       */
-  /*        origin_x += slot->advance.x;                                   */
-  /*      endfor                                                           */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    If you use strong auto-hinting, you *must* apply these delta       */
-  /*    values!  Otherwise you will experience far too large inter-glyph   */
-  /*    spacing at small rendering sizes in most cases.  Note that it      */
-  /*    doesn't harm to use the above code for other hinting modes also,   */
-  /*    since the delta values are zero then.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_GlyphSlotRec
+   *
+   * @description:
+   *   FreeType root glyph slot class structure.  A glyph slot is a container
+   *   where individual glyphs can be loaded, be they in outline or bitmap
+   *   format.
+   *
+   * @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.
+   *
+   *   glyph_index ::
+   *     [Since 2.10] The glyph index passed as an argument to @FT_Load_Glyph
+   *     while initializing the glyph slot.
+   *
+   *   generic ::
+   *     A typeless pointer 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 ::
+   *     The advance width of the unhinted glyph.  Its value is expressed in
+   *     16.16 fractional pixels, unless @FT_LOAD_LINEAR_DESIGN is set when
+   *     loading the glyph.  This field can be important to perform correct
+   *     WYSIWYG layout.  Only relevant for outline glyphs.
+   *
+   *   linearVertAdvance ::
+   *     The advance height of the unhinted glyph.  Its value is expressed in
+   *     16.16 fractional pixels, unless @FT_LOAD_LINEAR_DESIGN is set when
+   *     loading the glyph.  This field can be important to perform correct
+   *     WYSIWYG layout.  Only relevant for outline glyphs.
+   *
+   *   advance ::
+   *     This shorthand is, depending on @FT_LOAD_IGNORE_TRANSFORM, the
+   *     transformed (hinted) advance width for the glyph, in 26.6 fractional
+   *     pixel format.  As specified with @FT_LOAD_VERTICAL_LAYOUT, it uses
+   *     either the `horiAdvance` or the `vertAdvance` value of `metrics`
+   *     field.
+   *
+   *   format ::
+   *     This field indicates the format of the image contained in the glyph
+   *     slot.  Typically @FT_GLYPH_FORMAT_BITMAP, @FT_GLYPH_FORMAT_OUTLINE,
+   *     or @FT_GLYPH_FORMAT_COMPOSITE, but other values are possible.
+   *
+   *   bitmap ::
+   *     This field is used as a bitmap descriptor.  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 ::
+   *     The bitmap's left bearing expressed in integer pixels.
+   *
+   *   bitmap_top ::
+   *     The bitmap's top bearing expressed in integer pixels.  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.  Once a glyph is loaded, `outline` can be
+   *     transformed, distorted, emboldened, etc.  However, it must not be
+   *     freed.
+   *
+   *   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.
+   *
+   *   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; it is currently internal to
+   *     FreeType.
+   *
+   *   control_len ::
+   *     This is the length in bytes of the control data.  Currently internal
+   *     to FreeType.
+   *
+   *   other ::
+   *     Reserved.
+   *
+   *   lsb_delta ::
+   *     The difference between hinted and unhinted left side bearing while
+   *     auto-hinting is active.  Zero otherwise.
+   *
+   *   rsb_delta ::
+   *     The difference between hinted and unhinted right side bearing while
+   *     auto-hinting 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., an outline glyph for TrueType and Type~1 formats).  [Since 2.9]
+   *   The prospective bitmap metrics are calculated according to
+   *   @FT_LOAD_TARGET_XXX and other flags even for the outline glyph, even
+   *   if @FT_LOAD_RENDER is not set.
+   *
+   *   This image can later be converted into a bitmap by calling
+   *   @FT_Render_Glyph.  This function searches 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 converting 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.
+   *
+   *   Here is a small pseudo code fragment that shows how to use `lsb_delta`
+   *   and `rsb_delta` to do fractional positioning of glyphs:
+   *
+   *   ```
+   *     FT_GlyphSlot  slot     = face->glyph;
+   *     FT_Pos        origin_x = 0;
+   *
+   *
+   *     for all glyphs do
+   *       <load glyph with `FT_Load_Glyph'>
+   *
+   *       FT_Outline_Translate( slot->outline, origin_x & 63, 0 );
+   *
+   *       <save glyph image, or render glyph, or ...>
+   *
+   *       <compute kern between current and next glyph
+   *        and add it to `origin_x'>
+   *
+   *       origin_x += slot->advance.x;
+   *       origin_x += slot->lsb_delta - slot->rsb_delta;
+   *     endfor
+   *   ```
+   *
+   *   Here is another small pseudo code fragment that shows how to use
+   *   `lsb_delta` and `rsb_delta` to improve integer positioning of glyphs:
+   *
+   *   ```
+   *     FT_GlyphSlot  slot           = face->glyph;
+   *     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 - slot->lsb_delta >  32 )
+   *         origin_x -= 64;
+   *       else if ( prev_rsb_delta - slot->lsb_delta < -31 )
+   *         origin_x += 64;
+   *
+   *       prev_rsb_delta = slot->rsb_delta;
+   *
+   *       <save glyph image, or render glyph, or ...>
+   *
+   *       origin_x += slot->advance.x;
+   *     endfor
+   *   ```
+   *
+   *   If you use strong auto-hinting, you **must** apply these delta values!
+   *   Otherwise you will experience far too large inter-glyph spacing at
+   *   small rendering sizes in most cases.  Note that it doesn't harm to use
+   *   the above code for other hinting modes also, since the delta values
+   *   are zero then.
+   */
   typedef struct  FT_GlyphSlotRec_
   {
     FT_Library        library;
     FT_Face           face;
     FT_GlyphSlot      next;
-    FT_UInt           reserved;       /* retained for binary compatibility */
+    FT_UInt           glyph_index; /* new in 2.10; was reserved previously */
     FT_Generic        generic;
 
     FT_Glyph_Metrics  metrics;
@@ -1952,86 +1920,92 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Init_FreeType                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize 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.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    In case you want to provide your own memory allocating routines,   */
-  /*    use @FT_New_Library instead, followed by a call to                 */
-  /*    @FT_Add_Default_Modules (or a series of calls to @FT_Add_Module)   */
-  /*    and @FT_Set_Default_Properties.                                    */
-  /*                                                                       */
-  /*    See the documentation of @FT_Library and @FT_Face for              */
-  /*    multi-threading issues.                                            */
-  /*                                                                       */
-  /*    If you need reference-counting (cf. @FT_Reference_Library), use    */
-  /*    @FT_New_Library and @FT_Done_Library.                              */
-  /*                                                                       */
-  /*    If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is   */
-  /*    set, this function reads the `FREETYPE_PROPERTIES' environment     */
-  /*    variable to control driver properties.  See section @properties    */
-  /*    for more.                                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Init_FreeType
+   *
+   * @description:
+   *   Initialize 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.
+   *
+   * @note:
+   *   In case you want to provide your own memory allocating routines, use
+   *   @FT_New_Library instead, followed by a call to @FT_Add_Default_Modules
+   *   (or a series of calls to @FT_Add_Module) and
+   *   @FT_Set_Default_Properties.
+   *
+   *   See the documentation of @FT_Library and @FT_Face for multi-threading
+   *   issues.
+   *
+   *   If you need reference-counting (cf. @FT_Reference_Library), use
+   *   @FT_New_Library and @FT_Done_Library.
+   *
+   *   If compilation option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES` is
+   *   set, this function reads the `FREETYPE_PROPERTIES` environment
+   *   variable to control driver properties.  See section @properties for
+   *   more.
+   */
   FT_EXPORT( FT_Error )
   FT_Init_FreeType( FT_Library  *alibrary );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_FreeType                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy a given FreeType library object and all of its children,   */
-  /*    including resources, drivers, faces, sizes, etc.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to the target library object.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_FreeType
+   *
+   * @description:
+   *   Destroy a given FreeType library object and all of its children,
+   *   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' and `params' fields.      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `FT_OPEN_MEMORY', `FT_OPEN_STREAM', and `FT_OPEN_PATHNAME'     */
-  /*    flags are mutually exclusive.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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` and `params` fields.
+   *
+   * @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
@@ -2039,7 +2013,7 @@
 #define FT_OPEN_PARAMS    0x10
 
 
-  /* these constants are deprecated; use the corresponding `FT_OPEN_XXX' */
+  /* these constants are deprecated; use the corresponding `FT_OPEN_XXX` */
   /* values instead                                                      */
 #define ft_open_memory    FT_OPEN_MEMORY
 #define ft_open_stream    FT_OPEN_STREAM
@@ -2048,24 +2022,26 @@
 #define ft_open_params    FT_OPEN_PARAMS
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Parameter                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple structure to pass more or less generic parameters to      */
-  /*    @FT_Open_Face and @FT_Face_Properties.                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    tag  :: A four-byte identification tag.                            */
-  /*                                                                       */
-  /*    data :: A pointer to the parameter data.                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The ID and function of parameters are driver-specific.  See        */
-  /*    section @parameter_tags for more information.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Parameter
+   *
+   * @description:
+   *   A simple structure to pass more or less generic parameters to
+   *   @FT_Open_Face and @FT_Face_Properties.
+   *
+   * @fields:
+   *   tag ::
+   *     A four-byte identification tag.
+   *
+   *   data ::
+   *     A pointer to the parameter data.
+   *
+   * @note:
+   *   The ID and function of parameters are driver-specific.  See section
+   *   @parameter_tags for more information.
+   */
   typedef struct  FT_Parameter_
   {
     FT_ULong    tag;
@@ -2074,65 +2050,69 @@
   } FT_Parameter;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Open_Args                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to indicate how to open a new font file or 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 for      */
-  /*                   opening the face.  If set to NULL, FreeType tries   */
-  /*                   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' that      */
-  /*    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'.   */
-  /*    The data are not copied, and the client is responsible for         */
-  /*    releasing and destroying them _after_ the corresponding call to    */
-  /*    @FT_Done_Face.                                                     */
-  /*                                                                       */
-  /*    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 only tries 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' is used.  They are ignored otherwise.    */
-  /*                                                                       */
-  /*    Ideally, both the `pathname' and `params' fields should be tagged  */
-  /*    as `const'; this is missing for API backward compatibility.  In    */
-  /*    other words, applications should treat them as read-only.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Open_Args
+   *
+   * @description:
+   *   A structure to indicate how to open a new font file or 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 for opening the face.  If set to `NULL`,
+   *     FreeType tries 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` that 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`.  The data are not
+   *   copied, and the client is responsible for releasing and destroying
+   *   them _after_ the corresponding call to @FT_Done_Face.
+   *
+   *   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 only tries 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` is used.  They are ignored otherwise.
+   *
+   *   Ideally, both the `pathname` and `params` fields should be tagged as
+   *   'const'; this is missing for API backward compatibility.  In other
+   *   words, applications should treat them as read-only.
+   */
   typedef struct  FT_Open_Args_
   {
     FT_UInt         flags;
@@ -2147,34 +2127,37 @@
   } FT_Open_Args;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Open_Face to open a font by its pathname.                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    pathname   :: A path to the font file.                             */
-  /*                                                                       */
-  /*    face_index :: See @FT_Open_Face for a detailed description of this */
-  /*                  parameter.                                           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.  If `face_index' is   */
-  /*                  greater than or equal to zero, it must be non-NULL.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Use @FT_Done_Face to destroy the created @FT_Face object (along    */
-  /*    with its slot and sizes).                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Face
+   *
+   * @description:
+   *   Call @FT_Open_Face to open a font by its pathname.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   pathname ::
+   *     A path to the font file.
+   *
+   *   face_index ::
+   *     See @FT_Open_Face for a detailed description of this parameter.
+   *
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.  If `face_index` is greater than or
+   *     equal to zero, it must be non-`NULL`.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Use @FT_Done_Face to destroy the created @FT_Face object (along with
+   *   its slot and sizes).
+   */
   FT_EXPORT( FT_Error )
   FT_New_Face( FT_Library   library,
                const char*  filepathname,
@@ -2182,36 +2165,39 @@
                FT_Face     *aface );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Memory_Face                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Open_Face to open a font that has been 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 :: See @FT_Open_Face for a detailed description of this */
-  /*                  parameter.                                           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.  If `face_index' is   */
-  /*                  greater than or equal to zero, it must be non-NULL.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You must not deallocate the memory before calling @FT_Done_Face.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Memory_Face
+   *
+   * @description:
+   *   Call @FT_Open_Face to open a font that has been 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 ::
+   *     See @FT_Open_Face for a detailed description of this parameter.
+   *
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.  If `face_index` is greater than or
+   *     equal to zero, it must be non-`NULL`.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   You must not deallocate the memory before calling @FT_Done_Face.
+   */
   FT_EXPORT( FT_Error )
   FT_New_Memory_Face( FT_Library      library,
                       const FT_Byte*  file_base,
@@ -2220,147 +2206,143 @@
                       FT_Face        *aface );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Open_Face                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a face object from a given resource described by            */
-  /*    @FT_Open_Args.                                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    args       :: A pointer to an `FT_Open_Args' structure that must   */
-  /*                  be filled by the caller.                             */
-  /*                                                                       */
-  /*    face_index :: This field holds two different values.  Bits 0-15    */
-  /*                  are the index of the face in the font file (starting */
-  /*                  with value~0).  Set it to~0 if there is only one     */
-  /*                  face in the font file.                               */
-  /*                                                                       */
-  /*                  [Since 2.6.1] Bits 16-30 are relevant to GX and      */
-  /*                  OpenType variation fonts only, specifying the named  */
-  /*                  instance index for the current face index (starting  */
-  /*                  with value~1; value~0 makes FreeType ignore named    */
-  /*                  instances).  For non-variation fonts, bits 16-30 are */
-  /*                  ignored.  Assuming that you want to access the third */
-  /*                  named instance in face~4, `face_index' should be set */
-  /*                  to 0x00030004.  If you want to access face~4 without */
-  /*                  variation handling, simply set `face_index' to       */
-  /*                  value~4.                                             */
-  /*                                                                       */
-  /*                  `FT_Open_Face' and its siblings can be used to       */
-  /*                  quickly check whether the font format of a given     */
-  /*                  font resource is supported by FreeType.  In general, */
-  /*                  if the `face_index' argument is negative, the        */
-  /*                  function's return value is~0 if the font format is   */
-  /*                  recognized, or non-zero otherwise.  The function     */
-  /*                  allocates a more or less empty face handle in        */
-  /*                  `*aface' (if `aface' isn't NULL); the only two       */
-  /*                  useful fields in this special case are               */
-  /*                  `face->num_faces' and `face->style_flags'.  For any  */
-  /*                  negative value of `face_index', `face->num_faces'    */
-  /*                  gives the number of faces within the font file.  For */
-  /*                  the negative value `-(N+1)' (with `N' a non-negative */
-  /*                  16-bit value), bits 16-30 in `face->style_flags'     */
-  /*                  give the number of named instances in face `N' if we */
-  /*                  have a variation font (or zero otherwise).  After    */
-  /*                  examination, the returned @FT_Face structure should  */
-  /*                  be deallocated with a call to @FT_Done_Face.         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aface      :: A handle to a new face object.  If `face_index' is   */
-  /*                  greater than or equal to zero, it must be non-NULL.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Unlike FreeType 1.x, this function automatically creates a glyph   */
-  /*    slot for the face object that can be accessed directly through     */
-  /*    `face->glyph'.                                                     */
-  /*                                                                       */
-  /*    Each new face object created with this function also owns a        */
-  /*    default @FT_Size object, accessible as `face->size'.               */
-  /*                                                                       */
-  /*    One @FT_Library instance can have multiple face objects, this is,  */
-  /*    @FT_Open_Face and its siblings can be called multiple times using  */
-  /*    the same `library' argument.                                       */
-  /*                                                                       */
-  /*    See the discussion of reference counters in the description of     */
-  /*    @FT_Reference_Face.                                                */
-  /*                                                                       */
-  /*    To loop over all faces, use code similar to the following snippet  */
-  /*    (omitting the error handling).                                     */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      ...                                                              */
-  /*      FT_Face  face;                                                   */
-  /*      FT_Long  i, num_faces;                                           */
-  /*                                                                       */
-  /*                                                                       */
-  /*      error = FT_Open_Face( library, args, -1, &face );                */
-  /*      if ( error ) { ... }                                             */
-  /*                                                                       */
-  /*      num_faces = face->num_faces;                                     */
-  /*      FT_Done_Face( face );                                            */
-  /*                                                                       */
-  /*      for ( i = 0; i < num_faces; i++ )                                */
-  /*      {                                                                */
-  /*        ...                                                            */
-  /*        error = FT_Open_Face( library, args, i, &face );               */
-  /*        ...                                                            */
-  /*        FT_Done_Face( face );                                          */
-  /*        ...                                                            */
-  /*      }                                                                */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    To loop over all valid values for `face_index', use something      */
-  /*    similar to the following snippet, again without error handling.    */
-  /*    The code accesses all faces immediately (thus only a single call   */
-  /*    of `FT_Open_Face' within the do-loop), with and without named      */
-  /*    instances.                                                         */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      ...                                                              */
-  /*      FT_Face  face;                                                   */
-  /*                                                                       */
-  /*      FT_Long  num_faces     = 0;                                      */
-  /*      FT_Long  num_instances = 0;                                      */
-  /*                                                                       */
-  /*      FT_Long  face_idx     = 0;                                       */
-  /*      FT_Long  instance_idx = 0;                                       */
-  /*                                                                       */
-  /*                                                                       */
-  /*      do                                                               */
-  /*      {                                                                */
-  /*        FT_Long  id = ( instance_idx << 16 ) + face_idx;               */
-  /*                                                                       */
-  /*                                                                       */
-  /*        error = FT_Open_Face( library, args, id, &face );              */
-  /*        if ( error ) { ... }                                           */
-  /*                                                                       */
-  /*        num_faces     = face->num_faces;                               */
-  /*        num_instances = face->style_flags >> 16;                       */
-  /*                                                                       */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        FT_Done_Face( face );                                          */
-  /*                                                                       */
-  /*        if ( instance_idx < num_instances )                            */
-  /*          instance_idx++;                                              */
-  /*        else                                                           */
-  /*        {                                                              */
-  /*          face_idx++;                                                  */
-  /*          instance_idx = 0;                                            */
-  /*        }                                                              */
-  /*                                                                       */
-  /*      } while ( face_idx < num_faces )                                 */
-  /*    }                                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Open_Face
+   *
+   * @description:
+   *   Create a face object from a given resource described by @FT_Open_Args.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   args ::
+   *     A pointer to an `FT_Open_Args` structure that must be filled by the
+   *     caller.
+   *
+   *   face_index ::
+   *     This field holds two different values.  Bits 0-15 are the index of
+   *     the face in the font file (starting with value~0).  Set it to~0 if
+   *     there is only one face in the font file.
+   *
+   *     [Since 2.6.1] Bits 16-30 are relevant to GX and OpenType variation
+   *     fonts only, specifying the named instance index for the current face
+   *     index (starting with value~1; value~0 makes FreeType ignore named
+   *     instances).  For non-variation fonts, bits 16-30 are ignored.
+   *     Assuming that you want to access the third named instance in face~4,
+   *     `face_index` should be set to 0x00030004.  If you want to access
+   *     face~4 without variation handling, simply set `face_index` to
+   *     value~4.
+   *
+   *     `FT_Open_Face` and its siblings can be used to quickly check whether
+   *     the font format of a given font resource is supported by FreeType.
+   *     In general, if the `face_index` argument is negative, the function's
+   *     return value is~0 if the font format is recognized, or non-zero
+   *     otherwise.  The function allocates a more or less empty face handle
+   *     in `*aface` (if `aface` isn't `NULL`); the only two useful fields in
+   *     this special case are `face->num_faces` and `face->style_flags`.
+   *     For any negative value of `face_index`, `face->num_faces` gives the
+   *     number of faces within the font file.  For the negative value
+   *     '-(N+1)' (with 'N' a non-negative 16-bit value), bits 16-30 in
+   *     `face->style_flags` give the number of named instances in face 'N'
+   *     if we have a variation font (or zero otherwise).  After examination,
+   *     the returned @FT_Face structure should be deallocated with a call to
+   *     @FT_Done_Face.
+   *
+   * @output:
+   *   aface ::
+   *     A handle to a new face object.  If `face_index` is greater than or
+   *     equal to zero, it must be non-`NULL`.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Unlike FreeType 1.x, this function automatically creates a glyph slot
+   *   for the face object that can be accessed directly through
+   *   `face->glyph`.
+   *
+   *   Each new face object created with this function also owns a default
+   *   @FT_Size object, accessible as `face->size`.
+   *
+   *   One @FT_Library instance can have multiple face objects, this is,
+   *   @FT_Open_Face and its siblings can be called multiple times using the
+   *   same `library` argument.
+   *
+   *   See the discussion of reference counters in the description of
+   *   @FT_Reference_Face.
+   *
+   * @example:
+   *   To loop over all faces, use code similar to the following snippet
+   *   (omitting the error handling).
+   *
+   *   ```
+   *     ...
+   *     FT_Face  face;
+   *     FT_Long  i, num_faces;
+   *
+   *
+   *     error = FT_Open_Face( library, args, -1, &face );
+   *     if ( error ) { ... }
+   *
+   *     num_faces = face->num_faces;
+   *     FT_Done_Face( face );
+   *
+   *     for ( i = 0; i < num_faces; i++ )
+   *     {
+   *       ...
+   *       error = FT_Open_Face( library, args, i, &face );
+   *       ...
+   *       FT_Done_Face( face );
+   *       ...
+   *     }
+   *   ```
+   *
+   *   To loop over all valid values for `face_index`, use something similar
+   *   to the following snippet, again without error handling.  The code
+   *   accesses all faces immediately (thus only a single call of
+   *   `FT_Open_Face` within the do-loop), with and without named instances.
+   *
+   *   ```
+   *     ...
+   *     FT_Face  face;
+   *
+   *     FT_Long  num_faces     = 0;
+   *     FT_Long  num_instances = 0;
+   *
+   *     FT_Long  face_idx     = 0;
+   *     FT_Long  instance_idx = 0;
+   *
+   *
+   *     do
+   *     {
+   *       FT_Long  id = ( instance_idx << 16 ) + face_idx;
+   *
+   *
+   *       error = FT_Open_Face( library, args, id, &face );
+   *       if ( error ) { ... }
+   *
+   *       num_faces     = face->num_faces;
+   *       num_instances = face->style_flags >> 16;
+   *
+   *       ...
+   *
+   *       FT_Done_Face( face );
+   *
+   *       if ( instance_idx < num_instances )
+   *         instance_idx++;
+   *       else
+   *       {
+   *         face_idx++;
+   *         instance_idx = 0;
+   *       }
+   *
+   *     } while ( face_idx < num_faces )
+   *   ```
+   */
   FT_EXPORT( FT_Error )
   FT_Open_Face( FT_Library           library,
                 const FT_Open_Args*  args,
@@ -2368,204 +2350,208 @@
                 FT_Face             *aface );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Attach_File                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Attach_Stream to attach a file.                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face         :: The target face object.                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    filepathname :: The pathname.                                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Attach_File
+   *
+   * @description:
+   *   Call @FT_Attach_Stream to attach a file.
+   *
+   * @inout:
+   *   face ::
+   *     The target face object.
+   *
+   * @input:
+   *   filepathname ::
+   *     The pathname.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Attach_File( FT_Face      face,
                   const char*  filepathname );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Attach_Stream                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    `Attach' data to a face object.  Normally, this is used to read    */
-  /*    additional information for the face object.  For example, you can  */
-  /*    attach an AFM file that comes with a Type~1 font to get the        */
-  /*    kerning values and other metrics.                                  */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The target face object.                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    parameters :: A pointer to @FT_Open_Args that must be filled by    */
-  /*                  the caller.                                          */
-  /*                                                                       */
-  /* <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 or stream attachments.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Attach_Stream
+   *
+   * @description:
+   *   'Attach' data to a face object.  Normally, this is used to read
+   *   additional information for the face object.  For example, you can
+   *   attach an AFM file that comes with a Type~1 font to get the kerning
+   *   values and other metrics.
+   *
+   * @inout:
+   *   face ::
+   *     The target face object.
+   *
+   * @input:
+   *   parameters ::
+   *     A pointer to @FT_Open_Args that must be filled by the caller.
+   *
+   * @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 or
+   *   stream attachments.
+   */
   FT_EXPORT( FT_Error )
   FT_Attach_Stream( FT_Face        face,
                     FT_Open_Args*  parameters );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Reference_Face                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A counter gets initialized to~1 at the time an @FT_Face structure  */
-  /*    is created.  This function increments the counter.  @FT_Done_Face  */
-  /*    then only destroys a face if the counter is~1, otherwise it simply */
-  /*    decrements the counter.                                            */
-  /*                                                                       */
-  /*    This function helps in managing life-cycles of structures that     */
-  /*    reference @FT_Face objects.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to a target face object.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.2                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Reference_Face
+   *
+   * @description:
+   *   A counter gets initialized to~1 at the time an @FT_Face structure is
+   *   created.  This function increments the counter.  @FT_Done_Face then
+   *   only destroys a face if the counter is~1, otherwise it simply
+   *   decrements the counter.
+   *
+   *   This function helps in managing life-cycles of structures that
+   *   reference @FT_Face objects.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.4.2
+   */
   FT_EXPORT( FT_Error )
   FT_Reference_Face( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Face                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discard 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.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See the discussion of reference counters in the description of     */
-  /*    @FT_Reference_Face.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Face
+   *
+   * @description:
+   *   Discard 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.
+   *
+   * @note:
+   *   See the discussion of reference counters in the description of
+   *   @FT_Reference_Face.
+   */
   FT_EXPORT( FT_Error )
   FT_Done_Face( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Select_Size                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Select a bitmap strike.  To be more precise, this function sets    */
-  /*    the scaling factors of the active @FT_Size object in a face so     */
-  /*    that bitmaps from this particular strike are taken by              */
-  /*    @FT_Load_Glyph and friends.                                        */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face         :: A handle to a target face object.                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    strike_index :: The index of the bitmap strike in the              */
-  /*                    `available_sizes' field of @FT_FaceRec structure.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    For bitmaps embedded in outline fonts it is common that only a     */
-  /*    subset of the available glyphs at a given ppem value is available. */
-  /*    FreeType silently uses outlines if there is no bitmap for a given  */
-  /*    glyph index.                                                       */
-  /*                                                                       */
-  /*    For GX and OpenType variation fonts, a bitmap strike makes sense   */
-  /*    only if the default instance is active (this is, no glyph          */
-  /*    variation takes place); otherwise, FreeType simply ignores bitmap  */
-  /*    strikes.  The same is true for all named instances that are        */
-  /*    different from the default instance.                               */
-  /*                                                                       */
-  /*    Don't use this function if you are using the FreeType cache API.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Select_Size
+   *
+   * @description:
+   *   Select a bitmap strike.  To be more precise, this function sets the
+   *   scaling factors of the active @FT_Size object in a face so that
+   *   bitmaps from this particular strike are taken by @FT_Load_Glyph and
+   *   friends.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @input:
+   *   strike_index ::
+   *     The index of the bitmap strike in the `available_sizes` field of
+   *     @FT_FaceRec structure.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   For bitmaps embedded in outline fonts it is common that only a subset
+   *   of the available glyphs at a given ppem value is available.  FreeType
+   *   silently uses outlines if there is no bitmap for a given glyph index.
+   *
+   *   For GX and OpenType variation fonts, a bitmap strike makes sense only
+   *   if the default instance is active (this is, no glyph variation takes
+   *   place); otherwise, FreeType simply ignores bitmap strikes.  The same
+   *   is true for all named instances that are different from the default
+   *   instance.
+   *
+   *   Don't use this function if you are using the FreeType cache API.
+   */
   FT_EXPORT( FT_Error )
   FT_Select_Size( FT_Face  face,
                   FT_Int   strike_index );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Size_Request_Type                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration type that lists the supported size request types,   */
-  /*    i.e., what input size (in font units) maps to the requested output */
-  /*    size (in pixels, as computed from the arguments of                 */
-  /*    @FT_Size_Request).                                                 */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_SIZE_REQUEST_TYPE_NOMINAL ::                                    */
-  /*      The nominal size.  The `units_per_EM' field of @FT_FaceRec is    */
-  /*      used to determine both scaling values.                           */
-  /*                                                                       */
-  /*      This is the standard scaling found in most applications.  In     */
-  /*      particular, use this size request type for TrueType fonts if     */
-  /*      they provide optical scaling or something similar.  Note,        */
-  /*      however, that `units_per_EM' is a rather abstract value which    */
-  /*      bears no relation to the actual size of the glyphs in a font.    */
-  /*                                                                       */
-  /*    FT_SIZE_REQUEST_TYPE_REAL_DIM ::                                   */
-  /*      The real dimension.  The sum of the `ascender' and (minus of)    */
-  /*      the `descender' fields of @FT_FaceRec is used to determine both  */
-  /*      scaling values.                                                  */
-  /*                                                                       */
-  /*    FT_SIZE_REQUEST_TYPE_BBOX ::                                       */
-  /*      The font bounding box.  The width and height of the `bbox' field */
-  /*      of @FT_FaceRec are used to determine the horizontal and vertical */
-  /*      scaling value, respectively.                                     */
-  /*                                                                       */
-  /*    FT_SIZE_REQUEST_TYPE_CELL ::                                       */
-  /*      The `max_advance_width' field of @FT_FaceRec is used to          */
-  /*      determine the horizontal scaling value; the vertical scaling     */
-  /*      value is determined the same way as                              */
-  /*      @FT_SIZE_REQUEST_TYPE_REAL_DIM does.  Finally, both scaling      */
-  /*      values are set to the smaller one.  This type is useful if you   */
-  /*      want to specify the font size for, say, a window of a given      */
-  /*      dimension and 80x24 cells.                                       */
-  /*                                                                       */
-  /*    FT_SIZE_REQUEST_TYPE_SCALES ::                                     */
-  /*      Specify the scaling values directly.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The above descriptions only apply to scalable formats.  For bitmap */
-  /*    formats, the behaviour is up to the driver.                        */
-  /*                                                                       */
-  /*    See the note section of @FT_Size_Metrics if you wonder how size    */
-  /*    requesting relates to scaling values.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Size_Request_Type
+   *
+   * @description:
+   *   An enumeration type that lists the supported size request types, i.e.,
+   *   what input size (in font units) maps to the requested output size (in
+   *   pixels, as computed from the arguments of @FT_Size_Request).
+   *
+   * @values:
+   *   FT_SIZE_REQUEST_TYPE_NOMINAL ::
+   *     The nominal size.  The `units_per_EM` field of @FT_FaceRec is used
+   *     to determine both scaling values.
+   *
+   *     This is the standard scaling found in most applications.  In
+   *     particular, use this size request type for TrueType fonts if they
+   *     provide optical scaling or something similar.  Note, however, that
+   *     `units_per_EM` is a rather abstract value which bears no relation to
+   *     the actual size of the glyphs in a font.
+   *
+   *   FT_SIZE_REQUEST_TYPE_REAL_DIM ::
+   *     The real dimension.  The sum of the `ascender` and (minus of) the
+   *     `descender` fields of @FT_FaceRec is used to determine both scaling
+   *     values.
+   *
+   *   FT_SIZE_REQUEST_TYPE_BBOX ::
+   *     The font bounding box.  The width and height of the `bbox` field of
+   *     @FT_FaceRec are used to determine the horizontal and vertical
+   *     scaling value, respectively.
+   *
+   *   FT_SIZE_REQUEST_TYPE_CELL ::
+   *     The `max_advance_width` field of @FT_FaceRec is used to determine
+   *     the horizontal scaling value; the vertical scaling value is
+   *     determined the same way as @FT_SIZE_REQUEST_TYPE_REAL_DIM does.
+   *     Finally, both scaling values are set to the smaller one.  This type
+   *     is useful if you want to specify the font size for, say, a window of
+   *     a given dimension and 80x24 cells.
+   *
+   *   FT_SIZE_REQUEST_TYPE_SCALES ::
+   *     Specify the scaling values directly.
+   *
+   * @note:
+   *   The above descriptions only apply to scalable formats.  For bitmap
+   *   formats, the behaviour is up to the driver.
+   *
+   *   See the note section of @FT_Size_Metrics if you wonder how size
+   *   requesting relates to scaling values.
+   */
   typedef enum  FT_Size_Request_Type_
   {
     FT_SIZE_REQUEST_TYPE_NOMINAL,
@@ -2579,42 +2565,45 @@
   } FT_Size_Request_Type;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Size_RequestRec                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a size request.                               */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    type           :: See @FT_Size_Request_Type.                       */
-  /*                                                                       */
-  /*    width          :: The desired width, given as a 26.6 fractional    */
-  /*                      point value (with 72pt = 1in).                   */
-  /*                                                                       */
-  /*    height         :: The desired height, given as a 26.6 fractional   */
-  /*                      point value (with 72pt = 1in).                   */
-  /*                                                                       */
-  /*    horiResolution :: The horizontal resolution (dpi, i.e., pixels per */
-  /*                      inch).  If set to zero, `width' is treated as a  */
-  /*                      26.6 fractional *pixel* value, which gets        */
-  /*                      internally rounded to an integer.                */
-  /*                                                                       */
-  /*    vertResolution :: The vertical resolution (dpi, i.e., pixels per   */
-  /*                      inch).  If set to zero, `height' is treated as a */
-  /*                      26.6 fractional *pixel* value, which gets        */
-  /*                      internally rounded to an integer.                */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If `width' is zero, the horizontal scaling value is set equal      */
-  /*    to the vertical scaling value, and vice versa.                     */
-  /*                                                                       */
-  /*    If `type' is FT_SIZE_REQUEST_TYPE_SCALES, `width' and `height' are */
-  /*    interpreted directly as 16.16 fractional scaling values, without   */
-  /*    any further modification, and both `horiResolution' and            */
-  /*    `vertResolution' are ignored.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Size_RequestRec
+   *
+   * @description:
+   *   A structure to model a size request.
+   *
+   * @fields:
+   *   type ::
+   *     See @FT_Size_Request_Type.
+   *
+   *   width ::
+   *     The desired width, given as a 26.6 fractional point value (with 72pt
+   *     = 1in).
+   *
+   *   height ::
+   *     The desired height, given as a 26.6 fractional point value (with
+   *     72pt = 1in).
+   *
+   *   horiResolution ::
+   *     The horizontal resolution (dpi, i.e., pixels per inch).  If set to
+   *     zero, `width` is treated as a 26.6 fractional **pixel** value, which
+   *     gets internally rounded to an integer.
+   *
+   *   vertResolution ::
+   *     The vertical resolution (dpi, i.e., pixels per inch).  If set to
+   *     zero, `height` is treated as a 26.6 fractional **pixel** value,
+   *     which gets internally rounded to an integer.
+   *
+   * @note:
+   *   If `width` is zero, the horizontal scaling value is set equal to the
+   *   vertical scaling value, and vice versa.
+   *
+   *   If `type` is `FT_SIZE_REQUEST_TYPE_SCALES`, `width` and `height` are
+   *   interpreted directly as 16.16 fractional scaling values, without any
+   *   further modification, and both `horiResolution` and `vertResolution`
+   *   are ignored.
+   */
   typedef struct  FT_Size_RequestRec_
   {
     FT_Size_Request_Type  type;
@@ -2626,96 +2615,102 @@
   } FT_Size_RequestRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Size_Request                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a size request structure.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Size_Request
+   *
+   * @description:
+   *   A handle to a size request structure.
+   */
   typedef struct FT_Size_RequestRec_  *FT_Size_Request;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Request_Size                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Resize the scale of the active @FT_Size object in a face.          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: A handle to a target face object.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    req  :: A pointer to a @FT_Size_RequestRec.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Although drivers may select the bitmap strike matching the         */
-  /*    request, you should not rely on this if you intend to select a     */
-  /*    particular bitmap strike.  Use @FT_Select_Size instead in that     */
-  /*    case.                                                              */
-  /*                                                                       */
-  /*    The relation between the requested size and the resulting glyph    */
-  /*    size is dependent entirely on how the size is defined in the       */
-  /*    source face.  The font designer chooses the final size of each     */
-  /*    glyph relative to this size.  For more information refer to        */
-  /*    `https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'.    */
-  /*                                                                       */
-  /*    Contrary to @FT_Set_Char_Size, this function doesn't have special  */
-  /*    code to normalize zero-valued widths, heights, or resolutions      */
-  /*    (which lead to errors in most cases).                              */
-  /*                                                                       */
-  /*    Don't use this function if you are using the FreeType cache API.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Request_Size
+   *
+   * @description:
+   *   Resize the scale of the active @FT_Size object in a face.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @input:
+   *   req ::
+   *     A pointer to a @FT_Size_RequestRec.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Although drivers may select the bitmap strike matching the request,
+   *   you should not rely on this if you intend to select a particular
+   *   bitmap strike.  Use @FT_Select_Size instead in that case.
+   *
+   *   The relation between the requested size and the resulting glyph size
+   *   is dependent entirely on how the size is defined in the source face.
+   *   The font designer chooses the final size of each glyph relative to
+   *   this size.  For more information refer to
+   *   'https://www.freetype.org/freetype2/docs/glyphs/glyphs-2.html'.
+   *
+   *   Contrary to @FT_Set_Char_Size, this function doesn't have special code
+   *   to normalize zero-valued widths, heights, or resolutions (which lead
+   *   to errors in most cases).
+   *
+   *   Don't use this function if you are using the FreeType cache API.
+   */
   FT_EXPORT( FT_Error )
   FT_Request_Size( FT_Face          face,
                    FT_Size_Request  req );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Char_Size                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Request_Size to request the nominal size (in points).     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face            :: A handle to a target face object.               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    char_width      :: The nominal width, in 26.6 fractional points.   */
-  /*                                                                       */
-  /*    char_height     :: The nominal height, in 26.6 fractional points.  */
-  /*                                                                       */
-  /*    horz_resolution :: The horizontal resolution in dpi.               */
-  /*                                                                       */
-  /*    vert_resolution :: The vertical resolution in dpi.                 */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    While this function allows fractional points as input values, the  */
-  /*    resulting ppem value for the given resolution is always rounded to */
-  /*    the nearest integer.                                               */
-  /*                                                                       */
-  /*    If either the character width or height is zero, it is set equal   */
-  /*    to the other value.                                                */
-  /*                                                                       */
-  /*    If either the horizontal or vertical resolution is zero, it is set */
-  /*    equal to the other value.                                          */
-  /*                                                                       */
-  /*    A character width or height smaller than 1pt is set to 1pt; if     */
-  /*    both resolution values are zero, they are set to 72dpi.            */
-  /*                                                                       */
-  /*    Don't use this function if you are using the FreeType cache API.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Char_Size
+   *
+   * @description:
+   *   Call @FT_Request_Size to request the nominal size (in points).
+   *
+   * @inout:
+   *   face ::
+   *     A handle to a target face object.
+   *
+   * @input:
+   *   char_width ::
+   *     The nominal width, in 26.6 fractional points.
+   *
+   *   char_height ::
+   *     The nominal height, in 26.6 fractional points.
+   *
+   *   horz_resolution ::
+   *     The horizontal resolution in dpi.
+   *
+   *   vert_resolution ::
+   *     The vertical resolution in dpi.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   While this function allows fractional points as input values, the
+   *   resulting ppem value for the given resolution is always rounded to the
+   *   nearest integer.
+   *
+   *   If either the character width or height is zero, it is set equal to
+   *   the other value.
+   *
+   *   If either the horizontal or vertical resolution is zero, it is set
+   *   equal to the other value.
+   *
+   *   A character width or height smaller than 1pt is set to 1pt; if both
+   *   resolution values are zero, they are set to 72dpi.
+   *
+   *   Don't use this function if you are using the FreeType cache API.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Char_Size( FT_Face     face,
                     FT_F26Dot6  char_width,
@@ -2724,134 +2719,138 @@
                     FT_UInt     vert_resolution );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Pixel_Sizes                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Call @FT_Request_Size to request the nominal size (in pixels).     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face         :: A handle to the target face object.                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    pixel_width  :: The nominal width, in pixels.                      */
-  /*                                                                       */
-  /*    pixel_height :: The nominal height, in pixels.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    You should not rely on the resulting glyphs matching or being      */
-  /*    constrained to this pixel size.  Refer to @FT_Request_Size to      */
-  /*    understand how requested sizes relate to actual sizes.             */
-  /*                                                                       */
-  /*    Don't use this function if you are using the FreeType cache API.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Pixel_Sizes
+   *
+   * @description:
+   *   Call @FT_Request_Size to request the nominal size (in pixels).
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   * @input:
+   *   pixel_width ::
+   *     The nominal width, in pixels.
+   *
+   *   pixel_height ::
+   *     The nominal height, in pixels.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   You should not rely on the resulting glyphs matching or being
+   *   constrained to this pixel size.  Refer to @FT_Request_Size to
+   *   understand how requested sizes relate to actual sizes.
+   *
+   *   Don't use this function if you are using the FreeType cache API.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Pixel_Sizes( FT_Face  face,
                       FT_UInt  pixel_width,
                       FT_UInt  pixel_height );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Load_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load a glyph into the glyph slot of a face object.                 */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face        :: A handle to the target face object where the glyph  */
-  /*                   is 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>                                                                */
-  /*    The loaded glyph may be transformed.  See @FT_Set_Transform for    */
-  /*    the details.                                                       */
-  /*                                                                       */
-  /*    For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument' is        */
-  /*    returned for invalid CID values (this is, for CID values that      */
-  /*    don't have a corresponding glyph in the font).  See the discussion */
-  /*    of the @FT_FACE_FLAG_CID_KEYED flag for more details.              */
-  /*                                                                       */
-  /*    If you receive `FT_Err_Glyph_Too_Big', try getting the glyph       */
-  /*    outline at EM size, then scale it manually and fill it as a        */
-  /*    graphics operation.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Load_Glyph
+   *
+   * @description:
+   *   Load a glyph into the glyph slot of a face object.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the target face object where the glyph is 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:
+   *   The loaded glyph may be transformed.  See @FT_Set_Transform for the
+   *   details.
+   *
+   *   For subsetted CID-keyed fonts, `FT_Err_Invalid_Argument` is returned
+   *   for invalid CID values (this is, for CID values that don't have a
+   *   corresponding glyph in the font).  See the discussion of the
+   *   @FT_FACE_FLAG_CID_KEYED flag for more details.
+   *
+   *   If you receive `FT_Err_Glyph_Too_Big`, try getting the glyph outline
+   *   at EM size, then scale it manually and fill it as a graphics
+   *   operation.
+   */
   FT_EXPORT( FT_Error )
   FT_Load_Glyph( FT_Face   face,
                  FT_UInt   glyph_index,
                  FT_Int32  load_flags );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Load_Char                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load a glyph into the glyph slot of a face object, accessed by its */
-  /*    character code.                                                    */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face        :: A handle to a target face object where the glyph    */
-  /*                   is 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>                                                                */
-  /*    This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph.  */
-  /*                                                                       */
-  /*    Many fonts contain glyphs that can't be loaded by this function    */
-  /*    since its glyph indices are not listed in any of the font's        */
-  /*    charmaps.                                                          */
-  /*                                                                       */
-  /*    If no active cmap is set up (i.e., `face->charmap' is zero), the   */
-  /*    call to @FT_Get_Char_Index is omitted, and the function behaves    */
-  /*    identically to @FT_Load_Glyph.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Load_Char
+   *
+   * @description:
+   *   Load a glyph into the glyph slot of a face object, accessed by its
+   *   character code.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to a target face object where the glyph is 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:
+   *   This function simply calls @FT_Get_Char_Index and @FT_Load_Glyph.
+   *
+   *   Many fonts contain glyphs that can't be loaded by this function since
+   *   its glyph indices are not listed in any of the font's charmaps.
+   *
+   *   If no active cmap is set up (i.e., `face->charmap` is zero), the call
+   *   to @FT_Get_Char_Index is omitted, and the function behaves identically
+   *   to @FT_Load_Glyph.
+   */
   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 for @FT_Load_Glyph to indicate what
-   *   kind of operations to perform during glyph loading.
+   *   A list of bit field constants for @FT_Load_Glyph to indicate what kind
+   *   of operations to perform during glyph loading.
    *
    * @values:
    *   FT_LOAD_DEFAULT ::
@@ -2859,15 +2858,14 @@
    *     operation.  In this case, the following happens:
    *
    *     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).
+   *     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 for 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).
+   *     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
@@ -2879,14 +2877,14 @@
    *     This flag implies @FT_LOAD_NO_HINTING and @FT_LOAD_NO_BITMAP, and
    *     unsets @FT_LOAD_RENDER.
    *
-   *     If the font is `tricky' (see @FT_FACE_FLAG_TRICKY for more), using
-   *     FT_LOAD_NO_SCALE usually yields meaningless outlines because the
+   *     If the font is 'tricky' (see @FT_FACE_FLAG_TRICKY for more), using
+   *     `FT_LOAD_NO_SCALE` usually yields meaningless outlines because the
    *     subglyphs must be scaled and positioned with hinting instructions.
-   *     This can be solved by loading the font without FT_LOAD_NO_SCALE and
-   *     setting the character size to `font->units_per_EM'.
+   *     This can be solved by loading the font without `FT_LOAD_NO_SCALE`
+   *     and setting the character size to `font->units_per_EM`.
    *
    *   FT_LOAD_NO_HINTING ::
-   *     Disable hinting.  This generally generates `blurrier' bitmap glyphs
+   *     Disable hinting.  This generally generates 'blurrier' bitmap glyphs
    *     when the glyph are rendered in any of the anti-aliased modes.  See
    *     also the note below.
    *
@@ -2907,34 +2905,37 @@
    *
    *   FT_LOAD_VERTICAL_LAYOUT ::
    *     Load the glyph for vertical text layout.  In particular, the
-   *     `advance' value in the @FT_GlyphSlotRec structure is set to the
-   *     `vertAdvance' value of the `metrics' field.
-   *
-   *     In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use
-   *     this flag currently.  Reason is that in this case vertical metrics
-   *     get synthesized, and those values are not always consistent across
+   *     `advance` value in the @FT_GlyphSlotRec structure is set to the
+   *     `vertAdvance` value of the `metrics` field.
+   *
+   *     In case @FT_HAS_VERTICAL doesn't return true, you shouldn't use this
+   *     flag currently.  Reason is that in this case vertical metrics get
+   *     synthesized, and those values are not always consistent across
    *     various font formats.
    *
    *   FT_LOAD_FORCE_AUTOHINT ::
-   *     Prefer the auto-hinter over the font's native hinter.  See also
-   *     the note below.
+   *     Prefer the auto-hinter over the font's native hinter.  See also the
+   *     note below.
    *
    *   FT_LOAD_PEDANTIC ::
    *     Make the font driver perform pedantic verifications during glyph
-   *     loading.  This is mostly used to detect broken glyphs in fonts.
-   *     By default, FreeType tries to handle broken fonts also.
+   *     loading and hinting.  This is mostly used to detect broken glyphs in
+   *     fonts.  By default, FreeType tries to handle broken fonts also.
    *
    *     In particular, errors from the TrueType bytecode engine are not
-   *     passed to the application if this flag is not set; this might
-   *     result in partially hinted or distorted glyphs in case a glyph's
-   *     bytecode is buggy.
+   *     passed to the application if this flag is not set; this might result
+   *     in partially hinted or distorted glyphs in case a glyph's bytecode
+   *     is buggy.
    *
    *   FT_LOAD_NO_RECURSE ::
-   *     Don't load composite glyphs recursively.  Instead, the font
-   *     driver 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 subglyphs can
-   *     then be accessed with @FT_Get_SubGlyph_Info.
+   *     Don't load composite glyphs recursively.  Instead, the font driver
+   *     fills the `num_subglyph` and `subglyphs` values of the glyph slot;
+   *     it also sets `glyph->format` to @FT_GLYPH_FORMAT_COMPOSITE.  The
+   *     description of subglyphs can then be accessed with
+   *     @FT_Get_SubGlyph_Info.
+   *
+   *     Don't use this flag for retrieving metrics information since some
+   *     font drivers only return rudimentary data.
    *
    *     This flag implies @FT_LOAD_NO_SCALE and @FT_LOAD_IGNORE_TRANSFORM.
    *
@@ -2951,23 +2952,35 @@
    *     monochrome-optimized hinting algorithm is used.
    *
    *   FT_LOAD_LINEAR_DESIGN ::
-   *     Keep  `linearHoriAdvance' and `linearVertAdvance' fields of
-   *     @FT_GlyphSlotRec in font units.  See @FT_GlyphSlotRec for
-   *     details.
+   *     Keep `linearHoriAdvance` and `linearVertAdvance` fields of
+   *     @FT_GlyphSlotRec in font units.  See @FT_GlyphSlotRec for details.
    *
    *   FT_LOAD_NO_AUTOHINT ::
    *     Disable the auto-hinter.  See also the note below.
    *
    *   FT_LOAD_COLOR ::
+   *     Load colored glyphs.  There are slight differences depending on the
+   *     font format.
+   *
    *     [Since 2.5] Load embedded color bitmap images.  The resulting color
-   *     bitmaps, if available, will have the @FT_PIXEL_MODE_BGRA format.
-   *     If the flag is not set and color bitmaps are found, they are
-   *     converted to 256-level gray bitmaps transparently, using the
-   *     @FT_PIXEL_MODE_GRAY format.
+   *     bitmaps, if available, will have the @FT_PIXEL_MODE_BGRA format,
+   *     with pre-multiplied color channels.  If the flag is not set and
+   *     color bitmaps are found, they are converted to 256-level gray
+   *     bitmaps, using the @FT_PIXEL_MODE_GRAY format.
+   *
+   *     [Since 2.10, experimental] If the glyph index contains an entry in
+   *     the face's 'COLR' table with a 'CPAL' palette table (as defined in
+   *     the OpenType specification), make @FT_Render_Glyph provide a default
+   *     blending of the color glyph layers associated with the glyph index,
+   *     using the same bitmap format as embedded color bitmap images.  This
+   *     is mainly for convenience; for full control of color layers use
+   *     @FT_Get_Color_Glyph_Layer and FreeType's color functions like
+   *     @FT_Palette_Select instead of setting @FT_LOAD_COLOR for rendering
+   *     so that the client application can handle blending by itself.
    *
    *   FT_LOAD_COMPUTE_METRICS ::
-   *     [Since 2.6.1] Compute glyph metrics from the glyph data, without
-   *     the use of bundled metrics tables (for example, the `hdmx' table in
+   *     [Since 2.6.1] Compute glyph metrics from the glyph data, without the
+   *     use of bundled metrics tables (for example, the 'hdmx' table in
    *     TrueType fonts).  This flag is mainly used by font validating or
    *     font editing applications, which need to ignore, verify, or edit
    *     those tables.
@@ -2976,9 +2989,9 @@
    *
    *   FT_LOAD_BITMAP_METRICS_ONLY ::
    *     [Since 2.7.1] Request loading of the metrics and bitmap image
-   *     information of a (possibly embedded) bitmap glyph without
-   *     allocating or copying the bitmap image data itself.  No effect if
-   *     the target glyph is not a bitmap image.
+   *     information of a (possibly embedded) bitmap glyph without allocating
+   *     or copying the bitmap image data itself.  No effect if the target
+   *     glyph is not a bitmap image.
    *
    *     This flag unsets @FT_LOAD_RENDER.
    *
@@ -2993,8 +3006,8 @@
    *   @FT_FACE_FLAG_HINTER) is preferred over the auto-hinter.  You can
    *   disable hinting by setting @FT_LOAD_NO_HINTING or change the
    *   precedence by setting @FT_LOAD_FORCE_AUTOHINT.  You can also set
-   *   @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be
-   *   used at all.
+   *   @FT_LOAD_NO_AUTOHINT in case you don't want the auto-hinter to be used
+   *   at all.
    *
    *   See the description of @FT_FACE_FLAG_TRICKY for a special exception
    *   (affecting only a handful of Asian fonts).
@@ -3005,7 +3018,7 @@
    *   Note that the auto-hinter needs a valid Unicode cmap (either a native
    *   one or synthesized by FreeType) for producing correct results.  If a
    *   font provides an incorrect mapping (for example, assigning the
-   *   character code U+005A, LATIN CAPITAL LETTER Z, to a glyph depicting a
+   *   character code U+005A, LATIN CAPITAL LETTER~Z, to a glyph depicting a
    *   mathematical integral sign), the auto-hinter might produce useless
    *   results.
    *
@@ -3025,7 +3038,7 @@
 #define FT_LOAD_MONOCHROME                   ( 1L << 12 )
 #define FT_LOAD_LINEAR_DESIGN                ( 1L << 13 )
 #define FT_LOAD_NO_AUTOHINT                  ( 1L << 15 )
-  /* Bits 16-19 are used by `FT_LOAD_TARGET_' */
+  /* Bits 16-19 are used by `FT_LOAD_TARGET_` */
 #define FT_LOAD_COLOR                        ( 1L << 20 )
 #define FT_LOAD_COMPUTE_METRICS              ( 1L << 21 )
 #define FT_LOAD_BITMAP_METRICS_ONLY          ( 1L << 22 )
@@ -3044,19 +3057,17 @@
    *
    * @description:
    *   A list of values to select a specific hinting algorithm for the
-   *   hinter.  You should OR one of these values to your `load_flags'
-   *   when calling @FT_Load_Glyph.
-   *
-   *   Note that a font's native hinters may ignore the hinting algorithm
-   *   you have specified (e.g., the TrueType bytecode interpreter).  You
-   *   can set @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is
-   *   used.
+   *   hinter.  You should OR one of these values to your `load_flags` when
+   *   calling @FT_Load_Glyph.
+   *
+   *   Note that a font's native hinters may ignore the hinting algorithm you
+   *   have specified (e.g., the TrueType bytecode interpreter).  You can set
+   *   @FT_LOAD_FORCE_AUTOHINT to ensure that the auto-hinter is used.
    *
    * @values:
    *   FT_LOAD_TARGET_NORMAL ::
    *     The default hinting algorithm, optimized for standard gray-level
-   *     rendering.  For monochrome output, use @FT_LOAD_TARGET_MONO
-   *     instead.
+   *     rendering.  For monochrome output, use @FT_LOAD_TARGET_MONO instead.
    *
    *   FT_LOAD_TARGET_LIGHT ::
    *     A lighter hinting algorithm for gray-level modes.  Many generated
@@ -3069,13 +3080,13 @@
    *     auto-hinter.
    *
    *     Advance widths are rounded to integer values; however, using the
-   *     `lsb_delta' and `rsb_delta' fields of @FT_GlyphSlotRec, it is
+   *     `lsb_delta` and `rsb_delta` fields of @FT_GlyphSlotRec, it is
    *     possible to get fractional advance widths for subpixel positioning
    *     (which is recommended to use).
    *
-   *     If configuration option AF_CONFIG_OPTION_TT_SIZE_METRICS is active,
-   *     TrueType-like metrics are used to make this mode behave similarly
-   *     as in unpatched FreeType versions between 2.4.6 and 2.7.1
+   *     If configuration option `AF_CONFIG_OPTION_TT_SIZE_METRICS` is
+   *     active, TrueType-like metrics are used to make this mode behave
+   *     similarly as in unpatched FreeType versions between 2.4.6 and 2.7.1
    *     (inclusive).
    *
    *   FT_LOAD_TARGET_MONO ::
@@ -3083,6 +3094,12 @@
    *     output.  The result is probably unpleasant if the glyph is rendered
    *     in non-monochrome modes.
    *
+   *     Note that for outline fonts only the TrueType font driver has proper
+   *     monochrome hinting support, provided the TTFs contain hints for B/W
+   *     rendering (which most fonts no longer provide).  If these conditions
+   *     are not met it is very likely that you get ugly results at smaller
+   *     sizes.
+   *
    *   FT_LOAD_TARGET_LCD ::
    *     A variant of @FT_LOAD_TARGET_LIGHT optimized for horizontally
    *     decimated LCD displays.
@@ -3092,25 +3109,25 @@
    *     decimated LCD displays.
    *
    * @note:
-   *   You should use only _one_ of the FT_LOAD_TARGET_XXX values in your
-   *   `load_flags'.  They can't be ORed.
+   *   You should use only _one_ of the `FT_LOAD_TARGET_XXX` values in your
+   *   `load_flags`.  They can't be ORed.
    *
    *   If @FT_LOAD_RENDER is also set, the glyph is rendered in the
    *   corresponding mode (i.e., the mode that matches the used algorithm
-   *   best).  An exception is FT_LOAD_TARGET_MONO since it implies
+   *   best).  An exception is `FT_LOAD_TARGET_MONO` since it implies
    *   @FT_LOAD_MONOCHROME.
    *
    *   You can use a hinting algorithm that doesn't correspond to the same
-   *   rendering mode.  As an example, it is possible to use the `light'
+   *   rendering mode.  As an example, it is possible to use the 'light'
    *   hinting algorithm and have the results rendered in horizontal LCD
    *   pixel mode, with code like
    *
-   *     {
-   *       FT_Load_Glyph( face, glyph_index,
-   *                      load_flags | FT_LOAD_TARGET_LIGHT );
-   *
-   *       FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );
-   *     }
+   *   ```
+   *     FT_Load_Glyph( face, glyph_index,
+   *                    load_flags | FT_LOAD_TARGET_LIGHT );
+   *
+   *     FT_Render_Glyph( face->glyph, FT_RENDER_MODE_LCD );
+   *   ```
    *
    *   In general, you should stick with one rendering mode.  For example,
    *   switching between @FT_LOAD_TARGET_NORMAL and @FT_LOAD_TARGET_MONO
@@ -3142,98 +3159,98 @@
 #define FT_LOAD_TARGET_MODE( x )  ( (FT_Render_Mode)( ( (x) >> 16 ) & 15 ) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Transform                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set the transformation that is applied to glyph images when they   */
-  /*    are loaded into a glyph slot through @FT_Load_Glyph.               */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: A handle to the source face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    matrix :: A pointer to the transformation's 2x2 matrix.  Use NULL  */
-  /*              for the identity matrix.                                 */
-  /*    delta  :: A pointer to the translation vector.  Use NULL 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.         */
-  /*                                                                       */
-  /*    Note that this also transforms the `face.glyph.advance' field, but */
-  /*    *not* the values in `face.glyph.metrics'.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Transform
+   *
+   * @description:
+   *   Set the transformation that is applied to glyph images when they are
+   *   loaded into a glyph slot through @FT_Load_Glyph.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @input:
+   *   matrix ::
+   *     A pointer to the transformation's 2x2 matrix.  Use `NULL` for the
+   *     identity matrix.
+   *   delta ::
+   *     A pointer to the translation vector.  Use `NULL` 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.
+   *
+   *   Note that this also transforms the `face.glyph.advance` field, but
+   *   **not** the values in `face.glyph.metrics`.
+   */
   FT_EXPORT( void )
   FT_Set_Transform( FT_Face     face,
                     FT_Matrix*  matrix,
                     FT_Vector*  delta );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Render_Mode                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Render modes supported by FreeType~2.  Each mode corresponds to a  */
-  /*    specific type of scanline conversion performed on the outline.     */
-  /*                                                                       */
-  /*    For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode'     */
-  /*    field in the @FT_GlyphSlotRec structure gives the format of the    */
-  /*    returned bitmap.                                                   */
-  /*                                                                       */
-  /*    All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity,   */
-  /*    indicating pixel coverage.  Use linear alpha blending and gamma    */
-  /*    correction to correctly render non-monochrome glyph bitmaps onto a */
-  /*    surface; see @FT_Render_Glyph.                                     */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_RENDER_MODE_NORMAL ::                                           */
-  /*      Default render mode; it corresponds to 8-bit anti-aliased        */
-  /*      bitmaps.                                                         */
-  /*                                                                       */
-  /*    FT_RENDER_MODE_LIGHT ::                                            */
-  /*      This is equivalent to @FT_RENDER_MODE_NORMAL.  It is only        */
-  /*      defined as a separate value because render modes are also used   */
-  /*      indirectly to define hinting algorithm selectors.  See           */
-  /*      @FT_LOAD_TARGET_XXX for details.                                 */
-  /*                                                                       */
-  /*    FT_RENDER_MODE_MONO ::                                             */
-  /*      This mode corresponds to 1-bit bitmaps (with 2~levels of         */
-  /*      opacity).                                                        */
-  /*                                                                       */
-  /*    FT_RENDER_MODE_LCD ::                                              */
-  /*      This mode corresponds to horizontal RGB and BGR subpixel         */
-  /*      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 and BGR subpixel 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>                                                                */
-  /*    Should you define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your      */
-  /*    `ftoption.h', which enables patented ClearType-style rendering,    */
-  /*    the LCD-optimized glyph bitmaps should be filtered to reduce color */
-  /*    fringes inherent to this technology.  You can either set up LCD    */
-  /*    filtering with @FT_Library_SetLcdFilter or @FT_Face_Properties,    */
-  /*    or do the filtering yourself.  The default FreeType LCD rendering  */
-  /*    technology does not require filtering.                             */
-  /*                                                                       */
-  /*    The selected render mode only affects vector glyphs of a font.     */
-  /*    Embedded bitmaps often have a different pixel mode like            */
-  /*    @FT_PIXEL_MODE_MONO.  You can use @FT_Bitmap_Convert to transform  */
-  /*    them into 8-bit pixmaps.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Render_Mode
+   *
+   * @description:
+   *   Render modes supported by FreeType~2.  Each mode corresponds to a
+   *   specific type of scanline conversion performed on the outline.
+   *
+   *   For bitmap fonts and embedded bitmaps the `bitmap->pixel_mode` field
+   *   in the @FT_GlyphSlotRec structure gives the format of the returned
+   *   bitmap.
+   *
+   *   All modes except @FT_RENDER_MODE_MONO use 256 levels of opacity,
+   *   indicating pixel coverage.  Use linear alpha blending and gamma
+   *   correction to correctly render non-monochrome glyph bitmaps onto a
+   *   surface; see @FT_Render_Glyph.
+   *
+   * @values:
+   *   FT_RENDER_MODE_NORMAL ::
+   *     Default render mode; it corresponds to 8-bit anti-aliased bitmaps.
+   *
+   *   FT_RENDER_MODE_LIGHT ::
+   *     This is equivalent to @FT_RENDER_MODE_NORMAL.  It is only defined as
+   *     a separate value because render modes are also used indirectly to
+   *     define hinting algorithm selectors.  See @FT_LOAD_TARGET_XXX for
+   *     details.
+   *
+   *   FT_RENDER_MODE_MONO ::
+   *     This mode corresponds to 1-bit bitmaps (with 2~levels of opacity).
+   *
+   *   FT_RENDER_MODE_LCD ::
+   *     This mode corresponds to horizontal RGB and BGR subpixel 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 and BGR subpixel 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:
+   *   Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your
+   *   `ftoption.h`, which enables patented ClearType-style rendering, the
+   *   LCD-optimized glyph bitmaps should be filtered to reduce color fringes
+   *   inherent to this technology.  You can either set up LCD filtering with
+   *   @FT_Library_SetLcdFilter or @FT_Face_Properties, or do the filtering
+   *   yourself.  The default FreeType LCD rendering technology does not
+   *   require filtering.
+   *
+   *   The selected render mode only affects vector glyphs of a font.
+   *   Embedded bitmaps often have a different pixel mode like
+   *   @FT_PIXEL_MODE_MONO.  You can use @FT_Bitmap_Convert to transform them
+   *   into 8-bit pixmaps.
+   */
   typedef enum  FT_Render_Mode_
   {
     FT_RENDER_MODE_NORMAL = 0,
@@ -3248,147 +3265,149 @@
 
 
   /* these constants are deprecated; use the corresponding */
-  /* `FT_Render_Mode' values instead                       */
+  /* `FT_Render_Mode` values instead                       */
 #define ft_render_mode_normal  FT_RENDER_MODE_NORMAL
 #define ft_render_mode_mono    FT_RENDER_MODE_MONO
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Render_Glyph                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Convert a given glyph image to a bitmap.  It does so by inspecting */
-  /*    the glyph image format, finding the relevant renderer, and         */
-  /*    invoking it.                                                       */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    slot        :: A handle to the glyph slot containing the image to  */
-  /*                   convert.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    render_mode :: 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.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    To get meaningful results, font scaling values must be set with    */
-  /*    functions like @FT_Set_Char_Size before calling `FT_Render_Glyph'. */
-  /*                                                                       */
-  /*    When FreeType outputs a bitmap of a glyph, it really outputs an    */
-  /*    alpha coverage map.  If a pixel is completely covered by a         */
-  /*    filled-in outline, the bitmap contains 0xFF at that pixel, meaning */
-  /*    that 0xFF/0xFF fraction of that pixel is covered, meaning the      */
-  /*    pixel is 100% black (or 0% bright).  If a pixel is only 50%        */
-  /*    covered (value 0x80), the pixel is made 50% black (50% bright or a */
-  /*    middle shade of grey).  0% covered means 0% black (100% bright or  */
-  /*    white).                                                            */
-  /*                                                                       */
-  /*    On high-DPI screens like on smartphones and tablets, the pixels    */
-  /*    are so small that their chance of being completely covered and     */
-  /*    therefore completely black are fairly good.  On the low-DPI        */
-  /*    screens, however, the situation is different.  The pixels are too  */
-  /*    large for most of the details of a glyph and shades of gray are    */
-  /*    the norm rather than the exception.                                */
-  /*                                                                       */
-  /*    This is relevant because all our screens have a second problem:    */
-  /*    they are not linear.  1~+~1 is not~2.  Twice the value does not    */
-  /*    result in twice the brightness.  When a pixel is only 50% covered, */
-  /*    the coverage map says 50% black, and this translates to a pixel    */
-  /*    value of 128 when you use 8~bits per channel (0-255).  However,    */
-  /*    this does not translate to 50% brightness for that pixel on our    */
-  /*    sRGB and gamma~2.2 screens.  Due to their non-linearity, they      */
-  /*    dwell longer in the darks and only a pixel value of about 186      */
-  /*    results in 50% brightness -- 128 ends up too dark on both bright   */
-  /*    and dark backgrounds.  The net result is that dark text looks      */
-  /*    burnt-out, pixely and blotchy on bright background, bright text    */
-  /*    too frail on dark backgrounds, and colored text on colored         */
-  /*    background (for example, red on green) seems to have dark halos or */
-  /*    `dirt' around it.  The situation is especially ugly for diagonal   */
-  /*    stems like in `w' glyph shapes where the quality of FreeType's     */
-  /*    anti-aliasing depends on the correct display of grays.  On         */
-  /*    high-DPI screens where smaller, fully black pixels reign supreme,  */
-  /*    this doesn't matter, but on our low-DPI screens with all the gray  */
-  /*    shades, it does.  0% and 100% brightness are the same things in    */
-  /*    linear and non-linear space, just all the shades in-between        */
-  /*    aren't.                                                            */
-  /*                                                                       */
-  /*    The blending function for placing text over a background is        */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      dst = alpha * src + (1 - alpha) * dst    ,                       */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    which is known as the OVER operator.                               */
-  /*                                                                       */
-  /*    To correctly composite an antialiased pixel of a glyph onto a      */
-  /*    surface,                                                           */
-  /*                                                                       */
-  /*    1. take the foreground and background colors (e.g., in sRGB space) */
-  /*       and apply gamma to get them in a linear space,                  */
-  /*                                                                       */
-  /*    2. use OVER to blend the two linear colors using the glyph pixel   */
-  /*       as the alpha value (remember, the glyph bitmap is an alpha      */
-  /*       coverage bitmap), and                                           */
-  /*                                                                       */
-  /*    3. apply inverse gamma to the blended pixel and write it back to   */
-  /*       the image.                                                      */
-  /*                                                                       */
-  /*    Internal testing at Adobe found that a target inverse gamma of~1.8 */
-  /*    for step~3 gives good results across a wide range of displays with */
-  /*    an sRGB gamma curve or a similar one.                              */
-  /*                                                                       */
-  /*    This process can cost performance.  There is an approximation that */
-  /*    does not need to know about the background color; see              */
-  /*    https://bel.fi/alankila/lcd/ and                                   */
-  /*    https://bel.fi/alankila/lcd/alpcor.html for details.               */
-  /*                                                                       */
-  /*    *ATTENTION*: Linear blending is even more important when dealing   */
-  /*    with subpixel-rendered glyphs to prevent color-fringing!  A        */
-  /*    subpixel-rendered glyph must first be filtered with a filter that  */
-  /*    gives equal weight to the three color primaries and does not       */
-  /*    exceed a sum of 0x100, see section @lcd_filtering.  Then the       */
-  /*    only difference to gray linear blending is that subpixel-rendered  */
-  /*    linear blending is done 3~times per pixel: red foreground subpixel */
-  /*    to red background subpixel and so on for green and blue.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Render_Glyph
+   *
+   * @description:
+   *   Convert a given glyph image to a bitmap.  It does so by inspecting the
+   *   glyph image format, finding the relevant renderer, and invoking it.
+   *
+   * @inout:
+   *   slot ::
+   *     A handle to the glyph slot containing the image to convert.
+   *
+   * @input:
+   *   render_mode ::
+   *     The render mode used to render the glyph image into a bitmap.  See
+   *     @FT_Render_Mode for a list of possible values.
+   *
+   *     If @FT_RENDER_MODE_NORMAL is used, a previous call of @FT_Load_Glyph
+   *     with flag @FT_LOAD_COLOR makes FT_Render_Glyph provide a default
+   *     blending of colored glyph layers associated with the current glyph
+   *     slot (provided the font contains such layers) instead of rendering
+   *     the glyph slot's outline.  This is an experimental feature; see
+   *     @FT_LOAD_COLOR for more information.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   To get meaningful results, font scaling values must be set with
+   *   functions like @FT_Set_Char_Size before calling `FT_Render_Glyph`.
+   *
+   *   When FreeType outputs a bitmap of a glyph, it really outputs an alpha
+   *   coverage map.  If a pixel is completely covered by a filled-in
+   *   outline, the bitmap contains 0xFF at that pixel, meaning that
+   *   0xFF/0xFF fraction of that pixel is covered, meaning the pixel is 100%
+   *   black (or 0% bright).  If a pixel is only 50% covered (value 0x80),
+   *   the pixel is made 50% black (50% bright or a middle shade of grey).
+   *   0% covered means 0% black (100% bright or white).
+   *
+   *   On high-DPI screens like on smartphones and tablets, the pixels are so
+   *   small that their chance of being completely covered and therefore
+   *   completely black are fairly good.  On the low-DPI screens, however,
+   *   the situation is different.  The pixels are too large for most of the
+   *   details of a glyph and shades of gray are the norm rather than the
+   *   exception.
+   *
+   *   This is relevant because all our screens have a second problem: they
+   *   are not linear.  1~+~1 is not~2.  Twice the value does not result in
+   *   twice the brightness.  When a pixel is only 50% covered, the coverage
+   *   map says 50% black, and this translates to a pixel value of 128 when
+   *   you use 8~bits per channel (0-255).  However, this does not translate
+   *   to 50% brightness for that pixel on our sRGB and gamma~2.2 screens.
+   *   Due to their non-linearity, they dwell longer in the darks and only a
+   *   pixel value of about 186 results in 50% brightness -- 128 ends up too
+   *   dark on both bright and dark backgrounds.  The net result is that dark
+   *   text looks burnt-out, pixely and blotchy on bright background, bright
+   *   text too frail on dark backgrounds, and colored text on colored
+   *   background (for example, red on green) seems to have dark halos or
+   *   'dirt' around it.  The situation is especially ugly for diagonal stems
+   *   like in 'w' glyph shapes where the quality of FreeType's anti-aliasing
+   *   depends on the correct display of grays.  On high-DPI screens where
+   *   smaller, fully black pixels reign supreme, this doesn't matter, but on
+   *   our low-DPI screens with all the gray shades, it does.  0% and 100%
+   *   brightness are the same things in linear and non-linear space, just
+   *   all the shades in-between aren't.
+   *
+   *   The blending function for placing text over a background is
+   *
+   *   ```
+   *     dst = alpha * src + (1 - alpha) * dst    ,
+   *   ```
+   *
+   *   which is known as the OVER operator.
+   *
+   *   To correctly composite an antialiased pixel of a glyph onto a surface,
+   *
+   *   1. take the foreground and background colors (e.g., in sRGB space)
+   *      and apply gamma to get them in a linear space,
+   *
+   *   2. use OVER to blend the two linear colors using the glyph pixel
+   *      as the alpha value (remember, the glyph bitmap is an alpha coverage
+   *      bitmap), and
+   *
+   *   3. apply inverse gamma to the blended pixel and write it back to
+   *      the image.
+   *
+   *   Internal testing at Adobe found that a target inverse gamma of~1.8 for
+   *   step~3 gives good results across a wide range of displays with an sRGB
+   *   gamma curve or a similar one.
+   *
+   *   This process can cost performance.  There is an approximation that
+   *   does not need to know about the background color; see
+   *   https://bel.fi/alankila/lcd/ and
+   *   https://bel.fi/alankila/lcd/alpcor.html for details.
+   *
+   *   **ATTENTION**: Linear blending is even more important when dealing
+   *   with subpixel-rendered glyphs to prevent color-fringing!  A
+   *   subpixel-rendered glyph must first be filtered with a filter that
+   *   gives equal weight to the three color primaries and does not exceed a
+   *   sum of 0x100, see section @lcd_rendering.  Then the only difference to
+   *   gray linear blending is that subpixel-rendered linear blending is done
+   *   3~times per pixel: red foreground subpixel to red background subpixel
+   *   and so on for green and blue.
+   */
   FT_EXPORT( FT_Error )
   FT_Render_Glyph( FT_GlyphSlot    slot,
                    FT_Render_Mode  render_mode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Kerning_Mode                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration to specify the format of kerning values returned by */
-  /*    @FT_Get_Kerning.                                                   */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_KERNING_DEFAULT  :: Return grid-fitted kerning distances in     */
-  /*                           26.6 fractional pixels.                     */
-  /*                                                                       */
-  /*    FT_KERNING_UNFITTED :: Return un-grid-fitted kerning distances in  */
-  /*                           26.6 fractional pixels.                     */
-  /*                                                                       */
-  /*    FT_KERNING_UNSCALED :: Return the kerning vector in original font  */
-  /*                           units.                                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    FT_KERNING_DEFAULT returns full pixel values; it also makes        */
-  /*    FreeType heuristically scale down kerning distances at small ppem  */
-  /*    values so that they don't become too big.                          */
-  /*                                                                       */
-  /*    Both FT_KERNING_DEFAULT and FT_KERNING_UNFITTED use the current    */
-  /*    horizontal scaling factor (as set e.g. with @FT_Set_Char_Size) to  */
-  /*    convert font units to pixels.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Kerning_Mode
+   *
+   * @description:
+   *   An enumeration to specify the format of kerning values returned by
+   *   @FT_Get_Kerning.
+   *
+   * @values:
+   *   FT_KERNING_DEFAULT ::
+   *     Return grid-fitted kerning distances in 26.6 fractional pixels.
+   *
+   *   FT_KERNING_UNFITTED ::
+   *     Return un-grid-fitted kerning distances in 26.6 fractional pixels.
+   *
+   *   FT_KERNING_UNSCALED ::
+   *     Return the kerning vector in original font units.
+   *
+   * @note:
+   *   `FT_KERNING_DEFAULT` returns full pixel values; it also makes FreeType
+   *   heuristically scale down kerning distances at small ppem values so
+   *   that they don't become too big.
+   *
+   *   Both `FT_KERNING_DEFAULT` and `FT_KERNING_UNFITTED` use the current
+   *   horizontal scaling factor (as set e.g. with @FT_Set_Char_Size) to
+   *   convert font units to pixels.
+   */
   typedef enum  FT_Kerning_Mode_
   {
     FT_KERNING_DEFAULT = 0,
@@ -3399,50 +3418,53 @@
 
 
   /* these constants are deprecated; use the corresponding */
-  /* `FT_Kerning_Mode' values instead                      */
+  /* `FT_Kerning_Mode` values instead                      */
 #define ft_kerning_default   FT_KERNING_DEFAULT
 #define ft_kerning_unfitted  FT_KERNING_UNFITTED
 #define ft_kerning_unscaled  FT_KERNING_UNSCALED
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Kerning                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the kerning vector between two glyphs of the 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 and dimension of the returned  */
-  /*                   kerning vector.                                     */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    akerning    :: The kerning vector.  This is either in font units,  */
-  /*                   fractional pixels (26.6 format), or pixels 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.                    */
-  /*                                                                       */
-  /*    Kerning for OpenType fonts implemented in a `GPOS' table is not    */
-  /*    supported; use @FT_HAS_KERNING to find out whether a font has data */
-  /*    that can be extracted with `FT_Get_Kerning'.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Kerning
+   *
+   * @description:
+   *   Return the kerning vector between two glyphs of the 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 and
+   *     dimension of the returned kerning vector.
+   *
+   * @output:
+   *   akerning ::
+   *     The kerning vector.  This is either in font units, fractional pixels
+   *     (26.6 format), or pixels 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.
+   *
+   *   Kerning for OpenType fonts implemented in a 'GPOS' table is not
+   *   supported; use @FT_HAS_KERNING to find out whether a font has data
+   *   that can be extracted with `FT_Get_Kerning`.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Kerning( FT_Face     face,
                   FT_UInt     left_glyph,
@@ -3451,39 +3473,42 @@
                   FT_Vector  *akerning );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Track_Kerning                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the track kerning for a given face object at a given size.  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to a source face object.                    */
-  /*                                                                       */
-  /*    point_size :: The point size in 16.16 fractional points.           */
-  /*                                                                       */
-  /*    degree     :: The degree of tightness.  Increasingly negative      */
-  /*                  values represent tighter track kerning, while        */
-  /*                  increasingly positive values represent looser track  */
-  /*                  kerning.  Value zero means no track kerning.         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    akerning   :: The kerning in 16.16 fractional points, to be        */
-  /*                  uniformly applied between all glyphs.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Currently, only the Type~1 font driver supports track kerning,     */
-  /*    using data from AFM files (if attached with @FT_Attach_File or     */
-  /*    @FT_Attach_Stream).                                                */
-  /*                                                                       */
-  /*    Only very few AFM files come with track kerning data; please refer */
-  /*    to Adobe's AFM specification for more details.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Track_Kerning
+   *
+   * @description:
+   *   Return the track kerning for a given face object at a given size.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a source face object.
+   *
+   *   point_size ::
+   *     The point size in 16.16 fractional points.
+   *
+   *   degree ::
+   *     The degree of tightness.  Increasingly negative values represent
+   *     tighter track kerning, while increasingly positive values represent
+   *     looser track kerning.  Value zero means no track kerning.
+   *
+   * @output:
+   *   akerning ::
+   *     The kerning in 16.16 fractional points, to be uniformly applied
+   *     between all glyphs.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Currently, only the Type~1 font driver supports track kerning, using
+   *   data from AFM files (if attached with @FT_Attach_File or
+   *   @FT_Attach_Stream).
+   *
+   *   Only very few AFM files come with track kerning data; please refer to
+   *   Adobe's AFM specification for more details.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Track_Kerning( FT_Face    face,
                         FT_Fixed   point_size,
@@ -3491,45 +3516,46 @@
                         FT_Fixed*  akerning );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Glyph_Name                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the ASCII name of a given glyph in a face.  This only     */
-  /*    works for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1.   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: A handle to a source face object.                   */
-  /*                                                                       */
-  /*    glyph_index :: The glyph index.                                    */
-  /*                                                                       */
-  /*    buffer_max  :: The maximum number of bytes available in the        */
-  /*                   buffer.                                             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    buffer      :: A pointer to a target buffer where the name is      */
-  /*                   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' is 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.              */
-  /*                                                                       */
-  /*    Be aware that FreeType reorders glyph indices internally so that   */
-  /*    glyph index~0 always corresponds to the `missing glyph' (called    */
-  /*    `.notdef').                                                        */
-  /*                                                                       */
-  /*    This function always returns an error if the config macro          */
-  /*    `FT_CONFIG_OPTION_NO_GLYPH_NAMES' is not defined in `ftoption.h'.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Glyph_Name
+   *
+   * @description:
+   *   Retrieve the ASCII name of a given glyph in a face.  This only works
+   *   for those faces where @FT_HAS_GLYPH_NAMES(face) returns~1.
+   *
+   * @input:
+   *   face ::
+   *     A handle to a source face object.
+   *
+   *   glyph_index ::
+   *     The glyph index.
+   *
+   *   buffer_max ::
+   *     The maximum number of bytes available in the buffer.
+   *
+   * @output:
+   *   buffer ::
+   *     A pointer to a target buffer where the name is 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` is 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.
+   *
+   *   Be aware that FreeType reorders glyph indices internally so that glyph
+   *   index~0 always corresponds to the 'missing glyph' (called '.notdef').
+   *
+   *   This function always returns an error if the config macro
+   *   `FT_CONFIG_OPTION_NO_GLYPH_NAMES` is not defined in `ftoption.h`.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Glyph_Name( FT_Face     face,
                      FT_UInt     glyph_index,
@@ -3537,107 +3563,109 @@
                      FT_UInt     buffer_max );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Postscript_Name                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the ASCII PostScript name of a given face, if available.  */
-  /*    This only works with PostScript, TrueType, and OpenType fonts.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the source face object.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A pointer to the face's PostScript name.  NULL if unavailable.     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The returned pointer is owned by the face and is destroyed with    */
-  /*    it.                                                                */
-  /*                                                                       */
-  /*    For variation fonts, this string changes if you select a different */
-  /*    instance, and you have to call `FT_Get_PostScript_Name' again to   */
-  /*    retrieve it.  FreeType follows Adobe TechNote #5902, `Generating   */
-  /*    PostScript Names for Fonts Using OpenType Font Variations'.        */
-  /*                                                                       */
-  /*      https://download.macromedia.com/pub/developer/opentype/tech-notes/5902.AdobePSNameGeneration.html */
-  /*                                                                       */
-  /*    [Since 2.9] Special PostScript names for named instances are only  */
-  /*    returned if the named instance is set with @FT_Set_Named_Instance  */
-  /*    (and the font has corresponding entries in its `fvar' table).  If  */
-  /*    @FT_IS_VARIATION returns true, the algorithmically derived         */
-  /*    PostScript name is provided, not looking up special entries for    */
-  /*    named instances.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Postscript_Name
+   *
+   * @description:
+   *   Retrieve the ASCII PostScript name of a given face, if available.
+   *   This only works with PostScript, TrueType, and OpenType fonts.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @return:
+   *   A pointer to the face's PostScript name.  `NULL` if unavailable.
+   *
+   * @note:
+   *   The returned pointer is owned by the face and is destroyed with it.
+   *
+   *   For variation fonts, this string changes if you select a different
+   *   instance, and you have to call `FT_Get_PostScript_Name` again to
+   *   retrieve it.  FreeType follows Adobe TechNote #5902, 'Generating
+   *   PostScript Names for Fonts Using OpenType Font Variations'.
+   *
+   *     https://download.macromedia.com/pub/developer/opentype/tech-notes/5902.AdobePSNameGeneration.html
+   *
+   *   [Since 2.9] Special PostScript names for named instances are only
+   *   returned if the named instance is set with @FT_Set_Named_Instance (and
+   *   the font has corresponding entries in its 'fvar' table).  If
+   *   @FT_IS_VARIATION returns true, the algorithmically derived PostScript
+   *   name is provided, not looking up special entries for named instances.
+   */
   FT_EXPORT( const char* )
   FT_Get_Postscript_Name( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Select_Charmap                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Select 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 encoding.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function returns an error if no charmap in the face           */
-  /*    corresponds to the encoding queried here.                          */
-  /*                                                                       */
-  /*    Because many fonts contain more than a single cmap for Unicode     */
-  /*    encoding, this function has some special code to select the one    */
-  /*    that covers Unicode best (`best' in the sense that a UCS-4 cmap is */
-  /*    preferred to a UCS-2 cmap).  It is thus preferable to              */
-  /*    @FT_Set_Charmap in this case.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Select_Charmap
+   *
+   * @description:
+   *   Select 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 encoding.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function returns an error if no charmap in the face corresponds
+   *   to the encoding queried here.
+   *
+   *   Because many fonts contain more than a single cmap for Unicode
+   *   encoding, this function has some special code to select the one that
+   *   covers Unicode best ('best' in the sense that a UCS-4 cmap is
+   *   preferred to a UCS-2 cmap).  It is thus preferable to @FT_Set_Charmap
+   *   in this case.
+   */
   FT_EXPORT( FT_Error )
   FT_Select_Charmap( FT_Face      face,
                      FT_Encoding  encoding );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Charmap                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Select a given charmap for character code to glyph index mapping.  */
-  /*                                                                       */
-  /* <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 returns an error if the charmap is not part of       */
-  /*    the face (i.e., if it is not listed in the `face->charmaps'        */
-  /*    table).                                                            */
-  /*                                                                       */
-  /*    It also fails if an OpenType type~14 charmap is selected (which    */
-  /*    doesn't map character codes to glyph indices at all).              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Charmap
+   *
+   * @description:
+   *   Select a given charmap for character code to glyph index mapping.
+   *
+   * @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 returns an error if the charmap is not part of the face
+   *   (i.e., if it is not listed in the `face->charmaps` table).
+   *
+   *   It also fails if an OpenType type~14 charmap is selected (which
+   *   doesn't map character codes to glyph indices at all).
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Charmap( FT_Face     face,
                   FT_CharMap  charmap );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Get_Charmap_Index
@@ -3651,139 +3679,143 @@
    *
    * @return:
    *   The index into the array of character maps within the face to which
-   *   `charmap' belongs.  If an error occurs, -1 is returned.
+   *   `charmap` belongs.  If an error occurs, -1 is returned.
    *
    */
   FT_EXPORT( FT_Int )
   FT_Get_Charmap_Index( FT_CharMap  charmap );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Char_Index                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the glyph index of a given character code.  This function   */
-  /*    uses the currently selected charmap to do the mapping.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the source face object.                    */
-  /*                                                                       */
-  /*    charcode :: The character code.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The glyph index.  0~means `undefined character code'.              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If you use FreeType to manipulate the contents of font files       */
-  /*    directly, be aware that the glyph index returned by this function  */
-  /*    doesn't always correspond to the internal indices used within the  */
-  /*    file.  This is done to ensure that value~0 always corresponds to   */
-  /*    the `missing glyph'.  If the first glyph is not named `.notdef',   */
-  /*    then for Type~1 and Type~42 fonts, `.notdef' will be moved into    */
-  /*    the glyph ID~0 position, and whatever was there will be moved to   */
-  /*    the position `.notdef' had.  For Type~1 fonts, if there is no      */
-  /*    `.notdef' glyph at all, then one will be created at index~0 and    */
-  /*    whatever was there will be moved to the last index -- Type~42      */
-  /*    fonts are considered invalid under this condition.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Char_Index
+   *
+   * @description:
+   *   Return the glyph index of a given character code.  This function uses
+   *   the currently selected charmap to do the mapping.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   charcode ::
+   *     The character code.
+   *
+   * @return:
+   *   The glyph index.  0~means 'undefined character code'.
+   *
+   * @note:
+   *   If you use FreeType to manipulate the contents of font files directly,
+   *   be aware that the glyph index returned by this function doesn't always
+   *   correspond to the internal indices used within the file.  This is done
+   *   to ensure that value~0 always corresponds to the 'missing glyph'.  If
+   *   the first glyph is not named '.notdef', then for Type~1 and Type~42
+   *   fonts, '.notdef' will be moved into the glyph ID~0 position, and
+   *   whatever was there will be moved to the position '.notdef' had.  For
+   *   Type~1 fonts, if there is no '.notdef' glyph at all, then one will be
+   *   created at index~0 and whatever was there will be moved to the last
+   *   index -- Type~42 fonts are considered invalid under this condition.
+   */
   FT_EXPORT( FT_UInt )
   FT_Get_Char_Index( FT_Face   face,
                      FT_ULong  charcode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_First_Char                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the first character code in the current charmap of a given  */
-  /*    face, together with its 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 together with @FT_Get_Next_Char 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 );        */
-  /*      }                                                                */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Be aware that character codes can have values up to 0xFFFFFFFF;    */
-  /*    this might happen for non-Unicode or malformed cmaps.  However,    */
-  /*    even with regular Unicode encoding, so-called `last resort fonts'  */
-  /*    (using SFNT cmap format 13, see function @FT_Get_CMap_Format)      */
-  /*    normally have entries for all Unicode characters up to 0x1FFFFF,   */
-  /*    which can cause *a lot* of iterations.                             */
-  /*                                                                       */
-  /*    Note that `*agindex' is set to~0 if the charmap is empty.  The     */
-  /*    result itself can be~0 in two cases: if the charmap is empty or    */
-  /*    if the value~0 is the first valid character code.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_First_Char
+   *
+   * @description:
+   *   Return the first character code in the current charmap of a given
+   *   face, together with its 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 together with @FT_Get_Next_Char 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 );
+   *     }
+   *   ```
+   *
+   *   Be aware that character codes can have values up to 0xFFFFFFFF; this
+   *   might happen for non-Unicode or malformed cmaps.  However, even with
+   *   regular Unicode encoding, so-called 'last resort fonts' (using SFNT
+   *   cmap format 13, see function @FT_Get_CMap_Format) normally have
+   *   entries for all Unicode characters up to 0x1FFFFF, which can cause *a
+   *   lot* of iterations.
+   *
+   *   Note that `*agindex` is set to~0 if the charmap is empty.  The result
+   *   itself can be~0 in two cases: if the charmap is empty or if 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>                                                         */
-  /*    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 next 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       */
-  /*    over all character codes available in a given charmap.  See the    */
-  /*    note for that function for a simple code example.                  */
-  /*                                                                       */
-  /*    Note that `*agindex' is set to~0 when there are no more codes in   */
-  /*    the charmap.                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Next_Char
+   *
+   * @description:
+   *   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 next 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 over all
+   *   character codes available in a given charmap.  See the note for that
+   *   function for a simple code example.
+   *
+   *   Note that `*agindex` is 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_Face_Properties
@@ -3791,27 +3823,26 @@
    * @description:
    *   Set or override certain (library or module-wide) properties on a
    *   face-by-face basis.  Useful for finer-grained control and avoiding
-   *   locks on shared structures (threads can modify their own faces as
-   *   they see fit).
-   *
-   *   Contrary to @FT_Property_Set, this function uses @FT_Parameter so
-   *   that you can pass multiple properties to the target face in one call.
-   *   Note that only a subset of the available properties can be
-   *   controlled.
+   *   locks on shared structures (threads can modify their own faces as they
+   *   see fit).
+   *
+   *   Contrary to @FT_Property_Set, this function uses @FT_Parameter so that
+   *   you can pass multiple properties to the target face in one call.  Note
+   *   that only a subset of the available properties can be controlled.
    *
    *   * @FT_PARAM_TAG_STEM_DARKENING (stem darkening, corresponding to the
-   *     property `no-stem-darkening' provided by the `autofit', `cff',
-   *     `type1', and `t1cid' modules; see @no-stem-darkening).
+   *     property `no-stem-darkening` provided by the 'autofit', 'cff',
+   *     'type1', and 't1cid' modules; see @no-stem-darkening).
    *
    *   * @FT_PARAM_TAG_LCD_FILTER_WEIGHTS (LCD filter weights, corresponding
    *     to function @FT_Library_SetLcdFilterWeights).
    *
    *   * @FT_PARAM_TAG_RANDOM_SEED (seed value for the CFF, Type~1, and CID
-   *     `random' operator, corresponding to the `random-seed' property
-   *     provided by the `cff', `type1', and `t1cid' modules; see
+   *     'random' operator, corresponding to the `random-seed` property
+   *     provided by the 'cff', 'type1', and 't1cid' modules; see
    *     @random-seed).
    *
-   *   Pass NULL as `data' in @FT_Parameter for a given tag to reset the
+   *   Pass `NULL` as `data` in @FT_Parameter for a given tag to reset the
    *   option and use the library or module default again.
    *
    * @input:
@@ -3822,17 +3853,17 @@
    *     The number of properties that follow.
    *
    *   properties ::
-   *     A handle to an @FT_Parameter array with `num_properties' elements.
+   *     A handle to an @FT_Parameter array with `num_properties` elements.
    *
    * @return:
    *   FreeType error code.  0~means success.
    *
-   * @note:
-   *   Here an example that sets three properties.  You must define
-   *   FT_CONFIG_OPTION_SUBPIXEL_RENDERING to make the LCD filter examples
+   * @example:
+   *   Here is an example that sets three properties.  You must define
+   *   `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` to make the LCD filter examples
    *   work.
    *
-   *   {
+   *   ```
    *     FT_Parameter         property1;
    *     FT_Bool              darken_stems = 1;
    *
@@ -3858,11 +3889,11 @@
    *     property3.data = &random_seed;
    *
    *     FT_Face_Properties( face, 3, properties );
-   *   }
+   *   ```
    *
    *   The next example resets a single property to its default value.
    *
-   *   {
+   *   ```
    *     FT_Parameter  property;
    *
    *
@@ -3870,7 +3901,7 @@
    *     property.data = NULL;
    *
    *     FT_Face_Properties( face, 1, &property );
-   *   }
+   *   ```
    *
    * @since:
    *   2.8
@@ -3882,37 +3913,40 @@
                       FT_Parameter*  properties );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Name_Index                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the glyph index of a given glyph name.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the source face object.                  */
-  /*                                                                       */
-  /*    glyph_name :: The glyph name.                                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The glyph index.  0~means `undefined character code'.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Name_Index
+   *
+   * @description:
+   *   Return the glyph index of a given glyph name.
+   *
+   * @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 );
 
 
-  /*************************************************************************
-   *
-   * @macro:
+  /**************************************************************************
+   *
+   * @enum:
    *   FT_SUBGLYPH_FLAG_XXX
    *
    * @description:
-   *   A list of constants describing subglyphs.  Please refer to the
-   *   `glyf' table description in the OpenType specification for the
-   *   meaning of the various flags (which get synthesized for
-   *   non-OpenType subglyphs).
+   *   A list of constants describing subglyphs.  Please refer to the 'glyf'
+   *   table description in the OpenType specification for the meaning of the
+   *   various flags (which get synthesized for non-OpenType subglyphs).
+   *
+   *     https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description
    *
    * @values:
    *   FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS ::
@@ -3933,15 +3967,15 @@
 #define FT_SUBGLYPH_FLAG_USE_MY_METRICS      0x200
 
 
-  /*************************************************************************
-   *
-   * @func:
+  /**************************************************************************
+   *
+   * @function:
    *   FT_Get_SubGlyph_Info
    *
    * @description:
    *   Retrieve a description of a given subglyph.  Only use it if
-   *   `glyph->format' is @FT_GLYPH_FORMAT_COMPOSITE; an error is
-   *   returned otherwise.
+   *   `glyph->format` is @FT_GLYPH_FORMAT_COMPOSITE; an error is returned
+   *   otherwise.
    *
    * @input:
    *   glyph ::
@@ -3949,7 +3983,7 @@
    *
    *   sub_index ::
    *     The index of the subglyph.  Must be less than
-   *     `glyph->num_subglyphs'.
+   *     `glyph->num_subglyphs`.
    *
    * @output:
    *   p_index ::
@@ -3971,10 +4005,12 @@
    *   FreeType error code.  0~means success.
    *
    * @note:
-   *   The values of `*p_arg1', `*p_arg2', and `*p_transform' must be
-   *   interpreted depending on the flags returned in `*p_flags'.  See the
+   *   The values of `*p_arg1`, `*p_arg2`, and `*p_transform` must be
+   *   interpreted depending on the flags returned in `*p_flags`.  See the
    *   OpenType specification for details.
    *
+   *     https://docs.microsoft.com/en-us/typography/opentype/spec/glyf#composite-glyph-description
+   *
    */
   FT_EXPORT( FT_Error )
   FT_Get_SubGlyph_Info( FT_GlyphSlot  glyph,
@@ -3986,59 +4022,228 @@
                         FT_Matrix    *p_transform );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_FSTYPE_XXX                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit flags used in the `fsType' field of the OS/2 table   */
-  /*    in a TrueType or OpenType font and the `FSType' entry in a         */
-  /*    PostScript font.  These bit flags are returned by                  */
-  /*    @FT_Get_FSType_Flags; they inform client applications of embedding */
-  /*    and subsetting restrictions associated with a font.                */
-  /*                                                                       */
-  /*    See                                                                */
-  /*    https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf */
-  /*    for more details.                                                  */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_FSTYPE_INSTALLABLE_EMBEDDING ::                                 */
-  /*      Fonts with no fsType bit set may be embedded and permanently     */
-  /*      installed on the remote system by an application.                */
-  /*                                                                       */
-  /*    FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING ::                          */
-  /*      Fonts that have only this bit set must not be modified, embedded */
-  /*      or exchanged in any manner without first obtaining permission of */
-  /*      the font software copyright owner.                               */
-  /*                                                                       */
-  /*    FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING ::                           */
-  /*      The font may be embedded and temporarily loaded on the remote    */
-  /*      system.  Documents containing Preview & Print fonts must be      */
-  /*      opened `read-only'; no edits can be applied to the document.     */
-  /*                                                                       */
-  /*    FT_FSTYPE_EDITABLE_EMBEDDING ::                                    */
-  /*      The font may be embedded but must only be installed temporarily  */
-  /*      on other systems.  In contrast to Preview & Print fonts,         */
-  /*      documents containing editable fonts may be opened for reading,   */
-  /*      editing is permitted, and changes may be saved.                  */
-  /*                                                                       */
-  /*    FT_FSTYPE_NO_SUBSETTING ::                                         */
-  /*      The font may not be subsetted prior to embedding.                */
-  /*                                                                       */
-  /*    FT_FSTYPE_BITMAP_EMBEDDING_ONLY ::                                 */
-  /*      Only bitmaps contained in the font may be embedded; no outline   */
-  /*      data may be embedded.  If there are no bitmaps available in the  */
-  /*      font, then the font is unembeddable.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The flags are ORed together, thus more than a single value can be  */
-  /*    returned.                                                          */
-  /*                                                                       */
-  /*    While the `fsType' flags can indicate that a font may be embedded, */
-  /*    a license with the font vendor may be separately required to use   */
-  /*    the font in this way.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @section:
+   *   layer_management
+   *
+   * @title:
+   *   Glyph Layer Management
+   *
+   * @abstract:
+   *   Retrieving and manipulating OpenType's 'COLR' table data.
+   *
+   * @description:
+   *   The functions described here allow access of colored glyph layer data
+   *   in OpenType's 'COLR' tables.
+   */
+
+
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_LayerIterator
+   *
+   * @description:
+   *   This iterator object is needed for @FT_Get_Color_Glyph_Layer.
+   *
+   * @fields:
+   *   num_layers ::
+   *     The number of glyph layers for the requested glyph index.  Will be
+   *     set by @FT_Get_Color_Glyph_Layer.
+   *
+   *   layer ::
+   *     The current layer.  Will be set by @FT_Get_Color_Glyph_Layer.
+   *
+   *   p ::
+   *     An opaque pointer into 'COLR' table data.  The caller must set this
+   *     to `NULL` before the first call of @FT_Get_Color_Glyph_Layer.
+   */
+  typedef struct  FT_LayerIterator_
+  {
+    FT_UInt   num_layers;
+    FT_UInt   layer;
+    FT_Byte*  p;
+
+  } FT_LayerIterator;
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Color_Glyph_Layer
+   *
+   * @description:
+   *   This is an interface to the 'COLR' table in OpenType fonts to
+   *   iteratively retrieve the colored glyph layers associated with the
+   *   current glyph slot.
+   *
+   *     https://docs.microsoft.com/en-us/typography/opentype/spec/colr
+   *
+   *   The glyph layer data for a given glyph index, if present, provides an
+   *   alternative, multi-colour glyph representation: Instead of rendering
+   *   the outline or bitmap with the given glyph index, glyphs with the
+   *   indices and colors returned by this function are rendered layer by
+   *   layer.
+   *
+   *   The returned elements are ordered in the z~direction from bottom to
+   *   top; the 'n'th element should be rendered with the associated palette
+   *   color and blended on top of the already rendered layers (elements 0,
+   *   1, ..., n-1).
+   *
+   * @input:
+   *   face ::
+   *     A handle to the parent face object.
+   *
+   *   base_glyph ::
+   *     The glyph index the colored glyph layers are associated with.
+   *
+   * @inout:
+   *   iterator ::
+   *     An @FT_LayerIterator object.  For the first call you should set
+   *     `iterator->p` to `NULL`.  For all following calls, simply use the
+   *     same object again.
+   *
+   * @output:
+   *   aglyph_index ::
+   *     The glyph index of the current layer.
+   *
+   *   acolor_index ::
+   *     The color index into the font face's color palette of the current
+   *     layer.  The value 0xFFFF is special; it doesn't reference a palette
+   *     entry but indicates that the text foreground color should be used
+   *     instead (to be set up by the application outside of FreeType).
+   *
+   *     The color palette can be retrieved with @FT_Palette_Select.
+   *
+   * @return:
+   *   Value~1 if everything is OK.  If there are no more layers (or if there
+   *   are no layers at all), value~0 gets returned.  In case of an error,
+   *   value~0 is returned also.
+   *
+   * @note:
+   *   This function is necessary if you want to handle glyph layers by
+   *   yourself.  In particular, functions that operate with @FT_GlyphRec
+   *   objects (like @FT_Get_Glyph or @FT_Glyph_To_Bitmap) don't have access
+   *   to this information.
+   *
+   *   Note that @FT_Render_Glyph is able to handle colored glyph layers
+   *   automatically if the @FT_LOAD_COLOR flag is passed to a previous call
+   *   to @FT_Load_Glyph.  [This is an experimental feature.]
+   *
+   * @example:
+   *   ```
+   *     FT_Color*         palette;
+   *     FT_LayerIterator  iterator;
+   *
+   *     FT_Bool  have_layers;
+   *     FT_UInt  layer_glyph_index;
+   *     FT_UInt  layer_color_index;
+   *
+   *
+   *     error = FT_Palette_Select( face, palette_index, &palette );
+   *     if ( error )
+   *       palette = NULL;
+   *
+   *     iterator.p  = NULL;
+   *     have_layers = FT_Get_Color_Glyph_Layer( face,
+   *                                             glyph_index,
+   *                                             &layer_glyph_index,
+   *                                             &layer_color_index,
+   *                                             &iterator );
+   *
+   *     if ( palette && have_layers )
+   *     {
+   *       do
+   *       {
+   *         FT_Color  layer_color;
+   *
+   *
+   *         if ( layer_color_index == 0xFFFF )
+   *           layer_color = text_foreground_color;
+   *         else
+   *           layer_color = palette[layer_color_index];
+   *
+   *         // Load and render glyph `layer_glyph_index', then
+   *         // blend resulting pixmap (using color `layer_color')
+   *         // with previously created pixmaps.
+   *
+   *       } while ( FT_Get_Color_Glyph_Layer( face,
+   *                                           glyph_index,
+   *                                           &layer_glyph_index,
+   *                                           &layer_color_index,
+   *                                           &iterator ) );
+   *     }
+   *   ```
+   */
+  FT_EXPORT( FT_Bool )
+  FT_Get_Color_Glyph_Layer( FT_Face            face,
+                            FT_UInt            base_glyph,
+                            FT_UInt           *aglyph_index,
+                            FT_UInt           *acolor_index,
+                            FT_LayerIterator*  iterator );
+
+
+  /**************************************************************************
+   *
+   * @section:
+   *   base_interface
+   *
+   */
+
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_FSTYPE_XXX
+   *
+   * @description:
+   *   A list of bit flags used in the `fsType` field of the OS/2 table in a
+   *   TrueType or OpenType font and the `FSType` entry in a PostScript font.
+   *   These bit flags are returned by @FT_Get_FSType_Flags; they inform
+   *   client applications of embedding and subsetting restrictions
+   *   associated with a font.
+   *
+   *   See
+   *   https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/FontPolicies.pdf
+   *   for more details.
+   *
+   * @values:
+   *   FT_FSTYPE_INSTALLABLE_EMBEDDING ::
+   *     Fonts with no fsType bit set may be embedded and permanently
+   *     installed on the remote system by an application.
+   *
+   *   FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING ::
+   *     Fonts that have only this bit set must not be modified, embedded or
+   *     exchanged in any manner without first obtaining permission of the
+   *     font software copyright owner.
+   *
+   *   FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING ::
+   *     The font may be embedded and temporarily loaded on the remote
+   *     system.  Documents containing Preview & Print fonts must be opened
+   *     'read-only'; no edits can be applied to the document.
+   *
+   *   FT_FSTYPE_EDITABLE_EMBEDDING ::
+   *     The font may be embedded but must only be installed temporarily on
+   *     other systems.  In contrast to Preview & Print fonts, documents
+   *     containing editable fonts may be opened for reading, editing is
+   *     permitted, and changes may be saved.
+   *
+   *   FT_FSTYPE_NO_SUBSETTING ::
+   *     The font may not be subsetted prior to embedding.
+   *
+   *   FT_FSTYPE_BITMAP_EMBEDDING_ONLY ::
+   *     Only bitmaps contained in the font may be embedded; no outline data
+   *     may be embedded.  If there are no bitmaps available in the font,
+   *     then the font is unembeddable.
+   *
+   * @note:
+   *   The flags are ORed together, thus more than a single value can be
+   *   returned.
+   *
+   *   While the `fsType` flags can indicate that a font may be embedded, a
+   *   license with the font vendor may be separately required to use the
+   *   font in this way.
+   */
 #define FT_FSTYPE_INSTALLABLE_EMBEDDING         0x0000
 #define FT_FSTYPE_RESTRICTED_LICENSE_EMBEDDING  0x0002
 #define FT_FSTYPE_PREVIEW_AND_PRINT_EMBEDDING   0x0004
@@ -4047,548 +4252,563 @@
 #define FT_FSTYPE_BITMAP_EMBEDDING_ONLY         0x0200
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_FSType_Flags                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the `fsType' flags for a font.                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the source face object.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The `fsType' flags, see @FT_FSTYPE_XXX.                            */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Use this function rather than directly reading the `fs_type' field */
-  /*    in the @PS_FontInfoRec structure, which is only guaranteed to      */
-  /*    return the correct results for Type~1 fonts.                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.8                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_FSType_Flags
+   *
+   * @description:
+   *   Return the `fsType` flags for a font.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @return:
+   *   The `fsType` flags, see @FT_FSTYPE_XXX.
+   *
+   * @note:
+   *   Use this function rather than directly reading the `fs_type` field in
+   *   the @PS_FontInfoRec structure, which is only guaranteed to return the
+   *   correct results for Type~1 fonts.
+   *
+   * @since:
+   *   2.3.8
+   */
   FT_EXPORT( FT_UShort )
   FT_Get_FSType_Flags( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    glyph_variants                                                     */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Unicode Variation Sequences                                        */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    The FreeType~2 interface to Unicode Variation Sequences (UVS),     */
-  /*    using the SFNT cmap format~14.                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Many characters, especially for CJK scripts, have variant forms.   */
-  /*    They are a sort of grey area somewhere between being totally       */
-  /*    irrelevant and semantically distinct; for this reason, the Unicode */
-  /*    consortium decided to introduce Variation Sequences (VS),          */
-  /*    consisting of a Unicode base character and a variation selector    */
-  /*    instead of further extending the already huge number of            */
-  /*    characters.                                                        */
-  /*                                                                       */
-  /*    Unicode maintains two different sets, namely `Standardized         */
-  /*    Variation Sequences' and registered `Ideographic Variation         */
-  /*    Sequences' (IVS), collected in the `Ideographic Variation          */
-  /*    Database' (IVD).                                                   */
-  /*                                                                       */
-  /*      https://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt */
-  /*      https://unicode.org/reports/tr37/                                */
-  /*      https://unicode.org/ivd/                                         */
-  /*                                                                       */
-  /*    To date (January 2017), the character with the most ideographic    */
-  /*    variations is U+9089, having 32 such IVS.                          */
-  /*                                                                       */
-  /*    Three Mongolian Variation Selectors have the values U+180B-U+180D; */
-  /*    256 generic Variation Selectors are encoded in the ranges          */
-  /*    U+FE00-U+FE0F and U+E0100-U+E01EF.  IVS currently use Variation    */
-  /*    Selectors from the range U+E0100-U+E01EF only.                     */
-  /*                                                                       */
-  /*    A VS consists of the base character value followed by a single     */
-  /*    Variation Selector.  For example, to get the first variation of    */
-  /*    U+9089, you have to write the character sequence `U+9089 U+E0100'. */
-  /*                                                                       */
-  /*    Adobe and MS decided to support both standardized and ideographic  */
-  /*    VS with a new cmap subtable (format~14).  It is an odd subtable    */
-  /*    because it is not a mapping of input code points to glyphs, but    */
-  /*    contains lists of all variations supported by the font.            */
-  /*                                                                       */
-  /*    A variation may be either `default' or `non-default' for a given   */
-  /*    font.  A default variation is the one you will get for that code   */
-  /*    point if you look it up in the standard Unicode cmap.  A           */
-  /*    non-default variation is a different glyph.                        */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetCharVariantIndex                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the glyph index of a given character code as modified by    */
-  /*    the variation selector.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /*    charcode ::                                                        */
-  /*      The character code point in Unicode.                             */
-  /*                                                                       */
-  /*    variantSelector ::                                                 */
-  /*      The Unicode code point of the variation selector.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The glyph index.  0~means either `undefined character code', or    */
-  /*    `undefined selector code', or `no variation selector cmap          */
-  /*    subtable', or `current CharMap is not Unicode'.                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If you use FreeType to manipulate the contents of font files       */
-  /*    directly, be aware that the glyph index returned by this function  */
-  /*    doesn't always correspond to the internal indices used within      */
-  /*    the file.  This is done to ensure that value~0 always corresponds  */
-  /*    to the `missing glyph'.                                            */
-  /*                                                                       */
-  /*    This function is only meaningful if                                */
-  /*      a) the font has a variation selector cmap sub table,             */
-  /*    and                                                                */
-  /*      b) the current charmap has a Unicode encoding.                   */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @section:
+   *   glyph_variants
+   *
+   * @title:
+   *   Unicode Variation Sequences
+   *
+   * @abstract:
+   *   The FreeType~2 interface to Unicode Variation Sequences (UVS), using
+   *   the SFNT cmap format~14.
+   *
+   * @description:
+   *   Many characters, especially for CJK scripts, have variant forms.  They
+   *   are a sort of grey area somewhere between being totally irrelevant and
+   *   semantically distinct; for this reason, the Unicode consortium decided
+   *   to introduce Variation Sequences (VS), consisting of a Unicode base
+   *   character and a variation selector instead of further extending the
+   *   already huge number of characters.
+   *
+   *   Unicode maintains two different sets, namely 'Standardized Variation
+   *   Sequences' and registered 'Ideographic Variation Sequences' (IVS),
+   *   collected in the 'Ideographic Variation Database' (IVD).
+   *
+   *     https://unicode.org/Public/UCD/latest/ucd/StandardizedVariants.txt
+   *     https://unicode.org/reports/tr37/ https://unicode.org/ivd/
+   *
+   *   To date (January 2017), the character with the most ideographic
+   *   variations is U+9089, having 32 such IVS.
+   *
+   *   Three Mongolian Variation Selectors have the values U+180B-U+180D; 256
+   *   generic Variation Selectors are encoded in the ranges U+FE00-U+FE0F
+   *   and U+E0100-U+E01EF.  IVS currently use Variation Selectors from the
+   *   range U+E0100-U+E01EF only.
+   *
+   *   A VS consists of the base character value followed by a single
+   *   Variation Selector.  For example, to get the first variation of
+   *   U+9089, you have to write the character sequence `U+9089 U+E0100`.
+   *
+   *   Adobe and MS decided to support both standardized and ideographic VS
+   *   with a new cmap subtable (format~14).  It is an odd subtable because
+   *   it is not a mapping of input code points to glyphs, but contains lists
+   *   of all variations supported by the font.
+   *
+   *   A variation may be either 'default' or 'non-default' for a given font.
+   *   A default variation is the one you will get for that code point if you
+   *   look it up in the standard Unicode cmap.  A non-default variation is a
+   *   different glyph.
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetCharVariantIndex
+   *
+   * @description:
+   *   Return the glyph index of a given character code as modified by the
+   *   variation selector.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   charcode ::
+   *     The character code point in Unicode.
+   *
+   *   variantSelector ::
+   *     The Unicode code point of the variation selector.
+   *
+   * @return:
+   *   The glyph index.  0~means either 'undefined character code', or
+   *   'undefined selector code', or 'no variation selector cmap subtable',
+   *   or 'current CharMap is not Unicode'.
+   *
+   * @note:
+   *   If you use FreeType to manipulate the contents of font files directly,
+   *   be aware that the glyph index returned by this function doesn't always
+   *   correspond to the internal indices used within the file.  This is done
+   *   to ensure that value~0 always corresponds to the 'missing glyph'.
+   *
+   *   This function is only meaningful if
+   *     a) the font has a variation selector cmap sub table, and
+   *     b) the current charmap has a Unicode encoding.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_UInt )
   FT_Face_GetCharVariantIndex( FT_Face   face,
                                FT_ULong  charcode,
                                FT_ULong  variantSelector );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetCharVariantIsDefault                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Check whether this variation of this Unicode character is the one  */
-  /*    to be found in the `cmap'.                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /*    charcode ::                                                        */
-  /*      The character codepoint in Unicode.                              */
-  /*                                                                       */
-  /*    variantSelector ::                                                 */
-  /*      The Unicode codepoint of the variation selector.                 */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    1~if found in the standard (Unicode) cmap, 0~if found in the       */
-  /*    variation selector cmap, or -1 if it is not a variation.           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function is only meaningful if the font has a variation       */
-  /*    selector cmap subtable.                                            */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetCharVariantIsDefault
+   *
+   * @description:
+   *   Check whether this variation of this Unicode character is the one to
+   *   be found in the charmap.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   charcode ::
+   *     The character codepoint in Unicode.
+   *
+   *   variantSelector ::
+   *     The Unicode codepoint of the variation selector.
+   *
+   * @return:
+   *   1~if found in the standard (Unicode) cmap, 0~if found in the variation
+   *   selector cmap, or -1 if it is not a variation.
+   *
+   * @note:
+   *   This function is only meaningful if the font has a variation selector
+   *   cmap subtable.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_Int )
   FT_Face_GetCharVariantIsDefault( FT_Face   face,
                                    FT_ULong  charcode,
                                    FT_ULong  variantSelector );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetVariantSelectors                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a zero-terminated list of Unicode variation selectors found */
-  /*    in the font.                                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A pointer to an array of selector code points, or NULL if there is */
-  /*    no valid variation selector cmap subtable.                         */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The last item in the array is~0; the array is owned by the         */
-  /*    @FT_Face object but can be overwritten or released on the next     */
-  /*    call to a FreeType function.                                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetVariantSelectors
+   *
+   * @description:
+   *   Return a zero-terminated list of Unicode variation selectors found in
+   *   the font.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   * @return:
+   *   A pointer to an array of selector code points, or `NULL` if there is
+   *   no valid variation selector cmap subtable.
+   *
+   * @note:
+   *   The last item in the array is~0; the array is owned by the @FT_Face
+   *   object but can be overwritten or released on the next call to a
+   *   FreeType function.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_UInt32* )
   FT_Face_GetVariantSelectors( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetVariantsOfChar                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a zero-terminated list of Unicode variation selectors found */
-  /*    for the specified character code.                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /*    charcode ::                                                        */
-  /*      The character codepoint in Unicode.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A pointer to an array of variation selector code points that are   */
-  /*    active for the given character, or NULL if the corresponding list  */
-  /*    is empty.                                                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The last item in the array is~0; the array is owned by the         */
-  /*    @FT_Face object but can be overwritten or released on the next     */
-  /*    call to a FreeType function.                                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetVariantsOfChar
+   *
+   * @description:
+   *   Return a zero-terminated list of Unicode variation selectors found for
+   *   the specified character code.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   charcode ::
+   *     The character codepoint in Unicode.
+   *
+   * @return:
+   *   A pointer to an array of variation selector code points that are
+   *   active for the given character, or `NULL` if the corresponding list is
+   *   empty.
+   *
+   * @note:
+   *   The last item in the array is~0; the array is owned by the @FT_Face
+   *   object but can be overwritten or released on the next call to a
+   *   FreeType function.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_UInt32* )
   FT_Face_GetVariantsOfChar( FT_Face   face,
                              FT_ULong  charcode );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_GetCharsOfVariant                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a zero-terminated list of Unicode character codes found for */
-  /*    the specified variation selector.                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face ::                                                            */
-  /*      A handle to the source face object.                              */
-  /*                                                                       */
-  /*    variantSelector ::                                                 */
-  /*      The variation selector code point in Unicode.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    A list of all the code points that are specified by this selector  */
-  /*    (both default and non-default codes are returned) or NULL if there */
-  /*    is no valid cmap or the variation selector is invalid.             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The last item in the array is~0; the array is owned by the         */
-  /*    @FT_Face object but can be overwritten or released on the next     */
-  /*    call to a FreeType function.                                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.6                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_GetCharsOfVariant
+   *
+   * @description:
+   *   Return a zero-terminated list of Unicode character codes found for the
+   *   specified variation selector.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   variantSelector ::
+   *     The variation selector code point in Unicode.
+   *
+   * @return:
+   *   A list of all the code points that are specified by this selector
+   *   (both default and non-default codes are returned) or `NULL` if there
+   *   is no valid cmap or the variation selector is invalid.
+   *
+   * @note:
+   *   The last item in the array is~0; the array is owned by the @FT_Face
+   *   object but can be overwritten or released on the next call to a
+   *   FreeType function.
+   *
+   * @since:
+   *   2.3.6
+   */
   FT_EXPORT( FT_UInt32* )
   FT_Face_GetCharsOfVariant( FT_Face   face,
                              FT_ULong  variantSelector );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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>                                                         */
-  /*    Compute `(a*b)/c' with maximum accuracy, using 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'.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   **Attention**: Most arithmetic functions take `FT_Long` as arguments.
+   *   For historical reasons, FreeType was designed under the assumption
+   *   that `FT_Long` is a 32-bit integer; results can thus be undefined if
+   *   the arguments don't fit into 32 bits.
+   *
+   * @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:
+   *   Compute `(a*b)/c` with maximum accuracy, using 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>                                                         */
-  /*    Compute `(a*b)/0x10000' with maximum accuracy.  Its main use is to */
-  /*    multiply a given value by a 16.16 fixed-point 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.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_MulFix
+   *
+   * @description:
+   *   Compute `(a*b)/0x10000` with maximum accuracy.  Its main use is to
+   *   multiply a given value by a 16.16 fixed-point 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>                                                         */
-  /*    Compute `(a*0x10000)/b' with maximum accuracy.  Its main use is to */
-  /*    divide a given value by a 16.16 fixed-point factor.                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The numerator.                                                */
-  /*                                                                       */
-  /*    b :: The denominator.  Use a 16.16 factor here.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result of `(a*0x10000)/b'.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_DivFix
+   *
+   * @description:
+   *   Compute `(a*0x10000)/b` with maximum accuracy.  Its main use is to
+   *   divide a given value by a 16.16 fixed-point factor.
+   *
+   * @input:
+   *   a ::
+   *     The numerator.
+   *
+   *   b ::
+   *     The denominator.  Use a 16.16 factor here.
+   *
+   * @return:
+   *   The result of `(a*0x10000)/b`.
+   */
   FT_EXPORT( FT_Long )
   FT_DivFix( FT_Long  a,
              FT_Long  b );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_RoundFix                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Round a 16.16 fixed number.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The number to be rounded.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    `a' rounded to the nearest 16.16 fixed integer, halfway cases away */
-  /*    from zero.                                                         */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The function uses wrap-around arithmetic.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_RoundFix
+   *
+   * @description:
+   *   Round a 16.16 fixed number.
+   *
+   * @input:
+   *   a ::
+   *     The number to be rounded.
+   *
+   * @return:
+   *   `a` rounded to the nearest 16.16 fixed integer, halfway cases away
+   *   from zero.
+   *
+   * @note:
+   *   The function uses wrap-around arithmetic.
+   */
   FT_EXPORT( FT_Fixed )
   FT_RoundFix( FT_Fixed  a );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_CeilFix                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the smallest following integer of a 16.16 fixed number.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The number for which the ceiling function is to be computed.  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    `a' rounded towards plus infinity.                                 */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The function uses wrap-around arithmetic.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_CeilFix
+   *
+   * @description:
+   *   Compute the smallest following integer of a 16.16 fixed number.
+   *
+   * @input:
+   *   a ::
+   *     The number for which the ceiling function is to be computed.
+   *
+   * @return:
+   *   `a` rounded towards plus infinity.
+   *
+   * @note:
+   *   The function uses wrap-around arithmetic.
+   */
   FT_EXPORT( FT_Fixed )
   FT_CeilFix( FT_Fixed  a );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_FloorFix                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the largest previous integer of a 16.16 fixed number.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    a :: The number for which the floor function is to be computed.    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    `a' rounded towards minus infinity.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_FloorFix
+   *
+   * @description:
+   *   Compute the largest previous integer of a 16.16 fixed number.
+   *
+   * @input:
+   *   a ::
+   *     The number for which the floor function is to be computed.
+   *
+   * @return:
+   *   `a` rounded towards minus infinity.
+   */
   FT_EXPORT( FT_Fixed )
   FT_FloorFix( FT_Fixed  a );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Vector_Transform                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Transform 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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Vector_Transform
+   *
+   * @description:
+   *   Transform 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_Vector_Transform( FT_Vector*        vector,
                        const FT_Matrix*  matrix );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    version                                                            */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    FreeType Version                                                   */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Functions and macros related to FreeType versions.                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Note that those functions and macros are of limited use because    */
-  /*    even a new release of FreeType with only documentation changes     */
-  /*    increases the version number.                                      */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Library_Version                                                 */
-  /*                                                                       */
-  /*    FREETYPE_MAJOR                                                     */
-  /*    FREETYPE_MINOR                                                     */
-  /*    FREETYPE_PATCH                                                     */
-  /*                                                                       */
-  /*    FT_Face_CheckTrueTypePatents                                       */
-  /*    FT_Face_SetUnpatentedHinting                                       */
-  /*                                                                       */
-  /*    FREETYPE_XXX                                                       */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************
+  /**************************************************************************
+   *
+   * @section:
+   *   version
+   *
+   * @title:
+   *   FreeType Version
+   *
+   * @abstract:
+   *   Functions and macros related to FreeType versions.
+   *
+   * @description:
+   *   Note that those functions and macros are of limited use because even a
+   *   new release of FreeType with only documentation changes increases the
+   *   version number.
+   *
+   * @order:
+   *   FT_Library_Version
+   *
+   *   FREETYPE_MAJOR
+   *   FREETYPE_MINOR
+   *   FREETYPE_PATCH
+   *
+   *   FT_Face_CheckTrueTypePatents
+   *   FT_Face_SetUnpatentedHinting
+   *
+   */
+
+
+  /**************************************************************************
    *
    * @enum:
    *   FREETYPE_XXX
    *
    * @description:
-   *   These three macros identify the FreeType source code version.
-   *   Use @FT_Library_Version to access them at runtime.
+   *   These three macros identify the FreeType source code version.  Use
+   *   @FT_Library_Version to access them at runtime.
    *
    * @values:
-   *   FREETYPE_MAJOR :: The major version number.
-   *   FREETYPE_MINOR :: The minor version number.
-   *   FREETYPE_PATCH :: The patch level.
+   *   FREETYPE_MAJOR ::
+   *     The major version number.
+   *   FREETYPE_MINOR ::
+   *     The minor version number.
+   *   FREETYPE_PATCH ::
+   *     The patch level.
    *
    * @note:
-   *   The version number of FreeType if built as a dynamic link library
-   *   with the `libtool' package is _not_ controlled by these three
-   *   macros.
+   *   The version number of FreeType if built as a dynamic link library with
+   *   the 'libtool' package is _not_ controlled by these three macros.
    *
    */
 #define FREETYPE_MAJOR  2
-#define FREETYPE_MINOR  9
-#define FREETYPE_PATCH  1
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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 @FREETYPE_MAJOR, @FREETYPE_MINOR, and               */
-  /*    @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.                               */
-  /*                                                                       */
+#define FREETYPE_MINOR  10
+#define FREETYPE_PATCH  0
+
+
+  /**************************************************************************
+   *
+   * @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 @FREETYPE_MAJOR, @FREETYPE_MINOR, and @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,
@@ -4596,52 +4816,55 @@
                       FT_Int      *apatch );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_CheckTrueTypePatents                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deprecated, does nothing.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A face handle.                                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Always returns false.                                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Since May 2010, TrueType hinting is no longer patented.            */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.5                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_CheckTrueTypePatents
+   *
+   * @description:
+   *   Deprecated, does nothing.
+   *
+   * @input:
+   *   face ::
+   *     A face handle.
+   *
+   * @return:
+   *   Always returns false.
+   *
+   * @note:
+   *   Since May 2010, TrueType hinting is no longer patented.
+   *
+   * @since:
+   *   2.3.5
+   */
   FT_EXPORT( FT_Bool )
   FT_Face_CheckTrueTypePatents( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Face_SetUnpatentedHinting                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deprecated, does nothing.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face  :: A face handle.                                            */
-  /*                                                                       */
-  /*    value :: New boolean setting.                                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Always returns false.                                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Since May 2010, TrueType hinting is no longer patented.            */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.3.5                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Face_SetUnpatentedHinting
+   *
+   * @description:
+   *   Deprecated, does nothing.
+   *
+   * @input:
+   *   face ::
+   *     A face handle.
+   *
+   *   value ::
+   *     New boolean setting.
+   *
+   * @return:
+   *   Always returns false.
+   *
+   * @note:
+   *   Since May 2010, TrueType hinting is no longer patented.
+   *
+   * @since:
+   *   2.3.5
+   */
   FT_EXPORT( FT_Bool )
   FT_Face_SetUnpatentedHinting( FT_Face  face,
                                 FT_Bool  value );
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftadvanc.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftadvanc.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftadvanc.h                                                             */
-/*                                                                         */
-/*    Quick computation of advance widths (specification only).            */
-/*                                                                         */
-/*  Copyright 2008-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftadvanc.h
+ *
+ *   Quick computation of advance widths (specification only).
+ *
+ * Copyright (C) 2008-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTADVANC_H_
@@ -56,68 +56,67 @@
    */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Const>                                                               */
-  /*    FT_ADVANCE_FLAG_FAST_ONLY                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A bit-flag to be OR-ed with the `flags' parameter of the           */
-  /*    @FT_Get_Advance and @FT_Get_Advances functions.                    */
-  /*                                                                       */
-  /*    If set, it indicates that you want these functions to fail if the  */
-  /*    corresponding hinting mode or font driver doesn't allow for very   */
-  /*    quick advance computation.                                         */
-  /*                                                                       */
-  /*    Typically, glyphs that are either unscaled, unhinted, bitmapped,   */
-  /*    or light-hinted can have their advance width computed very         */
-  /*    quickly.                                                           */
-  /*                                                                       */
-  /*    Normal and bytecode hinted modes that require loading, scaling,    */
-  /*    and hinting of the glyph outline, are extremely slow by            */
-  /*    comparison.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_ADVANCE_FLAG_FAST_ONLY
+   *
+   * @description:
+   *   A bit-flag to be OR-ed with the `flags` parameter of the
+   *   @FT_Get_Advance and @FT_Get_Advances functions.
+   *
+   *   If set, it indicates that you want these functions to fail if the
+   *   corresponding hinting mode or font driver doesn't allow for very quick
+   *   advance computation.
+   *
+   *   Typically, glyphs that are either unscaled, unhinted, bitmapped, or
+   *   light-hinted can have their advance width computed very quickly.
+   *
+   *   Normal and bytecode hinted modes that require loading, scaling, and
+   *   hinting of the glyph outline, are extremely slow by comparison.
+   */
 #define FT_ADVANCE_FLAG_FAST_ONLY  0x20000000L
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Advance                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the advance value of a given glyph outline in an          */
-  /*    @FT_Face.                                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: The source @FT_Face handle.                          */
-  /*                                                                       */
-  /*    gindex     :: The glyph index.                                     */
-  /*                                                                       */
-  /*    load_flags :: A set of bit flags similar to those used when        */
-  /*                  calling @FT_Load_Glyph, used to determine what kind  */
-  /*                  of advances you need.                                */
-  /* <Output>                                                              */
-  /*    padvance :: The advance value.  If scaling is performed (based on  */
-  /*                the value of `load_flags'), the advance value is in    */
-  /*                16.16 format.  Otherwise, it is in font units.         */
-  /*                                                                       */
-  /*                If @FT_LOAD_VERTICAL_LAYOUT is set, this is the        */
-  /*                vertical advance corresponding to a vertical layout.   */
-  /*                Otherwise, it is the horizontal advance in a           */
-  /*                horizontal layout.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
-  /*    if the corresponding font backend doesn't have a quick way to      */
-  /*    retrieve the advances.                                             */
-  /*                                                                       */
-  /*    A scaled advance is returned in 16.16 format but isn't transformed */
-  /*    by the affine transformation specified by @FT_Set_Transform.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Advance
+   *
+   * @description:
+   *   Retrieve the advance value of a given glyph outline in an @FT_Face.
+   *
+   * @input:
+   *   face ::
+   *     The source @FT_Face handle.
+   *
+   *   gindex ::
+   *     The glyph index.
+   *
+   *   load_flags ::
+   *     A set of bit flags similar to those used when calling
+   *     @FT_Load_Glyph, used to determine what kind of advances you need.
+   * @output:
+   *   padvance ::
+   *     The advance value.  If scaling is performed (based on the value of
+   *     `load_flags`), the advance value is in 16.16 format.  Otherwise, it
+   *     is in font units.
+   *
+   *     If @FT_LOAD_VERTICAL_LAYOUT is set, this is the vertical advance
+   *     corresponding to a vertical layout.  Otherwise, it is the horizontal
+   *     advance in a horizontal layout.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if
+   *   the corresponding font backend doesn't have a quick way to retrieve
+   *   the advances.
+   *
+   *   A scaled advance is returned in 16.16 format but isn't transformed by
+   *   the affine transformation specified by @FT_Set_Transform.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Advance( FT_Face    face,
                   FT_UInt    gindex,
@@ -125,50 +124,52 @@
                   FT_Fixed  *padvance );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Advances                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the advance values of several glyph outlines in an        */
-  /*    @FT_Face.                                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face        :: The source @FT_Face handle.                         */
-  /*                                                                       */
-  /*    start       :: The first glyph index.                              */
-  /*                                                                       */
-  /*    count       :: The number of advance values you want to retrieve.  */
-  /*                                                                       */
-  /*    load_flags  :: A set of bit flags similar to those used when       */
-  /*                   calling @FT_Load_Glyph.                             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    padvance :: The advance values.  This array, to be provided by the */
-  /*                caller, must contain at least `count' elements.        */
-  /*                                                                       */
-  /*                If scaling is performed (based on the value of         */
-  /*                `load_flags'), the advance values are in 16.16 format. */
-  /*                Otherwise, they are in font units.                     */
-  /*                                                                       */
-  /*                If @FT_LOAD_VERTICAL_LAYOUT is set, these are the      */
-  /*                vertical advances corresponding to a vertical layout.  */
-  /*                Otherwise, they are the horizontal advances in a       */
-  /*                horizontal layout.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and   */
-  /*    if the corresponding font backend doesn't have a quick way to      */
-  /*    retrieve the advances.                                             */
-  /*                                                                       */
-  /*    Scaled advances are returned in 16.16 format but aren't            */
-  /*    transformed by the affine transformation specified by              */
-  /*    @FT_Set_Transform.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Advances
+   *
+   * @description:
+   *   Retrieve the advance values of several glyph outlines in an @FT_Face.
+   *
+   * @input:
+   *   face ::
+   *     The source @FT_Face handle.
+   *
+   *   start ::
+   *     The first glyph index.
+   *
+   *   count ::
+   *     The number of advance values you want to retrieve.
+   *
+   *   load_flags ::
+   *     A set of bit flags similar to those used when calling
+   *     @FT_Load_Glyph.
+   *
+   * @output:
+   *   padvance ::
+   *     The advance values.  This array, to be provided by the caller, must
+   *     contain at least `count` elements.
+   *
+   *     If scaling is performed (based on the value of `load_flags`), the
+   *     advance values are in 16.16 format.  Otherwise, they are in font
+   *     units.
+   *
+   *     If @FT_LOAD_VERTICAL_LAYOUT is set, these are the vertical advances
+   *     corresponding to a vertical layout.  Otherwise, they are the
+   *     horizontal advances in a horizontal layout.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   *
+   * @note:
+   *   This function may fail if you use @FT_ADVANCE_FLAG_FAST_ONLY and if
+   *   the corresponding font backend doesn't have a quick way to retrieve
+   *   the advances.
+   *
+   *   Scaled advances are returned in 16.16 format but aren't transformed by
+   *   the affine transformation specified by @FT_Set_Transform.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Advances( FT_Face    face,
                    FT_UInt    start,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftbbox.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftbbox.h	Thu May 09 16:09:39 2019 -0700
@@ -1,30 +1,30 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbbox.h                                                               */
-/*                                                                         */
-/*    FreeType exact bbox computation (specification).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbbox.h
+ *
+ *   FreeType exact bbox computation (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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_
@@ -44,43 +44,44 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    outline_processing                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   outline_processing
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Get_BBox                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the exact bounding box of an outline.  This is slower      */
-  /*    than computing the control box.  However, it uses an advanced      */
-  /*    algorithm that returns _very_ quickly when the two boxes           */
-  /*    coincide.  Otherwise, the outline Bezier arcs are traversed 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.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If the font is tricky and the glyph has been loaded with           */
-  /*    @FT_LOAD_NO_SCALE, the resulting BBox is meaningless.  To get      */
-  /*    reasonable values for the BBox it is necessary to load the glyph   */
-  /*    at a large ppem value (so that the hinting instructions can        */
-  /*    properly shift and scale the subglyphs), then extracting the BBox, */
-  /*    which can be eventually converted back to font units.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Get_BBox
+   *
+   * @description:
+   *   Compute the exact bounding box of an outline.  This is slower than
+   *   computing the control box.  However, it uses an advanced algorithm
+   *   that returns _very_ quickly when the two boxes coincide.  Otherwise,
+   *   the outline Bezier arcs are traversed 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.
+   *
+   * @note:
+   *   If the font is tricky and the glyph has been loaded with
+   *   @FT_LOAD_NO_SCALE, the resulting BBox is meaningless.  To get
+   *   reasonable values for the BBox it is necessary to load the glyph at a
+   *   large ppem value (so that the hinting instructions can properly shift
+   *   and scale the subglyphs), then extracting the BBox, which can be
+   *   eventually converted back to font units.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Get_BBox( FT_Outline*  outline,
                        FT_BBox     *abbox );
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftbdf.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftbdf.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbdf.h                                                                */
-/*                                                                         */
-/*    FreeType API for accessing BDF-specific strings (specification).     */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbdf.h
+ *
+ *   FreeType API for accessing BDF-specific strings (specification).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -32,25 +32,25 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    bdf_fonts                                                          */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    BDF and PCF Files                                                  */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    BDF and PCF specific API.                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of functions specific to BDF */
-  /*    and PCF fonts.                                                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   bdf_fonts
+   *
+   * @title:
+   *   BDF and PCF Files
+   *
+   * @abstract:
+   *   BDF and PCF specific API.
+   *
+   * @description:
+   *   This section contains the declaration of functions specific to BDF and
+   *   PCF fonts.
+   *
+   */
 
 
-  /**********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *    BDF_PropertyType
@@ -81,40 +81,40 @@
   } BDF_PropertyType;
 
 
-  /**********************************************************************
+  /**************************************************************************
    *
    * @type:
    *    BDF_Property
    *
    * @description:
-   *    A handle to a @BDF_PropertyRec structure to model a given
-   *    BDF/PCF property.
+   *    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.  May be
-  *      NULL, indicating an empty string.
-  *
-  *    u.integer ::
-  *      A signed integer, if type is @BDF_PROPERTY_TYPE_INTEGER.
-  *
-  *    u.cardinal ::
-  *      An unsigned integer, if type is @BDF_PROPERTY_TYPE_CARDINAL.
-  */
+  /**************************************************************************
+   *
+   * @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.  May be
+   *      `NULL`, indicating an empty string.
+   *
+   *    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;
@@ -128,73 +128,76 @@
   } BDF_PropertyRec;
 
 
- /**********************************************************************
-  *
-  * @function:
-  *    FT_Get_BDF_Charset_ID
-  *
-  * @description:
-  *    Retrieve 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.
-  */
+  /**************************************************************************
+   *
+   * @function:
+   *    FT_Get_BDF_Charset_ID
+   *
+   * @description:
+   *    Retrieve 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:
-  *    Retrieve 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.
-  *
-  *   A `property' is a either key-value pair within the STARTPROPERTIES
-  *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
-  *   `info->props' array within a `FontRec' structure of a PCF font.
-  *
-  *   Integer properties are always stored as `signed' within PCF fonts;
-  *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
-  *   for BDF fonts only.
-  *
-  *   In case of error, `aproperty->type' is always set to
-  *   @BDF_PROPERTY_TYPE_NONE.
-  */
+  /**************************************************************************
+   *
+   * @function:
+   *    FT_Get_BDF_Property
+   *
+   * @description:
+   *    Retrieve 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.
+   *
+   *   A 'property' is a either key-value pair within the STARTPROPERTIES
+   *   ... ENDPROPERTIES block of a BDF font or a key-value pair from the
+   *   `info->props` array within a `FontRec` structure of a PCF font.
+   *
+   *   Integer properties are always stored as 'signed' within PCF fonts;
+   *   consequently, @BDF_PROPERTY_TYPE_CARDINAL is a possible return value
+   *   for BDF fonts only.
+   *
+   *   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,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftbitmap.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftbitmap.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbitmap.h                                                             */
-/*                                                                         */
-/*    FreeType utility functions for bitmaps (specification).              */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbitmap.h
+ *
+ *   FreeType utility functions for bitmaps (specification).
+ *
+ * Copyright (C) 2004-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTBITMAP_H_
@@ -22,6 +22,7 @@
 
 #include <ft2build.h>
 #include FT_FREETYPE_H
+#include FT_COLOR_H
 
 #ifdef FREETYPE_H
 #error "freetype.h of FreeType 1 has been loaded!"
@@ -33,39 +34,46 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    bitmap_handling                                                    */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Bitmap Handling                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Handling FT_Bitmap objects.                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains functions for handling @FT_Bitmap objects.   */
-  /*    Note that none of the functions changes the bitmap's `flow' (as    */
-  /*    indicated by the sign of the `pitch' field in `FT_Bitmap').        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   bitmap_handling
+   *
+   * @title:
+   *   Bitmap Handling
+   *
+   * @abstract:
+   *   Handling FT_Bitmap objects.
+   *
+   * @description:
+   *   This section contains functions for handling @FT_Bitmap objects,
+   *   automatically adjusting the target's bitmap buffer size as needed.
+   *
+   *   Note that none of the functions changes the bitmap's 'flow' (as
+   *   indicated by the sign of the `pitch` field in @FT_Bitmap).
+   *
+   *   To set the flow, assign an appropriate positive or negative value to
+   *   the `pitch` field of the target @FT_Bitmap object after calling
+   *   @FT_Bitmap_Init but before calling any of the other functions
+   *   described here.
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Init                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a pointer to an @FT_Bitmap structure.                   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    abitmap :: A pointer to the bitmap structure.                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    A deprecated name for the same function is `FT_Bitmap_New'.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Init
+   *
+   * @description:
+   *   Initialize a pointer to an @FT_Bitmap structure.
+   *
+   * @inout:
+   *   abitmap ::
+   *     A pointer to the bitmap structure.
+   *
+   * @note:
+   *   A deprecated name for the same function is `FT_Bitmap_New`.
+   */
   FT_EXPORT( void )
   FT_Bitmap_Init( FT_Bitmap  *abitmap );
 
@@ -75,66 +83,77 @@
   FT_Bitmap_New( FT_Bitmap  *abitmap );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Copy                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Copy a bitmap into another one.                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to a library object.                           */
-  /*                                                                       */
-  /*    source  :: A handle to the source bitmap.                          */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    target  :: A handle to the target bitmap.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Copy
+   *
+   * @description:
+   *   Copy a bitmap into another one.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   source ::
+   *     A handle to the source bitmap.
+   *
+   * @output:
+   *   target ::
+   *     A handle to the target bitmap.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   `source->buffer` and `target->buffer` must neither be equal nor
+   *   overlap.
+   */
   FT_EXPORT( FT_Error )
   FT_Bitmap_Copy( FT_Library        library,
                   const FT_Bitmap  *source,
                   FT_Bitmap        *target );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Embolden                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Embolden a bitmap.  The new bitmap will be about `xStrength'       */
-  /*    pixels wider and `yStrength' pixels higher.  The left and bottom   */
-  /*    borders are kept unchanged.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library   :: A handle to a library object.                         */
-  /*                                                                       */
-  /*    xStrength :: How strong the glyph is emboldened horizontally.      */
-  /*                 Expressed in 26.6 pixel format.                       */
-  /*                                                                       */
-  /*    yStrength :: How strong the glyph is emboldened vertically.        */
-  /*                 Expressed in 26.6 pixel format.                       */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    bitmap    :: A handle to the target bitmap.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The current implementation restricts `xStrength' to be less than   */
-  /*    or equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.      */
-  /*                                                                       */
-  /*    If you want to embolden the bitmap owned by a @FT_GlyphSlotRec,    */
-  /*    you should call @FT_GlyphSlot_Own_Bitmap on the slot first.        */
-  /*                                                                       */
-  /*    Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format    */
-  /*    are converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Embolden
+   *
+   * @description:
+   *   Embolden a bitmap.  The new bitmap will be about `xStrength` pixels
+   *   wider and `yStrength` pixels higher.  The left and bottom borders are
+   *   kept unchanged.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   xStrength ::
+   *     How strong the glyph is emboldened horizontally.  Expressed in 26.6
+   *     pixel format.
+   *
+   *   yStrength ::
+   *     How strong the glyph is emboldened vertically.  Expressed in 26.6
+   *     pixel format.
+   *
+   * @inout:
+   *   bitmap ::
+   *     A handle to the target bitmap.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The current implementation restricts `xStrength` to be less than or
+   *   equal to~8 if bitmap is of pixel_mode @FT_PIXEL_MODE_MONO.
+   *
+   *   If you want to embolden the bitmap owned by a @FT_GlyphSlotRec, you
+   *   should call @FT_GlyphSlot_Own_Bitmap on the slot first.
+   *
+   *   Bitmaps in @FT_PIXEL_MODE_GRAY2 and @FT_PIXEL_MODE_GRAY@ format are
+   *   converted to @FT_PIXEL_MODE_GRAY format (i.e., 8bpp).
+   */
   FT_EXPORT( FT_Error )
   FT_Bitmap_Embolden( FT_Library  library,
                       FT_Bitmap*  bitmap,
@@ -142,39 +161,46 @@
                       FT_Pos      yStrength );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Convert                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp */
-  /*    to a bitmap object with depth 8bpp, making the number of used      */
-  /*    bytes line (a.k.a. the `pitch') a multiple of `alignment'.         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library   :: A handle to a library object.                         */
-  /*                                                                       */
-  /*    source    :: The source bitmap.                                    */
-  /*                                                                       */
-  /*    alignment :: The pitch of the bitmap is a multiple of this         */
-  /*                 parameter.  Common values are 1, 2, or 4.             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    target    :: The target bitmap.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    It is possible to call @FT_Bitmap_Convert multiple times without   */
-  /*    calling @FT_Bitmap_Done (the memory is simply reallocated).        */
-  /*                                                                       */
-  /*    Use @FT_Bitmap_Done to finally remove the bitmap object.           */
-  /*                                                                       */
-  /*    The `library' argument is taken to have access to FreeType's       */
-  /*    memory handling functions.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Convert
+   *
+   * @description:
+   *   Convert a bitmap object with depth 1bpp, 2bpp, 4bpp, 8bpp or 32bpp to
+   *   a bitmap object with depth 8bpp, making the number of used bytes per
+   *   line (a.k.a. the 'pitch') a multiple of `alignment`.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   source ::
+   *     The source bitmap.
+   *
+   *   alignment ::
+   *     The pitch of the bitmap is a multiple of this argument.  Common
+   *     values are 1, 2, or 4.
+   *
+   * @output:
+   *   target ::
+   *     The target bitmap.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   It is possible to call @FT_Bitmap_Convert multiple times without
+   *   calling @FT_Bitmap_Done (the memory is simply reallocated).
+   *
+   *   Use @FT_Bitmap_Done to finally remove the bitmap object.
+   *
+   *   The `library` argument is taken to have access to FreeType's memory
+   *   handling functions.
+   *
+   *   `source->buffer` and `target->buffer` must neither be equal nor
+   *   overlap.
+   */
   FT_EXPORT( FT_Error )
   FT_Bitmap_Convert( FT_Library        library,
                      const FT_Bitmap  *source,
@@ -182,48 +208,112 @@
                      FT_Int            alignment );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_GlyphSlot_Own_Bitmap                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Make sure that a glyph slot owns `slot->bitmap'.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    slot :: The glyph slot.                                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function is to be used in combination with                    */
-  /*    @FT_Bitmap_Embolden.                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Blend
+   *
+   * @description:
+   *   Blend a bitmap onto another bitmap, using a given color.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   source ::
+   *     The source bitmap, which can have any @FT_Pixel_Mode format.
+   *
+   *   source_offset ::
+   *     The offset vector to the upper left corner of the source bitmap in
+   *     26.6 pixel format.  It should represent an integer offset; the
+   *     function will set the lowest six bits to zero to enforce that.
+   *
+   *   color ::
+   *     The color used to draw `source` onto `target`.
+   *
+   * @inout:
+   *   target ::
+   *     A handle to an `FT_Bitmap` object.  It should be either initialized
+   *     as empty with a call to @FT_Bitmap_Init, or it should be of type
+   *     @FT_PIXEL_MODE_BGRA.
+   *
+   *   atarget_offset ::
+   *     The offset vector to the upper left corner of the target bitmap in
+   *     26.6 pixel format.  It should represent an integer offset; the
+   *     function will set the lowest six bits to zero to enforce that.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function doesn't perform clipping.
+   *
+   *   The bitmap in `target` gets allocated or reallocated as needed; the
+   *   vector `atarget_offset` is updated accordingly.
+   *
+   *   In case of allocation or reallocation, the bitmap's pitch is set to
+   *   `4 * width`.  Both `source` and `target` must have the same bitmap
+   *   flow (as indicated by the sign of the `pitch` field).
+   *
+   *   `source->buffer` and `target->buffer` must neither be equal nor
+   *   overlap.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Bitmap_Blend( FT_Library         library,
+                   const FT_Bitmap*   source,
+                   const FT_Vector    source_offset,
+                   FT_Bitmap*         target,
+                   FT_Vector         *atarget_offset,
+                   FT_Color           color );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_GlyphSlot_Own_Bitmap
+   *
+   * @description:
+   *   Make sure that a glyph slot owns `slot->bitmap`.
+   *
+   * @input:
+   *   slot ::
+   *     The glyph slot.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function is to be used in combination with @FT_Bitmap_Embolden.
+   */
   FT_EXPORT( FT_Error )
   FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Bitmap_Done                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy a bitmap object initialized with @FT_Bitmap_Init.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to a library object.                           */
-  /*                                                                       */
-  /*    bitmap  :: The bitmap object to be freed.                          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `library' argument is taken to have access to FreeType's       */
-  /*    memory handling functions.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Bitmap_Done
+   *
+   * @description:
+   *   Destroy a bitmap object initialized with @FT_Bitmap_Init.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a library object.
+   *
+   *   bitmap ::
+   *     The bitmap object to be freed.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The `library` argument is taken to have access to FreeType's memory
+   *   handling functions.
+   */
   FT_EXPORT( FT_Error )
   FT_Bitmap_Done( FT_Library  library,
                   FT_Bitmap  *bitmap );
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftchapters.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftchapters.h	Thu May 09 16:09:39 2019 -0700
@@ -1,139 +1,145 @@
-/***************************************************************************/
-/*                                                                         */
-/* This file defines the structure of the FreeType reference.              */
-/* It is used by the python script that generates the HTML files.          */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * This file defines the structure of the FreeType reference.
+ * It is used by the python script that generates the HTML files.
+ *
+ */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    general_remarks                                                      */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    General Remarks                                                      */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    header_inclusion                                                     */
-/*    user_allocation                                                      */
-/*                                                                         */
-/***************************************************************************/
+  /**************************************************************************
+   *
+   * @chapter:
+   *   general_remarks
+   *
+   * @title:
+   *   General Remarks
+   *
+   * @sections:
+   *   header_inclusion
+   *   user_allocation
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    core_api                                                             */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Core API                                                             */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    version                                                              */
-/*    basic_types                                                          */
-/*    base_interface                                                       */
-/*    glyph_variants                                                       */
-/*    glyph_management                                                     */
-/*    mac_specific                                                         */
-/*    sizes_management                                                     */
-/*    header_file_macros                                                   */
-/*                                                                         */
-/***************************************************************************/
+  /**************************************************************************
+   *
+   * @chapter:
+   *   core_api
+   *
+   * @title:
+   *   Core API
+   *
+   * @sections:
+   *   version
+   *   basic_types
+   *   base_interface
+   *   glyph_variants
+   *   color_management
+   *   layer_management
+   *   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                                                            */
-/*    cid_fonts                                                            */
-/*    pfr_fonts                                                            */
-/*    winfnt_fonts                                                         */
-/*    font_formats                                                         */
-/*    gasp_table                                                           */
-/*                                                                         */
-/***************************************************************************/
+  /**************************************************************************
+   *
+   * @chapter:
+   *   format_specific
+   *
+   * @title:
+   *   Format-Specific API
+   *
+   * @sections:
+   *   multiple_masters
+   *   truetype_tables
+   *   type1_tables
+   *   sfnt_names
+   *   bdf_fonts
+   *   cid_fonts
+   *   pfr_fonts
+   *   winfnt_fonts
+   *   font_formats
+   *   gasp_table
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    module_specific                                                      */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Controlling FreeType Modules                                         */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    auto_hinter                                                          */
-/*    cff_driver                                                           */
-/*    t1_cid_driver                                                        */
-/*    tt_driver                                                            */
-/*    pcf_driver                                                           */
-/*    properties                                                           */
-/*    parameter_tags                                                       */
-/*                                                                         */
-/***************************************************************************/
+  /**************************************************************************
+   *
+   * @chapter:
+   *   module_specific
+   *
+   * @title:
+   *   Controlling FreeType Modules
+   *
+   * @sections:
+   *   auto_hinter
+   *   cff_driver
+   *   t1_cid_driver
+   *   tt_driver
+   *   pcf_driver
+   *   properties
+   *   parameter_tags
+   *   lcd_rendering
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    cache_subsystem                                                      */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Cache Sub-System                                                     */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    cache_subsystem                                                      */
-/*                                                                         */
-/***************************************************************************/
+  /**************************************************************************
+   *
+   * @chapter:
+   *   cache_subsystem
+   *
+   * @title:
+   *   Cache Sub-System
+   *
+   * @sections:
+   *   cache_subsystem
+   *
+   */
 
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    support_api                                                          */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Support API                                                          */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    computations                                                         */
-/*    list_processing                                                      */
-/*    outline_processing                                                   */
-/*    quick_advance                                                        */
-/*    bitmap_handling                                                      */
-/*    raster                                                               */
-/*    glyph_stroker                                                        */
-/*    system_interface                                                     */
-/*    module_management                                                    */
-/*    gzip                                                                 */
-/*    lzw                                                                  */
-/*    bzip2                                                                */
-/*    lcd_filtering                                                        */
-/*                                                                         */
-/***************************************************************************/
+  /**************************************************************************
+   *
+   * @chapter:
+   *   support_api
+   *
+   * @title:
+   *   Support API
+   *
+   * @sections:
+   *   computations
+   *   list_processing
+   *   outline_processing
+   *   quick_advance
+   *   bitmap_handling
+   *   raster
+   *   glyph_stroker
+   *   system_interface
+   *   module_management
+   *   gzip
+   *   lzw
+   *   bzip2
+   *
+   */
 
-/***************************************************************************/
-/*                                                                         */
-/* <Chapter>                                                               */
-/*    error_codes                                                          */
-/*                                                                         */
-/* <Title>                                                                 */
-/*    Error Codes                                                          */
-/*                                                                         */
-/* <Sections>                                                              */
-/*    error_enumerations                                                   */
-/*    error_code_values                                                    */
-/*                                                                         */
-/***************************************************************************/
+
+  /**************************************************************************
+   *
+   * @chapter:
+   *   error_codes
+   *
+   * @title:
+   *   Error Codes
+   *
+   * @sections:
+   *   error_enumerations
+   *   error_code_values
+   *
+   */
+
+
+/* END */
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftcid.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftcid.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcid.h                                                                */
-/*                                                                         */
-/*    FreeType API for accessing CID font information (specification).     */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Dereg Clegg and Michael Toftdal.                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcid.h
+ *
+ *   FreeType API for accessing CID font information (specification).
+ *
+ * Copyright (C) 2007-2019 by
+ * Dereg Clegg and Michael Toftdal.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTCID_H_
@@ -32,25 +32,25 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    cid_fonts                                                          */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    CID Fonts                                                          */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    CID-keyed font specific API.                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of CID-keyed font specific   */
-  /*    functions.                                                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   cid_fonts
+   *
+   * @title:
+   *   CID Fonts
+   *
+   * @abstract:
+   *   CID-keyed font-specific API.
+   *
+   * @description:
+   *   This section contains the declaration of CID-keyed font-specific
+   *   functions.
+   *
+   */
 
 
-  /**********************************************************************
+  /**************************************************************************
    *
    * @function:
    *    FT_Get_CID_Registry_Ordering_Supplement
@@ -61,17 +61,17 @@
    *
    * @input:
    *    face ::
-   *       A handle to the input face.
+   *      A handle to the input face.
    *
    * @output:
    *    registry ::
-   *       The registry, as a C~string, owned by the face.
+   *      The registry, as a C~string, owned by the face.
    *
    *    ordering ::
-   *       The ordering, as a C~string, owned by the face.
+   *      The ordering, as a C~string, owned by the face.
    *
    *    supplement ::
-   *       The supplement.
+   *      The supplement.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -90,30 +90,30 @@
                                            FT_Int       *supplement );
 
 
-  /**********************************************************************
+  /**************************************************************************
    *
    * @function:
    *    FT_Get_CID_Is_Internally_CID_Keyed
    *
    * @description:
-   *    Retrieve the type of the input face, CID keyed or not.  In
-   *    contrast to the @FT_IS_CID_KEYED macro this function returns
-   *    successfully also for CID-keyed fonts in an SFNT wrapper.
+   *    Retrieve the type of the input face, CID keyed or not.  In contrast
+   *    to the @FT_IS_CID_KEYED macro this function returns successfully also
+   *    for CID-keyed fonts in an SFNT wrapper.
    *
    * @input:
    *    face ::
-   *       A handle to the input face.
+   *      A handle to the input face.
    *
    * @output:
    *    is_cid ::
-   *       The type of the face as an @FT_Bool.
+   *      The type of the face as an @FT_Bool.
    *
    * @return:
    *    FreeType error code.  0~means success.
    *
    * @note:
-   *    This function only works with CID faces and OpenType fonts,
-   *    returning an error otherwise.
+   *    This function only works with CID faces and OpenType fonts, returning
+   *    an error otherwise.
    *
    * @since:
    *    2.3.9
@@ -123,7 +123,7 @@
                                       FT_Bool  *is_cid );
 
 
-  /**********************************************************************
+  /**************************************************************************
    *
    * @function:
    *    FT_Get_CID_From_Glyph_Index
@@ -133,21 +133,21 @@
    *
    * @input:
    *    face ::
-   *       A handle to the input face.
+   *      A handle to the input face.
    *
    *    glyph_index ::
-   *       The input glyph index.
+   *      The input glyph index.
    *
    * @output:
    *    cid ::
-   *       The CID as an @FT_UInt.
+   *      The CID as an @FT_UInt.
    *
    * @return:
    *    FreeType error code.  0~means success.
    *
    * @note:
-   *    This function only works with CID faces and OpenType fonts,
-   *    returning an error otherwise.
+   *    This function only works with CID faces and OpenType fonts, returning
+   *    an error otherwise.
    *
    * @since:
    *    2.3.9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftcolor.h	Thu May 09 16:09:39 2019 -0700
@@ -0,0 +1,311 @@
+/****************************************************************************
+ *
+ * ftcolor.h
+ *
+ *   FreeType's glyph color management (specification).
+ *
+ * Copyright (C) 2018-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTCOLOR_H_
+#define FTCOLOR_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:
+   *   color_management
+   *
+   * @title:
+   *   Glyph Color Management
+   *
+   * @abstract:
+   *   Retrieving and manipulating OpenType's 'CPAL' table data.
+   *
+   * @description:
+   *   The functions described here allow access and manipulation of color
+   *   palette entries in OpenType's 'CPAL' tables.
+   */
+
+
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Color
+   *
+   * @description:
+   *   This structure models a BGRA color value of a 'CPAL' palette entry.
+   *
+   *   The used color space is sRGB; the colors are not pre-multiplied, and
+   *   alpha values must be explicitly set.
+   *
+   * @fields:
+   *   blue ::
+   *     Blue value.
+   *
+   *   green ::
+   *     Green value.
+   *
+   *   red ::
+   *     Red value.
+   *
+   *   alpha ::
+   *     Alpha value, giving the red, green, and blue color's opacity.
+   *
+   * @since:
+   *   2.10
+   */
+  typedef struct  FT_Color_
+  {
+    FT_Byte  blue;
+    FT_Byte  green;
+    FT_Byte  red;
+    FT_Byte  alpha;
+
+  } FT_Color;
+
+
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_PALETTE_XXX
+   *
+   * @description:
+   *   A list of bit field constants used in the `palette_flags` array of the
+   *   @FT_Palette_Data structure to indicate for which background a palette
+   *   with a given index is usable.
+   *
+   * @values:
+   *   FT_PALETTE_FOR_LIGHT_BACKGROUND ::
+   *     The palette is appropriate to use when displaying the font on a
+   *     light background such as white.
+   *
+   *   FT_PALETTE_FOR_DARK_BACKGROUND ::
+   *     The palette is appropriate to use when displaying the font on a dark
+   *     background such as black.
+   *
+   * @since:
+   *   2.10
+   */
+#define FT_PALETTE_FOR_LIGHT_BACKGROUND  0x01
+#define FT_PALETTE_FOR_DARK_BACKGROUND   0x02
+
+
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Palette_Data
+   *
+   * @description:
+   *   This structure holds the data of the 'CPAL' table.
+   *
+   * @fields:
+   *   num_palettes ::
+   *     The number of palettes.
+   *
+   *   palette_name_ids ::
+   *     A read-only array of palette name IDs with `num_palettes` elements,
+   *     corresponding to entries like 'dark' or 'light' in the font's 'name'
+   *     table.
+   *
+   *     An empty name ID in the 'CPAL' table gets represented as value
+   *     0xFFFF.
+   *
+   *     `NULL` if the font's 'CPAL' table doesn't contain appropriate data.
+   *
+   *   palette_flags ::
+   *     A read-only array of palette flags with `num_palettes` elements.
+   *     Possible values are an ORed combination of
+   *     @FT_PALETTE_FOR_LIGHT_BACKGROUND and
+   *     @FT_PALETTE_FOR_DARK_BACKGROUND.
+   *
+   *     `NULL` if the font's 'CPAL' table doesn't contain appropriate data.
+   *
+   *   num_palette_entries ::
+   *     The number of entries in a single palette.  All palettes have the
+   *     same size.
+   *
+   *   palette_entry_name_ids ::
+   *     A read-only array of palette entry name IDs with
+   *     `num_palette_entries`.  In each palette, entries with the same index
+   *     have the same function.  For example, index~0 might correspond to
+   *     string 'outline' in the font's 'name' table to indicate that this
+   *     palette entry is used for outlines, index~1 might correspond to
+   *     'fill' to indicate the filling color palette entry, etc.
+   *
+   *     An empty entry name ID in the 'CPAL' table gets represented as value
+   *     0xFFFF.
+   *
+   *     `NULL` if the font's 'CPAL' table doesn't contain appropriate data.
+   *
+   * @note:
+   *   Use function @FT_Get_Sfnt_Name to map name IDs and entry name IDs to
+   *   name strings.
+   *
+   * @since:
+   *   2.10
+   */
+  typedef struct  FT_Palette_Data_ {
+    FT_UShort         num_palettes;
+    const FT_UShort*  palette_name_ids;
+    const FT_UShort*  palette_flags;
+
+    FT_UShort         num_palette_entries;
+    const FT_UShort*  palette_entry_name_ids;
+
+  } FT_Palette_Data;
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Palette_Data_Get
+   *
+   * @description:
+   *   Retrieve the face's color palette data.
+   *
+   * @input:
+   *   face ::
+   *     The source face handle.
+   *
+   * @output:
+   *   apalette ::
+   *     A pointer to an @FT_Palette_Data structure.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   All arrays in the returned @FT_Palette_Data structure are read-only.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Palette_Data_Get( FT_Face           face,
+                       FT_Palette_Data  *apalette );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Palette_Select
+   *
+   * @description:
+   *   This function has two purposes.
+   *
+   *   (1) It activates a palette for rendering color glyphs, and
+   *
+   *   (2) it retrieves all (unmodified) color entries of this palette.  This
+   *       function returns a read-write array, which means that a calling
+   *       application can modify the palette entries on demand.
+   *
+   * A corollary of (2) is that calling the function, then modifying some
+   * values, then calling the function again with the same arguments resets
+   * all color entries to the original 'CPAL' values; all user modifications
+   * are lost.
+   *
+   * @input:
+   *   face ::
+   *     The source face handle.
+   *
+   *   palette_index ::
+   *     The palette index.
+   *
+   * @output:
+   *   apalette ::
+   *     An array of color entries for a palette with index `palette_index`,
+   *     having `num_palette_entries` elements (as found in the
+   *     `FT_Palette_Data` structure).  If `apalette` is set to `NULL`, no
+   *     array gets returned (and no color entries can be modified).
+   *
+   *     In case the font doesn't support color palettes, `NULL` is returned.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The array pointed to by `apalette_entries` is owned and managed by
+   *   FreeType.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Palette_Select( FT_Face     face,
+                     FT_UShort   palette_index,
+                     FT_Color*  *apalette );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Palette_Set_Foreground_Color
+   *
+   * @description:
+   *   'COLR' uses palette index 0xFFFF to indicate a 'text foreground
+   *   color'.  This function sets this value.
+   *
+   * @input:
+   *   face ::
+   *     The source face handle.
+   *
+   *   foreground_color ::
+   *     An `FT_Color` structure to define the text foreground color.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   If this function isn't called, the text foreground color is set to
+   *   white opaque (BGRA value 0xFFFFFFFF) if
+   *   @FT_PALETTE_FOR_DARK_BACKGROUND is present for the current palette,
+   *   and black opaque (BGRA value 0x000000FF) otherwise, including the case
+   *   that no palette types are available in the 'CPAL' table.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_COLOR_LAYERS` is not defined in `ftoption.h`.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Palette_Set_Foreground_Color( FT_Face   face,
+                                   FT_Color  foreground_color );
+
+  /* */
+
+
+FT_END_HEADER
+
+#endif /* FTCOLOR_H_ */
+
+
+/* END */
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftdriver.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftdriver.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdriver.h                                                             */
-/*                                                                         */
-/*    FreeType API for controlling driver modules (specification only).    */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdriver.h
+ *
+ *   FreeType API for controlling driver modules (specification only).
+ *
+ * Copyright (C) 2017-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -50,8 +50,8 @@
    *   @FT_Property_Get.  The following lists the available properties
    *   together with the necessary macros and structures.
    *
-   *   Note that the auto-hinter's module name is `autofitter' for
-   *   historical reasons.
+   *   Note that the auto-hinter's module name is 'autofitter' for historical
+   *   reasons.
    *
    *   Available properties are @increase-x-height, @no-stem-darkening
    *   (experimental), @darkening-parameters (experimental), @warping
@@ -74,18 +74,18 @@
    *   Controlling the CFF driver module.
    *
    * @description:
-   *   While FreeType's CFF driver doesn't expose API functions by itself,
-   *   it is possible to control its behaviour with @FT_Property_Set and
+   *   While FreeType's CFF driver doesn't expose API functions by itself, it
+   *   is possible to control its behaviour with @FT_Property_Set and
    *   @FT_Property_Get.
    *
-   *   The CFF driver's module name is `cff'.
+   *   The CFF driver's module name is 'cff'.
    *
    *   Available properties are @hinting-engine, @no-stem-darkening,
    *   @darkening-parameters, and @random-seed, as documented in the
    *   @properties section.
    *
    *
-   *   *Hinting* *and* *antialiasing* *principles* *of* *the* *new* *engine*
+   *   **Hinting and antialiasing principles of the new engine**
    *
    *   The rasterizer is positioning horizontal features (e.g., ascender
    *   height & x-height, or crossbars) on the pixel grid and minimizing the
@@ -93,35 +93,34 @@
    *   features (vertical stems) on the pixel grid without hinting, thus
    *   representing the stem position and weight accurately.  Sometimes the
    *   vertical stems may be only partially black.  In this context,
-   *   `antialiasing' means that stems are not positioned exactly on pixel
+   *   'antialiasing' means that stems are not positioned exactly on pixel
    *   borders, causing a fuzzy appearance.
    *
    *   There are two principles behind this approach.
    *
-   *   1) No hinting in the horizontal direction: Unlike `superhinted'
+   *   1) No hinting in the horizontal direction: Unlike 'superhinted'
    *   TrueType, which changes glyph widths to accommodate regular
-   *   inter-glyph spacing, Adobe's approach is `faithful to the design' in
-   *   representing both the glyph width and the inter-glyph spacing
-   *   designed for the font.  This makes the screen display as close as it
-   *   can be to the result one would get with infinite resolution, while
-   *   preserving what is considered the key characteristics of each glyph.
-   *   Note that the distances between unhinted and grid-fitted positions at
-   *   small sizes are comparable to kerning values and thus would be
-   *   noticeable (and distracting) while reading if hinting were applied.
+   *   inter-glyph spacing, Adobe's approach is 'faithful to the design' in
+   *   representing both the glyph width and the inter-glyph spacing designed
+   *   for the font.  This makes the screen display as close as it can be to
+   *   the result one would get with infinite resolution, while preserving
+   *   what is considered the key characteristics of each glyph.  Note that
+   *   the distances between unhinted and grid-fitted positions at small
+   *   sizes are comparable to kerning values and thus would be noticeable
+   *   (and distracting) while reading if hinting were applied.
    *
    *   One of the reasons to not hint horizontally is antialiasing for LCD
-   *   screens: The pixel geometry of modern displays supplies three
-   *   vertical subpixels as the eye moves horizontally across each visible
-   *   pixel.  On devices where we can be certain this characteristic is
-   *   present a rasterizer can take advantage of the subpixels to add
-   *   increments of weight.  In Western writing systems this turns out to
-   *   be the more critical direction anyway; the weights and spacing of
-   *   vertical stems (see above) are central to Armenian, Cyrillic, Greek,
-   *   and Latin type designs.  Even when the rasterizer uses greyscale
-   *   antialiasing instead of color (a necessary compromise when one
-   *   doesn't know the screen characteristics), the unhinted vertical
-   *   features preserve the design's weight and spacing much better than
-   *   aliased type would.
+   *   screens: The pixel geometry of modern displays supplies three vertical
+   *   subpixels as the eye moves horizontally across each visible pixel.  On
+   *   devices where we can be certain this characteristic is present a
+   *   rasterizer can take advantage of the subpixels to add increments of
+   *   weight.  In Western writing systems this turns out to be the more
+   *   critical direction anyway; the weights and spacing of vertical stems
+   *   (see above) are central to Armenian, Cyrillic, Greek, and Latin type
+   *   designs.  Even when the rasterizer uses greyscale antialiasing instead
+   *   of color (a necessary compromise when one doesn't know the screen
+   *   characteristics), the unhinted vertical features preserve the design's
+   *   weight and spacing much better than aliased type would.
    *
    *   2) Alignment in the vertical direction: Weights and spacing along the
    *   y~axis are less critical; what is much more important is the visual
@@ -132,16 +131,16 @@
    *
    *   On the technical side, horizontal alignment zones for ascender,
    *   x-height, and other important height values (traditionally called
-   *   `blue zones') as defined in the font are positioned independently,
-   *   each being rounded to the nearest pixel edge, taking care of
-   *   overshoot suppression at small sizes, stem darkening, and scaling.
+   *   'blue zones') as defined in the font are positioned independently,
+   *   each being rounded to the nearest pixel edge, taking care of overshoot
+   *   suppression at small sizes, stem darkening, and scaling.
    *
    *   Hstems (this is, hint values defined in the font to help align
    *   horizontal features) that fall within a blue zone are said to be
-   *   `captured' and are aligned to that zone.  Uncaptured stems are moved
+   *   'captured' and are aligned to that zone.  Uncaptured stems are moved
    *   in one of four ways, top edge up or down, bottom edge up or down.
-   *   Unless there are conflicting hstems, the smallest movement is taken
-   *   to minimize distortion.
+   *   Unless there are conflicting hstems, the smallest movement is taken to
+   *   minimize distortion.
    *
    */
 
@@ -158,13 +157,13 @@
    *   Controlling the PCF driver module.
    *
    * @description:
-   *   While FreeType's PCF driver doesn't expose API functions by itself,
-   *   it is possible to control its behaviour with @FT_Property_Set and
+   *   While FreeType's PCF driver doesn't expose API functions by itself, it
+   *   is possible to control its behaviour with @FT_Property_Set and
    *   @FT_Property_Get.  Right now, there is a single property
    *   @no-long-family-names available if FreeType is compiled with
    *   PCF_CONFIG_OPTION_LONG_FAMILY_NAMES.
    *
-   *   The PCF driver's module name is `pcf'.
+   *   The PCF driver's module name is 'pcf'.
    *
    */
 
@@ -187,15 +186,15 @@
    *   Behind the scenes, both drivers use the Adobe CFF engine for hinting;
    *   however, the used properties must be specified separately.
    *
-   *   The Type~1 driver's module name is `type1'; the CID driver's module
-   *   name is `t1cid'.
+   *   The Type~1 driver's module name is 'type1'; the CID driver's module
+   *   name is 't1cid'.
    *
    *   Available properties are @hinting-engine, @no-stem-darkening,
    *   @darkening-parameters, and @random-seed, as documented in the
    *   @properties section.
    *
-   *   Please see the @cff_driver section for more details on the new
-   *   hinting engine.
+   *   Please see the @cff_driver section for more details on the new hinting
+   *   engine.
    *
    */
 
@@ -217,7 +216,7 @@
    *   and @FT_Property_Get.  The following lists the available properties
    *   together with the necessary macros and structures.
    *
-   *   The TrueType driver's module name is `truetype'.
+   *   The TrueType driver's module name is 'truetype'.
    *
    *   A single property @interpreter-version is available, as documented in
    *   the @properties section.
@@ -225,36 +224,36 @@
    *   We start with a list of definitions, kindly provided by Greg
    *   Hitchcock.
    *
-   *   _Bi-Level_ _Rendering_
+   *   _Bi-Level Rendering_
    *
    *   Monochromatic rendering, exclusively used in the early days of
    *   TrueType by both Apple and Microsoft.  Microsoft's GDI interface
    *   supported hinting of the right-side bearing point, such that the
    *   advance width could be non-linear.  Most often this was done to
    *   achieve some level of glyph symmetry.  To enable reasonable
-   *   performance (e.g., not having to run hinting on all glyphs just to
-   *   get the widths) there was a bit in the head table indicating if the
-   *   side bearing was hinted, and additional tables, `hdmx' and `LTSH', to
-   *   cache hinting widths across multiple sizes and device aspect ratios.
+   *   performance (e.g., not having to run hinting on all glyphs just to get
+   *   the widths) there was a bit in the head table indicating if the side
+   *   bearing was hinted, and additional tables, 'hdmx' and 'LTSH', to cache
+   *   hinting widths across multiple sizes and device aspect ratios.
    *
-   *   _Font_ _Smoothing_
+   *   _Font Smoothing_
    *
    *   Microsoft's GDI implementation of anti-aliasing.  Not traditional
    *   anti-aliasing as the outlines were hinted before the sampling.  The
    *   widths matched the bi-level rendering.
    *
-   *   _ClearType_ _Rendering_
+   *   _ClearType Rendering_
    *
    *   Technique that uses physical subpixels to improve rendering on LCD
    *   (and other) displays.  Because of the higher resolution, many methods
-   *   of improving symmetry in glyphs through hinting the right-side
-   *   bearing were no longer necessary.  This lead to what GDI calls
-   *   `natural widths' ClearType, see
-   *   http://www.beatstamm.com/typography/RTRCh4.htm#Sec21.  Since hinting
+   *   of improving symmetry in glyphs through hinting the right-side bearing
+   *   were no longer necessary.  This lead to what GDI calls 'natural
+   *   widths' ClearType, see
+   *   http://rastertragedy.com/RTRCh4.htm#Sec21.  Since hinting
    *   has extra resolution, most non-linearity went away, but it is still
    *   possible for hints to change the advance widths in this mode.
    *
-   *   _ClearType_ _Compatible_ _Widths_
+   *   _ClearType Compatible Widths_
    *
    *   One of the earliest challenges with ClearType was allowing the
    *   implementation in GDI to be selected without requiring all UI and
@@ -263,41 +262,41 @@
    *   to determine the width in bi-level rendering, and then re-run in
    *   ClearType, with the difference in widths being absorbed in the font
    *   hints for ClearType (mostly in the white space of hints); see
-   *   http://www.beatstamm.com/typography/RTRCh4.htm#Sec20.  Somewhat by
+   *   http://rastertragedy.com/RTRCh4.htm#Sec20.  Somewhat by
    *   definition, compatible width ClearType allows for non-linear widths,
    *   but only when the bi-level version has non-linear widths.
    *
-   *   _ClearType_ _Subpixel_ _Positioning_
+   *   _ClearType Subpixel Positioning_
    *
    *   One of the nice benefits of ClearType is the ability to more crisply
    *   display fractional widths; unfortunately, the GDI model of integer
    *   bitmaps did not support this.  However, the WPF and Direct Write
-   *   frameworks do support fractional widths.  DWrite calls this `natural
-   *   mode', not to be confused with GDI's `natural widths'.  Subpixel
+   *   frameworks do support fractional widths.  DWrite calls this 'natural
+   *   mode', not to be confused with GDI's 'natural widths'.  Subpixel
    *   positioning, in the current implementation of Direct Write,
    *   unfortunately does not support hinted advance widths, see
-   *   http://www.beatstamm.com/typography/RTRCh4.htm#Sec22.  Note that the
+   *   http://rastertragedy.com/RTRCh4.htm#Sec22.  Note that the
    *   TrueType interpreter fully allows the advance width to be adjusted in
    *   this mode, just the DWrite client will ignore those changes.
    *
-   *   _ClearType_ _Backward_ _Compatibility_
+   *   _ClearType Backward Compatibility_
    *
    *   This is a set of exceptions made in the TrueType interpreter to
    *   minimize hinting techniques that were problematic with the extra
    *   resolution of ClearType; see
-   *   http://www.beatstamm.com/typography/RTRCh4.htm#Sec1 and
+   *   http://rastertragedy.com/RTRCh4.htm#Sec1 and
    *   https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx.
-   *   This technique is not to be confused with ClearType compatible
-   *   widths.  ClearType backward compatibility has no direct impact on
-   *   changing advance widths, but there might be an indirect impact on
-   *   disabling some deltas.  This could be worked around in backward
-   *   compatibility mode.
+   *   This technique is not to be confused with ClearType compatible widths.
+   *   ClearType backward compatibility has no direct impact on changing
+   *   advance widths, but there might be an indirect impact on disabling
+   *   some deltas.  This could be worked around in backward compatibility
+   *   mode.
    *
-   *   _Native_ _ClearType_ _Mode_
+   *   _Native ClearType Mode_
    *
-   *   (Not to be confused with `natural widths'.)  This mode removes all
-   *   the exceptions in the TrueType interpreter when running with
-   *   ClearType.  Any issues on widths would still apply, though.
+   *   (Not to be confused with 'natural widths'.)  This mode removes all the
+   *   exceptions in the TrueType interpreter when running with ClearType.
+   *   Any issues on widths would still apply, though.
    *
    */
 
@@ -328,8 +327,8 @@
    *   FT_HINTING_XXX
    *
    * @description:
-   *   A list of constants used for the @hinting-engine property to
-   *   select the hinting engine for CFF, Type~1, and CID fonts.
+   *   A list of constants used for the @hinting-engine property to select
+   *   the hinting engine for CFF, Type~1, and CID fonts.
    *
    * @values:
    *   FT_HINTING_FREETYPE ::
@@ -356,45 +355,46 @@
    *   hinting-engine
    *
    * @description:
-   *   Thanks to Adobe, which contributed a new hinting (and parsing)
-   *   engine, an application can select between `freetype' and `adobe' if
-   *   compiled with CFF_CONFIG_OPTION_OLD_ENGINE.  If this configuration
-   *   macro isn't defined, `hinting-engine' does nothing.
+   *   Thanks to Adobe, which contributed a new hinting (and parsing) engine,
+   *   an application can select between 'freetype' and 'adobe' if compiled
+   *   with `CFF_CONFIG_OPTION_OLD_ENGINE`.  If this configuration macro
+   *   isn't defined, 'hinting-engine' does nothing.
    *
    *   The same holds for the Type~1 and CID modules if compiled with
-   *   T1_CONFIG_OPTION_OLD_ENGINE.
+   *   `T1_CONFIG_OPTION_OLD_ENGINE`.
    *
-   *   For the `cff' module, the default engine is `freetype' if
-   *   CFF_CONFIG_OPTION_OLD_ENGINE is defined, and `adobe' otherwise.
+   *   For the 'cff' module, the default engine is 'freetype' if
+   *   `CFF_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe' otherwise.
    *
-   *   For both the `type1' and `t1cid' modules, the default engine is
-   *   `freetype' if T1_CONFIG_OPTION_OLD_ENGINE is defined, and `adobe'
+   *   For both the 'type1' and 't1cid' modules, the default engine is
+   *   'freetype' if `T1_CONFIG_OPTION_OLD_ENGINE` is defined, and 'adobe'
    *   otherwise.
    *
-   *   The following example code demonstrates how to select Adobe's hinting
-   *   engine for the `cff' module (omitting the error handling).
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   This property can be set via the `FREETYPE_PROPERTIES` environment
+   *   variable (using values 'adobe' or 'freetype').
    *
-   *   {
+   * @example:
+   *   The following example code demonstrates how to select Adobe's hinting
+   *   engine for the 'cff' module (omitting the error handling).
+   *
+   *   ```
    *     FT_Library  library;
-   *     FT_UInt     hinting_engine = FT_CFF_HINTING_ADOBE;
+   *     FT_UInt     hinting_engine = FT_HINTING_ADOBE;
    *
    *
    *     FT_Init_FreeType( &library );
    *
    *     FT_Property_Set( library, "cff",
    *                               "hinting-engine", &hinting_engine );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values `adobe' or `freetype').
+   *   ```
    *
    * @since:
-   *   2.4.12 (for `cff' module)
+   *   2.4.12 (for 'cff' module)
    *
-   *   2.9 (for `type1' and `t1cid' modules)
+   *   2.9 (for 'type1' and 't1cid' modules)
    *
    */
 
@@ -405,10 +405,10 @@
    *   no-stem-darkening
    *
    * @description:
-   *   All glyphs that pass through the auto-hinter will be emboldened
-   *   unless this property is set to TRUE.  The same is true for the CFF,
-   *   Type~1, and CID font modules if the `Adobe' engine is selected (which
-   *   is the default).
+   *   All glyphs that pass through the auto-hinter will be emboldened unless
+   *   this property is set to TRUE.  The same is true for the CFF, Type~1,
+   *   and CID font modules if the 'Adobe' engine is selected (which is the
+   *   default).
    *
    *   Stem darkening emboldens glyphs at smaller sizes to make them more
    *   readable on common low-DPI screens when using linear alpha blending
@@ -419,30 +419,38 @@
    *   Gamma correction essentially lightens fonts since shades of grey are
    *   shifted to higher pixel values (=~higher brightness) to match the
    *   original intention to the reality of our screens.  The side-effect is
-   *   that glyphs `thin out'.  Mac OS~X and Adobe's proprietary font
+   *   that glyphs 'thin out'.  Mac OS~X and Adobe's proprietary font
    *   rendering library implement a counter-measure: stem darkening at
    *   smaller sizes where shades of gray dominate.  By emboldening a glyph
    *   slightly in relation to its pixel size, individual pixels get higher
-   *   coverage of filled-in outlines and are therefore `blacker'.  This
-   *   counteracts the `thinning out' of glyphs, making text remain readable
+   *   coverage of filled-in outlines and are therefore 'blacker'.  This
+   *   counteracts the 'thinning out' of glyphs, making text remain readable
    *   at smaller sizes.
    *
    *   By default, the Adobe engines for CFF, Type~1, and CID fonts darken
    *   stems at smaller sizes, regardless of hinting, to enhance contrast.
    *   Setting this property, stem darkening gets switched off.
    *
-   *   For the auto-hinter, stem-darkening is experimental currently and
-   *   thus switched off by default (this is, `no-stem-darkening' is set to
-   *   TRUE by default).  Total consistency with the CFF driver is not
-   *   achieved right now because the emboldening method differs and glyphs
-   *   must be scaled down on the Y-axis to keep outline points inside their
+   *   For the auto-hinter, stem-darkening is experimental currently and thus
+   *   switched off by default (this is, `no-stem-darkening` is set to TRUE
+   *   by default).  Total consistency with the CFF driver is not achieved
+   *   right now because the emboldening method differs and glyphs must be
+   *   scaled down on the Y-axis to keep outline points inside their
    *   precomputed blue zones.  The smaller the size (especially 9ppem and
    *   down), the higher the loss of emboldening versus the CFF driver.
    *
-   *   Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is
-   *   set.
+   *   Note that stem darkening is never applied if @FT_LOAD_NO_SCALE is set.
+   *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
    *
-   *   {
+   *   This property can be set via the `FREETYPE_PROPERTIES` environment
+   *   variable (using values 1 and 0 for 'on' and 'off', respectively).  It
+   *   can also be set per face using @FT_Face_Properties with
+   *   @FT_PARAM_TAG_STEM_DARKENING.
+   *
+   * @example:
+   *   ```
    *     FT_Library  library;
    *     FT_Bool     no_stem_darkening = TRUE;
    *
@@ -451,22 +459,14 @@
    *
    *     FT_Property_Set( library, "cff",
    *                               "no-stem-darkening", &no_stem_darkening );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values 1 and 0 for `on' and `off', respectively).
-   *   It can also be set per face using @FT_Face_Properties with
-   *   @FT_PARAM_TAG_STEM_DARKENING.
+   *   ```
    *
    * @since:
-   *   2.4.12 (for `cff' module)
+   *   2.4.12 (for 'cff' module)
    *
-   *   2.6.2 (for `autofitter' module)
+   *   2.6.2 (for 'autofitter' module)
    *
-   *   2.9 (for `type1' and `t1cid' modules)
+   *   2.9 (for 'type1' and 't1cid' modules)
    *
    */
 
@@ -478,24 +478,47 @@
    *
    * @description:
    *   By default, the Adobe hinting engine, as used by the CFF, Type~1, and
-   *   CID font drivers, darkens stems as follows (if the
-   *   `no-stem-darkening' property isn't set):
+   *   CID font drivers, darkens stems as follows (if the `no-stem-darkening`
+   *   property isn't set):
    *
-   *   {
+   *   ```
    *     stem width <= 0.5px:   darkening amount = 0.4px
    *     stem width  = 1px:     darkening amount = 0.275px
    *     stem width  = 1.667px: darkening amount = 0.275px
    *     stem width >= 2.333px: darkening amount = 0px
-   *   }
+   *   ```
    *
    *   and piecewise linear in-between.  At configuration time, these four
    *   control points can be set with the macro
-   *   `CFF_CONFIG_OPTION_DARKENING_PARAMETERS'; the CFF, Type~1, and CID
+   *   `CFF_CONFIG_OPTION_DARKENING_PARAMETERS`; the CFF, Type~1, and CID
    *   drivers share these values.  At runtime, the control points can be
-   *   changed using the `darkening-parameters' property, as the following
-   *   example demonstrates for the Type~1 driver.
+   *   changed using the `darkening-parameters` property (see the example
+   *   below that demonstrates this for the Type~1 driver).
+   *
+   *   The x~values give the stem width, and the y~values the darkening
+   *   amount.  The unit is 1000th of pixels.  All coordinate values must be
+   *   positive; the x~values must be monotonically increasing; the y~values
+   *   must be monotonically decreasing and smaller than or equal to 500
+   *   (corresponding to half a pixel); the slope of each linear piece must
+   *   be shallower than -1 (e.g., -.4).
+   *
+   *   The auto-hinter provides this property, too, as an experimental
+   *   feature.  See @no-stem-darkening for more.
    *
-   *   {
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   This property can be set via the `FREETYPE_PROPERTIES` environment
+   *   variable, using eight comma-separated integers without spaces.  Here
+   *   the above example, using `\` to break the line for readability.
+   *
+   *   ```
+   *     FREETYPE_PROPERTIES=\
+   *     type1:darkening-parameters=500,300,1000,200,1500,100,2000,0
+   *   ```
+   *
+   * @example:
+   *   ```
    *     FT_Library  library;
    *     FT_Int      darken_params[8] = {  500, 300,   // x1, y1
    *                                      1000, 200,   // x2, y2
@@ -507,36 +530,14 @@
    *
    *     FT_Property_Set( library, "type1",
    *                               "darkening-parameters", darken_params );
-   *   }
-   *
-   *   The x~values give the stem width, and the y~values the darkening
-   *   amount.  The unit is 1000th of pixels.  All coordinate values must be
-   *   positive; the x~values must be monotonically increasing; the
-   *   y~values must be monotonically decreasing and smaller than or
-   *   equal to 500 (corresponding to half a pixel); the slope of each
-   *   linear piece must be shallower than -1 (e.g., -.4).
-   *
-   *   The auto-hinter provides this property, too, as an experimental
-   *   feature.  See @no-stem-darkening for more.
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable, using eight comma-separated integers without spaces.  Here
-   *   the above example, using `\' to break the line for readability.
-   *
-   *   {
-   *     FREETYPE_PROPERTIES=\
-   *     type1:darkening-parameters=500,300,1000,200,1500,100,2000,0
-   *   }
+   *   ```
    *
    * @since:
-   *   2.5.1 (for `cff' module)
+   *   2.5.1 (for 'cff' module)
    *
-   *   2.6.2 (for `autofitter' module)
+   *   2.6.2 (for 'autofitter' module)
    *
-   *   2.9 (for `type1' and `t1cid' modules)
+   *   2.9 (for 'type1' and 't1cid' modules)
    *
    */
 
@@ -547,29 +548,29 @@
    *   random-seed
    *
    * @description:
-   *   By default, the seed value for the CFF `random' operator and the
-   *   similar `0 28 callothersubr pop' command for the Type~1 and CID
+   *   By default, the seed value for the CFF 'random' operator and the
+   *   similar '0 28 callothersubr pop' command for the Type~1 and CID
    *   drivers is set to a random value.  However, mainly for debugging
-   *   purposes, it is often necessary to use a known value as a seed so
-   *   that the pseudo-random number sequences generated by `random' are
+   *   purposes, it is often necessary to use a known value as a seed so that
+   *   the pseudo-random number sequences generated by 'random' are
    *   repeatable.
    *
-   *   The `random-seed' property does that.  Its argument is a signed 32bit
+   *   The `random-seed` property does that.  Its argument is a signed 32bit
    *   integer; if the value is zero or negative, the seed given by the
-   *   `intitialRandomSeed' private DICT operator in a CFF file gets used
-   *   (or a default value if there is no such operator).  If the value is
-   *   positive, use it instead of `initialRandomSeed', which is
-   *   consequently ignored.
+   *   `intitialRandomSeed` private DICT operator in a CFF file gets used (or
+   *   a default value if there is no such operator).  If the value is
+   *   positive, use it instead of `initialRandomSeed`, which is consequently
+   *   ignored.
    *
    * @note:
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
+   *   This property can be set via the `FREETYPE_PROPERTIES` environment
    *   variable.  It can also be set per face using @FT_Face_Properties with
    *   @FT_PARAM_TAG_RANDOM_SEED.
    *
    * @since:
-   *   2.8 (for `cff' module)
+   *   2.8 (for 'cff' module)
    *
-   *   2.9 (for `type1' and `t1cid' modules)
+   *   2.9 (for 'type1' and 't1cid' modules)
    *
    */
 
@@ -580,21 +581,28 @@
    *   no-long-family-names
    *
    * @description:
-   *   If PCF_CONFIG_OPTION_LONG_FAMILY_NAMES is active while compiling
+   *   If `PCF_CONFIG_OPTION_LONG_FAMILY_NAMES` is active while compiling
    *   FreeType, the PCF driver constructs long family names.
    *
-   *   There are many PCF fonts just called `Fixed' which look completely
+   *   There are many PCF fonts just called 'Fixed' which look completely
    *   different, and which have nothing to do with each other.  When
-   *   selecting `Fixed' in KDE or Gnome one gets results that appear rather
-   *   random, the style changes often if one changes the size and one
-   *   cannot select some fonts at all.  The improve this situation, the PCF
-   *   module prepends the foundry name (plus a space) to the family name.
-   *   It also checks whether there are `wide' characters; all put together,
-   *   family names like `Sony Fixed' or `Misc Fixed Wide' are constructed.
+   *   selecting 'Fixed' in KDE or Gnome one gets results that appear rather
+   *   random, the style changes often if one changes the size and one cannot
+   *   select some fonts at all.  The improve this situation, the PCF module
+   *   prepends the foundry name (plus a space) to the family name.  It also
+   *   checks whether there are 'wide' characters; all put together, family
+   *   names like 'Sony Fixed' or 'Misc Fixed Wide' are constructed.
+   *
+   *   If `no-long-family-names` is set, this feature gets switched off.
    *
-   *   If `no-long-family-names' is set, this feature gets switched off.
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
    *
-   *   {
+   *   This property can be set via the `FREETYPE_PROPERTIES` environment
+   *   variable (using values 1 and 0 for 'on' and 'off', respectively).
+   *
+   * @example:
+   *   ```
    *     FT_Library  library;
    *     FT_Bool     no_long_family_names = TRUE;
    *
@@ -604,13 +612,7 @@
    *     FT_Property_Set( library, "pcf",
    *                               "no-long-family-names",
    *                               &no_long_family_names );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values 1 and 0 for `on' and `off', respectively).
+   *   ```
    *
    * @since:
    *   2.8
@@ -626,8 +628,8 @@
    *   A list of constants used for the @interpreter-version property to
    *   select the hinting engine for Truetype fonts.
    *
-   *   The numeric value in the constant names represents the version
-   *   number as returned by the `GETINFO' bytecode instruction.
+   *   The numeric value in the constant names represents the version number
+   *   as returned by the 'GETINFO' bytecode instruction.
    *
    * @values:
    *   TT_INTERPRETER_VERSION_35 ::
@@ -638,38 +640,37 @@
    *     Version~38 corresponds to MS rasterizer v.1.9; it is roughly
    *     equivalent to the hinting provided by DirectWrite ClearType (as can
    *     be found, for example, in the Internet Explorer~9 running on
-   *     Windows~7).  It is used in FreeType to select the `Infinality'
-   *     subpixel hinting code.  The code may be removed in a future
-   *     version.
+   *     Windows~7).  It is used in FreeType to select the 'Infinality'
+   *     subpixel hinting code.  The code may be removed in a future version.
    *
    *   TT_INTERPRETER_VERSION_40 ::
    *     Version~40 corresponds to MS rasterizer v.2.1; it is roughly
    *     equivalent to the hinting provided by DirectWrite ClearType (as can
    *     be found, for example, in Microsoft's Edge Browser on Windows~10).
-   *     It is used in FreeType to select the `minimal' subpixel hinting
+   *     It is used in FreeType to select the 'minimal' subpixel hinting
    *     code, a stripped-down and higher performance version of the
-   *     `Infinality' code.
+   *     'Infinality' code.
    *
    * @note:
-   *   This property controls the behaviour of the bytecode interpreter
-   *   and thus how outlines get hinted.  It does *not* control how glyph
-   *   get rasterized!  In particular, it does not control subpixel color
+   *   This property controls the behaviour of the bytecode interpreter and
+   *   thus how outlines get hinted.  It does **not** control how glyph get
+   *   rasterized!  In particular, it does not control subpixel color
    *   filtering.
    *
    *   If FreeType has not been compiled with the configuration option
-   *   TT_CONFIG_OPTION_SUBPIXEL_HINTING, selecting version~38 or~40 causes
-   *   an `FT_Err_Unimplemented_Feature' error.
+   *   `TT_CONFIG_OPTION_SUBPIXEL_HINTING`, selecting version~38 or~40 causes
+   *   an `FT_Err_Unimplemented_Feature` error.
    *
-   *   Depending on the graphics framework, Microsoft uses different
-   *   bytecode and rendering engines.  As a consequence, the version
-   *   numbers returned by a call to the `GETINFO' bytecode instruction are
-   *   more convoluted than desired.
+   *   Depending on the graphics framework, Microsoft uses different bytecode
+   *   and rendering engines.  As a consequence, the version numbers returned
+   *   by a call to the 'GETINFO' bytecode instruction are more convoluted
+   *   than desired.
    *
-   *   Here are two tables that try to shed some light on the possible
-   *   values for the MS rasterizer engine, together with the additional
-   *   features introduced by it.
+   *   Here are two tables that try to shed some light on the possible values
+   *   for the MS rasterizer engine, together with the additional features
+   *   introduced by it.
    *
-   *   {
+   *   ```
    *     GETINFO framework               version feature
    *     -------------------------------------------------------------------
    *         3   GDI (Win 3.1),            v1.0  16-bit, first version
@@ -692,15 +693,15 @@
    *        40   GDI+ (after Win 7),       v2.1  Y-direction ClearType flag
    *             DWrite (Win 8)                    in GETINFO opcode,
    *                                             Gray ClearType
-   *   }
+   *   ```
    *
-   *   The `version' field gives a rough orientation only, since some
+   *   The 'version' field gives a rough orientation only, since some
    *   applications provided certain features much earlier (as an example,
    *   Microsoft Reader used subpixel and Y-direction ClearType already in
    *   Windows 2000).  Similarly, updates to a given framework might include
    *   improved hinting support.
    *
-   *   {
+   *   ```
    *      version   sampling          rendering        comment
    *               x        y       x           y
    *     --------------------------------------------------------------
@@ -710,38 +711,38 @@
    *       v1.9   high    high    color-filter  gray   Color ClearType
    *       v2.1   high    normal  gray          B/W    Gray ClearType
    *       v2.1   high    high    gray          gray   Gray ClearType
-   *   }
+   *   ```
    *
    *   Color and Gray ClearType are the two available variants of
-   *   `Y-direction ClearType', meaning grayscale rasterization along the
+   *   'Y-direction ClearType', meaning grayscale rasterization along the
    *   Y-direction; the name used in the TrueType specification for this
-   *   feature is `symmetric smoothing'.  `Classic ClearType' is the
-   *   original algorithm used before introducing a modified version in
-   *   Win~XP.  Another name for v1.6's grayscale rendering is `font
-   *   smoothing', and `Color ClearType' is sometimes also called `DWrite
-   *   ClearType'.  To differentiate between today's Color ClearType and the
-   *   earlier ClearType variant with B/W rendering along the vertical axis,
-   *   the latter is sometimes called `GDI ClearType'.
+   *   feature is 'symmetric smoothing'.  'Classic ClearType' is the original
+   *   algorithm used before introducing a modified version in Win~XP.
+   *   Another name for v1.6's grayscale rendering is 'font smoothing', and
+   *   'Color ClearType' is sometimes also called 'DWrite ClearType'.  To
+   *   differentiate between today's Color ClearType and the earlier
+   *   ClearType variant with B/W rendering along the vertical axis, the
+   *   latter is sometimes called 'GDI ClearType'.
    *
-   *   `Normal' and `high' sampling describe the (virtual) resolution to
-   *   access the rasterized outline after the hinting process.  `Normal'
+   *   'Normal' and 'high' sampling describe the (virtual) resolution to
+   *   access the rasterized outline after the hinting process.  'Normal'
    *   means 1 sample per grid line (i.e., B/W).  In the current Microsoft
-   *   implementation, `high' means an extra virtual resolution of 16x16 (or
-   *   16x1) grid lines per pixel for bytecode instructions like `MIRP'.
+   *   implementation, 'high' means an extra virtual resolution of 16x16 (or
+   *   16x1) grid lines per pixel for bytecode instructions like 'MIRP'.
    *   After hinting, these 16 grid lines are mapped to 6x5 (or 6x1) grid
    *   lines for color filtering if Color ClearType is activated.
    *
-   *   Note that `Gray ClearType' is essentially the same as v1.6's
-   *   grayscale rendering.  However, the GETINFO instruction handles it
-   *   differently: v1.6 returns bit~12 (hinting for grayscale), while v2.1
-   *   returns bits~13 (hinting for ClearType), 18 (symmetrical smoothing),
-   *   and~19 (Gray ClearType).  Also, this mode respects bits 2 and~3 for
-   *   the version~1 gasp table exclusively (like Color ClearType), while
-   *   v1.6 only respects the values of version~0 (bits 0 and~1).
+   *   Note that 'Gray ClearType' is essentially the same as v1.6's grayscale
+   *   rendering.  However, the GETINFO instruction handles it differently:
+   *   v1.6 returns bit~12 (hinting for grayscale), while v2.1 returns
+   *   bits~13 (hinting for ClearType), 18 (symmetrical smoothing), and~19
+   *   (Gray ClearType).  Also, this mode respects bits 2 and~3 for the
+   *   version~1 gasp table exclusively (like Color ClearType), while v1.6
+   *   only respects the values of version~0 (bits 0 and~1).
    *
-   *   Keep in mind that the features of the above interpreter versions
-   *   might not map exactly to FreeType features or behavior because it is
-   *   a fundamentally different library with different internals.
+   *   Keep in mind that the features of the above interpreter versions might
+   *   not map exactly to FreeType features or behavior because it is a
+   *   fundamentally different library with different internals.
    *
    */
 #define TT_INTERPRETER_VERSION_35  35
@@ -755,33 +756,40 @@
    *   interpreter-version
    *
    * @description:
-   *   Currently, three versions are available, two representing the
-   *   bytecode interpreter with subpixel hinting support (old `Infinality'
-   *   code and new stripped-down and higher performance `minimal' code) and
-   *   one without, respectively.  The default is subpixel support if
-   *   TT_CONFIG_OPTION_SUBPIXEL_HINTING is defined, and no subpixel support
-   *   otherwise (since it isn't available then).
+   *   Currently, three versions are available, two representing the bytecode
+   *   interpreter with subpixel hinting support (old 'Infinality' code and
+   *   new stripped-down and higher performance 'minimal' code) and one
+   *   without, respectively.  The default is subpixel support if
+   *   `TT_CONFIG_OPTION_SUBPIXEL_HINTING` is defined, and no subpixel
+   *   support otherwise (since it isn't available then).
    *
    *   If subpixel hinting is on, many TrueType bytecode instructions behave
-   *   differently compared to B/W or grayscale rendering (except if `native
+   *   differently compared to B/W or grayscale rendering (except if 'native
    *   ClearType' is selected by the font).  Microsoft's main idea is to
    *   render at a much increased horizontal resolution, then sampling down
    *   the created output to subpixel precision.  However, many older fonts
-   *   are not suited to this and must be specially taken care of by
-   *   applying (hardcoded) tweaks in Microsoft's interpreter.
+   *   are not suited to this and must be specially taken care of by applying
+   *   (hardcoded) tweaks in Microsoft's interpreter.
    *
    *   Details on subpixel hinting and some of the necessary tweaks can be
    *   found in Greg Hitchcock's whitepaper at
-   *   `https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'.
-   *   Note that FreeType currently doesn't really `subpixel hint' (6x1, 6x2,
+   *   'https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx'.
+   *   Note that FreeType currently doesn't really 'subpixel hint' (6x1, 6x2,
    *   or 6x5 supersampling) like discussed in the paper.  Depending on the
    *   chosen interpreter, it simply ignores instructions on vertical stems
    *   to arrive at very similar results.
    *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   This property can be set via the `FREETYPE_PROPERTIES` environment
+   *   variable (using values '35', '38', or '40').
+   *
+   * @example:
    *   The following example code demonstrates how to deactivate subpixel
    *   hinting (omitting the error handling).
    *
-   *   {
+   *   ```
    *     FT_Library  library;
    *     FT_Face     face;
    *     FT_UInt     interpreter_version = TT_INTERPRETER_VERSION_35;
@@ -792,13 +800,7 @@
    *     FT_Property_Set( library, "truetype",
    *                               "interpreter-version",
    *                               &interpreter_version );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values `35', `38', or `40').
+   *   ```
    *
    * @since:
    *   2.5
@@ -811,7 +813,7 @@
    *   glyph-to-script-map
    *
    * @description:
-   *   *Experimental* *only*
+   *   **Experimental only**
    *
    *   The auto-hinter provides various script modules to hint glyphs.
    *   Examples of supported scripts are Latin or CJK.  Before a glyph is
@@ -819,25 +821,26 @@
    *   the script is then determined based on Unicode character ranges, see
    *   below.
    *
-   *   OpenType fonts, however, often provide much more glyphs than
-   *   character codes (small caps, superscripts, ligatures, swashes, etc.),
-   *   to be controlled by so-called `features'.  Handling OpenType features
-   *   can be quite complicated and thus needs a separate library on top of
+   *   OpenType fonts, however, often provide much more glyphs than character
+   *   codes (small caps, superscripts, ligatures, swashes, etc.), to be
+   *   controlled by so-called 'features'.  Handling OpenType features can be
+   *   quite complicated and thus needs a separate library on top of
    *   FreeType.
    *
    *   The mapping between glyph indices and scripts (in the auto-hinter
-   *   sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an
-   *   array with `num_glyphs' elements, as found in the font's @FT_Face
-   *   structure.  The `glyph-to-script-map' property returns a pointer to
-   *   this array, which can be modified as needed.  Note that the
-   *   modification should happen before the first glyph gets processed by
-   *   the auto-hinter so that the global analysis of the font shapes
-   *   actually uses the modified mapping.
+   *   sense, see the @FT_AUTOHINTER_SCRIPT_XXX values) is stored as an array
+   *   with `num_glyphs` elements, as found in the font's @FT_Face structure.
+   *   The `glyph-to-script-map` property returns a pointer to this array,
+   *   which can be modified as needed.  Note that the modification should
+   *   happen before the first glyph gets processed by the auto-hinter so
+   *   that the global analysis of the font shapes actually uses the modified
+   *   mapping.
    *
-   *   The following example code demonstrates how to access it (omitting
-   *   the error handling).
+   * @example:
+   *   The following example code demonstrates how to access it (omitting the
+   *   error handling).
    *
-   *   {
+   *   ```
    *     FT_Library                library;
    *     FT_Face                   face;
    *     FT_Prop_GlyphToScriptMap  prop;
@@ -854,7 +857,7 @@
    *     // adjust `prop.map' as needed right here
    *
    *     FT_Load_Glyph( face, ..., FT_LOAD_FORCE_AUTOHINT );
-   *   }
+   *   ```
    *
    * @since:
    *   2.4.11
@@ -868,7 +871,7 @@
    *   FT_AUTOHINTER_SCRIPT_XXX
    *
    * @description:
-   *   *Experimental* *only*
+   *   **Experimental only**
    *
    *   A list of constants used for the @glyph-to-script-map property to
    *   specify the script submodule the auto-hinter should use for hinting a
@@ -879,14 +882,14 @@
    *     Don't auto-hint this glyph.
    *
    *   FT_AUTOHINTER_SCRIPT_LATIN ::
-   *     Apply the latin auto-hinter.  For the auto-hinter, `latin' is a
-   *     very broad term, including Cyrillic and Greek also since characters
-   *     from those scripts share the same design constraints.
+   *     Apply the latin auto-hinter.  For the auto-hinter, 'latin' is a very
+   *     broad term, including Cyrillic and Greek also since characters from
+   *     those scripts share the same design constraints.
    *
    *     By default, characters from the following Unicode ranges are
    *     assigned to this submodule.
    *
-   *     {
+   *     ```
    *       U+0020 - U+007F  // Basic Latin (no control characters)
    *       U+00A0 - U+00FF  // Latin-1 Supplement (no control characters)
    *       U+0100 - U+017F  // Latin Extended-A
@@ -915,7 +918,7 @@
    *       U+FB00 - U+FB06  // Alphab. Present. Forms (Latin Ligatures)
    *      U+1D400 - U+1D7FF // Mathematical Alphanumeric Symbols
    *      U+1F100 - U+1F1FF // Enclosed Alphanumeric Supplement
-   *     }
+   *     ```
    *
    *   FT_AUTOHINTER_SCRIPT_CJK ::
    *     Apply the CJK auto-hinter, covering Chinese, Japanese, Korean, old
@@ -924,7 +927,7 @@
    *     By default, characters from the following Unicode ranges are
    *     assigned to this submodule.
    *
-   *     {
+   *     ```
    *       U+1100 - U+11FF  // Hangul Jamo
    *       U+2E80 - U+2EFF  // CJK Radicals Supplement
    *       U+2F00 - U+2FDF  // Kangxi Radicals
@@ -957,7 +960,7 @@
    *      U+2A700 - U+2B73F // CJK Unified Ideographs Extension C
    *      U+2B740 - U+2B81F // CJK Unified Ideographs Extension D
    *      U+2F800 - U+2FA1F // CJK Compatibility Ideographs Supplement
-   *     }
+   *     ```
    *
    *   FT_AUTOHINTER_SCRIPT_INDIC ::
    *     Apply the indic auto-hinter, covering all major scripts from the
@@ -967,7 +970,7 @@
    *     By default, characters from the following Unicode ranges are
    *     assigned to this submodule.
    *
-   *     {
+   *     ```
    *       U+0900 - U+0DFF  // Indic Range
    *       U+0F00 - U+0FFF  // Tibetan
    *       U+1900 - U+194F  // Limbu
@@ -975,7 +978,7 @@
    *       U+A800 - U+A82F  // Syloti Nagri
    *       U+ABC0 - U+ABFF  // Meetei Mayek
    *      U+11800 - U+118DF // Sharada
-   *     }
+   *     ```
    *
    *     Note that currently Indic support is rudimentary only, missing blue
    *     zone support.
@@ -996,7 +999,7 @@
    *   FT_Prop_GlyphToScriptMap
    *
    * @description:
-   *   *Experimental* *only*
+   *   **Experimental only**
    *
    *   The data exchange structure for the @glyph-to-script-map property.
    *
@@ -1018,15 +1021,26 @@
    *   fallback-script
    *
    * @description:
-   *   *Experimental* *only*
+   *   **Experimental only**
+   *
+   *   If no auto-hinter script module can be assigned to a glyph, a fallback
+   *   script gets assigned to it (see also the @glyph-to-script-map
+   *   property).  By default, this is @FT_AUTOHINTER_SCRIPT_CJK.  Using the
+   *   `fallback-script` property, this fallback value can be changed.
+   *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
    *
-   *   If no auto-hinter script module can be assigned to a glyph, a
-   *   fallback script gets assigned to it (see also the
-   *   @glyph-to-script-map property).  By default, this is
-   *   @FT_AUTOHINTER_SCRIPT_CJK.  Using the `fallback-script' property,
-   *   this fallback value can be changed.
+   *   It's important to use the right timing for changing this value: The
+   *   creation of the glyph-to-script map that eventually uses the fallback
+   *   script value gets triggered either by setting or reading a
+   *   face-specific property like @glyph-to-script-map, or by auto-hinting
+   *   any glyph from that face.  In particular, if you have already created
+   *   an @FT_Face structure but not loaded any glyph (using the
+   *   auto-hinter), a change of the fallback script will affect this face.
    *
-   *   {
+   * @example:
+   *   ```
    *     FT_Library  library;
    *     FT_UInt     fallback_script = FT_AUTOHINTER_SCRIPT_NONE;
    *
@@ -1035,18 +1049,7 @@
    *
    *     FT_Property_Set( library, "autofitter",
    *                               "fallback-script", &fallback_script );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   It's important to use the right timing for changing this value: The
-   *   creation of the glyph-to-script map that eventually uses the
-   *   fallback script value gets triggered either by setting or reading a
-   *   face-specific property like @glyph-to-script-map, or by auto-hinting
-   *   any glyph from that face.  In particular, if you have already created
-   *   an @FT_Face structure but not loaded any glyph (using the
-   *   auto-hinter), a change of the fallback script will affect this face.
+   *   ```
    *
    * @since:
    *   2.4.11
@@ -1060,21 +1063,33 @@
    *   default-script
    *
    * @description:
-   *   *Experimental* *only*
+   *   **Experimental only**
    *
-   *   If FreeType gets compiled with FT_CONFIG_OPTION_USE_HARFBUZZ to make
-   *   the HarfBuzz library access OpenType features for getting better
-   *   glyph coverages, this property sets the (auto-fitter) script to be
-   *   used for the default (OpenType) script data of a font's GSUB table.
-   *   Features for the default script are intended for all scripts not
-   *   explicitly handled in GSUB; an example is a `dlig' feature,
-   *   containing the combination of the characters `T', `E', and `L' to
-   *   form a `TEL' ligature.
+   *   If FreeType gets compiled with `FT_CONFIG_OPTION_USE_HARFBUZZ` to make
+   *   the HarfBuzz library access OpenType features for getting better glyph
+   *   coverages, this property sets the (auto-fitter) script to be used for
+   *   the default (OpenType) script data of a font's GSUB table.  Features
+   *   for the default script are intended for all scripts not explicitly
+   *   handled in GSUB; an example is a 'dlig' feature, containing the
+   *   combination of the characters 'T', 'E', and 'L' to form a 'TEL'
+   *   ligature.
    *
    *   By default, this is @FT_AUTOHINTER_SCRIPT_LATIN.  Using the
-   *   `default-script' property, this default value can be changed.
+   *   `default-script` property, this default value can be changed.
+   *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
    *
-   *   {
+   *   It's important to use the right timing for changing this value: The
+   *   creation of the glyph-to-script map that eventually uses the default
+   *   script value gets triggered either by setting or reading a
+   *   face-specific property like @glyph-to-script-map, or by auto-hinting
+   *   any glyph from that face.  In particular, if you have already created
+   *   an @FT_Face structure but not loaded any glyph (using the
+   *   auto-hinter), a change of the default script will affect this face.
+   *
+   * @example:
+   *   ```
    *     FT_Library  library;
    *     FT_UInt     default_script = FT_AUTOHINTER_SCRIPT_NONE;
    *
@@ -1083,18 +1098,7 @@
    *
    *     FT_Property_Set( library, "autofitter",
    *                               "default-script", &default_script );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   It's important to use the right timing for changing this value: The
-   *   creation of the glyph-to-script map that eventually uses the
-   *   default script value gets triggered either by setting or reading a
-   *   face-specific property like @glyph-to-script-map, or by auto-hinting
-   *   any glyph from that face.  In particular, if you have already created
-   *   an @FT_Face structure but not loaded any glyph (using the
-   *   auto-hinter), a change of the default script will affect this face.
+   *   ```
    *
    * @since:
    *   2.5.3
@@ -1108,13 +1112,20 @@
    *   increase-x-height
    *
    * @description:
-   *   For ppem values in the range 6~<= ppem <= `increase-x-height', round
-   *   up the font's x~height much more often than normally.  If the value
-   *   is set to~0, which is the default, this feature is switched off.  Use
+   *   For ppem values in the range 6~<= ppem <= `increase-x-height`, round
+   *   up the font's x~height much more often than normally.  If the value is
+   *   set to~0, which is the default, this feature is switched off.  Use
    *   this property to improve the legibility of small font sizes if
    *   necessary.
    *
-   *   {
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
+   *
+   *   Set this value right after calling @FT_Set_Char_Size, but before
+   *   loading any glyph (using the auto-hinter).
+   *
+   * @example:
+   *   ```
    *     FT_Library               library;
    *     FT_Face                  face;
    *     FT_Prop_IncreaseXHeight  prop;
@@ -1129,13 +1140,7 @@
    *
    *     FT_Property_Set( library, "autofitter",
    *                               "increase-x-height", &prop );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   Set this value right after calling @FT_Set_Char_Size, but before
-   *   loading any glyph (using the auto-hinter).
+   *   ```
    *
    * @since:
    *   2.4.11
@@ -1166,46 +1171,48 @@
    *   warping
    *
    * @description:
-   *   *Experimental* *only*
+   *   **Experimental only**
    *
-   *   If FreeType gets compiled with option AF_CONFIG_OPTION_USE_WARPER to
+   *   If FreeType gets compiled with option `AF_CONFIG_OPTION_USE_WARPER` to
    *   activate the warp hinting code in the auto-hinter, this property
    *   switches warping on and off.
    *
-   *   Warping only works in `normal' auto-hinting mode replacing it.
-   *   The idea of the code is to slightly scale and shift a glyph along
-   *   the non-hinted dimension (which is usually the horizontal axis) so
-   *   that as much of its segments are aligned (more or less) to the grid.
-   *   To find out a glyph's optimal scaling and shifting value, various
-   *   parameter combinations are tried and scored.
+   *   Warping only works in 'normal' auto-hinting mode replacing it.  The
+   *   idea of the code is to slightly scale and shift a glyph along the
+   *   non-hinted dimension (which is usually the horizontal axis) so that as
+   *   much of its segments are aligned (more or less) to the grid.  To find
+   *   out a glyph's optimal scaling and shifting value, various parameter
+   *   combinations are tried and scored.
+   *
+   *   By default, warping is off.
+   *
+   * @note:
+   *   This property can be used with @FT_Property_Get also.
    *
-   *   By default, warping is off.  The example below shows how to switch on
-   *   warping (omitting the error handling).
+   *   This property can be set via the `FREETYPE_PROPERTIES` environment
+   *   variable (using values 1 and 0 for 'on' and 'off', respectively).
+   *
+   *   The warping code can also change advance widths.  Have a look at the
+   *   `lsb_delta` and `rsb_delta` fields in the @FT_GlyphSlotRec structure
+   *   for details on improving inter-glyph distances while rendering.
    *
-   *   {
+   *   Since warping is a global property of the auto-hinter it is best to
+   *   change its value before rendering any face.  Otherwise, you should
+   *   reload all faces that get auto-hinted in 'normal' hinting mode.
+   *
+   * @example:
+   *   This example shows how to switch on warping (omitting the error
+   *   handling).
+   *
+   *   ```
    *     FT_Library  library;
    *     FT_Bool     warping = 1;
    *
    *
    *     FT_Init_FreeType( &library );
    *
-   *     FT_Property_Set( library, "autofitter",
-   *                               "warping", &warping );
-   *   }
-   *
-   * @note:
-   *   This property can be used with @FT_Property_Get also.
-   *
-   *   This property can be set via the `FREETYPE_PROPERTIES' environment
-   *   variable (using values 1 and 0 for `on' and `off', respectively).
-   *
-   *   The warping code can also change advance widths.  Have a look at the
-   *   `lsb_delta' and `rsb_delta' fields in the @FT_GlyphSlotRec structure
-   *   for details on improving inter-glyph distances while rendering.
-   *
-   *   Since warping is a global property of the auto-hinter it is best to
-   *   change its value before rendering any face.  Otherwise, you should
-   *   reload all faces that get auto-hinted in `normal' hinting mode.
+   *     FT_Property_Set( library, "autofitter", "warping", &warping );
+   *   ```
    *
    * @since:
    *   2.6
--- a/src/java.desktop/share/native/libfreetype/include/freetype/fterrdef.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/fterrdef.h	Thu May 09 16:09:39 2019 -0700
@@ -1,58 +1,57 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fterrdef.h                                                             */
-/*                                                                         */
-/*    FreeType error codes (specification).                                */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fterrdef.h
+ *
+ *   FreeType error codes (specification).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   error_code_values                                                   */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*   Error Code Values                                                   */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*   All possible error codes returned by FreeType functions.            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   The list below is taken verbatim from the file `fterrdef.h'         */
-  /*   (loaded automatically by including `FT_FREETYPE_H').  The first     */
-  /*   argument of the `FT_ERROR_DEF_' macro is the error label; by        */
-  /*   default, the prefix `FT_Err_' gets added so that you get error      */
-  /*   names like `FT_Err_Cannot_Open_Resource'.  The second argument is   */
-  /*   the error code, and the last argument an error string, which is not */
-  /*   used by FreeType.                                                   */
-  /*                                                                       */
-  /*   Within your application you should *only* use error names and       */
-  /*   *never* its numeric values!  The latter might (and actually do)     */
-  /*   change in forthcoming FreeType versions.                            */
-  /*                                                                       */
-  /*   Macro `FT_NOERRORDEF_' defines `FT_Err_Ok', which is always zero.   */
-  /*   See the `Error Enumerations' subsection how to automatically        */
-  /*   generate a list of error strings.                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *  error_code_values
+   *
+   * @title:
+   *  Error Code Values
+   *
+   * @abstract:
+   *  All possible error codes returned by FreeType functions.
+   *
+   * @description:
+   *  The list below is taken verbatim from the file `fterrdef.h` (loaded
+   *  automatically by including `FT_FREETYPE_H`).  The first argument of the
+   *  `FT_ERROR_DEF_` macro is the error label; by default, the prefix
+   *  `FT_Err_` gets added so that you get error names like
+   *  `FT_Err_Cannot_Open_Resource`.  The second argument is the error code,
+   *  and the last argument an error string, which is not used by FreeType.
+   *
+   *  Within your application you should **only** use error names and
+   *  **never** its numeric values!  The latter might (and actually do)
+   *  change in forthcoming FreeType versions.
+   *
+   *  Macro `FT_NOERRORDEF_` defines `FT_Err_Ok`, which is always zero.  See
+   *  the 'Error Enumerations' subsection how to automatically generate a
+   *  list of error strings.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Err_XXX                                                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Err_XXX
+   *
+   */
 
   /* generic errors */
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/fterrors.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/fterrors.h	Thu May 09 16:09:39 2019 -0700
@@ -1,110 +1,120 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fterrors.h                                                             */
-/*                                                                         */
-/*    FreeType error code handling (specification).                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fterrors.h
+ *
+ *   FreeType error code handling (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   error_enumerations                                                  */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*   Error Enumerations                                                  */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*   How to handle errors and error strings.                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   The header file `fterrors.h' (which is automatically included by    */
-  /*   `freetype.h' defines the handling of FreeType's enumeration         */
-  /*   constants.  It can also be used to generate error message strings   */
-  /*   with a small macro trick explained below.                           */
-  /*                                                                       */
-  /*   *Error* *Formats*                                                   */
-  /*                                                                       */
-  /*   The configuration macro FT_CONFIG_OPTION_USE_MODULE_ERRORS can be   */
-  /*   defined in `ftoption.h' in order to make the higher byte indicate   */
-  /*   the module where the error has happened (this is not compatible     */
-  /*   with standard builds of FreeType~2, however).  See the file         */
-  /*   `ftmoderr.h' for more details.                                      */
-  /*                                                                       */
-  /*   *Error* *Message* *Strings*                                         */
-  /*                                                                       */
-  /*   Error definitions are set up with special macros that allow client  */
-  /*   applications to build a table of error message strings.  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.      */
-  /*                                                                       */
-  /*   {                                                                   */
-  /*     FT_ERROR_DEF( e, v, s )                                           */
-  /*   }                                                                   */
-  /*                                                                       */
-  /*   This macro is called to define one single error.  `e' is the error  */
-  /*   code identifier (e.g., `Invalid_Argument'), `v' is the error's      */
-  /*   numerical value, and `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, NULL } };                    */
-  /*                                                                       */
-  /*     const struct                                                      */
-  /*     {                                                                 */
-  /*       int          err_code;                                          */
-  /*       const char*  err_msg;                                           */
-  /*     } ft_errors[] =                                                   */
-  /*                                                                       */
-  /*     #include FT_ERRORS_H                                              */
-  /*   }                                                                   */
-  /*                                                                       */
-  /*   Note that `FT_Err_Ok' is _not_ defined with `FT_ERRORDEF' but with  */
-  /*   `FT_NOERRORDEF'; it is always zero.                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   error_enumerations
+   *
+   * @title:
+   *   Error Enumerations
+   *
+   * @abstract:
+   *   How to handle errors and error strings.
+   *
+   * @description:
+   *   The header file `fterrors.h` (which is automatically included by
+   *   `freetype.h` defines the handling of FreeType's enumeration
+   *   constants.  It can also be used to generate error message strings
+   *   with a small macro trick explained below.
+   *
+   *   **Error Formats**
+   *
+   *   The configuration macro `FT_CONFIG_OPTION_USE_MODULE_ERRORS` can be
+   *   defined in `ftoption.h` in order to make the higher byte indicate the
+   *   module where the error has happened (this is not compatible with
+   *   standard builds of FreeType~2, however).  See the file `ftmoderr.h`
+   *   for more details.
+   *
+   *   **Error Message Strings**
+   *
+   *   Error definitions are set up with special macros that allow client
+   *   applications to build a table of error message strings.  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.
+   *
+   *   ```
+   *     FT_ERROR_DEF( e, v, s )
+   *   ```
+   *
+   *   This macro is called to define one single error.  'e' is the error
+   *   code identifier (e.g., `Invalid_Argument`), 'v' is the error's
+   *   numerical value, and '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, NULL } };
+   *
+   *     const struct
+   *     {
+   *       int          err_code;
+   *       const char*  err_msg;
+   *     } ft_errors[] =
+   *
+   *     #include FT_ERRORS_H
+   *   ```
+   *
+   *   An alternative to using an array is a switch statement.
+   *
+   *   ```
+   *     #undef FTERRORS_H_
+   *     #define FT_ERROR_START_LIST     switch ( error_code ) {
+   *     #define FT_ERRORDEF( e, v, s )    case v: return s;
+   *     #define FT_ERROR_END_LIST       }
+   *   ```
+   *
+   *   If you use `FT_CONFIG_OPTION_USE_MODULE_ERRORS`, `error_code` should
+   *   be replaced with `FT_ERROR_BASE(error_code)` in the last example.
+   */
 
   /* */
 
-  /* In previous FreeType versions we used `__FTERRORS_H__'.  However, */
+  /* In previous FreeType versions we used `__FTERRORS_H__`.  However, */
   /* using two successive underscores in a non-system symbol name      */
   /* violates the C (and C++) standard, so it was changed to the       */
   /* current form.  In spite of this, we have to make                  */
   /*                                                                   */
+  /* ```                                                               */
   /*   #undefine __FTERRORS_H__                                        */
+  /* ```                                                               */
   /*                                                                   */
   /* work for backward compatibility.                                  */
   /*                                                                   */
@@ -130,7 +140,7 @@
 
 
   /* FT_ERR_PREFIX is used as a prefix for error identifiers. */
-  /* By default, we use `FT_Err_'.                            */
+  /* By default, we use `FT_Err_`.                            */
   /*                                                          */
 #ifndef FT_ERR_PREFIX
 #define FT_ERR_PREFIX  FT_Err_
@@ -158,6 +168,8 @@
   /*                                                           */
 #ifndef FT_ERRORDEF
 
+#define FT_INCLUDE_ERR_PROTOS
+
 #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 ) };
@@ -220,6 +232,53 @@
 #undef FT_ERR_PREFIX
 #endif
 
+  /* FT_INCLUDE_ERR_PROTOS:  Control if function prototypes should be       */
+  /*                         included with `#include FT_ERRORS_H'.  This is */
+  /*                         only true where `FT_ERRORDEF` is undefined.    */
+  /* FT_ERR_PROTOS_DEFINED:  Actual multiple-inclusion protection of        */
+  /*                         `fterrors.h`.                                  */
+#ifdef FT_INCLUDE_ERR_PROTOS
+#undef FT_INCLUDE_ERR_PROTOS
+
+#ifndef FT_ERR_PROTOS_DEFINED
+#define FT_ERR_PROTOS_DEFINED
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Error_String
+   *
+   * @description:
+   *   Retrieve the description of a valid FreeType error code.
+   *
+   * @input:
+   *   error_code ::
+   *     A valid FreeType error code.
+   *
+   * @return:
+   *   A C~string or `NULL`, if any error occurred.
+   *
+   * @note:
+   *   FreeType has to be compiled with `FT_CONFIG_OPTION_ERROR_STRINGS` or
+   *   `FT_DEBUG_LEVEL_ERROR` to get meaningful descriptions.
+   *   'error_string' will be `NULL` otherwise.
+   *
+   *   Module identification will be ignored:
+   *
+   *   ```c
+   *     strcmp( FT_Error_String(  FT_Err_Unknown_File_Format ),
+   *             FT_Error_String( BDF_Err_Unknown_File_Format ) ) == 0;
+   *   ```
+   */
+  FT_EXPORT( const char* )
+  FT_Error_String( FT_Error  error_code );
+
+
+#endif /* FT_ERR_PROTOS_DEFINED */
+
+#endif /* FT_INCLUDE_ERR_PROTOS */
+
 #endif /* !(FTERRORS_H_ && __FTERRORS_H__) */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftfntfmt.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftfntfmt.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftfntfmt.h                                                             */
-/*                                                                         */
-/*    Support functions for font formats.                                  */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftfntfmt.h
+ *
+ *   Support functions for font formats.
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTFNTFMT_H_
@@ -32,49 +32,48 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   font_formats                                                        */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*   Font Formats                                                        */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*   Getting the font format.                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   The single function in this section can be used to get the font     */
-  /*   format.  Note that this information is not needed normally;         */
-  /*   however, there are special cases (like in PDF devices) where it is  */
-  /*   important to differentiate, in spite of FreeType's uniform API.     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *  font_formats
+   *
+   * @title:
+   *  Font Formats
+   *
+   * @abstract:
+   *  Getting the font format.
+   *
+   * @description:
+   *  The single function in this section can be used to get the font format.
+   *  Note that this information is not needed normally; however, there are
+   *  special cases (like in PDF devices) where it is important to
+   *  differentiate, in spite of FreeType's uniform API.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*   FT_Get_Font_Format                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*   Return a string describing the format of a given face.  Possible    */
-  /*   values are `TrueType', `Type~1', `BDF', `PCF', `Type~42',           */
-  /*   `CID~Type~1', `CFF', `PFR', and `Windows~FNT'.                      */
-  /*                                                                       */
-  /*   The return value is suitable to be used as an X11 FONT_PROPERTY.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*   face ::                                                             */
-  /*     Input face handle.                                                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*   Font format string.  NULL in case of error.                         */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*   A deprecated name for the same function is                          */
-  /*   `FT_Get_X11_Font_Format'.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *  FT_Get_Font_Format
+   *
+   * @description:
+   *  Return a string describing the format of a given face.  Possible values
+   *  are 'TrueType', 'Type~1', 'BDF', 'PCF', 'Type~42', 'CID~Type~1', 'CFF',
+   *  'PFR', and 'Windows~FNT'.
+   *
+   *  The return value is suitable to be used as an X11 FONT_PROPERTY.
+   *
+   * @input:
+   *  face ::
+   *    Input face handle.
+   *
+   * @return:
+   *  Font format string.  `NULL` in case of error.
+   *
+   * @note:
+   *  A deprecated name for the same function is `FT_Get_X11_Font_Format`.
+   */
   FT_EXPORT( const char* )
   FT_Get_Font_Format( FT_Face  face );
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftgasp.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftgasp.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgasp.h                                                               */
-/*                                                                         */
-/*    Access of TrueType's `gasp' table (specification).                   */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgasp.h
+ *
+ *   Access of TrueType's 'gasp' table (specification).
+ *
+ * Copyright (C) 2007-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTGASP_H_
@@ -32,7 +32,7 @@
 FT_BEGIN_HEADER
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @section:
    *   gasp_table
@@ -41,16 +41,16 @@
    *   Gasp Table
    *
    * @abstract:
-   *   Retrieving TrueType `gasp' table entries.
+   *   Retrieving TrueType 'gasp' table entries.
    *
    * @description:
    *   The function @FT_Get_Gasp can be used to query a TrueType or OpenType
-   *   font for specific entries in its `gasp' table, if any.  This is
-   *   mainly useful when implementing native TrueType hinting with the
-   *   bytecode interpreter to duplicate the Windows text rendering results.
+   *   font for specific entries in its 'gasp' table, if any.  This is mainly
+   *   useful when implementing native TrueType hinting with the bytecode
+   *   interpreter to duplicate the Windows text rendering results.
    */
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   FT_GASP_XXX
@@ -66,7 +66,7 @@
    *
    *   FT_GASP_DO_GRIDFIT ::
    *     Grid-fitting and hinting should be performed at the specified ppem.
-   *     This *really* means TrueType bytecode interpretation.  If this bit
+   *     This **really** means TrueType bytecode interpretation.  If this bit
    *     is not set, no hinting gets applied.
    *
    *   FT_GASP_DO_GRAY ::
@@ -80,13 +80,13 @@
    *     Grid-fitting must be used with ClearType's symmetric smoothing.
    *
    * @note:
-   *   The bit-flags `FT_GASP_DO_GRIDFIT' and `FT_GASP_DO_GRAY' are to be
+   *   The bit-flags `FT_GASP_DO_GRIDFIT` and `FT_GASP_DO_GRAY` are to be
    *   used for standard font rasterization only.  Independently of that,
-   *   `FT_GASP_SYMMETRIC_SMOOTHING' and `FT_GASP_SYMMETRIC_GRIDFIT' are to
-   *   be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT' and
-   *   `FT_GASP_DO_GRAY' are consequently ignored).
+   *   `FT_GASP_SYMMETRIC_SMOOTHING` and `FT_GASP_SYMMETRIC_GRIDFIT` are to
+   *   be used if ClearType is enabled (and `FT_GASP_DO_GRIDFIT` and
+   *   `FT_GASP_DO_GRAY` are consequently ignored).
    *
-   *   `ClearType' is Microsoft's implementation of LCD rendering, partly
+   *   'ClearType' is Microsoft's implementation of LCD rendering, partly
    *   protected by patents.
    *
    * @since:
@@ -99,29 +99,31 @@
 #define FT_GASP_SYMMETRIC_SMOOTHING  0x08
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
-   * @func:
+   * @function:
    *   FT_Get_Gasp
    *
    * @description:
    *   For a TrueType or OpenType font file, return the rasterizer behaviour
-   *   flags from the font's `gasp' table corresponding to a given
-   *   character pixel size.
+   *   flags from the font's 'gasp' table corresponding to a given character
+   *   pixel size.
    *
    * @input:
-   *   face :: The source face handle.
+   *   face ::
+   *     The source face handle.
    *
-   *   ppem :: The vertical character pixel size.
+   *   ppem ::
+   *     The vertical character pixel size.
    *
    * @return:
    *   Bit flags (see @FT_GASP_XXX), or @FT_GASP_NO_TABLE if there is no
-   *   `gasp' table in the face.
+   *   'gasp' table in the face.
    *
    * @note:
    *   If you want to use the MM functionality of OpenType variation fonts
    *   (i.e., using @FT_Set_Var_Design_Coordinates and friends), call this
-   *   function *after* setting an instance since the return values can
+   *   function **after** setting an instance since the return values can
    *   change.
    *
    * @since:
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftglyph.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftglyph.h	Thu May 09 16:09:39 2019 -0700
@@ -1,32 +1,32 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftglyph.h                                                              */
-/*                                                                         */
-/*    FreeType convenience functions to handle glyphs (specification).     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftglyph.h
+ *
+ *   FreeType convenience functions to handle glyphs (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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_
@@ -46,65 +46,70 @@
 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.         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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.  These objects are
+   *   detached from @FT_Face, contrary to @FT_GlyphSlot.
+   *
+   */
 
 
   /* 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.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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-point 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.    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_GlyphRec
+   *
+   * @description:
+   *   The root glyph structure contains a given glyph image plus its advance
+   *   width in 16.16 fixed-point 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;
@@ -115,48 +120,51 @@
   } 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.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 an @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 @FT_BitmapGlyph  */
-  /*    and is thus created and destroyed with it.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 an @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 @FT_BitmapGlyph and
+   *   is thus created and destroyed with it.
+   */
   typedef struct  FT_BitmapGlyphRec_
   {
     FT_GlyphRec  root;
@@ -167,44 +175,46 @@
   } 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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 an @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.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 an @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;
@@ -213,113 +223,150 @@
   } FT_OutlineGlyphRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Glyph                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to extract a glyph image from a slot.  Note that   */
-  /*    the created @FT_Glyph object must be released with @FT_Done_Glyph. */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    slot   :: A handle to the source glyph slot.                       */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aglyph :: A handle to the glyph object.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Because `*aglyph->advance.x' and '*aglyph->advance.y' are 16.16    */
-  /*    fixed-point numbers, `slot->advance.x' and `slot->advance.y'       */
-  /*    (which are in 26.6 fixed-point format) must be in the range        */
-  /*    ]-32768;32768[.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Glyph
+   *
+   * @description:
+   *   A function used to create a new empty glyph image.  Note that the
+   *   created @FT_Glyph object must be released with @FT_Done_Glyph.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the FreeType library object.
+   *
+   *   format ::
+   *     The format of the glyph's image.
+   *
+   * @output:
+   *   aglyph ::
+   *     A handle to the glyph object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_New_Glyph( FT_Library       library,
+                FT_Glyph_Format  format,
+                FT_Glyph         *aglyph );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Glyph
+   *
+   * @description:
+   *   A function used to extract a glyph image from a slot.  Note that the
+   *   created @FT_Glyph object must be released with @FT_Done_Glyph.
+   *
+   * @input:
+   *   slot ::
+   *     A handle to the source glyph slot.
+   *
+   * @output:
+   *   aglyph ::
+   *     A handle to the glyph object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Because `*aglyph->advance.x` and `*aglyph->advance.y` are 16.16
+   *   fixed-point numbers, `slot->advance.x` and `slot->advance.y` (which
+   *   are in 26.6 fixed-point format) must be in the range ]-32768;32768[.
+   */
   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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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>                                                         */
-  /*    Transform 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 (if not 0, the glyph format is not scalable).  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The 2x2 transformation matrix is also applied to the glyph's       */
-  /*    advance vector.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Glyph_Transform
+   *
+   * @description:
+   *   Transform 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 (if not 0, the glyph format is not scalable).
+   *
+   * @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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -332,7 +379,7 @@
 
 
   /* these constants are deprecated; use the corresponding */
-  /* `FT_Glyph_BBox_Mode' values instead                   */
+  /* `FT_Glyph_BBox_Mode` values instead                   */
 #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
@@ -340,187 +387,188 @@
 #define ft_glyph_bbox_pixels     FT_GLYPH_BBOX_PIXELS
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Glyph_Get_CBox                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return 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  */
-  /*    that 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 that 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.                                 */
-  /*                                                                       */
-  /*    If the font is tricky and the glyph has been loaded with           */
-  /*    @FT_LOAD_NO_SCALE, the resulting CBox is meaningless.  To get      */
-  /*    reasonable values for the CBox it is necessary to load the glyph   */
-  /*    at a large ppem value (so that the hinting instructions can        */
-  /*    properly shift and scale the subglyphs), then extracting the CBox, */
-  /*    which can be eventually converted back to font units.              */
-  /*                                                                       */
-  /*    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.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Glyph_Get_CBox
+   *
+   * @description:
+   *   Return 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 that
+   *   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 that 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.
+   *
+   *   If the font is tricky and the glyph has been loaded with
+   *   @FT_LOAD_NO_SCALE, the resulting CBox is meaningless.  To get
+   *   reasonable values for the CBox it is necessary to load the glyph at a
+   *   large ppem value (so that the hinting instructions can properly shift
+   *   and scale the subglyphs), then extracting the CBox, which can be
+   *   eventually converted back to font units.
+   *
+   *   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>                                                         */
-  /*    Convert 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 describes 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>                                                                */
-  /*    This function does nothing if the glyph format isn't scalable.     */
-  /*                                                                       */
-  /*    The glyph image is translated with the `origin' vector before      */
-  /*    rendering.                                                         */
-  /*                                                                       */
-  /*    The first parameter is a pointer to an @FT_Glyph handle, that will */
-  /*    be _replaced_ by this function (with newly allocated data).        */
-  /*    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_DEFAULT );    */
-  /*                                                                       */
-  /*        // extract glyph image                                         */
-  /*        error = FT_Get_Glyph( face->glyph, &glyph );                   */
-  /*                                                                       */
-  /*        // convert to a bitmap (default render mode + destroying old)  */
-  /*        if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )                 */
-  /*        {                                                              */
-  /*          error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL,   */
-  /*                                      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 );                                        */
-  /*      }                                                                */
-  /*                                                                       */
-  /*                                                                       */
-  /*    Here another example, again without error handling:                */
-  /*                                                                       */
-  /*                                                                       */
-  /*      {                                                                */
-  /*        FT_Glyph  glyphs[MAX_GLYPHS]                                   */
-  /*                                                                       */
-  /*                                                                       */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
-  /*          error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) ||       */
-  /*                  FT_Get_Glyph ( face->glyph, &glyph[idx] );           */
-  /*                                                                       */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
-  /*        {                                                              */
-  /*          FT_Glyph  bitmap = glyphs[idx];                              */
-  /*                                                                       */
-  /*                                                                       */
-  /*          ...                                                          */
-  /*                                                                       */
-  /*          // after this call, `bitmap' no longer points into           */
-  /*          // the `glyphs' array (and the old value isn't destroyed)    */
-  /*          FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 );    */
-  /*                                                                       */
-  /*          ...                                                          */
-  /*                                                                       */
-  /*          FT_Done_Glyph( bitmap );                                     */
-  /*        }                                                              */
-  /*                                                                       */
-  /*        ...                                                            */
-  /*                                                                       */
-  /*        for ( idx = 0; i < MAX_GLYPHS; i++ )                           */
-  /*          FT_Done_Glyph( glyphs[idx] );                                */
-  /*      }                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Glyph_To_Bitmap
+   *
+   * @description:
+   *   Convert 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 describes 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:
+   *   This function does nothing if the glyph format isn't scalable.
+   *
+   *   The glyph image is translated with the `origin` vector before
+   *   rendering.
+   *
+   *   The first parameter is a pointer to an @FT_Glyph handle, that will be
+   *   _replaced_ by this function (with newly allocated data).  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_DEFAULT );
+   *
+   *     // extract glyph image
+   *     error = FT_Get_Glyph( face->glyph, &glyph );
+   *
+   *     // convert to a bitmap (default render mode + destroying old)
+   *     if ( glyph->format != FT_GLYPH_FORMAT_BITMAP )
+   *     {
+   *       error = FT_Glyph_To_Bitmap( &glyph, FT_RENDER_MODE_NORMAL,
+   *                                     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 );
+   *   ```
+   *
+   *   Here is another example, again without error handling:
+   *
+   *   ```
+   *     FT_Glyph  glyphs[MAX_GLYPHS]
+   *
+   *
+   *     ...
+   *
+   *     for ( idx = 0; i < MAX_GLYPHS; i++ )
+   *       error = FT_Load_Glyph( face, idx, FT_LOAD_DEFAULT ) ||
+   *               FT_Get_Glyph ( face->glyph, &glyphs[idx] );
+   *
+   *     ...
+   *
+   *     for ( idx = 0; i < MAX_GLYPHS; i++ )
+   *     {
+   *       FT_Glyph  bitmap = glyphs[idx];
+   *
+   *
+   *       ...
+   *
+   *       // after this call, `bitmap' no longer points into
+   *       // the `glyphs' array (and the old value isn't destroyed)
+   *       FT_Glyph_To_Bitmap( &bitmap, FT_RENDER_MODE_MONO, 0, 0 );
+   *
+   *       ...
+   *
+   *       FT_Done_Glyph( bitmap );
+   *     }
+   *
+   *     ...
+   *
+   *     for ( idx = 0; i < MAX_GLYPHS; i++ )
+   *       FT_Done_Glyph( glyphs[idx] );
+   *   ```
+   */
   FT_EXPORT( FT_Error )
   FT_Glyph_To_Bitmap( FT_Glyph*       the_glyph,
                       FT_Render_Mode  render_mode,
@@ -528,17 +576,18 @@
                       FT_Bool         destroy );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroy a given glyph.                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    glyph :: A handle to the target glyph object.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Glyph
+   *
+   * @description:
+   *   Destroy a given glyph.
+   *
+   * @input:
+   *   glyph ::
+   *     A handle to the target glyph object.
+   */
   FT_EXPORT( void )
   FT_Done_Glyph( FT_Glyph  glyph );
 
@@ -547,54 +596,56 @@
 
   /* other helpful functions */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    computations                                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   computations
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Matrix_Multiply                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Perform 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.              */
-  /*                                                                       */
-  /*    Since the function uses wrap-around arithmetic, results become     */
-  /*    meaningless if the arguments are very large.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Matrix_Multiply
+   *
+   * @description:
+   *   Perform 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.
+   *
+   *   Since the function uses wrap-around arithmetic, results become
+   *   meaningless if the arguments are very large.
+   */
   FT_EXPORT( void )
   FT_Matrix_Multiply( const FT_Matrix*  a,
                       FT_Matrix*        b );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Matrix_Invert                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Invert a 2x2 matrix.  Return 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Matrix_Invert
+   *
+   * @description:
+   *   Invert a 2x2 matrix.  Return 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 );
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftgzip.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftgzip.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgzip.h                                                               */
-/*                                                                         */
-/*    Gzip-compressed stream support.                                      */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgzip.h
+ *
+ *   Gzip-compressed stream support.
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -31,108 +31,108 @@
 
 FT_BEGIN_HEADER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    gzip                                                               */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    GZIP Streams                                                       */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Using gzip-compressed font files.                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains the declaration of Gzip-specific functions.  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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_Feature' if your build
-  *   of FreeType was not compiled with zlib support.
-  */
+  /**************************************************************************
+   *
+   * @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_Feature` if your build
+   *   of FreeType was not compiled with zlib support.
+   */
   FT_EXPORT( FT_Error )
   FT_Stream_OpenGzip( FT_Stream  stream,
                       FT_Stream  source );
 
 
- /************************************************************************
-  *
-  * @function:
-  *   FT_Gzip_Uncompress
-  *
-  * @description:
-  *   Decompress a zipped input buffer into an output buffer.  This function
-  *   is modeled after zlib's `uncompress' function.
-  *
-  * @input:
-  *   memory ::
-  *     A FreeType memory handle.
-  *
-  *   input ::
-  *     The input buffer.
-  *
-  *   input_len ::
-  *     The length of the input buffer.
-  *
-  * @output:
-  *   output::
-  *     The output buffer.
-  *
-  * @inout:
-  *   output_len ::
-  *     Before calling the function, this is the total size of the output
-  *     buffer, which must be large enough to hold the entire uncompressed
-  *     data (so the size of the uncompressed data must be known in
-  *     advance).  After calling the function, `output_len' is the size of
-  *     the used data in `output'.
-  *
-  * @return:
-  *   FreeType error code.  0~means success.
-  *
-  * @note:
-  *   This function may return `FT_Err_Unimplemented_Feature' if your build
-  *   of FreeType was not compiled with zlib support.
-  *
-  * @since:
-  *   2.5.1
-  */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Gzip_Uncompress
+   *
+   * @description:
+   *   Decompress a zipped input buffer into an output buffer.  This function
+   *   is modeled after zlib's `uncompress` function.
+   *
+   * @input:
+   *   memory ::
+   *     A FreeType memory handle.
+   *
+   *   input ::
+   *     The input buffer.
+   *
+   *   input_len ::
+   *     The length of the input buffer.
+   *
+   * @output:
+   *   output ::
+   *     The output buffer.
+   *
+   * @inout:
+   *   output_len ::
+   *     Before calling the function, this is the total size of the output
+   *     buffer, which must be large enough to hold the entire uncompressed
+   *     data (so the size of the uncompressed data must be known in
+   *     advance).  After calling the function, `output_len` is the size of
+   *     the used data in `output`.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   This function may return `FT_Err_Unimplemented_Feature` if your build
+   *   of FreeType was not compiled with zlib support.
+   *
+   * @since:
+   *   2.5.1
+   */
   FT_EXPORT( FT_Error )
   FT_Gzip_Uncompress( FT_Memory       memory,
                       FT_Byte*        output,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftimage.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftimage.h	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftimage.h                                                              */
-/*                                                                         */
-/*    FreeType glyph image formats and default raster interface            */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftimage.h
+ *
+ *   FreeType glyph image formats and default raster interface
+ *   (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Note: A 'raster' is simply a scan-line converter, used to render
+   *       FT_Outlines into FT_Bitmaps.
+   *
+   */
 
 
 #ifndef FTIMAGE_H_
@@ -37,40 +37,42 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    basic_types                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   basic_types
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Pos                                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The type FT_Pos is used to store vectorial coordinates.  Depending */
-  /*    on the context, these can represent distances in integer font      */
-  /*    units, or 16.16, or 26.6 fixed-point pixel coordinates.            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Pos
+   *
+   * @description:
+   *   The type FT_Pos is used to store vectorial coordinates.  Depending on
+   *   the context, these can represent distances in integer font units, or
+   *   16.16, or 26.6 fixed-point 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.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -79,39 +81,41 @@
   } 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).                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The bounding box is specified with the coordinates of the lower    */
-  /*    left and the upper right corner.  In PostScript, those values are  */
-  /*    often called (llx,lly) and (urx,ury), respectively.                */
-  /*                                                                       */
-  /*    If `yMin' is negative, this value gives the glyph's descender.     */
-  /*    Otherwise, the glyph doesn't descend below the baseline.           */
-  /*    Similarly, if `ymax' is positive, this value gives the glyph's     */
-  /*    ascender.                                                          */
-  /*                                                                       */
-  /*    `xMin' gives the horizontal distance from the glyph's origin to    */
-  /*    the left edge of the glyph's bounding box.  If `xMin' is negative, */
-  /*    the glyph extends to the left of the origin.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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).
+   *
+   * @note:
+   *   The bounding box is specified with the coordinates of the lower left
+   *   and the upper right corner.  In PostScript, those values are often
+   *   called (llx,lly) and (urx,ury), respectively.
+   *
+   *   If `yMin` is negative, this value gives the glyph's descender.
+   *   Otherwise, the glyph doesn't descend below the baseline.  Similarly,
+   *   if `ymax` is positive, this value gives the glyph's ascender.
+   *
+   *   `xMin` gives the horizontal distance from the glyph's origin to the
+   *   left edge of the glyph's bounding box.  If `xMin` is negative, the
+   *   glyph extends to the left of the origin.
+   */
   typedef struct  FT_BBox_
   {
     FT_Pos  xMin, yMin;
@@ -120,63 +124,60 @@
   } 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 `gray' levels is stored in the `num_grays' field of the       */
-  /*      @FT_Bitmap structure (it generally is 256).                      */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_GRAY2 ::                                             */
-  /*      A 2-bit per 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 per pixel bitmap, representing 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, representing RGB or BGR decimated glyph images  */
-  /*      used for display on LCD displays; the bitmap is three times      */
-  /*      wider than the original glyph image.  See also                   */
-  /*      @FT_RENDER_MODE_LCD.                                             */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_LCD_V ::                                             */
-  /*      An 8-bit bitmap, representing RGB or BGR decimated glyph images  */
-  /*      used for display on rotated LCD displays; the bitmap is three    */
-  /*      times taller than the original glyph image.  See also            */
-  /*      @FT_RENDER_MODE_LCD_V.                                           */
-  /*                                                                       */
-  /*    FT_PIXEL_MODE_BGRA ::                                              */
-  /*      [Since 2.5] An image with four 8-bit channels per pixel,         */
-  /*      representing a color image (such as emoticons) with alpha        */
-  /*      channel.  For each pixel, the format is BGRA, which means, the   */
-  /*      blue channel comes first in memory.  The color channels are      */
-  /*      pre-multiplied and in the sRGB colorspace.  For example, full    */
-  /*      red at half-translucent opacity will be represented as           */
-  /*      `00,00,80,80', not `00,00,FF,80'.  See also @FT_LOAD_COLOR.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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
+   *     'gray' levels is stored in the `num_grays` field of the @FT_Bitmap
+   *     structure (it generally is 256).
+   *
+   *   FT_PIXEL_MODE_GRAY2 ::
+   *     A 2-bit per 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 per pixel bitmap, representing 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, representing RGB or BGR decimated glyph images used
+   *     for display on LCD displays; the bitmap is three times wider than
+   *     the original glyph image.  See also @FT_RENDER_MODE_LCD.
+   *
+   *   FT_PIXEL_MODE_LCD_V ::
+   *     An 8-bit bitmap, representing RGB or BGR decimated glyph images used
+   *     for display on rotated LCD displays; the bitmap is three times
+   *     taller than the original glyph image.  See also
+   *     @FT_RENDER_MODE_LCD_V.
+   *
+   *   FT_PIXEL_MODE_BGRA ::
+   *     [Since 2.5] An image with four 8-bit channels per pixel,
+   *     representing a color image (such as emoticons) with alpha channel.
+   *     For each pixel, the format is BGRA, which means, the blue channel
+   *     comes first in memory.  The color channels are pre-multiplied and in
+   *     the sRGB colorspace.  For example, full red at half-translucent
+   *     opacity will be represented as '00,00,80,80', not '00,00,FF,80'.
+   *     See also @FT_LOAD_COLOR.
+   */
   typedef enum  FT_Pixel_Mode_
   {
     FT_PIXEL_MODE_NONE = 0,
@@ -193,7 +194,7 @@
   } FT_Pixel_Mode;
 
 
-  /* these constants are deprecated; use the corresponding `FT_Pixel_Mode' */
+  /* these constants are deprecated; use the corresponding `FT_Pixel_Mode` */
   /* values instead.                                                       */
 #define ft_pixel_mode_none   FT_PIXEL_MODE_NONE
 #define ft_pixel_mode_mono   FT_PIXEL_MODE_MONO
@@ -202,62 +203,61 @@
 #define ft_pixel_mode_pal4   FT_PIXEL_MODE_GRAY4
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.   */
-  /*                                                                       */
-  /*                    Note that `padding' means the alignment of a       */
-  /*                    bitmap to a byte border, and FreeType functions    */
-  /*                    normally align to the smallest possible integer    */
-  /*                    value.                                             */
-  /*                                                                       */
-  /*                    For the B/W rasterizer, `pitch' is always an even  */
-  /*                    number.                                            */
-  /*                                                                       */
-  /*                    To change the pitch of a bitmap (say, to make it a */
-  /*                    multiple of 4), use @FT_Bitmap_Convert.            */
-  /*                    Alternatively, you might use callback functions to */
-  /*                    directly render to the application's surface; see  */
-  /*                    the file `example2.cpp' in the tutorial for a      */
-  /*                    demonstration.                                     */
-  /*                                                                       */
-  /*    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 intended for paletted pixel modes;   */
-  /*                    it indicates how the palette is stored.  Not       */
-  /*                    used currently.                                    */
-  /*                                                                       */
-  /*    palette      :: A typeless pointer to the bitmap palette; this     */
-  /*                    field is intended for paletted pixel modes.  Not   */
-  /*                    used currently.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *     Note that 'padding' means the alignment of a bitmap to a byte
+   *     border, and FreeType functions normally align to the smallest
+   *     possible integer value.
+   *
+   *     For the B/W rasterizer, `pitch` is always an even number.
+   *
+   *     To change the pitch of a bitmap (say, to make it a multiple of 4),
+   *     use @FT_Bitmap_Convert.  Alternatively, you might use callback
+   *     functions to directly render to the application's surface; see the
+   *     file `example2.cpp` in the tutorial for a demonstration.
+   *
+   *   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 intended for paletted pixel modes; it indicates how
+   *     the palette is stored.  Not used currently.
+   *
+   *   palette ::
+   *     A typeless pointer to the bitmap palette; this field is intended for
+   *     paletted pixel modes.  Not used currently.
+   */
   typedef struct  FT_Bitmap_
   {
     unsigned int    rows;
@@ -272,65 +272,68 @@
   } FT_Bitmap;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    outline_processing                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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' if    */
-  /*                  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.           */
-  /*                                                                       */
-  /*                  If bit~2 is set, bits 5-7 contain the drop-out mode  */
-  /*                  (as defined in the OpenType specification; the value */
-  /*                  is the same as the argument to the SCANMODE          */
-  /*                  instruction).                                        */
-  /*                                                                       */
-  /*                  Bits 3 and~4 are reserved for internal purposes.     */
-  /*                                                                       */
-  /*    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_XXX.    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The B/W rasterizer only checks bit~2 in the `tags' array for the   */
-  /*    first point of each contour.  The drop-out mode as given with      */
-  /*    @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and       */
-  /*    @FT_OUTLINE_INCLUDE_STUBS in `flags' is then overridden.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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' if 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.
+   *
+   *     If bit~2 is set, bits 5-7 contain the drop-out mode (as defined in
+   *     the OpenType specification; the value is the same as the argument to
+   *     the 'SCANMODE' instruction).
+   *
+   *     Bits 3 and~4 are reserved for internal purposes.
+   *
+   *   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_XXX.
+   *
+   * @note:
+   *   The B/W rasterizer only checks bit~2 in the `tags` array for the first
+   *   point of each contour.  The drop-out mode as given with
+   *   @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and
+   *   @FT_OUTLINE_INCLUDE_STUBS in `flags` is then overridden.
+   */
   typedef struct  FT_Outline_
   {
     short       n_contours;      /* number of contours in glyph        */
@@ -352,78 +355,76 @@
 #define FT_OUTLINE_POINTS_MAX    SHRT_MAX
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_OUTLINE_XXX                                                     */
-  /*                                                                       */
-  /* <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', and `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 rasterizer).                    */
-  /*                                                                       */
-  /*    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.                                                       */
-  /*                                                                       */
-  /*    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.  See below for more information. */
-  /*                                                                       */
-  /*    FT_OUTLINE_SMART_DROPOUTS ::                                       */
-  /*      Select smart dropout control.  If unset, use simple dropout      */
-  /*      control.  Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set.  See    */
-  /*      below for more information.                                      */
-  /*                                                                       */
-  /*    FT_OUTLINE_INCLUDE_STUBS ::                                        */
-  /*      If set, turn pixels on for `stubs', otherwise exclude them.      */
-  /*      Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set.  See below for    */
-  /*      more information.                                                */
-  /*                                                                       */
-  /*    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.                                                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, */
-  /*    and @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth            */
-  /*    rasterizer.                                                        */
-  /*                                                                       */
-  /*    There exists a second mechanism to pass the drop-out mode to the   */
-  /*    B/W rasterizer; see the `tags' field in @FT_Outline.               */
-  /*                                                                       */
-  /*    Please refer to the description of the `SCANTYPE' instruction in   */
-  /*    the OpenType specification (in file `ttinst1.doc') how simple      */
-  /*    drop-outs, smart drop-outs, and stubs are defined.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_OUTLINE_XXX
+   *
+   * @description:
+   *   A list of bit-field constants used 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`, and `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 rasterizer).
+   *
+   *   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.
+   *
+   *   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.  See below for more information.
+   *
+   *   FT_OUTLINE_SMART_DROPOUTS ::
+   *     Select smart dropout control.  If unset, use simple dropout control.
+   *     Ignored if @FT_OUTLINE_IGNORE_DROPOUTS is set.  See below for more
+   *     information.
+   *
+   *   FT_OUTLINE_INCLUDE_STUBS ::
+   *     If set, turn pixels on for 'stubs', otherwise exclude them.  Ignored
+   *     if @FT_OUTLINE_IGNORE_DROPOUTS is set.  See below for more
+   *     information.
+   *
+   *   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.
+   *
+   * @note:
+   *   The flags @FT_OUTLINE_IGNORE_DROPOUTS, @FT_OUTLINE_SMART_DROPOUTS, and
+   *   @FT_OUTLINE_INCLUDE_STUBS are ignored by the smooth rasterizer.
+   *
+   *   There exists a second mechanism to pass the drop-out mode to the B/W
+   *   rasterizer; see the `tags` field in @FT_Outline.
+   *
+   *   Please refer to the description of the 'SCANTYPE' instruction in the
+   *   OpenType specification (in file `ttinst1.doc`) how simple drop-outs,
+   *   smart drop-outs, and stubs are defined.
+   */
 #define FT_OUTLINE_NONE             0x0
 #define FT_OUTLINE_OWNER            0x1
 #define FT_OUTLINE_EVEN_ODD_FILL    0x2
@@ -437,7 +438,7 @@
 
 
   /* these constants are deprecated; use the corresponding */
-  /* `FT_OUTLINE_XXX' values instead                       */
+  /* `FT_OUTLINE_XXX` values instead                       */
 #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
@@ -448,20 +449,25 @@
 
   /* */
 
-#define FT_CURVE_TAG( flag )  ( flag & 3 )
+#define FT_CURVE_TAG( flag )  ( flag & 0x03 )
 
-#define FT_CURVE_TAG_ON            1
-#define FT_CURVE_TAG_CONIC         0
-#define FT_CURVE_TAG_CUBIC         2
+  /* see the `tags` field in `FT_Outline` for a description of the values */
+#define FT_CURVE_TAG_ON            0x01
+#define FT_CURVE_TAG_CONIC         0x00
+#define FT_CURVE_TAG_CUBIC         0x02
 
-#define FT_CURVE_TAG_HAS_SCANMODE  4
+#define FT_CURVE_TAG_HAS_SCANMODE  0x04
 
-#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_X       0x08  /* reserved for TrueType hinter */
+#define FT_CURVE_TAG_TOUCH_Y       0x10  /* reserved for TrueType hinter */
 
 #define FT_CURVE_TAG_TOUCH_BOTH    ( FT_CURVE_TAG_TOUCH_X | \
                                      FT_CURVE_TAG_TOUCH_Y )
+  /* values 0x20, 0x40, and 0x80 are reserved */
 
+
+  /* these constants are deprecated; use the corresponding */
+  /* `FT_CURVE_TAG_XXX` values instead                     */
 #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
@@ -469,26 +475,28 @@
 #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.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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)( const FT_Vector*  to,
                             void*             user );
@@ -496,26 +504,28 @@
 #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.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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)( const FT_Vector*  to,
                             void*             user );
@@ -523,30 +533,33 @@
 #define FT_Outline_LineTo_Func  FT_Outline_LineToFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Outline_ConicToFunc                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function pointer type used to describe the signature of a `conic */
-  /*    to' function during outline walking or 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.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Outline_ConicToFunc
+   *
+   * @description:
+   *   A function pointer type used to describe the signature of a 'conic to'
+   *   function during outline walking or 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)( const FT_Vector*  control,
                              const FT_Vector*  to,
@@ -555,30 +568,34 @@
 #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 or 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.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Outline_CubicToFunc
+   *
+   * @description:
+   *   A function pointer type used to describe the signature of a 'cubic to'
+   *   function during outline walking or 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)( const FT_Vector*  control1,
                              const FT_Vector*  control2,
@@ -588,43 +605,49 @@
 #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. */
-  /*                                                                       */
-  /* <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' = (y << shift) - delta                                        */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Set the values of `shift' and `delta' to~0 to get the original     */
-  /*    point coordinates.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   * @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' = (y << shift) - delta
+   *   ```
+   *
+   *   Set the values of `shift` and `delta` to~0 to get the original point
+   *   coordinates.
+   */
   typedef struct  FT_Outline_Funcs_
   {
     FT_Outline_MoveToFunc   move_to;
@@ -638,33 +661,32 @@
   } FT_Outline_Funcs;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    basic_types                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   basic_types
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_IMAGE_TAG                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This macro converts four-letter tags to an unsigned long type.     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Since many 16-bit compilers don't like 32-bit 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.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_IMAGE_TAG
+   *
+   * @description:
+   *   This macro converts four-letter tags to an unsigned long type.
+   *
+   * @note:
+   *   Since many 16-bit compilers don't like 32-bit 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 ) | \
@@ -674,44 +696,43 @@
 #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.                                         */
-  /*                                                                       */
-  /*    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 vectorial 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 and 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.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   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 vectorial 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 and 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 ),
@@ -725,7 +746,7 @@
 
 
   /* these constants are deprecated; use the corresponding */
-  /* `FT_Glyph_Format' values instead.                     */
+  /* `FT_Glyph_Format` values instead.                     */
 #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
@@ -744,87 +765,89 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* A raster is a scan converter, in charge of rendering an outline into  */
-  /* 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 `ftrender.h' for more       */
-  /* details on renderers.                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * A raster is a scan converter, in charge of rendering an outline into 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 `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.                       */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Raster                                                          */
-  /*    FT_Span                                                            */
-  /*    FT_SpanFunc                                                        */
-  /*                                                                       */
-  /*    FT_Raster_Params                                                   */
-  /*    FT_RASTER_FLAG_XXX                                                 */
-  /*                                                                       */
-  /*    FT_Raster_NewFunc                                                  */
-  /*    FT_Raster_DoneFunc                                                 */
-  /*    FT_Raster_ResetFunc                                                */
-  /*    FT_Raster_SetModeFunc                                              */
-  /*    FT_Raster_RenderFunc                                               */
-  /*    FT_Raster_Funcs                                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   raster
+   *
+   * @title:
+   *   Scanline Converter
+   *
+   * @abstract:
+   *   How vectorial outlines are converted into bitmaps and pixmaps.
+   *
+   * @description:
+   *   This section contains technical definitions.
+   *
+   * @order:
+   *   FT_Raster
+   *   FT_Span
+   *   FT_SpanFunc
+   *
+   *   FT_Raster_Params
+   *   FT_RASTER_FLAG_XXX
+   *
+   *   FT_Raster_NewFunc
+   *   FT_Raster_DoneFunc
+   *   FT_Raster_ResetFunc
+   *   FT_Raster_SetModeFunc
+   *   FT_Raster_RenderFunc
+   *   FT_Raster_Funcs
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Raster                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An opaque handle (pointer) to a raster object.  Each object can be */
-  /*    used independently to convert an outline into a bitmap or pixmap.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Raster
+   *
+   * @description:
+   *   An opaque 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 pixels when        */
-  /*    rendering an 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).                                   */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This structure is used by the span drawing callback type named     */
-  /*    @FT_SpanFunc that takes the y~coordinate of the span as a          */
-  /*    parameter.                                                         */
-  /*                                                                       */
-  /*    The coverage value is always between 0 and 255.  If you want less  */
-  /*    gray values, the callback function has to reduce them.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Span
+   *
+   * @description:
+   *   A structure used to model a single span of gray pixels when rendering
+   *   an 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).
+   *
+   * @note:
+   *   This structure is used by the span drawing callback type named
+   *   @FT_SpanFunc that takes the y~coordinate of the span as a parameter.
+   *
+   *   The coverage value is always between 0 and 255.  If you want less gray
+   *   values, the callback function has to reduce them.
+   */
   typedef struct  FT_Span_
   {
     short           x;
@@ -834,32 +857,36 @@
   } 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.            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   */
   typedef void
   (*FT_SpanFunc)( int             y,
                   int             count,
@@ -869,131 +896,131 @@
 #define FT_Raster_Span_Func  FT_SpanFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_BitTest_Func                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deprecated, unimplemented.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_BitTest_Func
+   *
+   * @description:
+   *   Deprecated, unimplemented.
+   */
   typedef int
   (*FT_Raster_BitTest_Func)( int    y,
                              int    x,
                              void*  user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_BitSet_Func                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deprecated, unimplemented.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_BitSet_Func
+   *
+   * @description:
+   *   Deprecated, unimplemented.
+   */
   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.                               */
-  /*                                                                       */
-  /*                              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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *     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
 
   /* these constants are deprecated; use the corresponding */
-  /* `FT_RASTER_FLAG_XXX' values instead                   */
+  /* `FT_RASTER_FLAG_XXX` values instead                   */
 #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 :: Unused.                                             */
-  /*                                                                       */
-  /*    bit_test    :: Unused.                                             */
-  /*                                                                       */
-  /*    bit_set     :: Unused.                                             */
-  /*                                                                       */
-  /*    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 is 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.  This allows direct composition over a pre-existing bitmap  */
-  /*    through user-provided callbacks to perform the span drawing and    */
-  /*    composition.    Not supported by the monochrome rasterizer.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 ::
+   *     Unused.
+   *
+   *   bit_test ::
+   *     Unused.
+   *
+   *   bit_set ::
+   *     Unused.
+   *
+   *   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 is
+   *   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.  This
+   *   allows direct composition over a pre-existing bitmap through
+   *   user-provided callbacks to perform the span drawing and composition.
+   *   Not supported by the monochrome rasterizer.
+   */
   typedef struct  FT_Raster_Params_
   {
     const FT_Bitmap*        target;
@@ -1009,30 +1036,32 @@
   } 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 an @FT_Memory object, i.e., a handle to the        */
-  /*    standard FreeType memory allocator.  However, this field can be    */
-  /*    completely ignored by a given raster implementation.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 an @FT_Memory object, 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 );
@@ -1040,49 +1069,52 @@
 #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.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 used to provide an area of memory called the `render      */
-  /*    pool' available to all registered rasterizers.  This was not       */
-  /*    thread safe, however, and now FreeType never allocates this pool.  */
-  /*                                                                       */
-  /*    This function is called after a new raster object is created.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    raster    :: A handle to the new raster object.                    */
-  /*                                                                       */
-  /*    pool_base :: Previously, the address in memory of the render pool. */
-  /*                 Set this to NULL.                                     */
-  /*                                                                       */
-  /*    pool_size :: Previously, the size in bytes of the render pool.     */
-  /*                 Set this to 0.                                        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Rasterizers should rely on dynamic or stack allocation if they     */
-  /*    want to (a handle to the memory allocator is passed to the         */
-  /*    rasterizer constructor).                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_ResetFunc
+   *
+   * @description:
+   *   FreeType used to provide an area of memory called the 'render pool'
+   *   available to all registered rasterizers.  This was not thread safe,
+   *   however, and now FreeType never allocates this pool.
+   *
+   *   This function is called after a new raster object is created.
+   *
+   * @input:
+   *   raster ::
+   *     A handle to the new raster object.
+   *
+   *   pool_base ::
+   *     Previously, the address in memory of the render pool.  Set this to
+   *     `NULL`.
+   *
+   *   pool_size ::
+   *     Previously, the size in bytes of the render pool.  Set this to 0.
+   *
+   * @note:
+   *   Rasterizers should rely on dynamic or stack allocation if they want to
+   *   (a handle to the memory allocator is passed to the rasterizer
+   *   constructor).
+   */
   typedef void
   (*FT_Raster_ResetFunc)( FT_Raster       raster,
                           unsigned char*  pool_base,
@@ -1091,24 +1123,26 @@
 #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.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -1117,40 +1151,36 @@
 #define FT_Raster_Set_Mode_Func  FT_Raster_SetModeFunc
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Raster_RenderFunc                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Invoke 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 an @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 that support direct  */
-  /*         composition).                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Raster_RenderFunc
+   *
+   * @description:
+   *   Invoke 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 an @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.
+   */
   typedef int
   (*FT_Raster_RenderFunc)( FT_Raster                raster,
                            const FT_Raster_Params*  params );
@@ -1158,25 +1188,30 @@
 #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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftincrem.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftincrem.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftincrem.h                                                             */
-/*                                                                         */
-/*    FreeType incremental loading (specification).                        */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftincrem.h
+ *
+ *   FreeType incremental loading (specification).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -32,7 +32,7 @@
 
 FT_BEGIN_HEADER
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @section:
    *    incremental
@@ -45,7 +45,7 @@
    *
    * @description:
    *   This section contains various functions used to perform so-called
-   *   `incremental' glyph loading.  This is a mode where all glyphs loaded
+   *   'incremental' glyph loading.  This is a mode where all glyphs loaded
    *   from a given @FT_Face are provided by the client application.
    *
    *   Apart from that, all other tables are loaded normally from the font
@@ -60,23 +60,24 @@
    */
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @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.
+   *   '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.
+   *   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.
@@ -85,14 +86,14 @@
   typedef struct FT_IncrementalRec_*  FT_Incremental;
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @struct:
    *   FT_Incremental_MetricsRec
    *
    * @description:
-   *   A small structure used to contain the basic glyph metrics returned
-   *   by the @FT_Incremental_GetGlyphMetricsFunc method.
+   *   A small structure used to contain the basic glyph metrics returned by
+   *   the @FT_Incremental_GetGlyphMetricsFunc method.
    *
    * @fields:
    *   bearing_x ::
@@ -109,7 +110,7 @@
    *
    * @note:
    *   These correspond to horizontal or vertical metrics depending on the
-   *   value of the `vertical' argument to the function
+   *   value of the `vertical` argument to the function
    *   @FT_Incremental_GetGlyphMetricsFunc.
    *
    */
@@ -123,7 +124,7 @@
   } FT_Incremental_MetricsRec;
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @struct:
    *   FT_Incremental_Metrics
@@ -135,7 +136,7 @@
    typedef struct FT_Incremental_MetricsRec_*  FT_Incremental_Metrics;
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   FT_Incremental_GetGlyphDataFunc
@@ -147,8 +148,8 @@
    *
    *   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
+   *   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:
@@ -169,8 +170,8 @@
    *
    * @note:
    *   If this function returns successfully the method
-   *   @FT_Incremental_FreeGlyphDataFunc will be called later to release
-   *   the data bytes.
+   *   @FT_Incremental_FreeGlyphDataFunc will be called later to release the
+   *   data bytes.
    *
    *   Nested calls to @FT_Incremental_GetGlyphDataFunc can happen for
    *   compound glyphs.
@@ -182,7 +183,7 @@
                                       FT_Data*        adata );
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   FT_Incremental_FreeGlyphDataFunc
@@ -206,7 +207,7 @@
                                        FT_Data*        data );
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   FT_Incremental_GetGlyphMetricsFunc
@@ -214,8 +215,8 @@
    * @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.
+   *   formats like TrueType, the metrics are stored in a different place
+   *   from the glyph images proper.
    *
    * @input:
    *   incremental ::
@@ -229,9 +230,9 @@
    *     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.
+   *     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 ::
@@ -252,8 +253,8 @@
    *   FT_Incremental_FuncsRec
    *
    * @description:
-   *   A table of functions for accessing fonts that load data
-   *   incrementally.  Used in @FT_Incremental_InterfaceRec.
+   *   A table of functions for accessing fonts that load data incrementally.
+   *   Used in @FT_Incremental_InterfaceRec.
    *
    * @fields:
    *   get_glyph_data ::
@@ -263,8 +264,8 @@
    *     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.
+   *     The function to get glyph metrics.  May be null if the font does not
+   *     provide overriding glyph metrics.
    *
    */
   typedef struct  FT_Incremental_FuncsRec_
@@ -276,7 +277,7 @@
   } FT_Incremental_FuncsRec;
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @struct:
    *   FT_Incremental_InterfaceRec
@@ -286,30 +287,30 @@
    *   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;
+   *   ```
+   *     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 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 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     = &parameter; // we use one optional argument
+   *     // 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     = &parameter; // we use one optional argument
    *
-   *       // open the font
-   *       error = FT_Open_Face( library, &open_args, index, &face );
-   *       ...
-   *     }
+   *     // open the font
+   *     error = FT_Open_Face( library, &open_args, index, &face );
+   *     ...
+   *   ```
    *
    */
   typedef struct  FT_Incremental_InterfaceRec_
@@ -320,7 +321,7 @@
   } FT_Incremental_InterfaceRec;
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   FT_Incremental_Interface
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftlcdfil.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftlcdfil.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftlcdfil.h                                                             */
-/*                                                                         */
-/*    FreeType API for color filtering of subpixel bitmap glyphs           */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftlcdfil.h
+ *
+ *   FreeType API for color filtering of subpixel bitmap glyphs
+ *   (specification).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTLCDFIL_H_
@@ -33,105 +33,98 @@
 
 FT_BEGIN_HEADER
 
-  /***************************************************************************
+  /**************************************************************************
    *
    * @section:
-   *   lcd_filtering
+   *   lcd_rendering
    *
    * @title:
-   *   LCD Filtering
+   *   Subpixel Rendering
    *
    * @abstract:
-   *   Reduce color fringes of subpixel-rendered bitmaps.
+   *   API to control subpixel rendering.
    *
    * @description:
-   *   Should you #define FT_CONFIG_OPTION_SUBPIXEL_RENDERING in your
-   *   `ftoption.h', which enables patented ClearType-style rendering,
-   *   the LCD-optimized glyph bitmaps should be filtered to reduce color
-   *   fringes inherent to this technology.  The default FreeType LCD
-   *   rendering uses different technology, and API described below,
-   *   although available, does nothing.
+   *   FreeType provides two alternative subpixel rendering technologies.
+   *   Should you define `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` in your
+   *   `ftoption.h` file, this enables patented ClearType-style rendering.
+   *   Otherwise, Harmony LCD rendering is enabled.  These technologies are
+   *   controlled differently and API described below, although always
+   *   available, performs its function when appropriate method is enabled
+   *   and does nothing otherwise.
    *
    *   ClearType-style LCD rendering exploits the color-striped structure of
    *   LCD pixels, increasing the available resolution in the direction of
-   *   the stripe (usually horizontal RGB) by a factor of~3.  Since these
-   *   subpixels are color pixels, using them unfiltered creates severe
-   *   color fringes.  Use the @FT_Library_SetLcdFilter API to specify a
-   *   low-pass filter, which is then applied to subpixel-rendered bitmaps
-   *   generated through @FT_Render_Glyph.  The filter sacrifices some of
-   *   the higher resolution to reduce color fringes, making the glyph image
-   *   slightly blurrier.  Positional improvements will remain.
+   *   the stripe (usually horizontal RGB) by a factor of~3.  Using the
+   *   subpixels coverages unfiltered can create severe color fringes
+   *   especially when rendering thin features.  Indeed, to produce
+   *   black-on-white text, the nearby color subpixels must be dimmed
+   *   equally.
    *
-   *   A filter should have two properties:
+   *   A good 5-tap FIR filter should be applied to subpixel coverages
+   *   regardless of pixel boundaries and should have these properties:
    *
-   *   1) It should be normalized, meaning the sum of the 5~components
-   *      should be 256 (0x100).  It is possible to go above or under this
-   *      target sum, however: going under means tossing out contrast, going
-   *      over means invoking clamping and thereby non-linearities that
-   *      increase contrast somewhat at the expense of greater distortion
-   *      and color-fringing.  Contrast is better enhanced through stem
-   *      darkening.
+   *   1. It should be symmetrical, like {~a, b, c, b, a~}, to avoid
+   *      any shifts in appearance.
    *
-   *   2) It should be color-balanced, meaning a filter `{~a, b, c, b, a~}'
-   *      where a~+ b~=~c.  It distributes the computed coverage for one
-   *      subpixel to all subpixels equally, sacrificing some won resolution
-   *      but drastically reducing color-fringing.  Positioning improvements
-   *      remain!  Note that color-fringing can only really be minimized
-   *      when using a color-balanced filter and alpha-blending the glyph
-   *      onto a surface in linear space; see @FT_Render_Glyph.
+   *   2. It should be color-balanced, meaning a~+ b~=~c, to reduce color
+   *      fringes by distributing the computed coverage for one subpixel to
+   *      all subpixels equally.
+   *
+   *   3. It should be normalized, meaning 2a~+ 2b~+ c~=~1.0 to maintain
+   *      overall brightness.
    *
-   *   Regarding the form, a filter can be a `boxy' filter or a `beveled'
-   *   filter.  Boxy filters are sharper but are less forgiving of non-ideal
-   *   gamma curves of a screen (viewing angles!), beveled filters are
-   *   fuzzier but more tolerant.
+   *   Boxy 3-tap filter {0, 1/3, 1/3, 1/3, 0} is sharper but is less
+   *   forgiving of non-ideal gamma curves of a screen (and viewing angles),
+   *   beveled filters are fuzzier but more tolerant.
    *
-   *   Examples:
-   *
-   *   - [0x10 0x40 0x70 0x40 0x10] is beveled and neither balanced nor
-   *     normalized.
+   *   Use the @FT_Library_SetLcdFilter or @FT_Library_SetLcdFilterWeights
+   *   API to specify a low-pass filter, which is then applied to
+   *   subpixel-rendered bitmaps generated through @FT_Render_Glyph.
    *
-   *   - [0x1A 0x33 0x4D 0x33 0x1A] is beveled and balanced but not
-   *     normalized.
-   *
-   *   - [0x19 0x33 0x66 0x4c 0x19] is beveled and normalized but not
-   *     balanced.
-   *
-   *   - [0x00 0x4c 0x66 0x4c 0x00] is boxily beveled and normalized but not
-   *     balanced.
+   *   Harmony LCD rendering is suitable to panels with any regular subpixel
+   *   structure, not just monitors with 3 color striped subpixels, as long
+   *   as the color subpixels have fixed positions relative to the pixel
+   *   center.  In this case, each color channel is then rendered separately
+   *   after shifting the outline opposite to the subpixel shift so that the
+   *   coverage maps are aligned.  This method is immune to color fringes
+   *   because the shifts do not change integral coverage.
    *
-   *   - [0x00 0x55 0x56 0x55 0x00] is boxy, normalized, and almost
-   *     balanced.
+   *   The subpixel geometry must be specified by xy-coordinates for each
+   *   subpixel. By convention they may come in the RGB order: {{-1/3, 0},
+   *   {0, 0}, {1/3, 0}} for standard RGB striped panel or {{-1/6, 1/4},
+   *   {-1/6, -1/4}, {1/3, 0}} for a certain PenTile panel.
    *
-   *   - [0x08 0x4D 0x56 0x4D 0x08] is beveled, normalized and, almost
-   *     balanced.
-   *
-   *   The filter affects glyph bitmaps rendered through @FT_Render_Glyph,
-   *   @FT_Load_Glyph, and @FT_Load_Char.  It does _not_ affect the output
-   *   of @FT_Outline_Render and @FT_Outline_Get_Bitmap.
+   *   Use the @FT_Library_SetLcdGeometry API to specify subpixel positions.
+   *   If one follows the RGB order convention, the same order applies to the
+   *   resulting @FT_PIXEL_MODE_LCD and @FT_PIXEL_MODE_LCD_V bitmaps.  Note,
+   *   however, that the coordinate frame for the latter must be rotated
+   *   clockwise.  Harmony with default LCD geometry is equivalent to
+   *   ClearType with light filter.
    *
-   *   If this feature is activated, the dimensions of LCD glyph bitmaps are
-   *   either wider or taller than the dimensions of the corresponding
-   *   outline with regard to the pixel grid.  For example, for
-   *   @FT_RENDER_MODE_LCD, the filter adds 3~subpixels to the left, and
-   *   3~subpixels to the right.  The bitmap offset values are adjusted
-   *   accordingly, so clients shouldn't need to modify their layout and
-   *   glyph positioning code when enabling the filter.
+   *   As a result of ClearType filtering or Harmony rendering, the
+   *   dimensions of LCD bitmaps can be either wider or taller than the
+   *   dimensions of the corresponding outline with regard to the pixel grid.
+   *   For example, for @FT_RENDER_MODE_LCD, the filter adds 2~subpixels to
+   *   the left, and 2~subpixels to the right.  The bitmap offset values are
+   *   adjusted accordingly, so clients shouldn't need to modify their layout
+   *   and glyph positioning code when enabling the filter.
    *
-   *   It is important to understand that linear alpha blending and gamma
-   *   correction is critical for correctly rendering glyphs onto surfaces
-   *   without artifacts and even more critical when subpixel rendering is
-   *   involved.
+   *   The ClearType and Harmony rendering is applicable to glyph bitmaps
+   *   rendered through @FT_Render_Glyph, @FT_Load_Glyph, @FT_Load_Char, and
+   *   @FT_Glyph_To_Bitmap, when @FT_RENDER_MODE_LCD or @FT_RENDER_MODE_LCD_V
+   *   is specified.  This API does not control @FT_Outline_Render and
+   *   @FT_Outline_Get_Bitmap.
    *
-   *   Each of the 3~alpha values (subpixels) is independently used to blend
-   *   one color channel.  That is, red alpha blends the red channel of the
-   *   text color with the red channel of the background pixel.  The
-   *   distribution of density values by the color-balanced filter assumes
-   *   alpha blending is done in linear space; only then color artifacts
-   *   cancel out.
+   *   The described algorithms can completely remove color artefacts when
+   *   combined with gamma-corrected alpha blending in linear space.  Each of
+   *   the 3~alpha values (subpixels) must by independently used to blend one
+   *   color channel.  That is, red alpha blends the red channel of the text
+   *   color with the red channel of the background pixel.
    */
 
 
-  /****************************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   FT_LcdFilter
@@ -145,47 +138,25 @@
    *     results in sometimes severe color fringes.
    *
    *   FT_LCD_FILTER_DEFAULT ::
-   *     The default filter reduces color fringes considerably, at the cost
-   *     of a slight blurriness in the output.
-   *
-   *     It is a beveled, normalized, and color-balanced five-tap filter
-   *     that is more forgiving to screens with non-ideal gamma curves and
-   *     viewing angles.  Note that while color-fringing is reduced, it can
-   *     only be minimized by using linear alpha blending and gamma
-   *     correction to render glyphs onto surfaces.  The default filter
-   *     weights are [0x08 0x4D 0x56 0x4D 0x08].
+   *     This is a beveled, normalized, and color-balanced five-tap filter
+   *     with weights of [0x08 0x4D 0x56 0x4D 0x08] in 1/256th units.
    *
    *   FT_LCD_FILTER_LIGHT ::
-   *     The light filter is a variant that is sharper at the cost of
-   *     slightly more color fringes than the default one.
-   *
-   *     It is a boxy, normalized, and color-balanced three-tap filter that
-   *     is less forgiving to screens with non-ideal gamma curves and
-   *     viewing angles.  This filter works best when the rendering system
-   *     uses linear alpha blending and gamma correction to render glyphs
-   *     onto surfaces.  The light filter weights are
-   *     [0x00 0x55 0x56 0x55 0x00].
+   *     this is a boxy, normalized, and color-balanced three-tap filter with
+   *     weights of [0x00 0x55 0x56 0x55 0x00] in 1/256th units.
    *
    *   FT_LCD_FILTER_LEGACY ::
+   *   FT_LCD_FILTER_LEGACY1 ::
    *     This filter corresponds to the original libXft color filter.  It
    *     provides high contrast output but can exhibit really bad color
    *     fringes if glyphs are not extremely well hinted to the pixel grid.
-   *     In other words, it only works well if the TrueType bytecode
-   *     interpreter is enabled *and* high-quality hinted fonts are used.
-   *
    *     This filter is only provided for comparison purposes, and might be
-   *     disabled or stay unsupported in the future.
-   *
-   *   FT_LCD_FILTER_LEGACY1 ::
-   *     For historical reasons, the FontConfig library returns a different
-   *     enumeration value for legacy LCD filtering.  To make code work that
-   *     (incorrectly) forwards FontConfig's enumeration value to
-   *     @FT_Library_SetLcdFilter without proper mapping, it is thus easiest
-   *     to have another enumeration value, which is completely equal to
-   *     `FT_LCD_FILTER_LEGACY'.
+   *     disabled or stay unsupported in the future. The second value is
+   *     provided for compatibility with FontConfig, which historically used
+   *     different enumeration, sometimes incorrectly forwarded to FreeType.
    *
    * @since:
-   *   2.3.0 (`FT_LCD_FILTER_LEGACY1' since 2.6.2)
+   *   2.3.0 (`FT_LCD_FILTER_LEGACY1` since 2.6.2)
    */
   typedef enum  FT_LcdFilter_
   {
@@ -202,7 +173,7 @@
 
   /**************************************************************************
    *
-   * @func:
+   * @function:
    *   FT_Library_SetLcdFilter
    *
    * @description:
@@ -218,20 +189,20 @@
    *     The filter type.
    *
    *     You can use @FT_LCD_FILTER_NONE here to disable this feature, or
-   *     @FT_LCD_FILTER_DEFAULT to use a default filter that should work
-   *     well on most LCD screens.
+   *     @FT_LCD_FILTER_DEFAULT to use a default filter that should work well
+   *     on most LCD screens.
    *
    * @return:
    *   FreeType error code.  0~means success.
    *
    * @note:
    *   This feature is always disabled by default.  Clients must make an
-   *   explicit call to this function with a `filter' value other than
+   *   explicit call to this function with a `filter` value other than
    *   @FT_LCD_FILTER_NONE in order to enable it.
    *
-   *   Due to *PATENTS* covering subpixel rendering, this function doesn't
-   *   do anything except returning `FT_Err_Unimplemented_Feature' if the
-   *   configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
+   *   Due to **PATENTS** covering subpixel rendering, this function doesn't
+   *   do anything except returning `FT_Err_Unimplemented_Feature` if the
+   *   configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not
    *   defined in your build of the library, which should correspond to all
    *   default builds of FreeType.
    *
@@ -245,7 +216,7 @@
 
   /**************************************************************************
    *
-   * @func:
+   * @function:
    *   FT_Library_SetLcdFilterWeights
    *
    * @description:
@@ -258,15 +229,15 @@
    *
    *   weights ::
    *     A pointer to an array; the function copies the first five bytes and
-   *     uses them to specify the filter weights.
+   *     uses them to specify the filter weights in 1/256th units.
    *
    * @return:
    *   FreeType error code.  0~means success.
    *
    * @note:
-   *   Due to *PATENTS* covering subpixel rendering, this function doesn't
-   *   do anything except returning `FT_Err_Unimplemented_Feature' if the
-   *   configuration macro FT_CONFIG_OPTION_SUBPIXEL_RENDERING is not
+   *   Due to **PATENTS** covering subpixel rendering, this function doesn't
+   *   do anything except returning `FT_Err_Unimplemented_Feature` if the
+   *   configuration macro `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is not
    *   defined in your build of the library, which should correspond to all
    *   default builds of FreeType.
    *
@@ -281,7 +252,8 @@
                                   unsigned char  *weights );
 
 
-  /*
+  /**************************************************************************
+   *
    * @type:
    *   FT_LcdFiveTapFilter
    *
@@ -298,6 +270,53 @@
   typedef FT_Byte  FT_LcdFiveTapFilter[FT_LCD_FILTER_FIVE_TAPS];
 
 
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Library_SetLcdGeometry
+   *
+   * @description:
+   *   This function can be used to modify default positions of color
+   *   subpixels, which controls Harmony LCD rendering.
+   *
+   * @input:
+   *   library ::
+   *     A handle to the target library instance.
+   *
+   *   sub ::
+   *     A pointer to an array of 3 vectors in 26.6 fractional pixel format;
+   *     the function modifies the default values, see the note below.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Subpixel geometry examples:
+   *
+   *   - {{-21, 0}, {0, 0}, {21, 0}} is the default, corresponding to 3 color
+   *   stripes shifted by a third of a pixel. This could be an RGB panel.
+   *
+   *   - {{21, 0}, {0, 0}, {-21, 0}} looks the same as the default but can
+   *   specify a BGR panel instead, while keeping the bitmap in the same
+   *   RGB888 format.
+   *
+   *   - {{0, 21}, {0, 0}, {0, -21}} is the vertical RGB, but the bitmap
+   *   stays RGB888 as a result.
+   *
+   *   - {{-11, 16}, {-11, -16}, {22, 0}} is a certain PenTile arrangement.
+   *
+   *   This function does nothing and returns `FT_Err_Unimplemented_Feature`
+   *   in the context of ClearType-style subpixel rendering when
+   *   `FT_CONFIG_OPTION_SUBPIXEL_RENDERING` is defined in your build of the
+   *   library.
+   *
+   * @since:
+   *   2.10.0
+   */
+  FT_EXPORT( FT_Error )
+  FT_Library_SetLcdGeometry( FT_Library  library,
+                             FT_Vector   sub[3] );
+
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftlist.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftlist.h	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftlist.h                                                               */
-/*                                                                         */
-/*    Generic list support for FreeType (specification).                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftlist.h
+ *
+ *   Generic list support for FreeType (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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'.                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file implements functions relative to list processing.  Its data
+   * structures are defined in `freetype.h`.
+   *
+   */
 
 
 #ifndef FTLIST_H_
@@ -41,224 +41,245 @@
 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                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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>                                                         */
-  /*    Find 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.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Find
+   *
+   * @description:
+   *   Find 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>                                                         */
-  /*    Append an element to the end of a list.                            */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to the parent list.                              */
-  /*    node :: The node to append.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Add
+   *
+   * @description:
+   *   Append 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>                                                         */
-  /*    Insert an element at the head of a list.                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    list :: A pointer to parent list.                                  */
-  /*    node :: The node to insert.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Insert
+   *
+   * @description:
+   *   Insert 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>                                                         */
-  /*    Remove 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.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Remove
+   *
+   * @description:
+   *   Remove 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>                                                         */
-  /*    Move 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.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Up
+   *
+   * @description:
+   *   Move 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 that 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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_List_Iterator
+   *
+   * @description:
+   *   An FT_List iterator function that 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>                                                         */
-  /*    Parse 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 iterator function, called on each node of the list. */
-  /*    user     :: A user-supplied field that is passed as the second     */
-  /*                argument to the iterator.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result (a FreeType error code) of the last iterator call.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Iterate
+   *
+   * @description:
+   *   Parse 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 iterator function, called on each node of the list.
+   *   user ::
+   *     A user-supplied field that 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 that 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.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_List_Destructor
+   *
+   * @description:
+   *   An @FT_List iterator function that 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>                                                         */
-  /*    Destroy 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.  Set this to NULL if not needed.           */
-  /*                                                                       */
-  /*    memory  :: The current memory object that handles deallocation.    */
-  /*                                                                       */
-  /*    user    :: A user-supplied field that is passed as the last        */
-  /*               argument to the destructor.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function expects that all nodes added by @FT_List_Add or      */
-  /*    @FT_List_Insert have been dynamically allocated.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_List_Finalize
+   *
+   * @description:
+   *   Destroy 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.
+   *     Set this to `NULL` if not needed.
+   *
+   *   memory ::
+   *     The current memory object that handles deallocation.
+   *
+   *   user ::
+   *     A user-supplied field that is passed as the last argument to the
+   *     destructor.
+   *
+   * @note:
+   *   This function expects that all nodes added by @FT_List_Add or
+   *   @FT_List_Insert have been dynamically allocated.
+   */
   FT_EXPORT( void )
   FT_List_Finalize( FT_List             list,
                     FT_List_Destructor  destroy,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftmac.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftmac.h	Thu May 09 16:09:39 2019 -0700
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmac.h                                                                */
-/*                                                                         */
-/*    Additional Mac-specific API.                                         */
-/*                                                                         */
-/*  Copyright 1996-2018 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.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmac.h
+ *
+ *   Additional Mac-specific API.
+ *
+ * Copyright (C) 1996-2019 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 FT_FREETYPE_H and after any               */
-/*       Mac-specific headers (because this header uses Mac types such as  */
-/*       Handle, FSSpec, FSRef, etc.)                                      */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * NOTE: Include this file after `FT_FREETYPE_H` and after any
+ *       Mac-specific headers (because this header uses Mac types such as
+ *       'Handle', 'FSSpec', 'FSRef', etc.)
+ *
+ */
 
 
 #ifndef FTMAC_H_
@@ -47,56 +47,59 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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>                                                         */
-  /*    Create a new face object from a FOND resource.                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    fond       :: A 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 objects from fonts    */
-  /*    that are installed in the system as follows.                       */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      fond = GetResource( 'FOND', fontName );                          */
-  /*      error = FT_New_Face_From_FOND( library, fond, 0, &face );        */
-  /*    }                                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Face_From_FOND
+   *
+   * @description:
+   *   Create a new face object from a FOND resource.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   fond ::
+   *     A 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.
+   *
+   * @example:
+   *   This function can be used to create @FT_Face objects from fonts that
+   *   are installed in the system as follows.
+   *
+   *   ```
+   *     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,
@@ -105,28 +108,28 @@
                        FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_GetFile_From_Mac_Name                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return an FSSpec for the disk file containing the named font.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    fontName   :: Mac OS name of the font (e.g., Times New Roman       */
-  /*                  Bold).                                               */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    pathSpec   :: FSSpec to the file.  For passing to                  */
-  /*                  @FT_New_Face_From_FSSpec.                            */
-  /*                                                                       */
-  /*    face_index :: Index of the face.  For passing to                   */
-  /*                  @FT_New_Face_From_FSSpec.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_GetFile_From_Mac_Name
+   *
+   * @description:
+   *   Return an FSSpec for the disk file containing the named font.
+   *
+   * @input:
+   *   fontName ::
+   *     Mac OS name of the font (e.g., Times New Roman Bold).
+   *
+   * @output:
+   *   pathSpec ::
+   *     FSSpec to the file.  For passing to @FT_New_Face_From_FSSpec.
+   *
+   *   face_index ::
+   *     Index of the face.  For passing to @FT_New_Face_From_FSSpec.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_GetFile_From_Mac_Name( const char*  fontName,
                             FSSpec*      pathSpec,
@@ -134,27 +137,28 @@
                           FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_GetFile_From_Mac_ATS_Name                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return an FSSpec for the disk file containing the named font.      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    fontName   :: Mac OS name of the font in ATS framework.            */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    pathSpec   :: FSSpec to the file. For passing to                   */
-  /*                  @FT_New_Face_From_FSSpec.                            */
-  /*                                                                       */
-  /*    face_index :: Index of the face. For passing to                    */
-  /*                  @FT_New_Face_From_FSSpec.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_GetFile_From_Mac_ATS_Name
+   *
+   * @description:
+   *   Return an FSSpec for the disk file containing the named font.
+   *
+   * @input:
+   *   fontName ::
+   *     Mac OS name of the font in ATS framework.
+   *
+   * @output:
+   *   pathSpec ::
+   *     FSSpec to the file. For passing to @FT_New_Face_From_FSSpec.
+   *
+   *   face_index ::
+   *     Index of the face. For passing to @FT_New_Face_From_FSSpec.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_GetFile_From_Mac_ATS_Name( const char*  fontName,
                                 FSSpec*      pathSpec,
@@ -162,30 +166,33 @@
                               FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_GetFilePath_From_Mac_ATS_Name                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a pathname of the disk file and face index for given font   */
-  /*    name that is handled by ATS framework.                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    fontName    :: Mac OS name of the font in ATS framework.           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    path        :: Buffer to store pathname of the file.  For passing  */
-  /*                   to @FT_New_Face.  The client must allocate this     */
-  /*                   buffer before calling this function.                */
-  /*                                                                       */
-  /*    maxPathSize :: Lengths of the buffer `path' that client allocated. */
-  /*                                                                       */
-  /*    face_index  :: Index of the face.  For passing to @FT_New_Face.    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_GetFilePath_From_Mac_ATS_Name
+   *
+   * @description:
+   *   Return a pathname of the disk file and face index for given font name
+   *   that is handled by ATS framework.
+   *
+   * @input:
+   *   fontName ::
+   *     Mac OS name of the font in ATS framework.
+   *
+   * @output:
+   *   path ::
+   *     Buffer to store pathname of the file.  For passing to @FT_New_Face.
+   *     The client must allocate this buffer before calling this function.
+   *
+   *   maxPathSize ::
+   *     Lengths of the buffer `path` that client allocated.
+   *
+   *   face_index ::
+   *     Index of the face.  For passing to @FT_New_Face.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_GetFilePath_From_Mac_ATS_Name( const char*  fontName,
                                     UInt8*       path,
@@ -194,33 +201,37 @@
                                   FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face_From_FSSpec                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create 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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Face_From_FSSpec
+   *
+   * @description:
+   *   Create 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,
@@ -229,33 +240,37 @@
                          FT_DEPRECATED_ATTRIBUTE;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face_From_FSRef                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new face object from a given resource and typeface index  */
-  /*    using an FSRef to the font file.                                   */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library    :: A handle to the library resource.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    spec       :: FSRef 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_FSRef is identical to @FT_New_Face except        */
-  /*    it accepts an FSRef instead of a path.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Face_From_FSRef
+   *
+   * @description:
+   *   Create a new face object from a given resource and typeface index
+   *   using an FSRef to the font file.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library resource.
+   *
+   * @input:
+   *   spec ::
+   *     FSRef 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_FSRef is identical to @FT_New_Face except it accepts
+   *   an FSRef instead of a path.
+   */
   FT_EXPORT( FT_Error )
   FT_New_Face_From_FSRef( FT_Library    library,
                           const FSRef  *ref,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftmm.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftmm.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmm.h                                                                 */
-/*                                                                         */
-/*    FreeType Multiple Master font interface (specification).             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmm.h
+ *
+ *   FreeType Multiple Master font interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -27,49 +27,52 @@
 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.                                   */
-  /*                                                                       */
-  /*    Besides Adobe MM fonts, the interface supports Apple's TrueType GX */
-  /*    and OpenType variation fonts.  Some of the routines only work with */
-  /*    Adobe MM fonts, others will work with all three types.  They are   */
-  /*    similar enough that a consistent interface makes sense.            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   Besides Adobe MM fonts, the interface supports Apple's TrueType GX and
+   *   OpenType variation fonts.  Some of the routines only work with Adobe
+   *   MM fonts, others will work with all three types.  They are similar
+   *   enough that a consistent interface makes sense.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_MM_Axis                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a given axis in design space for Multiple     */
-  /*    Masters fonts.                                                     */
-  /*                                                                       */
-  /*    This structure can't be used for TrueType GX or OpenType variation */
-  /*    fonts.                                                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    name    :: The axis's name.                                        */
-  /*                                                                       */
-  /*    minimum :: The axis's minimum design coordinate.                   */
-  /*                                                                       */
-  /*    maximum :: The axis's maximum design coordinate.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_MM_Axis
+   *
+   * @description:
+   *   A structure to model a given axis in design space for Multiple Masters
+   *   fonts.
+   *
+   *   This structure can't be used for TrueType GX or OpenType variation
+   *   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;
@@ -79,28 +82,29 @@
   } FT_MM_Axis;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Multi_Master                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model the axes and space of a Multiple Masters      */
-  /*    font.                                                              */
-  /*                                                                       */
-  /*    This structure can't be used for TrueType GX or OpenType variation */
-  /*    fonts.                                                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_axis    :: Number of axes.  Cannot exceed~4.                   */
-  /*                                                                       */
-  /*    num_designs :: Number of designs; should be 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.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Multi_Master
+   *
+   * @description:
+   *   A structure to model the axes and space of a Multiple Masters font.
+   *
+   *   This structure can't be used for TrueType GX or OpenType variation
+   *   fonts.
+   *
+   * @fields:
+   *   num_axis ::
+   *     Number of axes.  Cannot exceed~4.
+   *
+   *   num_designs ::
+   *     Number of designs; should be 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;
@@ -110,42 +114,45 @@
   } FT_Multi_Master;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Var_Axis                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a given axis in design space for Multiple     */
-  /*    Masters, TrueType GX, and OpenType variation fonts.                */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    name    :: The axis's name.                                        */
-  /*               Not always meaningful for TrueType GX or OpenType       */
-  /*               variation fonts.                                        */
-  /*                                                                       */
-  /*    minimum :: The axis's minimum design coordinate.                   */
-  /*                                                                       */
-  /*    def     :: The axis's default design coordinate.                   */
-  /*               FreeType computes meaningful default values for Adobe   */
-  /*               MM fonts.                                               */
-  /*                                                                       */
-  /*    maximum :: The axis's maximum design coordinate.                   */
-  /*                                                                       */
-  /*    tag     :: The axis's tag (the equivalent to `name' for TrueType   */
-  /*               GX and OpenType variation fonts).  FreeType provides    */
-  /*               default values for Adobe MM fonts if possible.          */
-  /*                                                                       */
-  /*    strid   :: The axis name entry in the font's `name' table.  This   */
-  /*               is another (and often better) version of the `name'     */
-  /*               field for TrueType GX or OpenType variation fonts.  Not */
-  /*               meaningful for Adobe MM fonts.                          */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The fields `minimum', `def', and `maximum' are 16.16 fractional    */
-  /*    values for TrueType GX and OpenType variation fonts.  For Adobe MM */
-  /*    fonts, the values are integers.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Var_Axis
+   *
+   * @description:
+   *   A structure to model a given axis in design space for Multiple
+   *   Masters, TrueType GX, and OpenType variation fonts.
+   *
+   * @fields:
+   *   name ::
+   *     The axis's name.  Not always meaningful for TrueType GX or OpenType
+   *     variation fonts.
+   *
+   *   minimum ::
+   *     The axis's minimum design coordinate.
+   *
+   *   def ::
+   *     The axis's default design coordinate.  FreeType computes meaningful
+   *     default values for Adobe MM fonts.
+   *
+   *   maximum ::
+   *     The axis's maximum design coordinate.
+   *
+   *   tag ::
+   *     The axis's tag (the equivalent to 'name' for TrueType GX and
+   *     OpenType variation fonts).  FreeType provides default values for
+   *     Adobe MM fonts if possible.
+   *
+   *   strid ::
+   *     The axis name entry in the font's 'name' table.  This is another
+   *     (and often better) version of the 'name' field for TrueType GX or
+   *     OpenType variation fonts.  Not meaningful for Adobe MM fonts.
+   *
+   * @note:
+   *   The fields `minimum`, `def`, and `maximum` are 16.16 fractional values
+   *   for TrueType GX and OpenType variation fonts.  For Adobe MM fonts, the
+   *   values are integers.
+   */
   typedef struct  FT_Var_Axis_
   {
     FT_String*  name;
@@ -160,27 +167,29 @@
   } FT_Var_Axis;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Var_Named_Style                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a named instance in a TrueType GX or OpenType */
-  /*    variation font.                                                    */
-  /*                                                                       */
-  /*    This structure can't be used for Adobe MM fonts.                   */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    coords :: The design coordinates for this instance.                */
-  /*              This is an array with one entry for each axis.           */
-  /*                                                                       */
-  /*    strid  :: The entry in `name' table identifying this instance.     */
-  /*                                                                       */
-  /*    psid   :: The entry in `name' table identifying a PostScript name  */
-  /*              for this instance.  Value 0xFFFF indicates a missing     */
-  /*              entry.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Var_Named_Style
+   *
+   * @description:
+   *   A structure to model a named instance in a TrueType GX or OpenType
+   *   variation font.
+   *
+   *   This structure can't be used for Adobe MM fonts.
+   *
+   * @fields:
+   *   coords ::
+   *     The design coordinates for this instance.  This is an array with one
+   *     entry for each axis.
+   *
+   *   strid ::
+   *     The entry in 'name' table identifying this instance.
+   *
+   *   psid ::
+   *     The entry in 'name' table identifying a PostScript name for this
+   *     instance.  Value 0xFFFF indicates a missing entry.
+   */
   typedef struct  FT_Var_Named_Style_
   {
     FT_Fixed*  coords;
@@ -190,50 +199,47 @@
   } FT_Var_Named_Style;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_MM_Var                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model the axes and space of an Adobe MM, TrueType   */
-  /*    GX, or OpenType variation font.                                    */
-  /*                                                                       */
-  /*    Some fields are specific to one format and not to the others.      */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_axis        :: The number of axes.  The maximum value is~4 for */
-  /*                       Adobe MM fonts; no limit in TrueType GX or      */
-  /*                       OpenType variation fonts.                       */
-  /*                                                                       */
-  /*    num_designs     :: The number of designs; should be normally       */
-  /*                       2^num_axis for Adobe MM fonts.  Not meaningful  */
-  /*                       for TrueType GX or OpenType variation fonts     */
-  /*                       (where every glyph could have a different       */
-  /*                       number of designs).                             */
-  /*                                                                       */
-  /*    num_namedstyles :: The number of named styles; a `named style' is  */
-  /*                       a tuple of design coordinates that has a string */
-  /*                       ID (in the `name' table) associated with it.    */
-  /*                       The font can tell the user that, for example,   */
-  /*                       [Weight=1.5,Width=1.1] is `Bold'.  Another name */
-  /*                       for `named style' is `named instance'.          */
-  /*                                                                       */
-  /*                       For Adobe Multiple Masters fonts, this value is */
-  /*                       always zero because the format does not support */
-  /*                       named styles.                                   */
-  /*                                                                       */
-  /*    axis            :: An axis descriptor table.                       */
-  /*                       TrueType GX and OpenType variation fonts        */
-  /*                       contain slightly more data than Adobe MM fonts. */
-  /*                       Memory management of this pointer is done       */
-  /*                       internally by FreeType.                         */
-  /*                                                                       */
-  /*    namedstyle      :: A named style (instance) table.                 */
-  /*                       Only meaningful for TrueType GX and OpenType    */
-  /*                       variation fonts.  Memory management of this     */
-  /*                       pointer is done internally by FreeType.         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_MM_Var
+   *
+   * @description:
+   *   A structure to model the axes and space of an Adobe MM, TrueType GX,
+   *   or OpenType variation font.
+   *
+   *   Some fields are specific to one format and not to the others.
+   *
+   * @fields:
+   *   num_axis ::
+   *     The number of axes.  The maximum value is~4 for Adobe MM fonts; no
+   *     limit in TrueType GX or OpenType variation fonts.
+   *
+   *   num_designs ::
+   *     The number of designs; should be normally 2^num_axis for Adobe MM
+   *     fonts.  Not meaningful for TrueType GX or OpenType variation fonts
+   *     (where every glyph could have a different number of designs).
+   *
+   *   num_namedstyles ::
+   *     The number of named styles; a 'named style' is a tuple of design
+   *     coordinates that has a string ID (in the 'name' table) associated
+   *     with it.  The font can tell the user that, for example,
+   *     [Weight=1.5,Width=1.1] is 'Bold'.  Another name for 'named style' is
+   *     'named instance'.
+   *
+   *     For Adobe Multiple Masters fonts, this value is always zero because
+   *     the format does not support named styles.
+   *
+   *   axis ::
+   *     An axis descriptor table.  TrueType GX and OpenType variation fonts
+   *     contain slightly more data than Adobe MM fonts.  Memory management
+   *     of this pointer is done internally by FreeType.
+   *
+   *   namedstyle ::
+   *     A named style (instance) table.  Only meaningful for TrueType GX and
+   *     OpenType variation fonts.  Memory management of this pointer is done
+   *     internally by FreeType.
+   */
   typedef struct  FT_MM_Var_
   {
     FT_UInt              num_axis;
@@ -245,384 +251,493 @@
   } FT_MM_Var;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Multi_Master                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve a variation descriptor of a given Adobe MM font.          */
-  /*                                                                       */
-  /*    This function can't be used with TrueType GX or OpenType variation */
-  /*    fonts.                                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face    :: A handle to the source face.                            */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    amaster :: The Multiple Masters descriptor.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Multi_Master
+   *
+   * @description:
+   *   Retrieve a variation descriptor of a given Adobe MM font.
+   *
+   *   This function can't be used with TrueType GX or OpenType variation
+   *   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>                                                         */
-  /*    Retrieve a variation descriptor for a given font.                  */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face    :: A handle to the source face.                            */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    amaster :: The variation descriptor.                               */
-  /*               Allocates a data structure, which the user must         */
-  /*               deallocate with a call to @FT_Done_MM_Var after use.    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_MM_Var
+   *
+   * @description:
+   *   Retrieve a variation descriptor for a given font.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @output:
+   *   amaster ::
+   *     The variation descriptor.  Allocates a data structure, which the
+   *     user must deallocate with a call to @FT_Done_MM_Var after use.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_MM_Var( FT_Face      face,
                  FT_MM_Var*  *amaster );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_MM_Var                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Free the memory allocated by @FT_Get_MM_Var.                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle of the face's parent library object that was   */
-  /*               used in the call to @FT_Get_MM_Var to create `amaster'. */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_MM_Var
+   *
+   * @description:
+   *   Free the memory allocated by @FT_Get_MM_Var.
+   *
+   * @input:
+   *   library ::
+   *     A handle of the face's parent library object that was used in the
+   *     call to @FT_Get_MM_Var to create `amaster`.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   */
   FT_EXPORT( FT_Error )
   FT_Done_MM_Var( FT_Library   library,
                   FT_MM_Var   *amaster );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_MM_Design_Coordinates                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    For Adobe MM fonts, choose an interpolated font design through     */
-  /*    design coordinates.                                                */
-  /*                                                                       */
-  /*    This function can't be used with TrueType GX or OpenType variation */
-  /*    fonts.                                                             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available design coordinates.  If it   */
-  /*                  is larger than the number of axes, ignore the excess */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use default values for the remaining axes.           */
-  /*                                                                       */
-  /*    coords     :: An array of design coordinates.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    [Since 2.8.1] To reset all axes to the default values, call the    */
-  /*    function with `num_coords' set to zero and `coords' set to NULL.   */
-  /*                                                                       */
-  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
-  /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
-  /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
-  /*    is zero, this bit flag gets unset.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_MM_Design_Coordinates
+   *
+   * @description:
+   *   For Adobe MM fonts, choose an interpolated font design through design
+   *   coordinates.
+   *
+   *   This function can't be used with TrueType GX or OpenType variation
+   *   fonts.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @input:
+   *   num_coords ::
+   *     The number of available design coordinates.  If it is larger than
+   *     the number of axes, ignore the excess values.  If it is smaller than
+   *     the number of axes, use default values for the remaining axes.
+   *
+   *   coords ::
+   *     An array of design coordinates.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   [Since 2.8.1] To reset all axes to the default values, call the
+   *   function with `num_coords` set to zero and `coords` set to `NULL`.
+   *
+   *   [Since 2.9] If `num_coords` is larger than zero, this function sets
+   *   the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
+   *   (i.e., @FT_IS_VARIATION will return true).  If `num_coords` is zero,
+   *   this bit flag gets unset.
+   */
   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>                                                         */
-  /*    Choose an interpolated font design through design coordinates.     */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available design coordinates.  If it   */
-  /*                  is larger than the number of axes, ignore the excess */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use default values for the remaining axes.           */
-  /*                                                                       */
-  /*    coords     :: An array of design coordinates.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    [Since 2.8.1] To reset all axes to the default values, call the    */
-  /*    function with `num_coords' set to zero and `coords' set to NULL.   */
-  /*    [Since 2.9] `Default values' means the currently selected named    */
-  /*    instance (or the base font if no named instance is selected).      */
-  /*                                                                       */
-  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
-  /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
-  /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
-  /*    is zero, this bit flag gets unset.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Var_Design_Coordinates
+   *
+   * @description:
+   *   Choose an interpolated font design through design coordinates.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @input:
+   *   num_coords ::
+   *     The number of available design coordinates.  If it is larger than
+   *     the number of axes, ignore the excess values.  If it is smaller than
+   *     the number of axes, use default values for the remaining axes.
+   *
+   *   coords ::
+   *     An array of design coordinates.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   [Since 2.8.1] To reset all axes to the default values, call the
+   *   function with `num_coords` set to zero and `coords` set to `NULL`.
+   *   [Since 2.9] 'Default values' means the currently selected named
+   *   instance (or the base font if no named instance is selected).
+   *
+   *   [Since 2.9] If `num_coords` is larger than zero, this function sets
+   *   the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
+   *   (i.e., @FT_IS_VARIATION will return true).  If `num_coords` is zero,
+   *   this bit flag gets unset.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Var_Design_Coordinates( FT_Face    face,
                                  FT_UInt    num_coords,
                                  FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Var_Design_Coordinates                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the design coordinates of the currently selected interpolated  */
-  /*    font.                                                              */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /*    num_coords :: The number of design coordinates to retrieve.  If it */
-  /*                  is larger than the number of axes, set the excess    */
-  /*                  values to~0.                                         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    coords     :: The design coordinates array.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.7.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Var_Design_Coordinates
+   *
+   * @description:
+   *   Get the design coordinates of the currently selected interpolated
+   *   font.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   num_coords ::
+   *     The number of design coordinates to retrieve.  If it is larger than
+   *     the number of axes, set the excess values to~0.
+   *
+   * @output:
+   *   coords ::
+   *     The design coordinates array.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.7.1
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Var_Design_Coordinates( FT_Face    face,
                                  FT_UInt    num_coords,
                                  FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_MM_Blend_Coordinates                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Choose an interpolated font design through normalized blend        */
-  /*    coordinates.                                                       */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available design coordinates.  If it   */
-  /*                  is larger than the number of axes, ignore the excess */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use default values for the remaining axes.           */
-  /*                                                                       */
-  /*    coords     :: The design coordinates array (each element must be   */
-  /*                  between 0 and 1.0 for Adobe MM fonts, and between    */
-  /*                  -1.0 and 1.0 for TrueType GX and OpenType variation  */
-  /*                  fonts).                                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    [Since 2.8.1] To reset all axes to the default values, call the    */
-  /*    function with `num_coords' set to zero and `coords' set to NULL.   */
-  /*    [Since 2.9] `Default values' means the currently selected named    */
-  /*    instance (or the base font if no named instance is selected).      */
-  /*                                                                       */
-  /*    [Since 2.9] If `num_coords' is larger than zero, this function     */
-  /*    sets the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags'    */
-  /*    field (i.e., @FT_IS_VARIATION will return true).  If `num_coords'  */
-  /*    is zero, this bit flag gets unset.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_MM_Blend_Coordinates
+   *
+   * @description:
+   *   Choose an interpolated font design through normalized blend
+   *   coordinates.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @input:
+   *   num_coords ::
+   *     The number of available design coordinates.  If it is larger than
+   *     the number of axes, ignore the excess values.  If it is smaller than
+   *     the number of axes, use default values for the remaining axes.
+   *
+   *   coords ::
+   *     The design coordinates array (each element must be between 0 and 1.0
+   *     for Adobe MM fonts, and between -1.0 and 1.0 for TrueType GX and
+   *     OpenType variation fonts).
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   [Since 2.8.1] To reset all axes to the default values, call the
+   *   function with `num_coords` set to zero and `coords` set to `NULL`.
+   *   [Since 2.9] 'Default values' means the currently selected named
+   *   instance (or the base font if no named instance is selected).
+   *
+   *   [Since 2.9] If `num_coords` is larger than zero, this function sets
+   *   the @FT_FACE_FLAG_VARIATION bit in @FT_Face's `face_flags` field
+   *   (i.e., @FT_IS_VARIATION will return true).  If `num_coords` is zero,
+   *   this bit flag gets unset.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_MM_Blend_Coordinates( FT_Face    face,
                                FT_UInt    num_coords,
                                FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_MM_Blend_Coordinates                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the normalized blend coordinates of the currently selected     */
-  /*    interpolated font.                                                 */
-  /*                                                                       */
-  /*    This function works with all supported variation formats.          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /*    num_coords :: The number of normalized blend coordinates to        */
-  /*                  retrieve.  If it is larger than the number of axes,  */
-  /*                  set the excess values to~0.5 for Adobe MM fonts, and */
-  /*                  to~0 for TrueType GX and OpenType variation fonts.   */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    coords     :: The normalized blend coordinates array.              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.7.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_MM_Blend_Coordinates
+   *
+   * @description:
+   *   Get the normalized blend coordinates of the currently selected
+   *   interpolated font.
+   *
+   *   This function works with all supported variation formats.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   num_coords ::
+   *     The number of normalized blend coordinates to retrieve.  If it is
+   *     larger than the number of axes, set the excess values to~0.5 for
+   *     Adobe MM fonts, and to~0 for TrueType GX and OpenType variation
+   *     fonts.
+   *
+   * @output:
+   *   coords ::
+   *     The normalized blend coordinates array.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.7.1
+   */
   FT_EXPORT( FT_Error )
   FT_Get_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.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Var_Blend_Coordinates                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This is another name of @FT_Get_MM_Blend_Coordinates.              */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.7.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Var_Blend_Coordinates
+   *
+   * @description:
+   *   This is another name of @FT_Get_MM_Blend_Coordinates.
+   *
+   * @since:
+   *   2.7.1
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Var_Blend_Coordinates( FT_Face    face,
                                 FT_UInt    num_coords,
                                 FT_Fixed*  coords );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_VAR_AXIS_FLAG_XXX                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A list of bit flags used in the return value of                    */
-  /*    @FT_Get_Var_Axis_Flags.                                            */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_VAR_AXIS_FLAG_HIDDEN ::                                         */
-  /*      The variation axis should not be exposed to user interfaces.     */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_MM_WeightVector
+   *
+   * @description:
+   *   For Adobe MM fonts, choose an interpolated font design by directly
+   *   setting the weight vector.
+   *
+   *   This function can't be used with TrueType GX or OpenType variation
+   *   fonts.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face.
+   *
+   * @input:
+   *   len ::
+   *     The length of the weight vector array.  If it is larger than the
+   *     number of designs, the extra values are ignored.  If it is less than
+   *     the number of designs, the remaining values are set to zero.
+   *
+   *   weightvector ::
+   *     An array representing the weight vector.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Adobe Multiple Master fonts limit the number of designs, and thus the
+   *   length of the weight vector to~16.
+   *
+   *   If `len` is zero and `weightvector` is `NULL`, the weight vector array
+   *   is reset to the default values.
+   *
+   *   The Adobe documentation also states that the values in the
+   *   WeightVector array must total 1.0 +/-~0.001.  In practice this does
+   *   not seem to be enforced, so is not enforced here, either.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Set_MM_WeightVector( FT_Face    face,
+                          FT_UInt    len,
+                          FT_Fixed*  weightvector );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_MM_WeightVector
+   *
+   * @description:
+   *   For Adobe MM fonts, retrieve the current weight vector of the font.
+   *
+   *   This function can't be used with TrueType GX or OpenType variation
+   *   fonts.
+   *
+   * @inout:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   len ::
+   *     A pointer to the size of the array to be filled.  If the size of the
+   *     array is less than the number of designs, `FT_Err_Invalid_Argument`
+   *     is returned, and `len` is set to the required size (the number of
+   *     designs).  If the size of the array is greater than the number of
+   *     designs, the remaining entries are set to~0.  On successful
+   *     completion, `len` is set to the number of designs (i.e., the number
+   *     of values written to the array).
+   *
+   * @output:
+   *   weightvector ::
+   *     An array to be filled.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   Adobe Multiple Master fonts limit the number of designs, and thus the
+   *   length of the WeightVector to~16.
+   *
+   * @since:
+   *   2.10
+   */
+  FT_EXPORT( FT_Error )
+  FT_Get_MM_WeightVector( FT_Face    face,
+                          FT_UInt*   len,
+                          FT_Fixed*  weightvector );
+
+
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_VAR_AXIS_FLAG_XXX
+   *
+   * @description:
+   *   A list of bit flags used in the return value of
+   *   @FT_Get_Var_Axis_Flags.
+   *
+   * @values:
+   *   FT_VAR_AXIS_FLAG_HIDDEN ::
+   *     The variation axis should not be exposed to user interfaces.
+   *
+   * @since:
+   *   2.8.1
+   */
 #define FT_VAR_AXIS_FLAG_HIDDEN  1
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Var_Axis_Flags                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the `flags' field of an OpenType Variation Axis Record.        */
-  /*                                                                       */
-  /*    Not meaningful for Adobe MM fonts (`*flags' is always zero).       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    master     :: The variation descriptor.                            */
-  /*                                                                       */
-  /*    axis_index :: The index of the requested variation axis.           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    flags      :: The `flags' field.  See @FT_VAR_AXIS_FLAG_XXX for    */
-  /*                  possible values.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8.1                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Var_Axis_Flags
+   *
+   * @description:
+   *   Get the 'flags' field of an OpenType Variation Axis Record.
+   *
+   *   Not meaningful for Adobe MM fonts (`*flags` is always zero).
+   *
+   * @input:
+   *   master ::
+   *     The variation descriptor.
+   *
+   *   axis_index ::
+   *     The index of the requested variation axis.
+   *
+   * @output:
+   *   flags ::
+   *     The 'flags' field.  See @FT_VAR_AXIS_FLAG_XXX for possible values.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.8.1
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Var_Axis_Flags( FT_MM_Var*  master,
                          FT_UInt     axis_index,
                          FT_UInt*    flags );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Named_Instance                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set or change the current named instance.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face           :: A handle to the source face.                     */
-  /*                                                                       */
-  /*    instance_index :: The index of the requested instance, starting    */
-  /*                      with value 1.  If set to value 0, FreeType       */
-  /*                      switches to font access without a named          */
-  /*                      instance.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The function uses the value of `instance_index' to set bits 16-30  */
-  /*    of the face's `face_index' field.  It also resets any variation    */
-  /*    applied to the font, and the @FT_FACE_FLAG_VARIATION bit of the    */
-  /*    face's `face_flags' field gets reset to zero (i.e.,                */
-  /*    @FT_IS_VARIATION will return false).                               */
-  /*                                                                       */
-  /*    For Adobe MM fonts (which don't have named instances) this         */
-  /*    function simply resets the current face to the default instance.   */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.9                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Named_Instance
+   *
+   * @description:
+   *   Set or change the current named instance.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   instance_index ::
+   *     The index of the requested instance, starting with value 1.  If set
+   *     to value 0, FreeType switches to font access without a named
+   *     instance.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The function uses the value of `instance_index` to set bits 16-30 of
+   *   the face's `face_index` field.  It also resets any variation applied
+   *   to the font, and the @FT_FACE_FLAG_VARIATION bit of the face's
+   *   `face_flags` field gets reset to zero (i.e., @FT_IS_VARIATION will
+   *   return false).
+   *
+   *   For Adobe MM fonts (which don't have named instances) this function
+   *   simply resets the current face to the default instance.
+   *
+   * @since:
+   *   2.9
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Named_Instance( FT_Face  face,
                          FT_UInt  instance_index );
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftmodapi.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmodapi.h                                                             */
-/*                                                                         */
-/*    FreeType modules public interface (specification).                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmodapi.h
+ *
+ *   FreeType modules public interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -33,77 +33,77 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    module_management                                                  */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    Module Management                                                  */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    How to add, upgrade, remove, and control modules from FreeType.    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The definitions below are used to manage modules within FreeType.  */
-  /*    Modules can be added, upgraded, and removed at runtime.            */
-  /*    Additionally, some module properties can be controlled also.       */
-  /*                                                                       */
-  /*    Here is a list of possible values of the `module_name' field in    */
-  /*    the @FT_Module_Class structure.                                    */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      autofitter                                                       */
-  /*      bdf                                                              */
-  /*      cff                                                              */
-  /*      gxvalid                                                          */
-  /*      otvalid                                                          */
-  /*      pcf                                                              */
-  /*      pfr                                                              */
-  /*      psaux                                                            */
-  /*      pshinter                                                         */
-  /*      psnames                                                          */
-  /*      raster1                                                          */
-  /*      sfnt                                                             */
-  /*      smooth, smooth-lcd, smooth-lcdv                                  */
-  /*      truetype                                                         */
-  /*      type1                                                            */
-  /*      type42                                                           */
-  /*      t1cid                                                            */
-  /*      winfonts                                                         */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Note that the FreeType Cache sub-system is not a FreeType module.  */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    FT_Module                                                          */
-  /*    FT_Module_Constructor                                              */
-  /*    FT_Module_Destructor                                               */
-  /*    FT_Module_Requester                                                */
-  /*    FT_Module_Class                                                    */
-  /*                                                                       */
-  /*    FT_Add_Module                                                      */
-  /*    FT_Get_Module                                                      */
-  /*    FT_Remove_Module                                                   */
-  /*    FT_Add_Default_Modules                                             */
-  /*                                                                       */
-  /*    FT_Property_Set                                                    */
-  /*    FT_Property_Get                                                    */
-  /*    FT_Set_Default_Properties                                          */
-  /*                                                                       */
-  /*    FT_New_Library                                                     */
-  /*    FT_Done_Library                                                    */
-  /*    FT_Reference_Library                                               */
-  /*                                                                       */
-  /*    FT_Renderer                                                        */
-  /*    FT_Renderer_Class                                                  */
-  /*                                                                       */
-  /*    FT_Get_Renderer                                                    */
-  /*    FT_Set_Renderer                                                    */
-  /*                                                                       */
-  /*    FT_Set_Debug_Hook                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   module_management
+   *
+   * @title:
+   *   Module Management
+   *
+   * @abstract:
+   *   How to add, upgrade, remove, and control modules from FreeType.
+   *
+   * @description:
+   *   The definitions below are used to manage modules within FreeType.
+   *   Modules can be added, upgraded, and removed at runtime.  Additionally,
+   *   some module properties can be controlled also.
+   *
+   *   Here is a list of possible values of the `module_name` field in the
+   *   @FT_Module_Class structure.
+   *
+   *   ```
+   *     autofitter
+   *     bdf
+   *     cff
+   *     gxvalid
+   *     otvalid
+   *     pcf
+   *     pfr
+   *     psaux
+   *     pshinter
+   *     psnames
+   *     raster1
+   *     sfnt
+   *     smooth, smooth-lcd, smooth-lcdv
+   *     truetype
+   *     type1
+   *     type42
+   *     t1cid
+   *     winfonts
+   *   ```
+   *
+   *   Note that the FreeType Cache sub-system is not a FreeType module.
+   *
+   * @order:
+   *   FT_Module
+   *   FT_Module_Constructor
+   *   FT_Module_Destructor
+   *   FT_Module_Requester
+   *   FT_Module_Class
+   *
+   *   FT_Add_Module
+   *   FT_Get_Module
+   *   FT_Remove_Module
+   *   FT_Add_Default_Modules
+   *
+   *   FT_Property_Set
+   *   FT_Property_Get
+   *   FT_Set_Default_Properties
+   *
+   *   FT_New_Library
+   *   FT_Done_Library
+   *   FT_Reference_Library
+   *
+   *   FT_Renderer
+   *   FT_Renderer_Class
+   *
+   *   FT_Get_Renderer
+   *   FT_Set_Renderer
+   *
+   *   FT_Set_Debug_Hook
+   *
+   */
 
 
   /* module bit flags */
@@ -137,83 +137,99 @@
   typedef FT_Pointer  FT_Module_Interface;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Constructor                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to initialize (not create) a new module object.    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    module :: The module to initialize.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Module_Constructor
+   *
+   * @description:
+   *   A function used to initialize (not create) a new module object.
+   *
+   * @input:
+   *   module ::
+   *     The module to initialize.
+   */
   typedef FT_Error
   (*FT_Module_Constructor)( FT_Module  module );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Destructor                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to finalize (not destroy) a given module object.   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    module :: The module to finalize.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Module_Destructor
+   *
+   * @description:
+   *   A function used to finalize (not destroy) a given module object.
+   *
+   * @input:
+   *   module ::
+   *     The module to finalize.
+   */
   typedef void
   (*FT_Module_Destructor)( FT_Module  module );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Requester                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to query a given module for a specific interface.  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    module :: The module to be searched.                               */
-  /*                                                                       */
-  /*    name ::   The name of the interface in the module.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Module_Requester
+   *
+   * @description:
+   *   A function used to query a given module for a specific interface.
+   *
+   * @input:
+   *   module ::
+   *     The module to be searched.
+   *
+   *   name ::
+   *     The name of the interface in the 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,   */
-  /*                       as a 16.16 fixed number (major.minor).  Starts  */
-  /*                       at version 2.0, i.e., 0x20000.                  */
-  /*                                                                       */
-  /*    module_init     :: The initializing function.                      */
-  /*                                                                       */
-  /*    module_done     :: The finalizing function.                        */
-  /*                                                                       */
-  /*    get_interface   :: The interface requesting function.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Module_Class
+   *
+   * @description:
+   *   The module class descriptor.  While being a public structure necessary
+   *   for FreeType's module bookkeeping, most of the fields are essentially
+   *   internal, not to be used directly by an application.
+   *
+   * @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, as a 16.16 fixed
+   *     number (major.minor).  Starts at version 2.0, i.e., 0x20000.
+   *
+   *   module_interface ::
+   *     A typeless pointer to a structure (which varies between different
+   *     modules) that holds the module's interface functions.  This is
+   *     essentially what `get_interface` returns.
+   *
+   *   module_init ::
+   *     The initializing function.
+   *
+   *   module_done ::
+   *     The finalizing function.
+   *
+   *   get_interface ::
+   *     The interface requesting function.
+   */
   typedef struct  FT_Module_Class_
   {
     FT_ULong               module_flags;
@@ -231,83 +247,89 @@
   } FT_Module_Class;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Add_Module                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Add 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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Add_Module
+   *
+   * @description:
+   *   Add 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>                                                         */
-  /*    Find 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>                                                                */
-  /*    FreeType's internal modules aren't documented very well, and you   */
-  /*    should look up the source code for details.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Module
+   *
+   * @description:
+   *   Find 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:
+   *   FreeType's internal modules aren't documented very well, and you
+   *   should look up the source code for details.
+   */
   FT_EXPORT( FT_Module )
   FT_Get_Module( FT_Library   library,
                  const char*  module_name );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Remove_Module                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Remove 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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Remove_Module
+   *
+   * @description:
+   *   Remove 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_Property_Set
@@ -317,53 +339,51 @@
    *
    * @input:
    *    library ::
-   *       A handle to the library the module is part of.
+   *      A handle to the library the module is part of.
    *
    *    module_name ::
-   *       The module name.
+   *      The module name.
    *
    *    property_name ::
-   *       The property name.  Properties are described in section
-   *       @properties.
+   *      The property name.  Properties are described in section
+   *      @properties.
    *
-   *       Note that only a few modules have properties.
+   *      Note that only a few modules have properties.
    *
    *    value ::
-   *       A generic pointer to a variable or structure that gives the new
-   *       value of the property.  The exact definition of `value' is
-   *       dependent on the property; see section @properties.
+   *      A generic pointer to a variable or structure that gives the new
+   *      value of the property.  The exact definition of `value` is
+   *      dependent on the property; see section @properties.
    *
    * @return:
    *   FreeType error code.  0~means success.
    *
    * @note:
-   *    If `module_name' isn't a valid module name, or `property_name'
-   *    doesn't specify a valid property, or if `value' doesn't represent a
+   *    If `module_name` isn't a valid module name, or `property_name`
+   *    doesn't specify a valid property, or if `value` doesn't represent a
    *    valid value for the given property, an error is returned.
    *
-   *    The following example sets property `bar' (a simple integer) in
-   *    module `foo' to value~1.
+   *    The following example sets property 'bar' (a simple integer) in
+   *    module 'foo' to value~1.
    *
-   *    {
+   *    ```
    *      FT_UInt  bar;
    *
    *
    *      bar = 1;
    *      FT_Property_Set( library, "foo", "bar", &bar );
-   *    }
+   *    ```
    *
    *    Note that the FreeType Cache sub-system doesn't recognize module
    *    property changes.  To avoid glyph lookup confusion within the cache
-   *    you should call @FTC_Manager_Reset to completely flush the cache if
-   *    a module property gets changed after @FTC_Manager_New has been
-   *    called.
+   *    you should call @FTC_Manager_Reset to completely flush the cache if a
+   *    module property gets changed after @FTC_Manager_New has been called.
    *
-   *    It is not possible to set properties of the FreeType Cache
-   *    sub-system itself with FT_Property_Set; use @FTC_Property_Set
-   *    instead.
+   *    It is not possible to set properties of the FreeType Cache sub-system
+   *    itself with FT_Property_Set; use @FTC_Property_Set instead.
    *
-   *  @since:
-   *    2.4.11
+   * @since:
+   *   2.4.11
    *
    */
   FT_EXPORT( FT_Error )
@@ -373,7 +393,7 @@
                    const void*       value );
 
 
-  /**********************************************************************
+  /**************************************************************************
    *
    * @function:
    *    FT_Property_Get
@@ -383,32 +403,32 @@
    *
    * @input:
    *    library ::
-   *       A handle to the library the module is part of.
+   *      A handle to the library the module is part of.
    *
    *    module_name ::
-   *       The module name.
+   *      The module name.
    *
    *    property_name ::
-   *       The property name.  Properties are described in section
-   *       @properties.
+   *      The property name.  Properties are described in section
+   *      @properties.
    *
    * @inout:
    *    value ::
-   *       A generic pointer to a variable or structure that gives the
-   *       value of the property.  The exact definition of `value' is
-   *       dependent on the property; see section @properties.
+   *      A generic pointer to a variable or structure that gives the value
+   *      of the property.  The exact definition of `value` is dependent on
+   *      the property; see section @properties.
    *
    * @return:
    *   FreeType error code.  0~means success.
    *
    * @note:
-   *    If `module_name' isn't a valid module name, or `property_name'
-   *    doesn't specify a valid property, or if `value' doesn't represent a
+   *    If `module_name` isn't a valid module name, or `property_name`
+   *    doesn't specify a valid property, or if `value` doesn't represent a
    *    valid value for the given property, an error is returned.
    *
-   *    The following example gets property `baz' (a range) in module `foo'.
+   *    The following example gets property 'baz' (a range) in module 'foo'.
    *
-   *    {
+   *    ```
    *      typedef  range_
    *      {
    *        FT_Int32  min;
@@ -420,13 +440,13 @@
    *
    *
    *      FT_Property_Get( library, "foo", "baz", &baz );
-   *    }
+   *    ```
    *
    *    It is not possible to retrieve properties of the FreeType Cache
    *    sub-system with FT_Property_Get; use @FTC_Property_Get instead.
    *
-   *  @since:
-   *    2.4.11
+   * @since:
+   *   2.4.11
    *
    */
   FT_EXPORT( FT_Error )
@@ -436,189 +456,243 @@
                    void*             value );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Default_Properties                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    If compilation option FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES is   */
-  /*    set, this function reads the `FREETYPE_PROPERTIES' environment     */
-  /*    variable to control driver properties.  See section @properties    */
-  /*    for more.                                                          */
-  /*                                                                       */
-  /*    If the compilation option is not set, this function does nothing.  */
-  /*                                                                       */
-  /*    `FREETYPE_PROPERTIES' has the following syntax form (broken here   */
-  /*    into multiple lines for better readability).                       */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      <optional whitespace>                                            */
-  /*      <module-name1> ':'                                               */
-  /*      <property-name1> '=' <property-value1>                           */
-  /*      <whitespace>                                                     */
-  /*      <module-name2> ':'                                               */
-  /*      <property-name2> '=' <property-value2>                           */
-  /*      ...                                                              */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    Example:                                                           */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FREETYPE_PROPERTIES=truetype:interpreter-version=35 \            */
-  /*                          cff:no-stem-darkening=1 \                    */
-  /*                          autofitter:warping=1                         */
-  /*    }                                                                  */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    library :: A handle to a new library object.                       */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Default_Properties
+   *
+   * @description:
+   *   If compilation option `FT_CONFIG_OPTION_ENVIRONMENT_PROPERTIES` is
+   *   set, this function reads the `FREETYPE_PROPERTIES` environment
+   *   variable to control driver properties.  See section @properties for
+   *   more.
+   *
+   *   If the compilation option is not set, this function does nothing.
+   *
+   *   `FREETYPE_PROPERTIES` has the following syntax form (broken here into
+   *   multiple lines for better readability).
+   *
+   *   ```
+   *     <optional whitespace>
+   *     <module-name1> ':'
+   *     <property-name1> '=' <property-value1>
+   *     <whitespace>
+   *     <module-name2> ':'
+   *     <property-name2> '=' <property-value2>
+   *     ...
+   *   ```
+   *
+   *   Example:
+   *
+   *   ```
+   *     FREETYPE_PROPERTIES=truetype:interpreter-version=35 \
+   *                         cff:no-stem-darkening=1 \
+   *                         autofitter:warping=1
+   *   ```
+   *
+   * @inout:
+   *   library ::
+   *     A handle to a new library object.
+   *
+   * @since:
+   *   2.8
+   */
   FT_EXPORT( void )
   FT_Set_Default_Properties( FT_Library  library );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Reference_Library                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A counter gets initialized to~1 at the time an @FT_Library         */
-  /*    structure is created.  This function increments the counter.       */
-  /*    @FT_Done_Library then only destroys a library if the counter is~1, */
-  /*    otherwise it simply decrements the counter.                        */
-  /*                                                                       */
-  /*    This function helps in managing life-cycles of structures that     */
-  /*    reference @FT_Library objects.                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library :: A handle to a target library object.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.2                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Reference_Library
+   *
+   * @description:
+   *   A counter gets initialized to~1 at the time an @FT_Library structure
+   *   is created.  This function increments the counter.  @FT_Done_Library
+   *   then only destroys a library if the counter is~1, otherwise it simply
+   *   decrements the counter.
+   *
+   *   This function helps in managing life-cycles of structures that
+   *   reference @FT_Library objects.
+   *
+   * @input:
+   *   library ::
+   *     A handle to a target library object.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @since:
+   *   2.4.2
+   */
   FT_EXPORT( FT_Error )
   FT_Reference_Library( FT_Library  library );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.  Note,    */
-  /*    however, that the used @FT_Memory structure is expected to remain  */
-  /*    valid for the life of the @FT_Library object.                      */
-  /*                                                                       */
-  /*    Normally, you would call this function (followed by a call to      */
-  /*    @FT_Add_Default_Modules or a series of calls to @FT_Add_Module,    */
-  /*    and a call to @FT_Set_Default_Properties) instead of               */
-  /*    @FT_Init_FreeType to initialize the FreeType library.              */
-  /*                                                                       */
-  /*    Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a      */
-  /*    library instance.                                                  */
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See the discussion of reference counters in the description of     */
-  /*    @FT_Reference_Library.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.  Note, however,
+   *   that the used @FT_Memory structure is expected to remain valid for the
+   *   life of the @FT_Library object.
+   *
+   *   Normally, you would call this function (followed by a call to
+   *   @FT_Add_Default_Modules or a series of calls to @FT_Add_Module, and a
+   *   call to @FT_Set_Default_Properties) instead of @FT_Init_FreeType to
+   *   initialize the FreeType library.
+   *
+   *   Don't use @FT_Done_FreeType but @FT_Done_Library to destroy a library
+   *   instance.
+   *
+   * @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.
+   *
+   * @note:
+   *   See the discussion of reference counters in the description of
+   *   @FT_Reference_Library.
+   */
   FT_EXPORT( FT_Error )
   FT_New_Library( FT_Memory    memory,
                   FT_Library  *alibrary );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Library                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discard 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.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See the discussion of reference counters in the description of     */
-  /*    @FT_Reference_Library.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Library
+   *
+   * @description:
+   *   Discard 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.
+   *
+   * @note:
+   *   See the discussion of reference counters in the description of
+   *   @FT_Reference_Library.
+   */
   FT_EXPORT( FT_Error )
   FT_Done_Library( FT_Library  library );
 
-  /* */
 
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_DebugHook_Func
+   *
+   * @description:
+   *   A drop-in replacement (or rather a wrapper) for the bytecode or
+   *   charstring interpreter's main loop function.
+   *
+   *   Its job is essentially
+   *
+   *   - to activate debug mode to enforce single-stepping,
+   *
+   *   - to call the main loop function to interpret the next opcode, and
+   *
+   *   - to show the changed context to the user.
+   *
+   *   An example for such a main loop function is `TT_RunIns` (declared in
+   *   FreeType's internal header file `src/truetype/ttinterp.h`).
+   *
+   *   Have a look at the source code of the `ttdebug` FreeType demo program
+   *   for an example of a drop-in replacement.
+   *
+   * @inout:
+   *   arg ::
+   *     A typeless pointer, to be cast to the main loop function's data
+   *     structure (which depends on the font module).  For TrueType fonts
+   *     it is bytecode interpreter's execution context, `TT_ExecContext`,
+   *     which is declared in FreeType's internal header file `tttypes.h`.
+   */
   typedef void
   (*FT_DebugHook_Func)( void*  arg );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Set_Debug_Hook                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set 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.              */
-  /*                                                                       */
-  /*    Since the internal headers of FreeType are no longer installed,    */
-  /*    the symbol `FT_DEBUG_HOOK_TRUETYPE' isn't available publicly.      */
-  /*    This is a bug and will be fixed in a forthcoming release.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_DEBUG_HOOK_XXX
+   *
+   * @description:
+   *   A list of named debug hook indices.
+   *
+   * @values:
+   *   FT_DEBUG_HOOK_TRUETYPE::
+   *     This hook index identifies the TrueType bytecode debugger.
+   */
+#define FT_DEBUG_HOOK_TRUETYPE  0
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Debug_Hook
+   *
+   * @description:
+   *   Set a debug hook function for debugging the interpreter of a font
+   *   format.
+   *
+   *   While this is a public API function, an application needs access to
+   *   FreeType's internal header files to do something useful.
+   *
+   *   Have a look at the source code of the `ttdebug` FreeType demo program
+   *   for an example of its usage.
+   *
+   * @inout:
+   *   library ::
+   *     A handle to the library object.
+   *
+   * @input:
+   *   hook_index ::
+   *     The index of the debug hook.  You should use defined enumeration
+   *     macros like @FT_DEBUG_HOOK_TRUETYPE.
+   *
+   *   debug_hook ::
+   *     The function used to debug the interpreter.
+   *
+   * @note:
+   *   Currently, four debug hook slots are available, but only one (for the
+   *   TrueType interpreter) is 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>                                                         */
-  /*    Add 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.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Add_Default_Modules
+   *
+   * @description:
+   *   Add 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 );
 
@@ -644,28 +718,28 @@
 
   /**************************************************************************
    *
-   *  @enum:
-   *     FT_TrueTypeEngineType
+   * @enum:
+   *    FT_TrueTypeEngineType
    *
-   *  @description:
-   *     A list of values describing which kind of TrueType bytecode
-   *     engine is implemented in a given FT_Library instance.  It is used
-   *     by the @FT_Get_TrueType_Engine_Type function.
+   * @description:
+   *    A list of values describing which kind of TrueType bytecode engine is
+   *    implemented in a given FT_Library instance.  It is used by the
+   *    @FT_Get_TrueType_Engine_Type function.
    *
-   *  @values:
-   *     FT_TRUETYPE_ENGINE_TYPE_NONE ::
-   *       The library doesn't implement any kind of bytecode interpreter.
+   * @values:
+   *    FT_TRUETYPE_ENGINE_TYPE_NONE ::
+   *      The library doesn't implement any kind of bytecode interpreter.
    *
-   *     FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
-   *       Deprecated and removed.
+   *    FT_TRUETYPE_ENGINE_TYPE_UNPATENTED ::
+   *      Deprecated and removed.
    *
-   *     FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
-   *       The library implements a bytecode interpreter that covers
-   *       the full instruction set of the TrueType virtual machine (this
-   *       was governed by patents until May 2010, hence the name).
+   *    FT_TRUETYPE_ENGINE_TYPE_PATENTED ::
+   *      The library implements a bytecode interpreter that covers the full
+   *      instruction set of the TrueType virtual machine (this was governed
+   *      by patents until May 2010, hence the name).
    *
-   *  @since:
-   *     2.2
+   * @since:
+   *    2.2
    *
    */
   typedef enum  FT_TrueTypeEngineType_
@@ -679,22 +753,22 @@
 
   /**************************************************************************
    *
-   *  @func:
-   *     FT_Get_TrueType_Engine_Type
+   * @function:
+   *    FT_Get_TrueType_Engine_Type
    *
-   *  @description:
-   *     Return an @FT_TrueTypeEngineType value to indicate which level of
-   *     the TrueType virtual machine a given library instance supports.
+   * @description:
+   *    Return an @FT_TrueTypeEngineType value to indicate which level of the
+   *    TrueType virtual machine a given library instance supports.
    *
-   *  @input:
-   *     library ::
-   *       A library instance.
+   * @input:
+   *    library ::
+   *      A library instance.
    *
-   *  @return:
-   *     A value indicating which level is supported.
+   * @return:
+   *    A value indicating which level is supported.
    *
-   *  @since:
-   *     2.2
+   * @since:
+   *    2.2
    *
    */
   FT_EXPORT( FT_TrueTypeEngineType )
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftmoderr.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftmoderr.h	Thu May 09 16:09:39 2019 -0700
@@ -1,94 +1,103 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmoderr.h                                                             */
-/*                                                                         */
-/*    FreeType module error offsets (specification).                       */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmoderr.h
+ *
+ *   FreeType module error offsets (specification).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 codes.          */
-  /*                                                                       */
-  /* If the macro FT_CONFIG_OPTION_USE_MODULE_ERRORS in `ftoption.h' is    */
-  /* set, the lower byte of an error value identifies the error code as    */
-  /* usual.  In addition, the higher byte identifies the module.  For      */
-  /* example, the error `FT_Err_Invalid_File_Format' has value 0x0003, the */
-  /* error `TT_Err_Invalid_File_Format' has value 0x1303, the error        */
-  /* `T1_Err_Invalid_File_Format' has value 0x1403, etc.                   */
-  /*                                                                       */
-  /* Note that `FT_Err_Ok', `TT_Err_Ok', etc. are always equal to zero,    */
-  /* including the high byte.                                              */
-  /*                                                                       */
-  /* If FT_CONFIG_OPTION_USE_MODULE_ERRORS isn't set, the higher byte of   */
-  /* an error value is set to zero.                                        */
-  /*                                                                       */
-  /* To hide the various `XXX_Err_' prefixes in the source code, FreeType  */
-  /* provides some macros in `fttypes.h'.                                  */
-  /*                                                                       */
-  /*   FT_ERR( err )                                                       */
-  /*     Add current error module prefix (as defined with the              */
-  /*     `FT_ERR_PREFIX' macro) to `err'.  For example, in the BDF module  */
-  /*     the line                                                          */
-  /*                                                                       */
-  /*       error = FT_ERR( Invalid_Outline );                              */
-  /*                                                                       */
-  /*     expands to                                                        */
-  /*                                                                       */
-  /*       error = BDF_Err_Invalid_Outline;                                */
-  /*                                                                       */
-  /*     For simplicity, you can always use `FT_Err_Ok' directly instead   */
-  /*     of `FT_ERR( Ok )'.                                                */
-  /*                                                                       */
-  /*   FT_ERR_EQ( errcode, err )                                           */
-  /*   FT_ERR_NEQ( errcode, err )                                          */
-  /*     Compare error code `errcode' with the error `err' for equality    */
-  /*     and inequality, respectively.  Example:                           */
-  /*                                                                       */
-  /*       if ( FT_ERR_EQ( error, Invalid_Outline ) )                      */
-  /*         ...                                                           */
-  /*                                                                       */
-  /*     Using this macro you don't have to think about error prefixes.    */
-  /*     Of course, if module errors are not active, the above example is  */
-  /*     the same as                                                       */
-  /*                                                                       */
-  /*       if ( error == FT_Err_Invalid_Outline )                          */
-  /*         ...                                                           */
-  /*                                                                       */
-  /*   FT_ERROR_BASE( errcode )                                            */
-  /*   FT_ERROR_MODULE( errcode )                                          */
-  /*     Get base error and module error code, respectively.               */
-  /*                                                                       */
-  /*                                                                       */
-  /* 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                                       */
-  /*   }                                                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the FreeType module error codes.
+   *
+   * If the macro `FT_CONFIG_OPTION_USE_MODULE_ERRORS` in `ftoption.h` is
+   * set, the lower byte of an error value identifies the error code as
+   * usual.  In addition, the higher byte identifies the module.  For
+   * example, the error `FT_Err_Invalid_File_Format` has value 0x0003, the
+   * error `TT_Err_Invalid_File_Format` has value 0x1303, the error
+   * `T1_Err_Invalid_File_Format` has value 0x1403, etc.
+   *
+   * Note that `FT_Err_Ok`, `TT_Err_Ok`, etc. are always equal to zero,
+   * including the high byte.
+   *
+   * If `FT_CONFIG_OPTION_USE_MODULE_ERRORS` isn't set, the higher byte of an
+   * error value is set to zero.
+   *
+   * To hide the various `XXX_Err_` prefixes in the source code, FreeType
+   * provides some macros in `fttypes.h`.
+   *
+   *   FT_ERR( err )
+   *
+   *     Add current error module prefix (as defined with the `FT_ERR_PREFIX`
+   *     macro) to `err`.  For example, in the BDF module the line
+   *
+   *     ```
+   *       error = FT_ERR( Invalid_Outline );
+   *     ```
+   *
+   *     expands to
+   *
+   *     ```
+   *       error = BDF_Err_Invalid_Outline;
+   *     ```
+   *
+   *     For simplicity, you can always use `FT_Err_Ok` directly instead of
+   *     `FT_ERR( Ok )`.
+   *
+   *   FT_ERR_EQ( errcode, err )
+   *   FT_ERR_NEQ( errcode, err )
+   *
+   *     Compare error code `errcode` with the error `err` for equality and
+   *     inequality, respectively.  Example:
+   *
+   *     ```
+   *       if ( FT_ERR_EQ( error, Invalid_Outline ) )
+   *         ...
+   *     ```
+   *
+   *     Using this macro you don't have to think about error prefixes.  Of
+   *     course, if module errors are not active, the above example is the
+   *     same as
+   *
+   *     ```
+   *       if ( error == FT_Err_Invalid_Outline )
+   *         ...
+   *     ```
+   *
+   *   FT_ERROR_BASE( errcode )
+   *   FT_ERROR_MODULE( errcode )
+   *
+   *     Get base error and module error code, respectively.
+   *
+   * 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
+   * ```
+   *
+   */
 
 
 #ifndef FTMODERR_H_
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftoutln.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftoutln.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftoutln.h                                                              */
-/*                                                                         */
-/*    Support for the FT_Outline type used to store glyph shapes of        */
-/*    most scalable font formats (specification).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftoutln.h
+ *
+ *   Support for the FT_Outline type used to store glyph shapes of
+ *   most scalable font formats (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -34,127 +34,131 @@
 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_New                                                     */
-  /*    FT_Outline_Done                                                    */
-  /*    FT_Outline_Copy                                                    */
-  /*    FT_Outline_Translate                                               */
-  /*    FT_Outline_Transform                                               */
-  /*    FT_Outline_Embolden                                                */
-  /*    FT_Outline_EmboldenXY                                              */
-  /*    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_MoveToFunc                                              */
-  /*    FT_Outline_LineToFunc                                              */
-  /*    FT_Outline_ConicToFunc                                             */
-  /*    FT_Outline_CubicToFunc                                             */
-  /*                                                                       */
-  /*    FT_Orientation                                                     */
-  /*    FT_Outline_Get_Orientation                                         */
-  /*                                                                       */
-  /*    FT_OUTLINE_XXX                                                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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_New
+   *   FT_Outline_Done
+   *   FT_Outline_Copy
+   *   FT_Outline_Translate
+   *   FT_Outline_Transform
+   *   FT_Outline_Embolden
+   *   FT_Outline_EmboldenXY
+   *   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_MoveToFunc
+   *   FT_Outline_LineToFunc
+   *   FT_Outline_ConicToFunc
+   *   FT_Outline_CubicToFunc
+   *
+   *   FT_Orientation
+   *   FT_Outline_Get_Orientation
+   *
+   *   FT_OUTLINE_XXX
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Decompose                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Walk over an outline's structure to decompose it into individual   */
-  /*    segments and Bezier arcs.  This function also emits `move to'      */
-  /*    operations to indicate the start 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 that 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 success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    A contour that contains a single point only is represented by a    */
-  /*    `move to' operation followed by `line to' to the same point.  In   */
-  /*    most cases, it is best to filter this out before using the         */
-  /*    outline for stroking purposes (otherwise it would result in a      */
-  /*    visible dot when round caps are used).                             */
-  /*                                                                       */
-  /*    Similarly, the function returns success for an empty outline also  */
-  /*    (doing nothing, this is, not calling any emitter); if necessary,   */
-  /*    you should filter this out, too.                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Decompose
+   *
+   * @description:
+   *   Walk over an outline's structure to decompose it into individual
+   *   segments and Bezier arcs.  This function also emits 'move to'
+   *   operations to indicate the start 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 that 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 success.
+   *
+   * @note:
+   *   A contour that contains a single point only is represented by a 'move
+   *   to' operation followed by 'line to' to the same point.  In most cases,
+   *   it is best to filter this out before using the outline for stroking
+   *   purposes (otherwise it would result in a visible dot when round caps
+   *   are used).
+   *
+   *   Similarly, the function returns success for an empty outline also
+   *   (doing nothing, this is, not calling any emitter); if necessary, you
+   *   should filter this out, too.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Decompose( FT_Outline*              outline,
                         const FT_Outline_Funcs*  func_interface,
                         void*                    user );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_New                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create 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 maximum number of points within the outline.    */
-  /*                   Must be smaller than or equal to 0xFFFF (65535).    */
-  /*                                                                       */
-  /*    numContours :: The maximum number of contours within the outline.  */
-  /*                   This value must be in the range 0 to `numPoints'.   */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    anoutline   :: A handle to the new outline.                        */
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_New
+   *
+   * @description:
+   *   Create 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 maximum number of points within the outline.  Must be smaller
+   *     than or equal to 0xFFFF (65535).
+   *
+   *   numContours ::
+   *     The maximum number of contours within the outline.  This value must
+   *     be in the range 0 to `numPoints`.
+   *
+   * @output:
+   *   anoutline ::
+   *     A handle to the new outline.
+   *
+   * @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,
@@ -162,372 +166,378 @@
                   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>                                                         */
-  /*    Destroy 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.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Done
+   *
+   * @description:
+   *   Destroy 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.
+   */
   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.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    An empty outline, or an outline with a single point only is also   */
-  /*    valid.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   * @note:
+   *   An empty outline, or an outline with a single point only is also
+   *   valid.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Check( FT_Outline*  outline );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Get_CBox                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return 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  */
-  /*    that 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.                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See @FT_Glyph_Get_CBox for a discussion of tricky fonts.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Get_CBox
+   *
+   * @description:
+   *   Return 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 that
+   *   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.
+   *
+   * @note:
+   *   See @FT_Glyph_Get_CBox for a discussion of tricky fonts.
+   */
   FT_EXPORT( void )
   FT_Outline_Get_CBox( const FT_Outline*  outline,
                        FT_BBox           *acbox );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Translate                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply 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.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Translate
+   *
+   * @description:
+   *   Apply 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( const FT_Outline*  outline,
                         FT_Pos             xOffset,
                         FT_Pos             yOffset );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Copy                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Copy 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Copy
+   *
+   * @description:
+   *   Copy 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( const FT_Outline*  source,
                    FT_Outline        *target );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Transform                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply 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.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Transform
+   *
+   * @description:
+   *   Apply 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( const FT_Outline*  outline,
                         const FT_Matrix*   matrix );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Embolden                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Embolden an outline.  The new outline will be at most 4~times      */
-  /*    `strength' pixels wider and higher.  You may think of the left and */
-  /*    bottom borders as unchanged.                                       */
-  /*                                                                       */
-  /*    Negative `strength' values to reduce the outline thickness are     */
-  /*    possible also.                                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    outline  :: A handle to the target outline.                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    strength :: How strong the glyph is emboldened.  Expressed in      */
-  /*                26.6 pixel format.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The used algorithm to increase or decrease the thickness of the    */
-  /*    glyph doesn't change the number of points; this means that certain */
-  /*    situations like acute angles or intersections are sometimes        */
-  /*    handled incorrectly.                                               */
-  /*                                                                       */
-  /*    If you need `better' metrics values you should call                */
-  /*    @FT_Outline_Get_CBox or @FT_Outline_Get_BBox.                      */
-  /*                                                                       */
-  /*    Example call:                                                      */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );                   */
-  /*      if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE )            */
-  /*        FT_Outline_Embolden( &face->glyph->outline, strength );        */
-  /*    }                                                                  */
-  /*                                                                       */
-  /*    To get meaningful results, font scaling values must be set with    */
-  /*    functions like @FT_Set_Char_Size before calling FT_Render_Glyph.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Embolden
+   *
+   * @description:
+   *   Embolden an outline.  The new outline will be at most 4~times
+   *   `strength` pixels wider and higher.  You may think of the left and
+   *   bottom borders as unchanged.
+   *
+   *   Negative `strength` values to reduce the outline thickness are
+   *   possible also.
+   *
+   * @inout:
+   *   outline ::
+   *     A handle to the target outline.
+   *
+   * @input:
+   *   strength ::
+   *     How strong the glyph is emboldened.  Expressed in 26.6 pixel format.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The used algorithm to increase or decrease the thickness of the glyph
+   *   doesn't change the number of points; this means that certain
+   *   situations like acute angles or intersections are sometimes handled
+   *   incorrectly.
+   *
+   *   If you need 'better' metrics values you should call
+   *   @FT_Outline_Get_CBox or @FT_Outline_Get_BBox.
+   *
+   *   To get meaningful results, font scaling values must be set with
+   *   functions like @FT_Set_Char_Size before calling FT_Render_Glyph.
+   *
+   * @example:
+   *   ```
+   *     FT_Load_Glyph( face, index, FT_LOAD_DEFAULT );
+   *
+   *     if ( face->glyph->format == FT_GLYPH_FORMAT_OUTLINE )
+   *       FT_Outline_Embolden( &face->glyph->outline, strength );
+   *   ```
+   *
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Embolden( FT_Outline*  outline,
                        FT_Pos       strength );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_EmboldenXY                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Embolden an outline.  The new outline will be `xstrength' pixels   */
-  /*    wider and `ystrength' pixels higher.  Otherwise, it is similar to  */
-  /*    @FT_Outline_Embolden, which uses the same strength in both         */
-  /*    directions.                                                        */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.10                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_EmboldenXY
+   *
+   * @description:
+   *   Embolden an outline.  The new outline will be `xstrength` pixels wider
+   *   and `ystrength` pixels higher.  Otherwise, it is similar to
+   *   @FT_Outline_Embolden, which uses the same strength in both directions.
+   *
+   * @since:
+   *   2.4.10
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_EmboldenXY( FT_Outline*  outline,
                          FT_Pos       xstrength,
                          FT_Pos       ystrength );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Reverse                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reverse 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 function 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Reverse
+   *
+   * @description:
+   *   Reverse 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 function 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>                                                         */
-  /*    Render 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.             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    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!  Consequently, the    */
-  /*    various fields in `abitmap' should be set accordingly.             */
-  /*                                                                       */
-  /*    It will use the raster corresponding to the default glyph format.  */
-  /*                                                                       */
-  /*    The value of the `num_grays' field in `abitmap' is ignored.  If    */
-  /*    you select the gray-level rasterizer, and you want less than 256   */
-  /*    gray levels, you have to use @FT_Outline_Render directly.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Get_Bitmap
+   *
+   * @description:
+   *   Render 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.
+   *
+   * @inout:
+   *   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!  Consequently, the
+   *   various fields in `abitmap` should be set accordingly.
+   *
+   *   It will use the raster corresponding to the default glyph format.
+   *
+   *   The value of the `num_grays` field in `abitmap` is ignored.  If you
+   *   select the gray-level rasterizer, and you want less than 256 gray
+   *   levels, you have to use @FT_Outline_Render directly.
+   */
   FT_EXPORT( FT_Error )
   FT_Outline_Get_Bitmap( FT_Library        library,
                          FT_Outline*       outline,
                          const FT_Bitmap  *abitmap );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Render                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Render an outline within a bitmap using the current scan-convert.  */
-  /*    This function 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 an @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.                                                  */
-  /*                                                                       */
-  /*    The gray-level rasterizer always uses 256 gray levels.  If you     */
-  /*    want less gray levels, you have to provide your own span callback. */
-  /*    See the @FT_RASTER_FLAG_DIRECT value of the `flags' field in the   */
-  /*    @FT_Raster_Params structure for more details.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Outline_Render
+   *
+   * @description:
+   *   Render an outline within a bitmap using the current scan-convert.
+   *   This function 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 an @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.
+   *
+   *   The gray-level rasterizer always uses 256 gray levels.  If you want
+   *   less gray levels, you have to provide your own span callback.  See the
+   *   @FT_RASTER_FLAG_DIRECT value of the `flags` field in the
+   *   @FT_Raster_Params structure for more details.
+   */
   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.
-  *
-  *   FT_ORIENTATION_NONE ::
-  *     The orientation cannot be determined.  That is, different parts of
-  *     the glyph have different orientation.
-  *
-  */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   FT_ORIENTATION_NONE ::
+   *     The orientation cannot be determined.  That is, different parts of
+   *     the glyph have different orientation.
+   *
+   */
   typedef enum  FT_Orientation_
   {
     FT_ORIENTATION_TRUETYPE   = 0,
@@ -539,33 +549,34 @@
   } 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 integrating
-  *   the total area covered by the outline. The positive integral
-  *   corresponds to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT
-  *   is returned. The negative integral corresponds to the counter-clockwise
-  *   orientation and @FT_ORIENTATION_TRUETYPE is returned.
-  *
-  *   Note that this will return @FT_ORIENTATION_TRUETYPE for empty
-  *   outlines.
-  *
-  * @input:
-  *   outline ::
-  *     A handle to the source outline.
-  *
-  * @return:
-  *   The 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 integrating the
+   *   total area covered by the outline. The positive integral corresponds
+   *   to the clockwise orientation and @FT_ORIENTATION_POSTSCRIPT is
+   *   returned. The negative integral corresponds to the counter-clockwise
+   *   orientation and @FT_ORIENTATION_TRUETYPE is returned.
+   *
+   *   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 );
 
+
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftparams.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftparams.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftparams.h                                                             */
-/*                                                                         */
-/*    FreeType API for possible FT_Parameter tags (specification only).    */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftparams.h
+ *
+ *   FreeType API for possible FT_Parameter tags (specification only).
+ *
+ * Copyright (C) 2017-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTPARAMS_H_
@@ -51,16 +51,16 @@
    */
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY
    *
    * @description:
    *   A tag for @FT_Parameter to make @FT_Open_Face ignore typographic
-   *   family names in the `name' table (introduced in OpenType version
-   *   1.4).  Use this for backward compatibility with legacy systems that
-   *   have a four-faces-per-family restriction.
+   *   family names in the 'name' table (introduced in OpenType version 1.4).
+   *   Use this for backward compatibility with legacy systems that have a
+   *   four-faces-per-family restriction.
    *
    * @since:
    *   2.8
@@ -75,14 +75,14 @@
           FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_FAMILY
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY
    *
    * @description:
    *   A tag for @FT_Parameter to make @FT_Open_Face ignore typographic
-   *   subfamily names in the `name' table (introduced in OpenType version
+   *   subfamily names in the 'name' table (introduced in OpenType version
    *   1.4).  Use this for backward compatibility with legacy systems that
    *   have a four-faces-per-family restriction.
    *
@@ -99,9 +99,9 @@
           FT_PARAM_TAG_IGNORE_TYPOGRAPHIC_SUBFAMILY
 
 
-  /***************************************************************************
+  /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_INCREMENTAL
    *
    * @description:
@@ -115,14 +115,14 @@
 
   /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_LCD_FILTER_WEIGHTS
    *
    * @description:
    *   An @FT_Parameter tag to be used with @FT_Face_Properties.  The
    *   corresponding argument specifies the five LCD filter weights for a
-   *   given face (if using @FT_LOAD_TARGET_LCD, for example), overriding
-   *   the global default values or the values set up with
+   *   given face (if using @FT_LOAD_TARGET_LCD, for example), overriding the
+   *   global default values or the values set up with
    *   @FT_Library_SetLcdFilterWeights.
    *
    * @since:
@@ -135,14 +135,13 @@
 
   /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_RANDOM_SEED
    *
    * @description:
    *   An @FT_Parameter tag to be used with @FT_Face_Properties.  The
    *   corresponding 32bit signed integer argument overrides the font
-   *   driver's random seed value with a face-specific one; see
-   *   @random-seed.
+   *   driver's random seed value with a face-specific one; see @random-seed.
    *
    * @since:
    *   2.8
@@ -154,7 +153,7 @@
 
   /**************************************************************************
    *
-   * @constant:
+   * @enum:
    *   FT_PARAM_TAG_STEM_DARKENING
    *
    * @description:
@@ -163,10 +162,10 @@
    *   darkening, overriding the global default values or the values set up
    *   with @FT_Property_Set (see @no-stem-darkening).
    *
-   *   This is a passive setting that only takes effect if the font driver
-   *   or autohinter honors it, which the CFF, Type~1, and CID drivers
-   *   always do, but the autohinter only in `light' hinting mode (as of
-   *   version 2.9).
+   *   This is a passive setting that only takes effect if the font driver or
+   *   autohinter honors it, which the CFF, Type~1, and CID drivers always
+   *   do, but the autohinter only in 'light' hinting mode (as of version
+   *   2.9).
    *
    * @since:
    *   2.8
@@ -176,19 +175,19 @@
           FT_MAKE_TAG( 'd', 'a', 'r', 'k' )
 
 
- /***************************************************************************
-  *
-  * @constant:
-  *   FT_PARAM_TAG_UNPATENTED_HINTING
-  *
-  * @description:
-  *   Deprecated, no effect.
-  *
-  *   Previously: 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.
-  *
-  */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_PARAM_TAG_UNPATENTED_HINTING
+   *
+   * @description:
+   *   Deprecated, no effect.
+   *
+   *   Previously: 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' )
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftrender.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftrender.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrender.h                                                             */
-/*                                                                         */
-/*    FreeType renderer modules public interface (specification).          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrender.h
+ *
+ *   FreeType renderer modules public interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -28,12 +28,12 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    module_management                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   module_management
+   *
+   */
 
 
   /* create a new glyph object */
@@ -116,32 +116,38 @@
 #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.                 */
-  /*                                                                       */
-  /*    transform_glyph :: A method used to transform the image that is in */
-  /*                       a given glyph slot.                             */
-  /*                                                                       */
-  /*    get_glyph_cbox  :: A method used to access the glyph's cbox.       */
-  /*                                                                       */
-  /*    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.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   transform_glyph ::
+   *     A method used to transform the image that is in a given glyph slot.
+   *
+   *   get_glyph_cbox ::
+   *     A method used to access the glyph's cbox.
+   *
+   *   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.
+   */
   typedef struct  FT_Renderer_Class_
   {
     FT_Module_Class            root;
@@ -158,64 +164,70 @@
   } FT_Renderer_Class;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Renderer                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve 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.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Renderer
+   *
+   * @description:
+   *   Retrieve 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>                                                         */
-  /*    Set 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.        */
-  /*                                                                       */
-  /*    Currently, no FreeType renderer module uses `parameters'; you      */
-  /*    should thus always pass NULL as the value.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Set_Renderer
+   *
+   * @description:
+   *   Set 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.
+   *
+   *   Currently, no FreeType renderer module uses `parameters`; you should
+   *   thus always pass `NULL` as the value.
+   */
   FT_EXPORT( FT_Error )
   FT_Set_Renderer( FT_Library     library,
                    FT_Renderer    renderer,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftsizes.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftsizes.h	Thu May 09 16:09:39 2019 -0700
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsizes.h                                                              */
-/*                                                                         */
-/*    FreeType size objects management (specification).                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsizes.h
+ *
+ *   FreeType size objects management (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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_
@@ -42,109 +42,110 @@
 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.                                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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>                                                         */
-  /*    Create 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.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Size
+   *
+   * @description:
+   *   Create 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>                                                         */
-  /*    Discard 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Size
+   *
+   * @description:
+   *   Discard 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 one that has been     */
-  /*    activated last 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.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 one that has been activated last 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 );
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftsnames.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftsnames.h	Thu May 09 16:09:39 2019 -0700
@@ -1,22 +1,22 @@
-/***************************************************************************/
-/*                                                                         */
-/*  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-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * 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 (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTSNAMES_H_
@@ -37,72 +37,74 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    sfnt_names                                                         */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    SFNT Names                                                         */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    Access the names embedded in TrueType and OpenType files.          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The TrueType and OpenType specifications allow the inclusion of    */
-  /*    a special names table (`name') 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!                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   sfnt_names
+   *
+   * @title:
+   *   SFNT Names
+   *
+   * @abstract:
+   *   Access the names embedded in TrueType and OpenType files.
+   *
+   * @description:
+   *   The TrueType and OpenType specifications allow the inclusion of a
+   *   special names table ('name') 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'.                       */
-  /*                   See @TT_PLATFORM_XXX for possible values.           */
-  /*                                                                       */
-  /*    encoding_id :: The encoding ID for `string'.                       */
-  /*                   See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,               */
-  /*                   @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX */
-  /*                   for possible values.                                */
-  /*                                                                       */
-  /*    language_id :: The language ID for `string'.                       */
-  /*                   See @TT_MAC_LANGID_XXX and @TT_MS_LANGID_XXX for    */
-  /*                   possible values.                                    */
-  /*                                                                       */
-  /*                   Registered OpenType values for `language_id' are    */
-  /*                   always smaller than 0x8000; values equal or larger  */
-  /*                   than 0x8000 usually indicate a language tag string  */
-  /*                   (introduced in OpenType version 1.6).  Use function */
-  /*                   @FT_Get_Sfnt_LangTag with `language_id' as its      */
-  /*                   argument to retrieve the associated language tag.   */
-  /*                                                                       */
-  /*    name_id     :: An identifier for `string'.                         */
-  /*                   See @TT_NAME_ID_XXX for possible values.            */
-  /*                                                                       */
-  /*    string      :: The `name' string.  Note that its format differs    */
-  /*                   depending on the (platform,encoding) pair, being    */
-  /*                   either a string of bytes (without a terminating     */
-  /*                   NULL byte) or containing UTF-16BE entities.         */
-  /*                                                                       */
-  /*    string_len  :: The length of `string' in bytes.                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Please refer to the TrueType or OpenType specification for more    */
-  /*    details.                                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_SfntName
+   *
+   * @description:
+   *   A structure used to model an SFNT 'name' table entry.
+   *
+   * @fields:
+   *   platform_id ::
+   *     The platform ID for `string`.  See @TT_PLATFORM_XXX for possible
+   *     values.
+   *
+   *   encoding_id ::
+   *     The encoding ID for `string`.  See @TT_APPLE_ID_XXX, @TT_MAC_ID_XXX,
+   *     @TT_ISO_ID_XXX, @TT_MS_ID_XXX, and @TT_ADOBE_ID_XXX for possible
+   *     values.
+   *
+   *   language_id ::
+   *     The language ID for `string`.  See @TT_MAC_LANGID_XXX and
+   *     @TT_MS_LANGID_XXX for possible values.
+   *
+   *     Registered OpenType values for `language_id` are always smaller than
+   *     0x8000; values equal or larger than 0x8000 usually indicate a
+   *     language tag string (introduced in OpenType version 1.6).  Use
+   *     function @FT_Get_Sfnt_LangTag with `language_id` as its argument to
+   *     retrieve the associated language tag.
+   *
+   *   name_id ::
+   *     An identifier for `string`.  See @TT_NAME_ID_XXX for possible
+   *     values.
+   *
+   *   string ::
+   *     The 'name' string.  Note that its format differs depending on the
+   *     (platform,encoding) pair, being either a string of bytes (without a
+   *     terminating `NULL` byte) or containing UTF-16BE entities.
+   *
+   *   string_len ::
+   *     The length of `string` in bytes.
+   *
+   * @note:
+   *   Please refer to the TrueType or OpenType specification for more
+   *   details.
+   */
   typedef struct  FT_SfntName_
   {
     FT_UShort  platform_id;
@@ -116,83 +118,95 @@
   } FT_SfntName;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Sfnt_Name_Count                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve 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.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Sfnt_Name_Count
+   *
+   * @description:
+   *   Retrieve 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.
+   *
+   * @note:
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`.
+   */
   FT_EXPORT( FT_UInt )
   FT_Get_Sfnt_Name_Count( FT_Face  face );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Sfnt_Name                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve 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.  Note that you don't have to deallocate `string'  */
-  /*    by yourself; FreeType takes care of it if you call @FT_Done_Face.  */
-  /*                                                                       */
-  /*    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.                                   */
-  /*                                                                       */
-  /*    `name' table format~1 entries can use language tags also, see      */
-  /*    @FT_Get_Sfnt_LangTag.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Sfnt_Name
+   *
+   * @description:
+   *   Retrieve 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.  Note that you don't have to deallocate `string` by
+   *   yourself; FreeType takes care of it if you call @FT_Done_Face.
+   *
+   *   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.
+   *
+   *   'name' table format~1 entries can use language tags also, see
+   *   @FT_Get_Sfnt_LangTag.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`.
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Sfnt_Name( FT_Face       face,
                     FT_UInt       idx,
                     FT_SfntName  *aname );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_SfntLangTag                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a language tag entry from an SFNT `name'      */
-  /*    table.                                                             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    string      :: The language tag string, encoded in UTF-16BE        */
-  /*                   (without trailing NULL bytes).                      */
-  /*                                                                       */
-  /*    string_len  :: The length of `string' in *bytes*.                  */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Please refer to the TrueType or OpenType specification for more    */
-  /*    details.                                                           */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_SfntLangTag
+   *
+   * @description:
+   *   A structure to model a language tag entry from an SFNT 'name' table.
+   *
+   * @fields:
+   *   string ::
+   *     The language tag string, encoded in UTF-16BE (without trailing
+   *     `NULL` bytes).
+   *
+   *   string_len ::
+   *     The length of `string` in **bytes**.
+   *
+   * @note:
+   *   Please refer to the TrueType or OpenType specification for more
+   *   details.
+   *
+   * @since:
+   *   2.8
+   */
   typedef struct  FT_SfntLangTag_
   {
     FT_Byte*  string;      /* this string is *not* null-terminated! */
@@ -201,41 +215,47 @@
   } FT_SfntLangTag;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Sfnt_LangTag                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve the language tag associated with a language ID of an SFNT */
-  /*    `name' table entry.                                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the source face.                           */
-  /*                                                                       */
-  /*    langID   :: The language ID, as returned by @FT_Get_Sfnt_Name.     */
-  /*                This is always a value larger than 0x8000.             */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    alangTag :: The language tag associated with the `name' table      */
-  /*                entry's language ID.                                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `string' array returned in the `alangTag' structure is not     */
-  /*    null-terminated.  Note that you don't have to deallocate `string'  */
-  /*    by yourself; FreeType takes care of it if you call @FT_Done_Face.  */
-  /*                                                                       */
-  /*    Only `name' table format~1 supports language tags.  For format~0   */
-  /*    tables, this function always returns FT_Err_Invalid_Table.  For    */
-  /*    invalid format~1 language ID values, FT_Err_Invalid_Argument is    */
-  /*    returned.                                                          */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.8                                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Sfnt_LangTag
+   *
+   * @description:
+   *   Retrieve the language tag associated with a language ID of an SFNT
+   *   'name' table entry.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   langID ::
+   *     The language ID, as returned by @FT_Get_Sfnt_Name.  This is always a
+   *     value larger than 0x8000.
+   *
+   * @output:
+   *   alangTag ::
+   *     The language tag associated with the 'name' table entry's language
+   *     ID.
+   *
+   * @return:
+   *   FreeType error code.  0~means success.
+   *
+   * @note:
+   *   The `string` array returned in the `alangTag` structure is not
+   *   null-terminated.  Note that you don't have to deallocate `string` by
+   *   yourself; FreeType takes care of it if you call @FT_Done_Face.
+   *
+   *   Only 'name' table format~1 supports language tags.  For format~0
+   *   tables, this function always returns FT_Err_Invalid_Table.  For
+   *   invalid format~1 language ID values, FT_Err_Invalid_Argument is
+   *   returned.
+   *
+   *   This function always returns an error if the config macro
+   *   `TT_CONFIG_OPTION_SFNT_NAMES` is not defined in `ftoption.h`.
+   *
+   * @since:
+   *   2.8
+   */
   FT_EXPORT( FT_Error )
   FT_Get_Sfnt_LangTag( FT_Face          face,
                        FT_UInt          langID,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftstroke.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftstroke.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstroke.h                                                             */
-/*                                                                         */
-/*    FreeType path stroker (specification).                               */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstroke.h
+ *
+ *   FreeType path stroker (specification).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTSTROKE_H_
@@ -27,116 +27,113 @@
 FT_BEGIN_HEADER
 
 
- /************************************************************************
-  *
-  * @section:
-  *    glyph_stroker
-  *
-  * @title:
-  *    Glyph Stroker
-  *
-  * @abstract:
-  *    Generating bordered and stroked glyphs.
-  *
-  * @description:
-  *    This component generates stroked outlines of a given vectorial
-  *    glyph.  It also allows you to retrieve the `outside' and/or the
-  *    `inside' borders of the stroke.
-  *
-  *    This can be useful to generate `bordered' glyph, i.e., glyphs
-  *    displayed with a coloured (and anti-aliased) border around their
-  *    shape.
-  *
-  * @order:
-  *    FT_Stroker
-  *
-  *    FT_Stroker_LineJoin
-  *    FT_Stroker_LineCap
-  *    FT_StrokerBorder
-  *
-  *    FT_Outline_GetInsideBorder
-  *    FT_Outline_GetOutsideBorder
-  *
-  *    FT_Glyph_Stroke
-  *    FT_Glyph_StrokeBorder
-  *
-  *    FT_Stroker_New
-  *    FT_Stroker_Set
-  *    FT_Stroker_Rewind
-  *    FT_Stroker_ParseOutline
-  *    FT_Stroker_Done
-  *
-  *    FT_Stroker_BeginSubPath
-  *    FT_Stroker_EndSubPath
-  *
-  *    FT_Stroker_LineTo
-  *    FT_Stroker_ConicTo
-  *    FT_Stroker_CubicTo
-  *
-  *    FT_Stroker_GetBorderCounts
-  *    FT_Stroker_ExportBorder
-  *    FT_Stroker_GetCounts
-  *    FT_Stroker_Export
-  *
-  */
+  /**************************************************************************
+   *
+   * @section:
+   *    glyph_stroker
+   *
+   * @title:
+   *    Glyph Stroker
+   *
+   * @abstract:
+   *    Generating bordered and stroked glyphs.
+   *
+   * @description:
+   *    This component generates stroked outlines of a given vectorial glyph.
+   *    It also allows you to retrieve the 'outside' and/or the 'inside'
+   *    borders of the stroke.
+   *
+   *    This can be useful to generate 'bordered' glyph, i.e., glyphs
+   *    displayed with a coloured (and anti-aliased) border around their
+   *    shape.
+   *
+   * @order:
+   *    FT_Stroker
+   *
+   *    FT_Stroker_LineJoin
+   *    FT_Stroker_LineCap
+   *    FT_StrokerBorder
+   *
+   *    FT_Outline_GetInsideBorder
+   *    FT_Outline_GetOutsideBorder
+   *
+   *    FT_Glyph_Stroke
+   *    FT_Glyph_StrokeBorder
+   *
+   *    FT_Stroker_New
+   *    FT_Stroker_Set
+   *    FT_Stroker_Rewind
+   *    FT_Stroker_ParseOutline
+   *    FT_Stroker_Done
+   *
+   *    FT_Stroker_BeginSubPath
+   *    FT_Stroker_EndSubPath
+   *
+   *    FT_Stroker_LineTo
+   *    FT_Stroker_ConicTo
+   *    FT_Stroker_CubicTo
+   *
+   *    FT_Stroker_GetBorderCounts
+   *    FT_Stroker_ExportBorder
+   *    FT_Stroker_GetCounts
+   *    FT_Stroker_Export
+   *
+   */
 
 
- /**************************************************************
-  *
-  * @type:
-  *   FT_Stroker
-  *
-  * @description:
-  *   Opaque handle to a path stroker object.
-  */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Stroker
+   *
+   * @description:
+   *   Opaque handle 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.
+   *   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.
+   *     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.  The outer corner of
-   *     the joined lines is filled by enclosing the triangular
-   *     region of the corner with a straight line between the
-   *     outer corners of each stroke.
+   *     Used to render beveled line joins.  The outer corner of the joined
+   *     lines is filled by enclosing the triangular region of the corner
+   *     with a straight line between the outer corners of each stroke.
    *
    *   FT_STROKER_LINEJOIN_MITER_FIXED ::
-   *     Used to render mitered line joins, with fixed bevels if the
-   *     miter limit is exceeded.  The outer edges of the strokes
-   *     for the two segments are extended until they meet at an
-   *     angle.  If the segments meet at too sharp an angle (such
-   *     that the miter would extend from the intersection of the
-   *     segments a distance greater than the product of the miter
-   *     limit value and the border radius), then a bevel join (see
-   *     above) is used instead.  This prevents long spikes being
-   *     created.  FT_STROKER_LINEJOIN_MITER_FIXED generates a miter
-   *     line join as used in PostScript and PDF.
+   *     Used to render mitered line joins, with fixed bevels if the miter
+   *     limit is exceeded.  The outer edges of the strokes for the two
+   *     segments are extended until they meet at an angle.  If the segments
+   *     meet at too sharp an angle (such that the miter would extend from
+   *     the intersection of the segments a distance greater than the product
+   *     of the miter limit value and the border radius), then a bevel join
+   *     (see above) is used instead.  This prevents long spikes being
+   *     created.  `FT_STROKER_LINEJOIN_MITER_FIXED` generates a miter line
+   *     join as used in PostScript and PDF.
    *
    *   FT_STROKER_LINEJOIN_MITER_VARIABLE ::
    *   FT_STROKER_LINEJOIN_MITER ::
-   *     Used to render mitered line joins, with variable bevels if
-   *     the miter limit is exceeded.  The intersection of the
-   *     strokes is clipped at a line perpendicular to the bisector
-   *     of the angle between the strokes, at the distance from the
-   *     intersection of the segments equal to the product of the
-   *     miter limit value and the border radius.  This prevents
-   *     long spikes being created.
-   *     FT_STROKER_LINEJOIN_MITER_VARIABLE generates a mitered line
-   *     join as used in XPS.  FT_STROKER_LINEJOIN_MITER is an alias
-   *     for FT_STROKER_LINEJOIN_MITER_VARIABLE, retained for
-   *     backward compatibility.
+   *     Used to render mitered line joins, with variable bevels if the miter
+   *     limit is exceeded.  The intersection of the strokes is clipped at a
+   *     line perpendicular to the bisector of the angle between the strokes,
+   *     at the distance from the intersection of the segments equal to the
+   *     product of the miter limit value and the border radius.  This
+   *     prevents long spikes being created.
+   *     `FT_STROKER_LINEJOIN_MITER_VARIABLE` generates a mitered line join
+   *     as used in XPS.  `FT_STROKER_LINEJOIN_MITER` is an alias for
+   *     `FT_STROKER_LINEJOIN_MITER_VARIABLE`, retained for backward
+   *     compatibility.
    */
   typedef enum  FT_Stroker_LineJoin_
   {
@@ -149,27 +146,25 @@
   } FT_Stroker_LineJoin;
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   FT_Stroker_LineCap
    *
    * @description:
-   *   These values determine how the end of opened sub-paths are
-   *   rendered in a stroke.
+   *   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.
+   *     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.
+   *     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.
+   *     The end of lines is rendered as a square around the last point.
    */
   typedef enum  FT_Stroker_LineCap_
   {
@@ -180,14 +175,14 @@
   } 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.
+   *   These values are used to select a given stroke border in
+   *   @FT_Stroker_GetBorderCounts and @FT_Stroker_ExportBorder.
    *
    * @values:
    *   FT_STROKER_BORDER_LEFT ::
@@ -197,9 +192,9 @@
    *     Select the right border, relative to the drawing direction.
    *
    * @note:
-   *   Applications are generally interested in the `inside' and `outside'
+   *   Applications are generally interested in the 'inside' and 'outside'
    *   borders.  However, there is no direct mapping between these and the
-   *   `left' and `right' ones, since this really depends on the glyph's
+   *   'left' and '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
@@ -213,14 +208,14 @@
   } FT_StrokerBorder;
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Outline_GetInsideBorder
    *
    * @description:
-   *   Retrieve the @FT_StrokerBorder value corresponding to the
-   *   `inside' borders of a given outline.
+   *   Retrieve the @FT_StrokerBorder value corresponding to the 'inside'
+   *   borders of a given outline.
    *
    * @input:
    *   outline ::
@@ -234,14 +229,14 @@
   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.
+   *   Retrieve the @FT_StrokerBorder value corresponding to the 'outside'
+   *   borders of a given outline.
    *
    * @input:
    *   outline ::
@@ -255,7 +250,7 @@
   FT_Outline_GetOutsideBorder( FT_Outline*  outline );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_New
@@ -269,7 +264,7 @@
    *
    * @output:
    *   astroker ::
-   *     A new stroker object handle.  NULL in case of error.
+   *     A new stroker object handle.  `NULL` in case of error.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -279,7 +274,7 @@
                   FT_Stroker  *astroker );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_Set
@@ -301,13 +296,12 @@
    *     The line join style.
    *
    *   miter_limit ::
-   *     The miter limit for the FT_STROKER_LINEJOIN_MITER_FIXED and
-   *     FT_STROKER_LINEJOIN_MITER_VARIABLE line join styles,
-   *     expressed as 16.16 fixed-point value.
+   *     The miter limit for the `FT_STROKER_LINEJOIN_MITER_FIXED` and
+   *     `FT_STROKER_LINEJOIN_MITER_VARIABLE` line join styles, expressed as
+   *     16.16 fixed-point value.
    *
    * @note:
-   *   The radius is expressed in the same units as the outline
-   *   coordinates.
+   *   The radius is expressed in the same units as the outline coordinates.
    *
    *   This function calls @FT_Stroker_Rewind automatically.
    */
@@ -319,16 +313,15 @@
                   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.
+   *   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 ::
@@ -338,15 +331,15 @@
   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.
+   *   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 ::
@@ -356,18 +349,18 @@
    *     The source outline.
    *
    *   opened ::
-   *     A boolean.  If~1, the outline is treated as an open path instead
-   *     of a closed one.
+   *     A boolean.  If~1, 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 generates two distinct `border' outlines.
+   *   If `opened` is~0 (the default), the outline is treated as a closed
+   *   path, and the stroker generates two distinct 'border' outlines.
    *
-   *   If `opened' is~1, the outline is processed as an open path, and the
-   *   stroker generates a single `stroke' outline.
+   *   If `opened` is~1, the outline is processed as an open path, and the
+   *   stroker generates a single 'stroke' outline.
    *
    *   This function calls @FT_Stroker_Rewind automatically.
    */
@@ -377,7 +370,7 @@
                            FT_Bool      opened );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_BeginSubPath
@@ -399,8 +392,8 @@
    *   FreeType error code.  0~means success.
    *
    * @note:
-   *   This function is useful when you need to stroke a path that is
-   *   not stored as an @FT_Outline object.
+   *   This function is useful when you need to stroke a path that is not
+   *   stored as an @FT_Outline object.
    */
   FT_EXPORT( FT_Error )
   FT_Stroker_BeginSubPath( FT_Stroker  stroker,
@@ -408,7 +401,7 @@
                            FT_Bool     open );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_EndSubPath
@@ -424,22 +417,22 @@
    *   FreeType error code.  0~means success.
    *
    * @note:
-   *   You should call this function after @FT_Stroker_BeginSubPath.
-   *   If the subpath was not `opened', this function `draws' a
-   *   single line segment to the start position when needed.
+   *   You should call this function after @FT_Stroker_BeginSubPath.  If the
+   *   subpath was not 'opened', this function 'draws' 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.
+   *   'Draw' a single line segment in the stroker's current sub-path, from
+   *   the last position.
    *
    * @input:
    *   stroker ::
@@ -460,13 +453,13 @@
                      FT_Vector*  to );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_ConicTo
    *
    * @description:
-   *   `Draw' a single quadratic Bezier in the stroker's current sub-path,
+   *   'Draw' a single quadratic Bezier in the stroker's current sub-path,
    *   from the last position.
    *
    * @input:
@@ -492,14 +485,14 @@
                       FT_Vector*  to );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_CubicTo
    *
    * @description:
-   *   `Draw' a single cubic Bezier in the stroker's current sub-path,
-   *   from the last position.
+   *   'Draw' a single cubic Bezier in the stroker's current sub-path, from
+   *   the last position.
    *
    * @input:
    *   stroker ::
@@ -528,16 +521,16 @@
                       FT_Vector*  to );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_GetBorderCounts
    *
    * @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 one of the `border' or `stroke'
-   *   outlines generated by the stroker.
+   *   Call this function once you have finished parsing your paths with the
+   *   stroker.  It returns the number of points and contours necessary to
+   *   export one of the 'border' or 'stroke' outlines generated by the
+   *   stroker.
    *
    * @input:
    *   stroker ::
@@ -557,15 +550,15 @@
    *   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 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.
+   *   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.
+   *   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,
@@ -574,19 +567,17 @@
                               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.
+   *   Call this function after @FT_Stroker_GetBorderCounts to export the
+   *   corresponding border to your own @FT_Outline structure.
    *
-   *   Note that this function appends the border points and
-   *   contours to your outline, but does not try to resize its
-   *   arrays.
+   *   Note that this function appends the border points and contours to your
+   *   outline, but does not try to resize its arrays.
    *
    * @input:
    *   stroker ::
@@ -599,19 +590,19 @@
    *     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.
+   *   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 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.
+   *   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.
+   *   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,
@@ -619,16 +610,15 @@
                            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.
+   *   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 ::
@@ -650,18 +640,17 @@
                         FT_UInt    *anum_contours );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_Export
    *
    * @description:
-   *   Call this function after @FT_Stroker_GetBorderCounts to
-   *   export all borders to your own @FT_Outline structure.
+   *   Call this function after @FT_Stroker_GetBorderCounts to export all
+   *   borders to your own @FT_Outline structure.
    *
-   *   Note that this function appends the border points and
-   *   contours to your outline, but does not try to resize its
-   *   arrays.
+   *   Note that this function appends the border points and contours to your
+   *   outline, but does not try to resize its arrays.
    *
    * @input:
    *   stroker ::
@@ -675,7 +664,7 @@
                      FT_Outline*  outline );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Stroker_Done
@@ -685,13 +674,13 @@
    *
    * @input:
    *   stroker ::
-   *     A stroker handle.  Can be NULL.
+   *     A stroker handle.  Can be `NULL`.
    */
   FT_EXPORT( void )
   FT_Stroker_Done( FT_Stroker  stroker );
 
 
-  /**************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Glyph_Stroke
@@ -708,8 +697,7 @@
    *     A stroker handle.
    *
    *   destroy ::
-   *     A Boolean.  If~1, the source glyph object is destroyed
-   *     on success.
+   *     A Boolean.  If~1, the source glyph object is destroyed on success.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -719,8 +707,8 @@
    *
    *   Adding stroke may yield a significantly wider and taller glyph
    *   depending on how large of a radius was used to stroke the glyph.  You
-   *   may need to manually adjust horizontal and vertical advance amounts
-   *   to account for this added size.
+   *   may need to manually adjust horizontal and vertical advance amounts to
+   *   account for this added size.
    */
   FT_EXPORT( FT_Error )
   FT_Glyph_Stroke( FT_Glyph    *pglyph,
@@ -728,14 +716,14 @@
                    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.
+   *   Stroke a given outline glyph object with a given stroker, but only
+   *   return either its inside or outside border.
    *
    * @inout:
    *   pglyph ::
@@ -746,12 +734,11 @@
    *     A stroker handle.
    *
    *   inside ::
-   *     A Boolean.  If~1, return the inside border, otherwise
-   *     the outside border.
+   *     A Boolean.  If~1, return the inside border, otherwise the outside
+   *     border.
    *
    *   destroy ::
-   *     A Boolean.  If~1, the source glyph object is destroyed
-   *     on success.
+   *     A Boolean.  If~1, the source glyph object is destroyed on success.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -761,8 +748,8 @@
    *
    *   Adding stroke may yield a significantly wider and taller glyph
    *   depending on how large of a radius was used to stroke the glyph.  You
-   *   may need to manually adjust horizontal and vertical advance amounts
-   *   to account for this added size.
+   *   may need to manually adjust horizontal and vertical advance amounts to
+   *   account for this added size.
    */
   FT_EXPORT( FT_Error )
   FT_Glyph_StrokeBorder( FT_Glyph    *pglyph,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftsynth.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftsynth.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsynth.h                                                              */
-/*                                                                         */
-/*    FreeType synthesizing code for emboldening and slanting              */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsynth.h
+ *
+ *   FreeType synthesizing code for emboldening and slanting
+ *   (specification).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
   /*************************************************************************/
@@ -35,7 +35,7 @@
 
 
   /* Main reason for not lifting the functions in this module to a  */
-  /* `standard' API is that the used parameters for emboldening and */
+  /* 'standard' API is that the used parameters for emboldening and */
   /* slanting are not configurable.  Consider the functions as a    */
   /* code resource that should be copied into the application and   */
   /* adapted to the particular needs.                               */
@@ -57,7 +57,7 @@
 
 FT_BEGIN_HEADER
 
-  /* Embolden a glyph by a `reasonable' value (which is highly a matter of */
+  /* Embolden a glyph by a 'reasonable' value (which is highly a matter of */
   /* taste).  This function is actually a convenience function, providing  */
   /* a wrapper for @FT_Outline_Embolden and @FT_Bitmap_Embolden.           */
   /*                                                                       */
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ftsystem.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ftsystem.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsystem.h                                                             */
-/*                                                                         */
-/*    FreeType low-level system interface definition (specification).      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsystem.h
+ *
+ *   FreeType low-level system interface definition (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,34 +26,33 @@
 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   */
-  /*   i/o streams.                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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 i/o streams.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                  M E M O R Y   M A N A G E M E N T                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                 M E M O R Y   M A N A G E M E N T
+   *
+   */
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   FT_Memory
@@ -66,13 +65,13 @@
   typedef struct FT_MemoryRec_*  FT_Memory;
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   FT_Alloc_Func
    *
    * @description:
-   *   A function used to allocate `size' bytes from `memory'.
+   *   A function used to allocate `size` bytes from `memory`.
    *
    * @input:
    *   memory ::
@@ -90,7 +89,7 @@
                     long       size );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   FT_Free_Func
@@ -111,7 +110,7 @@
                    void*      block );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   FT_Realloc_Func
@@ -146,7 +145,7 @@
                       void*      block );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @struct:
    *   FT_MemoryRec
@@ -177,14 +176,14 @@
   };
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                       I / O   M A N A G E M E N T                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                      I / O   M A N A G E M E N T
+   *
+   */
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   FT_Stream
@@ -193,21 +192,21 @@
    *   A handle to an input stream.
    *
    * @also:
-   *   See @FT_StreamRec for the publicly accessible fields of a given
-   *   stream object.
+   *   See @FT_StreamRec for the publicly accessible fields of a given stream
+   *   object.
    *
    */
   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.
+   *   to store a file descriptor or a `FILE*` in an input stream.
    *
    */
   typedef union  FT_StreamDesc_
@@ -218,7 +217,7 @@
   } FT_StreamDesc;
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   FT_Stream_IoFunc
@@ -243,9 +242,8 @@
    *   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.  A non-zero return value then indicates an
-   *   error.
+   *   This function might be called to perform a seek or skip operation with
+   *   a `count` of~0.  A non-zero return value then indicates an error.
    *
    */
   typedef unsigned long
@@ -255,7 +253,7 @@
                        unsigned long   count );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   FT_Stream_CloseFunc
@@ -265,14 +263,14 @@
    *
    * @input:
    *  stream ::
-   *     A handle to the target stream.
+   *    A handle to the target stream.
    *
    */
   typedef void
   (*FT_Stream_CloseFunc)( FT_Stream  stream );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @struct:
    *   FT_StreamRec
@@ -283,7 +281,7 @@
    * @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
+   *     byte in memory.  This field should always be set to `NULL` for
    *     disk-based streams.
    *
    *   size ::
@@ -299,7 +297,7 @@
    *
    *   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*'
+   *     used by stream implementations to store file descriptors or `FILE*`
    *     pointers.
    *
    *   pathname ::
@@ -314,13 +312,13 @@
    *     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.
+   *     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.
+   *     frames.  In particular, the `FT_GET_XXX` macros use this instead of
+   *     the `pos` field.
    *
    *   limit ::
    *     This field is set and used internally by FreeType when parsing
--- a/src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/fttrigon.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttrigon.h                                                             */
-/*                                                                         */
-/*    FreeType trigonometric functions (specification).                    */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttrigon.h
+ *
+ *   FreeType trigonometric functions (specification).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -31,15 +31,15 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*   computations                                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *  computations
+   *
+   */
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   FT_Angle
@@ -52,7 +52,7 @@
   typedef FT_Fixed  FT_Angle;
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_ANGLE_PI
@@ -64,7 +64,7 @@
 #define FT_ANGLE_PI  ( 180L << 16 )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_ANGLE_2PI
@@ -76,7 +76,7 @@
 #define FT_ANGLE_2PI  ( FT_ANGLE_PI * 2 )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_ANGLE_PI2
@@ -88,7 +88,7 @@
 #define FT_ANGLE_PI2  ( FT_ANGLE_PI / 2 )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @macro:
    *   FT_ANGLE_PI4
@@ -100,7 +100,7 @@
 #define FT_ANGLE_PI4  ( FT_ANGLE_PI / 4 )
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Sin
@@ -124,7 +124,7 @@
   FT_Sin( FT_Angle  angle );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Cos
@@ -148,7 +148,7 @@
   FT_Cos( FT_Angle  angle );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Tan
@@ -168,14 +168,14 @@
   FT_Tan( FT_Angle  angle );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Atan2
    *
    * @description:
-   *   Return the arc-tangent corresponding to a given vector (x,y) in
-   *   the 2d plane.
+   *   Return the arc-tangent corresponding to a given vector (x,y) in the 2d
+   *   plane.
    *
    * @input:
    *   x ::
@@ -193,7 +193,7 @@
             FT_Fixed  y );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Angle_Diff
@@ -210,7 +210,7 @@
    *     Second angle.
    *
    * @return:
-   *   Constrained value of `value2-value1'.
+   *   Constrained value of `angle2-angle1`.
    *
    */
   FT_EXPORT( FT_Angle )
@@ -218,15 +218,15 @@
                  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 `cos(angle)', and the value of
-   *   `vec.y' will be `sin(angle)'.
+   *   call, the value of `vec.x` will be `cos(angle)`, and the value of
+   *   `vec.y` will be `sin(angle)`.
    *
    *   This function is useful to retrieve both the sinus and cosinus of a
    *   given angle quickly.
@@ -245,7 +245,7 @@
                   FT_Angle    angle );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Vector_Rotate
@@ -267,7 +267,7 @@
                     FT_Angle    angle );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Vector_Length
@@ -288,7 +288,7 @@
   FT_Vector_Length( FT_Vector*  vec );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Vector_Polarize
@@ -314,7 +314,7 @@
                       FT_Angle   *angle );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @function:
    *   FT_Vector_From_Polar
--- a/src/java.desktop/share/native/libfreetype/include/freetype/fttypes.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/fttypes.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttypes.h                                                              */
-/*                                                                         */
-/*    FreeType simple types definitions (specification only).              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttypes.h
+ *
+ *   FreeType simple types definitions (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -31,326 +31,327 @@
 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_Bytes                                                           */
-  /*    FT_Char                                                            */
-  /*    FT_Int                                                             */
-  /*    FT_UInt                                                            */
-  /*    FT_Int16                                                           */
-  /*    FT_UInt16                                                          */
-  /*    FT_Int32                                                           */
-  /*    FT_UInt32                                                          */
-  /*    FT_Int64                                                           */
-  /*    FT_UInt64                                                          */
-  /*    FT_Short                                                           */
-  /*    FT_UShort                                                          */
-  /*    FT_Long                                                            */
-  /*    FT_ULong                                                           */
-  /*    FT_Bool                                                            */
-  /*    FT_Offset                                                          */
-  /*    FT_PtrDist                                                         */
-  /*    FT_String                                                          */
-  /*    FT_Tag                                                             */
-  /*    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_Data                                                            */
-  /*                                                                       */
-  /*    FT_MAKE_TAG                                                        */
-  /*                                                                       */
-  /*    FT_Generic                                                         */
-  /*    FT_Generic_Finalizer                                               */
-  /*                                                                       */
-  /*    FT_Bitmap                                                          */
-  /*    FT_Pixel_Mode                                                      */
-  /*    FT_Palette_Mode                                                    */
-  /*    FT_Glyph_Format                                                    */
-  /*    FT_IMAGE_TAG                                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @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_Bytes
+   *   FT_Char
+   *   FT_Int
+   *   FT_UInt
+   *   FT_Int16
+   *   FT_UInt16
+   *   FT_Int32
+   *   FT_UInt32
+   *   FT_Int64
+   *   FT_UInt64
+   *   FT_Short
+   *   FT_UShort
+   *   FT_Long
+   *   FT_ULong
+   *   FT_Bool
+   *   FT_Offset
+   *   FT_PtrDist
+   *   FT_String
+   *   FT_Tag
+   *   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_Data
+   *
+   *   FT_MAKE_TAG
+   *
+   *   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.  As usual,   */
-  /*    values 1 and~0 represent true and false, respectively.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Bool
+   *
+   * @description:
+   *   A typedef of unsigned char, used for simple booleans.  As usual,
+   *   values 1 and~0 represent true and false, respectively.
+   */
   typedef unsigned char  FT_Bool;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_FWord                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A signed 16-bit integer used to store a distance in original font  */
-  /*    units.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Byte
+   *
+   * @description:
+   *   A simple typedef for the _unsigned_ char type.
+   */
   typedef unsigned char  FT_Byte;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Bytes                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for constant memory areas.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Bytes
+   *
+   * @description:
+   *   A typedef for constant memory areas.
+   */
   typedef const FT_Byte*  FT_Bytes;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Tag                                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for 32-bit tags (as used in the SFNT format).            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Tag
+   *
+   * @description:
+   *   A typedef for 32-bit tags (as used in the SFNT format).
+   */
   typedef FT_UInt32  FT_Tag;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_String                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple typedef for the char type, usually used for strings.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Short
+   *
+   * @description:
+   *   A typedef for signed short.
+   */
   typedef signed short  FT_Short;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UShort                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for unsigned 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.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Int
+   *
+   * @description:
+   *   A typedef for the int type.
+   */
   typedef signed int  FT_Int;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for the unsigned int type.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Long
+   *
+   * @description:
+   *   A typedef for signed long.
+   */
   typedef signed long  FT_Long;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_ULong                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for unsigned long.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_ULong
+   *
+   * @description:
+   *   A typedef for unsigned long.
+   */
   typedef unsigned long  FT_ULong;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_F2Dot14                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A signed 2.14 fixed-point type used for unit vectors.              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_F2Dot14
+   *
+   * @description:
+   *   A signed 2.14 fixed-point type used for unit vectors.
+   */
   typedef signed short  FT_F2Dot14;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_F26Dot6                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A signed 26.6 fixed-point type used for vectorial pixel            */
-  /*    coordinates.                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_F26Dot6
+   *
+   * @description:
+   *   A signed 26.6 fixed-point type used for vectorial pixel coordinates.
+   */
   typedef signed long  FT_F26Dot6;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Fixed                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This type is used to store 16.16 fixed-point values, like scaling  */
-  /*    values or matrix coefficients.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_Fixed
+   *
+   * @description:
+   *   This type is used to store 16.16 fixed-point values, like scaling
+   *   values 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.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 ft_ptrdiff_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.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -359,29 +360,33 @@
   } FT_UnitVector;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Matrix                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple structure used to store a 2x2 matrix.  Coefficients are   */
-  /*    in 16.16 fixed-point 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.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Matrix
+   *
+   * @description:
+   *   A simple structure used to store a 2x2 matrix.  Coefficients are in
+   *   16.16 fixed-point 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;
@@ -390,19 +395,21 @@
   } 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.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -411,51 +418,52 @@
   } FT_Data;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Generic_Finalizer                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Describe 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 that is under finalization.     */
-  /*    Its client data is accessed through its `generic' field.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_Generic_Finalizer
+   *
+   * @description:
+   *   Describe 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 that 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.      */
-  /*                                                                       */
-  /*    Some 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.         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   Some 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;
@@ -464,19 +472,19 @@
   } FT_Generic;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_MAKE_TAG                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This macro converts four-letter tags that are used to label        */
-  /*    TrueType tables into an unsigned long, to be used within FreeType. */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The produced values *must* be 32-bit integers.  Don't redefine     */
-  /*    this macro.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_MAKE_TAG
+   *
+   * @description:
+   *   This macro converts four-letter tags that are used to label TrueType
+   *   tables into an unsigned long, to be used within FreeType.
+   *
+   * @note:
+   *   The produced values **must** be 32-bit integers.  Don't redefine this
+   *   macro.
+   */
 #define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
           (FT_Tag)                        \
           ( ( (FT_ULong)_x1 << 24 ) |     \
@@ -494,53 +502,56 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    list_processing                                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   list_processing
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_ListNode                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*     Many elements and objects in FreeType are listed through an       */
-  /*     @FT_List record (see @FT_ListRec).  As its name suggests, an      */
-  /*     FT_ListNode is a handle to a single list element.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   FT_ListNode
+   *
+   * @description:
+   *    Many elements and objects in FreeType are listed through an @FT_List
+   *    record (see @FT_ListRec).  As its name suggests, an 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).                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -550,20 +561,22 @@
   } 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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -575,13 +588,13 @@
 
 
 #define FT_IS_EMPTY( list )  ( (list).head == 0 )
-#define FT_BOOL( x )  ( (FT_Bool)( x ) )
+#define FT_BOOL( x )  ( (FT_Bool)( (x) != 0 ) )
 
   /* concatenate C tokens */
 #define FT_ERR_XCAT( x, y )  x ## y
 #define FT_ERR_CAT( x, y )   FT_ERR_XCAT( x, y )
 
-  /* see `ftmoderr.h' for descriptions of the following macros */
+  /* see `ftmoderr.h` for descriptions of the following macros */
 
 #define FT_ERR( e )  FT_ERR_CAT( FT_ERR_PREFIX, e )
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/autohint.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/autohint.h	Thu May 09 16:09:39 2019 -0700
@@ -1,73 +1,73 @@
-/***************************************************************************/
-/*                                                                         */
-/*  autohint.h                                                             */
-/*                                                                         */
-/*    High-level `autohint' module-specific interface (specification).     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * autohint.h
+ *
+ *   High-level 'autohint' module-specific interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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 */
-  /*                 aggressively 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.                                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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
+   *                 aggressively 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>
@@ -80,27 +80,31 @@
   typedef struct FT_AutoHinterRec_  *FT_AutoHinter;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_AutoHinter_GlobalGetFunc                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Retrieve 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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_AutoHinter_GlobalGetFunc
+   *
+   * @description:
+   *   Retrieve 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,
@@ -108,69 +112,76 @@
                                   long*          global_len );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_AutoHinter_GlobalDoneFunc                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discard 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.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   FT_AutoHinter_GlobalDoneFunc
+   *
+   * @description:
+   *   Discard 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.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -179,14 +190,14 @@
                                   FT_Int32       load_flags );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_AutoHinter_InterfaceRec                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The auto-hinter module's interface.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_AutoHinter_InterfaceRec
+   *
+   * @description:
+   *   The auto-hinter module's interface.
+   */
   typedef struct  FT_AutoHinter_InterfaceRec_
   {
     FT_AutoHinter_GlobalResetFunc  reset_face;
@@ -197,8 +208,6 @@
   } FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface;
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_AUTOHINTER_INTERFACE(       \
           class_,                             \
           reset_face_,                        \
@@ -214,27 +223,6 @@
     load_glyph_                               \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_AUTOHINTER_INTERFACE(                            \
-          class_,                                                  \
-          reset_face_,                                             \
-          get_global_hints_,                                       \
-          done_global_hints_,                                      \
-          load_glyph_ )                                            \
-  void                                                             \
-  FT_Init_Class_ ## class_( FT_Library                   library,  \
-                            FT_AutoHinter_InterfaceRec*  clazz )   \
-  {                                                                \
-    FT_UNUSED( library );                                          \
-                                                                   \
-    clazz->reset_face        = reset_face_;                        \
-    clazz->get_global_hints  = get_global_hints_;                  \
-    clazz->done_global_hints = done_global_hints_;                 \
-    clazz->load_glyph        = load_glyph_;                        \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 FT_END_HEADER
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/cffotypes.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/cffotypes.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffotypes.h                                                            */
-/*                                                                         */
-/*    Basic OpenType/CFF object type definitions (specification).          */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffotypes.h
+ *
+ *   Basic OpenType/CFF object type definitions (specification).
+ *
+ * Copyright (C) 2017-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 CFFOTYPES_H_
@@ -33,14 +33,14 @@
   typedef TT_Face  CFF_Face;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CFF_Size                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an OpenType size object.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   CFF_Size
+   *
+   * @description:
+   *   A handle to an OpenType size object.
+   */
   typedef struct  CFF_SizeRec_
   {
     FT_SizeRec  root;
@@ -49,14 +49,14 @@
   } CFF_SizeRec, *CFF_Size;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CFF_GlyphSlot                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to an OpenType glyph slot object.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   CFF_GlyphSlot
+   *
+   * @description:
+   *   A handle to an OpenType glyph slot object.
+   */
   typedef struct  CFF_GlyphSlotRec_
   {
     FT_GlyphSlotRec  root;
@@ -70,14 +70,14 @@
   } CFF_GlyphSlotRec, *CFF_GlyphSlot;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CFF_Internal                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The interface to the `internal' field of `FT_Size'.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   CFF_Internal
+   *
+   * @description:
+   *   The interface to the 'internal' field of `FT_Size`.
+   */
   typedef struct  CFF_InternalRec_
   {
     PSH_Globals  topfont;
@@ -86,10 +86,10 @@
   } CFF_InternalRec, *CFF_Internal;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Subglyph transformation record.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Subglyph transformation record.
+   */
   typedef struct  CFF_Transform_
   {
     FT_Fixed    xx, xy;     /* transformation matrix coefficients */
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/cfftypes.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/cfftypes.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cfftypes.h                                                             */
-/*                                                                         */
-/*    Basic OpenType/CFF type definitions and interface (specification     */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cfftypes.h
+ *
+ *   Basic OpenType/CFF type definitions and interface (specification
+ *   only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -33,34 +33,39 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CFF_IndexRec                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to model a CFF Index table.                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    stream      :: The source input stream.                            */
-  /*                                                                       */
-  /*    start       :: The position of the first index byte in the         */
-  /*                   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.                                              */
-  /*                                                                       */
-  /*    data_size   :: The size of the data table in this index.           */
-  /*                                                                       */
-  /*    offsets     :: A table of element offsets in the index.  Must be   */
-  /*                   loaded explicitly.                                  */
-  /*                                                                       */
-  /*    bytes       :: If the index is loaded in memory, its bytes.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CFF_IndexRec
+   *
+   * @description:
+   *   A structure used to model a CFF Index table.
+   *
+   * @fields:
+   *   stream ::
+   *     The source input stream.
+   *
+   *   start ::
+   *     The position of the first index byte in the 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.
+   *
+   *   data_size ::
+   *     The size of the data table in this index.
+   *
+   *   offsets ::
+   *     A table of element offsets in the index.  Must be loaded explicitly.
+   *
+   *   bytes ::
+   *     If the index is loaded in memory, its bytes.
+   */
   typedef struct  CFF_IndexRec_
   {
     FT_Stream  stream;
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftcalc.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftcalc.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcalc.h                                                               */
-/*                                                                         */
-/*    Arithmetic computations (specification).                             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcalc.h
+ *
+ *   Arithmetic computations (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -27,11 +27,11 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FT_MulDiv() and FT_MulFix() are declared in freetype.h.               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * FT_MulDiv() and FT_MulFix() are declared in freetype.h.
+   *
+   */
 
 #ifndef  FT_CONFIG_OPTION_NO_ASSEMBLER
   /* Provide assembler fragments for performance-critical functions. */
@@ -246,29 +246,32 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_MulDiv_No_Round                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A very simple function used to perform the computation `(a*b)/c'   */
-  /*    (without rounding) with maximum 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'.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_MulDiv_No_Round
+   *
+   * @description:
+   *   A very simple function used to perform the computation '(a*b)/c'
+   *   (without rounding) with maximum 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,
@@ -276,12 +279,11 @@
 
 
   /*
-   *  A variant of FT_Matrix_Multiply which scales its result afterwards.
-   *  The idea is that both `a' and `b' are scaled by factors of 10 so that
-   *  the values are as precise as possible to get a correct result during
-   *  the 64bit multiplication.  Let `sa' and `sb' be the scaling factors of
-   *  `a' and `b', respectively, then the scaling factor of the result is
-   *  `sa*sb'.
+   * A variant of FT_Matrix_Multiply which scales its result afterwards.  The
+   * idea is that both `a' and `b' are scaled by factors of 10 so that the
+   * values are as precise as possible to get a correct result during the
+   * 64bit multiplication.  Let `sa' and `sb' be the scaling factors of `a'
+   * and `b', respectively, then the scaling factor of the result is `sa*sb'.
    */
   FT_BASE( void )
   FT_Matrix_Multiply_Scaled( const FT_Matrix*  a,
@@ -290,8 +292,23 @@
 
 
   /*
-   *  A variant of FT_Vector_Transform.  See comments for
-   *  FT_Matrix_Multiply_Scaled.
+   * Check a matrix.  If the transformation would lead to extreme shear or
+   * extreme scaling, for example, return 0.  If everything is OK, return 1.
+   *
+   * Based on geometric considerations we use the following inequality to
+   * identify a degenerate matrix.
+   *
+   *   50 * abs(xx*yy - xy*yx) < xx^2 + xy^2 + yx^2 + yy^2
+   *
+   * Value 50 is heuristic.
+   */
+  FT_BASE( FT_Bool )
+  FT_Matrix_Check( const FT_Matrix*  matrix );
+
+
+  /*
+   * A variant of FT_Vector_Transform.  See comments for
+   * FT_Matrix_Multiply_Scaled.
    */
   FT_BASE( void )
   FT_Vector_Transform_Scaled( FT_Vector*        vector,
@@ -300,22 +317,22 @@
 
 
   /*
-   *  This function normalizes a vector and returns its original length.
-   *  The normalized vector is a 16.16 fixed-point unit vector with length
-   *  close to 0x10000.  The accuracy of the returned length is limited to
-   *  16 bits also.  The function utilizes quick inverse square root
-   *  approximation without divisions and square roots relying on Newton's
-   *  iterations instead.
+   * This function normalizes a vector and returns its original length.  The
+   * normalized vector is a 16.16 fixed-point unit vector with length close
+   * to 0x10000.  The accuracy of the returned length is limited to 16 bits
+   * also.  The function utilizes quick inverse square root approximation
+   * without divisions and square roots relying on Newton's iterations
+   * instead.
    */
   FT_BASE( FT_UInt32 )
   FT_Vector_NormLen( FT_Vector*  vector );
 
 
   /*
-   *  Return -1, 0, or +1, depending on the orientation of a given corner.
-   *  We use the Cartesian coordinate system, with positive vertical values
-   *  going upwards.  The function returns +1 if the corner turns to the
-   *  left, -1 to the right, and 0 for undecidable cases.
+   * Return -1, 0, or +1, depending on the orientation of a given corner.  We
+   * use the Cartesian coordinate system, with positive vertical values going
+   * upwards.  The function returns +1 if the corner turns to the left, -1 to
+   * the right, and 0 for undecidable cases.
    */
   FT_BASE( FT_Int )
   ft_corner_orientation( FT_Pos  in_x,
@@ -325,9 +342,9 @@
 
 
   /*
-   *  Return TRUE if a corner is flat or nearly flat.  This is equivalent to
-   *  saying that the corner point is close to its neighbors, or inside an
-   *  ellipse defined by the neighbor focal points to be more precise.
+   * Return TRUE if a corner is flat or nearly flat.  This is equivalent to
+   * saying that the corner point is close to its neighbors, or inside an
+   * ellipse defined by the neighbor focal points to be more precise.
    */
   FT_BASE( FT_Int )
   ft_corner_is_flat( FT_Pos  in_x,
@@ -337,10 +354,11 @@
 
 
   /*
-   *  Return the most significant bit index.
+   * Return the most significant bit index.
    */
 
 #ifndef  FT_CONFIG_OPTION_NO_ASSEMBLER
+
 #if defined( __GNUC__ )                                          && \
     ( __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 4 ) )
 
@@ -352,9 +370,34 @@
 
 #define FT_MSB( x )  ( 31 - __builtin_clzl( x ) )
 
+#endif /* __GNUC__ */
+
+
+#elif defined( _MSC_VER ) && ( _MSC_VER >= 1400 )
+
+#if FT_SIZEOF_INT == 4
+
+#include <intrin.h>
+
+  static __inline FT_Int32
+  FT_MSB_i386( FT_UInt32  x )
+  {
+    unsigned long  where;
+
+
+    /* not available in older VC versions */
+    _BitScanReverse( &where, x );
+
+    return (FT_Int32)where;
+  }
+
+#define FT_MSB( x )  ( FT_MSB_i386( x ) )
+
 #endif
 
-#endif /* __GNUC__ */
+#endif /* _MSC_VER */
+
+
 #endif /* !FT_CONFIG_OPTION_NO_ASSEMBLER */
 
 #ifndef FT_MSB
@@ -366,8 +409,8 @@
 
 
   /*
-   *  Return sqrt(x*x+y*y), which is the same as `FT_Vector_Length' but uses
-   *  two fixed-point arguments instead.
+   * Return sqrt(x*x+y*y), which is the same as `FT_Vector_Length' but uses
+   * two fixed-point arguments instead.
    */
   FT_BASE( FT_Fixed )
   FT_Hypot( FT_Fixed  x,
@@ -376,23 +419,24 @@
 
 #if 0
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_SqrtFixed                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the square root of a 16.16 fixed-point value.             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    x :: The value to compute the root for.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The result of `sqrt(x)'.                                           */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function is not very fast.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_SqrtFixed
+   *
+   * @description:
+   *   Computes the square root of a 16.16 fixed-point value.
+   *
+   * @input:
+   *   x ::
+   *     The value to compute the root for.
+   *
+   * @return:
+   *   The result of 'sqrt(x)'.
+   *
+   * @note:
+   *   This function is not very fast.
+   */
   FT_BASE( FT_Int32 )
   FT_SqrtFixed( FT_Int32  x );
 
@@ -409,14 +453,23 @@
                                         : ( -( ( 32 - (x) ) & -64 ) ) )
 
   /*
-   *  The following macros have two purposes.
+   * The following macros have two purposes.
    *
-   *  . Tag places where overflow is expected and harmless.
+   * - Tag places where overflow is expected and harmless.
+   *
+   * - Avoid run-time sanitizer errors.
    *
-   *  . Avoid run-time sanitizer errors.
-   *
-   *  Use with care!
+   * Use with care!
    */
+#define ADD_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) + (FT_UInt)(b) )
+#define SUB_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) - (FT_UInt)(b) )
+#define MUL_INT( a, b )                           \
+          (FT_Int)( (FT_UInt)(a) * (FT_UInt)(b) )
+#define NEG_INT( a )                              \
+          (FT_Int)( (FT_UInt)0 - (FT_UInt)(a) )
+
 #define ADD_LONG( a, b )                             \
           (FT_Long)( (FT_ULong)(a) + (FT_ULong)(b) )
 #define SUB_LONG( a, b )                             \
@@ -435,6 +488,19 @@
 #define NEG_INT32( a )                                  \
           (FT_Int32)( (FT_UInt32)0 - (FT_UInt32)(a) )
 
+#ifdef FT_LONG64
+
+#define ADD_INT64( a, b )                               \
+          (FT_Int64)( (FT_UInt64)(a) + (FT_UInt64)(b) )
+#define SUB_INT64( a, b )                               \
+          (FT_Int64)( (FT_UInt64)(a) - (FT_UInt64)(b) )
+#define MUL_INT64( a, b )                               \
+          (FT_Int64)( (FT_UInt64)(a) * (FT_UInt64)(b) )
+#define NEG_INT64( a )                                  \
+          (FT_Int64)( (FT_UInt64)0 - (FT_UInt64)(a) )
+
+#endif /* FT_LONG64 */
+
 
 FT_END_HEADER
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdebug.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdebug.h	Thu May 09 16:09:39 2019 -0700
@@ -1,24 +1,24 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdebug.h                                                              */
-/*                                                                         */
-/*    Debugging and logging component (specification).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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.                                       */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdebug.h
+ *
+ *   Debugging and logging component (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -42,12 +42,12 @@
 #endif
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the trace enums as well as the trace levels array when they    */
-  /* are needed.                                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the trace enums as well as the trace levels array when they are
+   * needed.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_TRACE
 
@@ -62,32 +62,37 @@
   } FT_Trace;
 
 
-  /* defining the array of trace levels, provided by `src/base/ftdebug.c' */
-  extern int  ft_trace_levels[trace_count];
+  /* a pointer to the array of trace levels, */
+  /* provided by `src/base/ftdebug.c'        */
+  extern int*  ft_trace_levels;
 
 #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.                                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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;                       \
+  /* we need two macros here to make cpp expand `FT_COMPONENT' */
+#define FT_TRACE_COMP( x )   FT_TRACE_COMP_( x )
+#define FT_TRACE_COMP_( x )  trace_ ## x
+
+#define FT_TRACE( level, varformat )                                       \
+          do                                                               \
+          {                                                                \
+            if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] >= level ) \
+              FT_Message varformat;                                        \
           } while ( 0 )
 
 #else /* !FT_DEBUG_LEVEL_TRACE */
@@ -97,62 +102,85 @@
 #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.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 trace levels array by an index.
+   */
   FT_BASE( 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 application.                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 is not
+   *   built with FT_DEBUG_LEVEL_TRACE definition.
+   *
+   * @note:
+   *   Use @FT_Trace_Get_Count to get the number of available trace
+   *   components.
+   */
   FT_BASE( const char* )
   FT_Trace_Get_Name( FT_Int  idx );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* You need two opening and closing parentheses!                         */
-  /*                                                                       */
-  /* Example: FT_TRACE0(( "Value is %i", foo ))                            */
-  /*                                                                       */
-  /* Output of the FT_TRACEX macros is sent to stderr.                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Trace_Disable
+   *
+   * @description:
+   *   Switch off tracing temporarily.  It can be activated again with
+   *   @FT_Trace_Enable.
+   */
+  FT_BASE( void )
+  FT_Trace_Disable( void );
+
+
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Trace_Enable
+   *
+   * @description:
+   *   Activate tracing.  Use it after tracing has been switched off with
+   *   @FT_Trace_Disable.
+   */
+  FT_BASE( void )
+  FT_Trace_Enable( void );
+
+
+  /**************************************************************************
+   *
+   * You need two opening and closing parentheses!
+   *
+   * Example: FT_TRACE0(( "Value is %i", foo ))
+   *
+   * Output of the FT_TRACEX macros is sent to stderr.
+   *
+   */
 
 #define FT_TRACE0( varformat )  FT_TRACE( 0, varformat )
 #define FT_TRACE1( varformat )  FT_TRACE( 1, varformat )
@@ -164,13 +192,13 @@
 #define FT_TRACE7( varformat )  FT_TRACE( 7, varformat )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the FT_ERROR macro.                                            */
-  /*                                                                       */
-  /* Output of this macro is sent to stderr.                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the FT_ERROR macro.
+   *
+   * Output of this macro is sent to stderr.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_ERROR
 
@@ -183,12 +211,12 @@
 #endif /* !FT_DEBUG_LEVEL_ERROR */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the FT_ASSERT and FT_THROW macros.  The call to `FT_Throw'     */
-  /* makes it possible to easily set a breakpoint at this function.        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the FT_ASSERT and FT_THROW macros.  The call to `FT_Throw` makes
+   * it possible to easily set a breakpoint at this function.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_ERROR
 
@@ -215,11 +243,11 @@
 #endif /* !FT_DEBUG_LEVEL_ERROR */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define `FT_Message' and `FT_Panic' when needed.                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define `FT_Message` and `FT_Panic` when needed.
+   *
+   */
 
 #ifdef FT_DEBUG_LEVEL_ERROR
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdrv.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftdrv.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdrv.h                                                                */
-/*                                                                         */
-/*    FreeType internal font driver interface (specification).             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdrv.h
+ *
+ *   FreeType internal font driver interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTDRV_H_
@@ -87,73 +87,80 @@
                               FT_Fixed*  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.           */
-  /*                                                                       */
-  /*                                                                       */
-  /*    load_glyph       :: A function handle to load a glyph to a slot.   */
-  /*                        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.         */
-  /*                        The idea of this function is to be able to     */
-  /*                        perform device-independent text layout without */
-  /*                        loading a single glyph image.                  */
-  /*                                                                       */
-  /*    request_size     :: A handle to a function used to request the new */
-  /*                        character size.  Can be set to 0 if the        */
-  /*                        scaling done in the base layer suffices.       */
-  /*                                                                       */
-  /*    select_size      :: A handle to a function used to select a new    */
-  /*                        fixed size.  It is used only if                */
-  /*                        @FT_FACE_FLAG_FIXED_SIZES is set.  Can be set  */
-  /*                        to 0 if the scaling done in the base layer     */
-  /*                        suffices.                                      */
-  /* <Note>                                                                */
-  /*    Most function pointers, with the exception of `load_glyph', can be */
-  /*    set to 0 to indicate a default behaviour.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *
+   *   load_glyph ::
+   *     A function handle to load a glyph to a slot.  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.  The idea of this function is to be able to
+   *     perform device-independent text layout without loading a single
+   *     glyph image.
+   *
+   *   request_size ::
+   *     A handle to a function used to request the new character size.  Can
+   *     be set to 0 if the scaling done in the base layer suffices.
+   *
+   *   select_size ::
+   *     A handle to a function used to select a new fixed size.  It is used
+   *     only if @FT_FACE_FLAG_FIXED_SIZES is set.  Can be set to 0 if the
+   *     scaling done in the base layer suffices.
+   * @note:
+   *   Most function pointers, with the exception of `load_glyph`, can be set
+   *   to 0 to indicate a default behaviour.
+   */
   typedef struct  FT_Driver_ClassRec_
   {
     FT_Module_Class          root;
@@ -184,45 +191,28 @@
   } FT_Driver_ClassRec, *FT_Driver_Class;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DECLARE_DRIVER                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to create a forward declaration of an FT_Driver_ClassRec      */
-  /*    struct instance.                                                   */
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_DRIVER                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Driver_ClassRec struct.       */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is defined a `create' function has to be */
-  /*    called with a pointer where the allocated structure is returned.   */
-  /*    And when it is no longer needed a `destroy' function needs to be   */
-  /*    called to release that allocation.                                 */
-  /*                                                                       */
-  /*    `ftinit.c' (ft_create_default_module_classes) already contains a   */
-  /*    mechanism to call these functions for the default modules          */
-  /*    described in `ftmodule.h'.                                         */
-  /*                                                                       */
-  /*    Notice that the created `create' and `destroy' functions call      */
-  /*    `pic_init' and `pic_free' to allow you to manually allocate and    */
-  /*    initialize any additional global data, like a module specific      */
-  /*    interface, and put them in the global pic container defined in     */
-  /*    `ftpic.h'.  If you don't need them just implement the functions as */
-  /*    empty to resolve the link error.  Also the `pic_init' and          */
-  /*    `pic_free' functions should be declared in `pic.h', to be referred */
-  /*    by driver definition calling `FT_DEFINE_DRIVER' in following.      */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro is     */
-  /*    used).                                                             */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DECLARE_DRIVER
+   *
+   * @description:
+   *   Used to create a forward declaration of an FT_Driver_ClassRec struct
+   *   instance.
+   *
+   * @macro:
+   *   FT_DEFINE_DRIVER
+   *
+   * @description:
+   *   Used to initialize an instance of FT_Driver_ClassRec struct.
+   *
+   *   `ftinit.c` (ft_create_default_module_classes) already contains a
+   *   mechanism to call these functions for the default modules described in
+   *   `ftmodule.h`.
+   *
+   *   The struct will be allocated in the global scope (or the scope where
+   *   the macro is used).
+   */
 #define FT_DECLARE_DRIVER( class_ )  \
   FT_CALLBACK_TABLE                  \
   const FT_Driver_ClassRec  class_;
@@ -289,108 +279,6 @@
     select_size_                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DECLARE_DRIVER( class_ )  FT_DECLARE_MODULE( class_ )
-
-#define FT_DEFINE_DRIVER(                                        \
-          class_,                                                \
-          flags_,                                                \
-          size_,                                                 \
-          name_,                                                 \
-          version_,                                              \
-          requires_,                                             \
-          interface_,                                            \
-          init_,                                                 \
-          done_,                                                 \
-          get_interface_,                                        \
-          face_object_size_,                                     \
-          size_object_size_,                                     \
-          slot_object_size_,                                     \
-          init_face_,                                            \
-          done_face_,                                            \
-          init_size_,                                            \
-          done_size_,                                            \
-          init_slot_,                                            \
-          done_slot_,                                            \
-          load_glyph_,                                           \
-          get_kerning_,                                          \
-          attach_file_,                                          \
-          get_advances_,                                         \
-          request_size_,                                         \
-          select_size_ )                                         \
-  void                                                           \
-  FT_Destroy_Class_ ## class_( FT_Library        library,        \
-                               FT_Module_Class*  clazz )         \
-  {                                                              \
-    FT_Memory        memory = library->memory;                   \
-    FT_Driver_Class  dclazz = (FT_Driver_Class)clazz;            \
-                                                                 \
-                                                                 \
-    class_ ## _pic_free( library );                              \
-    if ( dclazz )                                                \
-      FT_FREE( dclazz );                                         \
-  }                                                              \
-                                                                 \
-                                                                 \
-  FT_Error                                                       \
-  FT_Create_Class_ ## class_( FT_Library         library,        \
-                              FT_Module_Class**  output_class )  \
-  {                                                              \
-    FT_Driver_Class  clazz  = NULL;                              \
-    FT_Error         error;                                      \
-    FT_Memory        memory = library->memory;                   \
-                                                                 \
-                                                                 \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) )                  \
-      return error;                                              \
-                                                                 \
-    error = class_ ## _pic_init( library );                      \
-    if ( error )                                                 \
-    {                                                            \
-      FT_FREE( clazz );                                          \
-      return error;                                              \
-    }                                                            \
-                                                                 \
-    FT_DEFINE_ROOT_MODULE( flags_,                               \
-                           size_,                                \
-                           name_,                                \
-                           version_,                             \
-                           requires_,                            \
-                           interface_,                           \
-                           init_,                                \
-                           done_,                                \
-                           get_interface_ )                      \
-                                                                 \
-    clazz->face_object_size = face_object_size_;                 \
-    clazz->size_object_size = size_object_size_;                 \
-    clazz->slot_object_size = slot_object_size_;                 \
-                                                                 \
-    clazz->init_face        = init_face_;                        \
-    clazz->done_face        = done_face_;                        \
-                                                                 \
-    clazz->init_size        = init_size_;                        \
-    clazz->done_size        = done_size_;                        \
-                                                                 \
-    clazz->init_slot        = init_slot_;                        \
-    clazz->done_slot        = done_slot_;                        \
-                                                                 \
-    clazz->load_glyph       = load_glyph_;                       \
-                                                                 \
-    clazz->get_kerning      = get_kerning_;                      \
-    clazz->attach_file      = attach_file_;                      \
-    clazz->get_advances     = get_advances_;                     \
-                                                                 \
-    clazz->request_size     = request_size_;                     \
-    clazz->select_size      = select_size_;                      \
-                                                                 \
-    *output_class = (FT_Module_Class*)clazz;                     \
-                                                                 \
-    return FT_Err_Ok;                                            \
-  }
-
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 FT_END_HEADER
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftgloadr.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftgloadr.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgloadr.h                                                             */
-/*                                                                         */
-/*    The FreeType glyph loader (specification).                           */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgloadr.h
+ *
+ *   The FreeType glyph loader (specification).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -27,15 +27,15 @@
 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).                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_GlyphLoader
+   *
+   * @description:
+   *   The glyph loader is an internal object used to load several glyphs
+   *   together (for example, in the case of composites).
+   */
   typedef struct  FT_SubGlyphRec_
   {
     FT_Int     index;
@@ -138,11 +138,6 @@
   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 );
-
  /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/fthash.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/fthash.h	Thu May 09 16:09:39 2019 -0700
@@ -1,10 +1,10 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fthash.h                                                               */
-/*                                                                         */
-/*    Hashing functions (specification).                                   */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fthash.h
+ *
+ *   Hashing functions (specification).
+ *
+ */
 
 /*
  * Copyright 2000 Computing Research Labs, New Mexico State University
@@ -30,13 +30,13 @@
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  This file is based on code from bdf.c,v 1.22 2000/03/16 20:08:50     */
-  /*                                                                       */
-  /*  taken from Mark Leisher's xmbdfed package                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is based on code from bdf.c,v 1.22 2000/03/16 20:08:50
+   *
+   * taken from Mark Leisher's xmbdfed package
+   *
+   */
 
 
 #ifndef FTHASH_H_
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmemory.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftmemory.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmemory.h                                                             */
-/*                                                                         */
-/*    The FreeType memory management macros (specification).               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmemory.h
+ *
+ *   The FreeType memory management macros (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -28,16 +28,16 @@
 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.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
@@ -58,9 +58,9 @@
 
 
   /*
-   *  C++ refuses to handle statements like p = (void*)anything, with `p' a
-   *  typed pointer.  Since we don't have a `typeof' operator in standard
-   *  C++, we have to use a template to emulate it.
+   * C++ refuses to handle statements like p = (void*)anything, with `p' a
+   * typed pointer.  Since we don't have a `typeof' operator in standard C++,
+   * we have to use a template to emulate it.
    */
 
 #ifdef __cplusplus
@@ -107,8 +107,8 @@
 
 
   /*
-   *  The allocation functions return a pointer, and the error code
-   *  is written to through the `p_error' parameter.
+   * The allocation functions return a pointer, and the error code is written
+   * to through the `p_error' parameter.
    */
 
   /* The `q' variants of the functions below (`q' for `quick') don't fill */
@@ -253,20 +253,19 @@
 
 
   /*
-   *  Return the maximum number of addressable elements in an array.
-   *  We limit ourselves to INT_MAX, rather than UINT_MAX, to avoid
-   *  any problems.
+   * Return the maximum number of addressable elements in an array.  We limit
+   * ourselves to INT_MAX, rather than UINT_MAX, to avoid any problems.
    */
 #define FT_ARRAY_MAX( ptr )           ( FT_INT_MAX / sizeof ( *(ptr) ) )
 
 #define FT_ARRAY_CHECK( ptr, count )  ( (count) <= FT_ARRAY_MAX( ptr ) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The following functions macros expect that their pointer argument is  */
-  /* _typed_ in order to automatically compute array element sizes.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The following functions macros expect that their pointer argument is
+   * _typed_ in order to automatically compute array element sizes.
+   */
 
 #define FT_MEM_NEW_ARRAY( ptr, count )                              \
           FT_ASSIGNP_INNER( ptr, ft_mem_realloc( memory,            \
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftobjs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftobjs.h                                                               */
-/*                                                                         */
-/*    The FreeType private base classes (specification).                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftobjs.h
+ *
+ *   The FreeType private base classes (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file contains the definition of all internal FreeType classes.
+   *
+   */
 
 
 #ifndef FTOBJS_H_
@@ -35,7 +35,6 @@
 #include FT_INTERNAL_DRIVER_H
 #include FT_INTERNAL_AUTOHINT_H
 #include FT_INTERNAL_SERVICE_H
-#include FT_INTERNAL_PIC_H
 #include FT_INTERNAL_CALC_H
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
@@ -46,10 +45,10 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Some generic definitions.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Some generic definitions.
+   */
 #ifndef TRUE
 #define TRUE  1
 #endif
@@ -63,20 +62,20 @@
 #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.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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) )
 
   /*
-   *  Approximate sqrt(x*x+y*y) using the `alpha max plus beta min'
-   *  algorithm.  We use alpha = 1, beta = 3/8, giving us results with a
-   *  largest error less than 7% compared to the exact value.
+   * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min' algorithm.
+   * We use alpha = 1, beta = 3/8, giving us results with a largest error
+   * less than 7% compared to the exact value.
    */
 #define FT_HYPOT( x, y )                 \
           ( x = FT_ABS( x ),             \
@@ -111,9 +110,8 @@
 
 
   /*
-   *  character classification functions -- since these are used to parse
-   *  font files, we must not use those in <ctypes.h> which are
-   *  locale-dependent
+   * character classification functions -- since these are used to parse font
+   * files, we must not use those in <ctypes.h> which are locale-dependent
    */
 #define  ft_isdigit( x )   ( ( (unsigned)(x) - '0' ) < 10U )
 
@@ -187,7 +185,7 @@
                                FT_UInt32  char_code,
                                FT_UInt32  variant_selector );
 
-  typedef FT_Bool
+  typedef FT_Int
   (*FT_CMap_CharVarIsDefaultFunc)( FT_CMap    cmap,
                                    FT_UInt32  char_code,
                                    FT_UInt32  variant_selector );
@@ -228,8 +226,6 @@
   } FT_CMap_ClassRec;
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DECLARE_CMAP_CLASS( class_ )              \
   FT_CALLBACK_TABLE const  FT_CMap_ClassRec class_;
 
@@ -260,45 +256,6 @@
     variantchar_list_               \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DECLARE_CMAP_CLASS( class_ )                  \
-  void                                                   \
-  FT_Init_Class_ ## class_( FT_Library         library,  \
-                            FT_CMap_ClassRec*  clazz );
-
-#define FT_DEFINE_CMAP_CLASS(                            \
-          class_,                                        \
-          size_,                                         \
-          init_,                                         \
-          done_,                                         \
-          char_index_,                                   \
-          char_next_,                                    \
-          char_var_index_,                               \
-          char_var_default_,                             \
-          variant_list_,                                 \
-          charvariant_list_,                             \
-          variantchar_list_ )                            \
-  void                                                   \
-  FT_Init_Class_ ## class_( FT_Library         library,  \
-                            FT_CMap_ClassRec*  clazz )   \
-  {                                                      \
-    FT_UNUSED( library );                                \
-                                                         \
-    clazz->size             = size_;                     \
-    clazz->init             = init_;                     \
-    clazz->done             = done_;                     \
-    clazz->char_index       = char_index_;               \
-    clazz->char_next        = char_next_;                \
-    clazz->char_var_index   = char_var_index_;           \
-    clazz->char_var_default = char_var_default_;         \
-    clazz->variant_list     = variant_list_;             \
-    clazz->charvariant_list = charvariant_list_;         \
-    clazz->variantchar_list = variantchar_list_;         \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 
   /* create a new charmap and add it to charmap->face */
   FT_BASE( FT_Error )
@@ -312,11 +269,11 @@
   FT_CMap_Done( FT_CMap  cmap );
 
 
-  /* adds LCD padding to Min and Max boundaries */
+  /* add LCD padding to CBox */
   FT_BASE( void )
-  ft_lcd_padding( FT_Pos*       Min,
-                  FT_Pos*       Max,
-                  FT_GlyphSlot  slot );
+  ft_lcd_padding( FT_BBox*        cbox,
+                  FT_GlyphSlot    slot,
+                  FT_Render_Mode  mode );
 
 #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
 
@@ -333,74 +290,72 @@
 
 #endif /* FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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 maximum 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 maximum 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.                        */
-  /*                                                                       */
-  /*    no_stem_darkening ::                                               */
-  /*      Overrides the module-level default, see @stem-darkening[cff],    */
-  /*      for example.  FALSE and TRUE toggle stem darkening on and off,   */
-  /*      respectively, value~-1 means to use the module/driver default.   */
-  /*                                                                       */
-  /*    random_seed ::                                                     */
-  /*      If positive, override the seed value for the CFF `random'        */
-  /*      operator.  Value~0 means to use the font's value.  Value~-1      */
-  /*      means to use the CFF driver's default.                           */
-  /*                                                                       */
-  /*    lcd_weights      ::                                                */
-  /*    lcd_filter_func  ::                                                */
-  /*      If subpixel rendering is activated, the LCD filtering weights    */
-  /*      and callback function.                                           */
-  /*                                                                       */
-  /*    refcount ::                                                        */
-  /*      A counter initialized to~1 at the time an @FT_Face structure is  */
-  /*      created.  @FT_Reference_Face increments this counter, and        */
-  /*      @FT_Done_Face only destroys a face if the counter is~1,          */
-  /*      otherwise it simply decrements it.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 maximum 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 maximum 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.
+   *
+   *   no_stem_darkening ::
+   *     Overrides the module-level default, see @stem-darkening[cff], for
+   *     example.  FALSE and TRUE toggle stem darkening on and off,
+   *     respectively, value~-1 means to use the module/driver default.
+   *
+   *   random_seed ::
+   *     If positive, override the seed value for the CFF 'random' operator.
+   *     Value~0 means to use the font's value.  Value~-1 means to use the
+   *     CFF driver's default.
+   *
+   *   lcd_weights ::
+   *   lcd_filter_func ::
+   *     These fields specify the LCD filtering weights and callback function
+   *     for ClearType-style subpixel rendering.
+   *
+   *   refcount ::
+   *     A counter initialized to~1 at the time an @FT_Face structure is
+   *     created.  @FT_Reference_Face increments this counter, and
+   *     @FT_Done_Face only destroys a face if the counter is~1, otherwise it
+   *     simply decrements it.
+   */
   typedef struct  FT_Face_InternalRec_
   {
     FT_Matrix  transform_matrix;
@@ -426,39 +381,44 @@
   } 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.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   load_flags ::
+   *     The load flags passed as an argument to @FT_Load_Glyph while
+   *     initializing the glyph slot.
+   */
 
 #define FT_GLYPH_OWN_BITMAP  0x1U
 
@@ -471,26 +431,30 @@
     FT_Vector       glyph_delta;
     void*           glyph_hints;
 
+    FT_Int32        load_flags;
+
   } FT_GlyphSlot_InternalRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Size_InternalRec                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure contains the internal fields of each FT_Size        */
-  /*    object.                                                            */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    module_data      :: Data specific to a driver module.              */
-  /*                                                                       */
-  /*    autohint_mode    :: The used auto-hinting mode.                    */
-  /*                                                                       */
-  /*    autohint_metrics :: Metrics used by the auto-hinter.               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @struct:
+   *   FT_Size_InternalRec
+   *
+   * @description:
+   *   This structure contains the internal fields of each FT_Size object.
+   *
+   * @fields:
+   *   module_data ::
+   *     Data specific to a driver module.
+   *
+   *   autohint_mode ::
+   *     The used auto-hinting mode.
+   *
+   *   autohint_metrics ::
+   *     Metrics used by the auto-hinter.
+   *
+   */
 
   typedef struct  FT_Size_InternalRec_
   {
@@ -515,21 +479,24 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   */
   typedef struct  FT_ModuleRec_
   {
     FT_Module_Class*  clazz;
@@ -572,27 +539,29 @@
                                         FT_MODULE_DRIVER_HINTS_LIGHTLY )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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 :-)            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 );
@@ -643,44 +612,46 @@
 #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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 );
 
@@ -730,8 +701,9 @@
   ft_glyphslot_free_bitmap( FT_GlyphSlot  slot );
 
 
-  /* Preset bitmap metrics of an outline glyphslot prior to rendering. */
-  FT_BASE( void )
+  /* Preset bitmap metrics of an outline glyphslot prior to rendering */
+  /* and check whether the truncated bbox is too large for rendering. */
+  FT_BASE( FT_Bool )
   ft_glyphslot_preset_bitmap( FT_GlyphSlot      slot,
                               FT_Render_Mode    mode,
                               const FT_Vector*  origin );
@@ -802,28 +774,30 @@
 #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.                                           */
-  /*                                                                       */
-  /*     glyph_loader :: Unused.  Used to be glyph loader for all faces    */
-  /*                     managed by this driver.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   glyph_loader ::
+   *     Unused.  Used to be glyph loader for all faces managed by this
+   *     driver.
+   */
   typedef struct  FT_DriverRec_
   {
     FT_ModuleRec     root;
@@ -847,72 +821,77 @@
   /*************************************************************************/
 
 
-  /* 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
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                    */
-  /*                                                                       */
-  /*    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      :: The auto-hinter module interface.              */
-  /*                                                                       */
-  /*    debug_hooks      :: An array of four function pointers that allow  */
-  /*                        debuggers to hook into a font format's         */
-  /*                        interpreter.  Currently, only the TrueType     */
-  /*                        bytecode debugger uses this.                   */
-  /*                                                                       */
-  /*    lcd_weights      :: If subpixel rendering is activated, the LCD    */
-  /*                        filter weights, if any.                        */
-  /*                                                                       */
-  /*    lcd_filter_func  :: If subpixel rendering is activated, the LCD    */
-  /*                        filtering callback function.                   */
-  /*                                                                       */
-  /*    pic_container    :: Contains global structs and tables, instead    */
-  /*                        of defining them globally.                     */
-  /*                                                                       */
-  /*    refcount         :: A counter initialized to~1 at the time an      */
-  /*                        @FT_Library structure is created.              */
-  /*                        @FT_Reference_Library increments this counter, */
-  /*                        and @FT_Done_Library only destroys a library   */
-  /*                        if the counter is~1, otherwise it simply       */
-  /*                        decrements it.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   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 ::
+   *     The auto-hinter module interface.
+   *
+   *   debug_hooks ::
+   *     An array of four function pointers that allow debuggers to hook into
+   *     a font format's interpreter.  Currently, only the TrueType bytecode
+   *     debugger uses this.
+   *
+   *   lcd_weights ::
+   *     The LCD filter weights for ClearType-style subpixel rendering.
+   *
+   *   lcd_filter_func ::
+   *     The LCD filtering callback function for for ClearType-style subpixel
+   *     rendering.
+   *
+   *   lcd_geometry ::
+   *     This array specifies LCD subpixel geometry and controls Harmony LCD
+   *     rendering technique, alternative to ClearType.
+   *
+   *   pic_container ::
+   *     Contains global structs and tables, instead of defining them
+   *     globally.
+   *
+   *   refcount ::
+   *     A counter initialized to~1 at the time an @FT_Library structure is
+   *     created.  @FT_Reference_Library increments this counter, and
+   *     @FT_Done_Library only destroys a library if the counter is~1,
+   *     otherwise it simply decrements it.
+   */
   typedef struct  FT_LibraryRec_
   {
     FT_Memory          memory;           /* library's memory manager */
@@ -933,10 +912,8 @@
 #ifdef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
     FT_LcdFiveTapFilter      lcd_weights;      /* filter weights, if any */
     FT_Bitmap_LcdFilterFunc  lcd_filter_func;  /* filtering callback     */
-#endif
-
-#ifdef FT_CONFIG_OPTION_PIC
-    FT_PIC_Container   pic_container;
+#else
+    FT_Vector                lcd_geometry[3];  /* RGB subpixel positions */
 #endif
 
     FT_Int             refcount;
@@ -970,32 +947,33 @@
 
 #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.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_New_Memory
+   *
+   * @description:
+   *   Creates a new memory object.
+   *
+   * @return:
+   *   A pointer to the new memory object.  0 in case of error.
+   */
   FT_BASE( FT_Memory )
   FT_New_Memory( void );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_Memory                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discards memory manager.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory :: A handle to the memory manager.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Done_Memory
+   *
+   * @description:
+   *   Discards memory manager.
+   *
+   * @input:
+   *   memory ::
+   *     A handle to the memory manager.
+   */
   FT_BASE( void )
   FT_Done_Memory( FT_Memory  memory );
 
@@ -1013,37 +991,16 @@
 #endif
 
 
-  /*************************************************************************/
-  /*************************************************************************/
-  /*************************************************************************/
-  /****                                                                 ****/
-  /****                                                                 ****/
-  /****                      P I C   S U P P O R T                      ****/
-  /****                                                                 ****/
-  /****                                                                 ****/
-  /*************************************************************************/
-  /*************************************************************************/
-  /*************************************************************************/
-
-
-  /* PIC support macros for ftimage.h */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_OUTLINE_FUNCS                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Outline_Funcs struct.         */
-  /*    When FT_CONFIG_OPTION_PIC is defined an init function will need    */
-  /*    to be called with a pre-allocated structure to be filled.          */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DEFINE_OUTLINE_FUNCS
+   *
+   * @description:
+   *   Used to initialize an instance of FT_Outline_Funcs struct.  The struct
+   *   will be allocated in the global scope (or the scope where the macro is
+   *   used).
+   */
 #define FT_DEFINE_OUTLINE_FUNCS(           \
           class_,                          \
           move_to_,                        \
@@ -1062,47 +1019,17 @@
     delta_                                 \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
 
-#define FT_DEFINE_OUTLINE_FUNCS(                     \
-          class_,                                    \
-          move_to_,                                  \
-          line_to_,                                  \
-          conic_to_,                                 \
-          cubic_to_,                                 \
-          shift_,                                    \
-          delta_ )                                   \
-  static FT_Error                                    \
-  Init_Class_ ## class_( FT_Outline_Funcs*  clazz )  \
-  {                                                  \
-    clazz->move_to  = move_to_;                      \
-    clazz->line_to  = line_to_;                      \
-    clazz->conic_to = conic_to_;                     \
-    clazz->cubic_to = cubic_to_;                     \
-    clazz->shift    = shift_;                        \
-    clazz->delta    = delta_;                        \
-                                                     \
-    return FT_Err_Ok;                                \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_RASTER_FUNCS                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Raster_Funcs struct.          */
-  /*    When FT_CONFIG_OPTION_PIC is defined an init function will need    */
-  /*    to be called with a pre-allocated structure to be filled.          */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DEFINE_RASTER_FUNCS
+   *
+   * @description:
+   *   Used to initialize an instance of FT_Raster_Funcs struct.  The struct
+   *   will be allocated in the global scope (or the scope where the macro is
+   *   used).
+   */
 #define FT_DEFINE_RASTER_FUNCS(    \
           class_,                  \
           glyph_format_,           \
@@ -1121,48 +1048,17 @@
     raster_done_                   \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_RASTER_FUNCS(                        \
-          class_,                                      \
-          glyph_format_,                               \
-          raster_new_,                                 \
-          raster_reset_,                               \
-          raster_set_mode_,                            \
-          raster_render_,                              \
-          raster_done_ )                               \
-  void                                                 \
-  FT_Init_Class_ ## class_( FT_Raster_Funcs*  clazz )  \
-  {                                                    \
-    clazz->glyph_format    = glyph_format_;            \
-    clazz->raster_new      = raster_new_;              \
-    clazz->raster_reset    = raster_reset_;            \
-    clazz->raster_set_mode = raster_set_mode_;         \
-    clazz->raster_render   = raster_render_;           \
-    clazz->raster_done     = raster_done_;             \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 
-  /* PIC support macros for ftrender.h */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_GLYPH                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Glyph_Class struct.           */
-  /*    When FT_CONFIG_OPTION_PIC is defined an init function will need    */
-  /*    to be called with a pre-allocated structure to be filled.          */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DEFINE_GLYPH
+   *
+   * @description:
+   *   The struct will be allocated in the global scope (or the scope where
+   *   the macro is used).
+   */
 #define FT_DEFINE_GLYPH(          \
           class_,                 \
           size_,                  \
@@ -1186,73 +1082,25 @@
     prepare_                      \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
 
-#define FT_DEFINE_GLYPH(                              \
-          class_,                                     \
-          size_,                                      \
-          format_,                                    \
-          init_,                                      \
-          done_,                                      \
-          copy_,                                      \
-          transform_,                                 \
-          bbox_,                                      \
-          prepare_ )                                  \
-  void                                                \
-  FT_Init_Class_ ## class_( FT_Glyph_Class*  clazz )  \
-  {                                                   \
-    clazz->glyph_size      = size_;                   \
-    clazz->glyph_format    = format_;                 \
-    clazz->glyph_init      = init_;                   \
-    clazz->glyph_done      = done_;                   \
-    clazz->glyph_copy      = copy_;                   \
-    clazz->glyph_transform = transform_;              \
-    clazz->glyph_bbox      = bbox_;                   \
-    clazz->glyph_prepare   = prepare_;                \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DECLARE_RENDERER                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to create a forward declaration of a                          */
-  /*    FT_Renderer_Class struct instance.                                 */
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_RENDERER                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of FT_Renderer_Class struct.        */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is defined a `create' function will      */
-  /*    need to be called with a pointer where the allocated structure is  */
-  /*    returned.  And when it is no longer needed a `destroy' function    */
-  /*    needs to be called to release that allocation.                     */
-  /*    `ftinit.c' (ft_create_default_module_classes) already contains     */
-  /*    a mechanism to call these functions for the default modules        */
-  /*    described in `ftmodule.h'.                                         */
-  /*                                                                       */
-  /*    Notice that the created `create' and `destroy' functions call      */
-  /*    `pic_init' and `pic_free' to allow you to manually allocate and    */
-  /*    initialize any additional global data, like a module specific      */
-  /*    interface, and put them in the global pic container defined in     */
-  /*    `ftpic.h'.  If you don't need them just implement the functions as */
-  /*    empty to resolve the link error.  Also the `pic_init' and          */
-  /*    `pic_free' functions should be declared in `pic.h', to be referred */
-  /*    by the renderer definition calling `FT_DEFINE_RENDERER' in the     */
-  /*    following.                                                         */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DECLARE_RENDERER
+   *
+   * @description:
+   *   Used to create a forward declaration of a FT_Renderer_Class struct
+   *   instance.
+   *
+   * @macro:
+   *   FT_DEFINE_RENDERER
+   *
+   * @description:
+   *   Used to initialize an instance of FT_Renderer_Class struct.
+   *
+   *   The struct will be allocated in the global scope (or the scope where
+   *   the macro is used).
+   */
 #define FT_DECLARE_RENDERER( class_ )               \
   FT_EXPORT_VAR( const FT_Renderer_Class ) class_;
 
@@ -1295,176 +1143,33 @@
     raster_class_                            \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
 
-#define FT_DECLARE_RENDERER( class_ )  FT_DECLARE_MODULE( class_ )
-
-#define FT_DEFINE_RENDERER(                                      \
-          class_,                                                \
-          flags_,                                                \
-          size_,                                                 \
-          name_,                                                 \
-          version_,                                              \
-          requires_,                                             \
-          interface_,                                            \
-          init_,                                                 \
-          done_,                                                 \
-          get_interface_,                                        \
-          glyph_format_,                                         \
-          render_glyph_,                                         \
-          transform_glyph_,                                      \
-          get_glyph_cbox_,                                       \
-          set_mode_,                                             \
-          raster_class_ )                                        \
-  void                                                           \
-  FT_Destroy_Class_ ## class_( FT_Library        library,        \
-                               FT_Module_Class*  clazz )         \
-  {                                                              \
-    FT_Renderer_Class*  rclazz = (FT_Renderer_Class*)clazz;      \
-    FT_Memory           memory = library->memory;                \
-                                                                 \
-                                                                 \
-    class_ ## _pic_free( library );                              \
-    if ( rclazz )                                                \
-      FT_FREE( rclazz );                                         \
-  }                                                              \
-                                                                 \
-                                                                 \
-  FT_Error                                                       \
-  FT_Create_Class_ ## class_( FT_Library         library,        \
-                              FT_Module_Class**  output_class )  \
-  {                                                              \
-    FT_Renderer_Class*  clazz = NULL;                            \
-    FT_Error            error;                                   \
-    FT_Memory           memory = library->memory;                \
-                                                                 \
-                                                                 \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) )                  \
-      return error;                                              \
-                                                                 \
-    error = class_ ## _pic_init( library );                      \
-    if ( error )                                                 \
-    {                                                            \
-      FT_FREE( clazz );                                          \
-      return error;                                              \
-    }                                                            \
-                                                                 \
-    FT_DEFINE_ROOT_MODULE( flags_,                               \
-                           size_,                                \
-                           name_,                                \
-                           version_,                             \
-                           requires_,                            \
-                           interface_,                           \
-                           init_,                                \
-                           done_,                                \
-                           get_interface_ )                      \
-                                                                 \
-    clazz->glyph_format    = glyph_format_;                      \
-                                                                 \
-    clazz->render_glyph    = render_glyph_;                      \
-    clazz->transform_glyph = transform_glyph_;                   \
-    clazz->get_glyph_cbox  = get_glyph_cbox_;                    \
-    clazz->set_mode        = set_mode_;                          \
-                                                                 \
-    clazz->raster_class    = raster_class_;                      \
-                                                                 \
-    *output_class = (FT_Module_Class*)clazz;                     \
-                                                                 \
-    return FT_Err_Ok;                                            \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-  /* PIC support macros for ftmodapi.h **/
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Creator                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to create (allocate) a new module class object.    */
-  /*    The object's members are initialized, but the module itself is     */
-  /*    not.                                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory       :: A handle to the memory manager.                    */
-  /*    output_class :: Initialized with the newly allocated class.        */
-  /*                                                                       */
-  typedef FT_Error
-  (*FT_Module_Creator)( FT_Memory          memory,
-                        FT_Module_Class**  output_class );
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    FT_Module_Destroyer                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A function used to destroy (deallocate) a module class object.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory :: A handle to the memory manager.                          */
-  /*    clazz  :: Module class to destroy.                                 */
-  /*                                                                       */
-  typedef void
-  (*FT_Module_Destroyer)( FT_Memory         memory,
-                          FT_Module_Class*  clazz );
-
-#endif
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DECLARE_MODULE                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to create a forward declaration of a                          */
-  /*    FT_Module_Class struct instance.                                   */
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_MODULE                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of an FT_Module_Class struct.       */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is defined a `create' function needs     */
-  /*    to be called with a pointer where the allocated structure is       */
-  /*    returned.  And when it is no longer needed a `destroy' function    */
-  /*    needs to be called to release that allocation.                     */
-  /*    `ftinit.c' (ft_create_default_module_classes) already contains     */
-  /*    a mechanism to call these functions for the default modules        */
-  /*    described in `ftmodule.h'.                                         */
-  /*                                                                       */
-  /*    Notice that the created `create' and `destroy' functions call      */
-  /*    `pic_init' and `pic_free' to allow you to manually allocate and    */
-  /*    initialize any additional global data, like a module specific      */
-  /*    interface, and put them in the global pic container defined in     */
-  /*    `ftpic.h'.  If you don't need them just implement the functions as */
-  /*    empty to resolve the link error.  Also the `pic_init' and          */
-  /*    `pic_free' functions should be declared in `pic.h', to be referred */
-  /*    by the module definition calling `FT_DEFINE_MODULE' in the         */
-  /*    following.                                                         */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the struct will be        */
-  /*    allocated in the global scope (or the scope where the macro        */
-  /*    is used).                                                          */
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_ROOT_MODULE                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an instance of an FT_Module_Class struct inside */
-  /*    another struct that contains it or in a function that initializes  */
-  /*    that containing struct.                                            */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DECLARE_MODULE
+   *
+   * @description:
+   *   Used to create a forward declaration of a FT_Module_Class struct
+   *   instance.
+   *
+   * @macro:
+   *   FT_DEFINE_MODULE
+   *
+   * @description:
+   *   Used to initialize an instance of an FT_Module_Class struct.
+   *
+   *   The struct will be allocated in the global scope (or the scope where
+   *   the macro is used).
+   *
+   * @macro:
+   *   FT_DEFINE_ROOT_MODULE
+   *
+   * @description:
+   *   Used to initialize an instance of an FT_Module_Class struct inside
+   *   another struct that contains it or in a function that initializes that
+   *   containing struct.
+   */
 #define FT_DECLARE_MODULE( class_ )  \
   FT_CALLBACK_TABLE                  \
   const FT_Module_Class  class_;
@@ -1523,100 +1228,6 @@
   };
 
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DECLARE_MODULE( class_ )                               \
-  FT_Error                                                        \
-  FT_Create_Class_ ## class_( FT_Library         library,         \
-                              FT_Module_Class**  output_class );  \
-  void                                                            \
-  FT_Destroy_Class_ ## class_( FT_Library        library,         \
-                               FT_Module_Class*  clazz );
-
-#define FT_DEFINE_ROOT_MODULE(                      \
-          flags_,                                   \
-          size_,                                    \
-          name_,                                    \
-          version_,                                 \
-          requires_,                                \
-          interface_,                               \
-          init_,                                    \
-          done_,                                    \
-          get_interface_ )                          \
-    clazz->root.module_flags     = flags_;          \
-    clazz->root.module_size      = size_;           \
-    clazz->root.module_name      = name_;           \
-    clazz->root.module_version   = version_;        \
-    clazz->root.module_requires  = requires_;       \
-                                                    \
-    clazz->root.module_interface = interface_;      \
-                                                    \
-    clazz->root.module_init      = init_;           \
-    clazz->root.module_done      = done_;           \
-    clazz->root.get_interface    = get_interface_;
-
-#define FT_DEFINE_MODULE(                                        \
-          class_,                                                \
-          flags_,                                                \
-          size_,                                                 \
-          name_,                                                 \
-          version_,                                              \
-          requires_,                                             \
-          interface_,                                            \
-          init_,                                                 \
-          done_,                                                 \
-          get_interface_ )                                       \
-  void                                                           \
-  FT_Destroy_Class_ ## class_( FT_Library        library,        \
-                               FT_Module_Class*  clazz )         \
-  {                                                              \
-    FT_Memory memory = library->memory;                          \
-                                                                 \
-                                                                 \
-    class_ ## _pic_free( library );                              \
-    if ( clazz )                                                 \
-      FT_FREE( clazz );                                          \
-  }                                                              \
-                                                                 \
-                                                                 \
-  FT_Error                                                       \
-  FT_Create_Class_ ## class_( FT_Library         library,        \
-                              FT_Module_Class**  output_class )  \
-  {                                                              \
-    FT_Memory         memory = library->memory;                  \
-    FT_Module_Class*  clazz  = NULL;                             \
-    FT_Error          error;                                     \
-                                                                 \
-                                                                 \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) ) )                  \
-      return error;                                              \
-    error = class_ ## _pic_init( library );                      \
-    if ( error )                                                 \
-    {                                                            \
-      FT_FREE( clazz );                                          \
-      return error;                                              \
-    }                                                            \
-                                                                 \
-    clazz->module_flags     = flags_;                            \
-    clazz->module_size      = size_;                             \
-    clazz->module_name      = name_;                             \
-    clazz->module_version   = version_;                          \
-    clazz->module_requires  = requires_;                         \
-                                                                 \
-    clazz->module_interface = interface_;                        \
-                                                                 \
-    clazz->module_init      = init_;                             \
-    clazz->module_done      = done_;                             \
-    clazz->get_interface    = get_interface_;                    \
-                                                                 \
-    *output_class = clazz;                                       \
-                                                                 \
-    return FT_Err_Ok;                                            \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
 FT_END_HEADER
 
 #endif /* FTOBJS_H_ */
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpic.h                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services (declaration).       */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Modules that ordinarily have const global data that need address     */
-  /*  can instead define pointers here.                                    */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#ifndef FTPIC_H_
-#define FTPIC_H_
-
-
-FT_BEGIN_HEADER
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  typedef struct  FT_PIC_Container_
-  {
-    /* pic containers for base */
-    void*  base;
-
-    /* pic containers for modules */
-    void*  autofit;
-    void*  cff;
-    void*  pshinter;
-    void*  psnames;
-    void*  raster;
-    void*  sfnt;
-    void*  smooth;
-    void*  truetype;
-
-  } FT_PIC_Container;
-
-
-  /* Initialize the various function tables, structs, etc. */
-  /* stored in the container.                              */
-  FT_BASE( FT_Error )
-  ft_pic_container_init( FT_Library  library );
-
-
-  /* Destroy the contents of the container. */
-  FT_BASE( void )
-  ft_pic_container_destroy( FT_Library  library );
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-FT_END_HEADER
-
-#endif /* FTPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpsprop.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftpsprop.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpsprop.h                                                             */
-/*                                                                         */
-/*    Get and set properties of PostScript drivers (specification).        */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftpsprop.h
+ *
+ *   Get and set properties of PostScript drivers (specification).
+ *
+ * Copyright (C) 2017-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTPSPROP_H_
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftrfork.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftrfork.h	Thu May 09 16:09:39 2019 -0700
@@ -1,24 +1,24 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrfork.h                                                              */
-/*                                                                         */
-/*    Embedded resource forks accessor (specification).                    */
-/*                                                                         */
-/*  Copyright 2004-2018 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.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrfork.h
+ *
+ *   Embedded resource forks accessor (specification).
+ *
+ * Copyright (C) 2004-2019 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.                         */
-/***************************************************************************/
+/****************************************************************************
+ * Development of the code in this file is support of
+ * Information-technology Promotion Agency, Japan.
+ */
 
 
 #ifndef FTRFORK_H_
@@ -72,85 +72,65 @@
   } FT_RFork_Rule;
 
   /* For fast translation between rule index and rule type,
-   * the macros FT_RFORK_xxx should be kept consistent with
-   * the raccess_guess_funcs table
+   * the macros FT_RFORK_xxx should be kept consistent with the
+   * raccess_guess_funcs table
    */
   typedef struct ft_raccess_guess_rec_ {
     ft_raccess_guess_func  func;
     FT_RFork_Rule          type;
   } ft_raccess_guess_rec;
 
-#ifndef FT_CONFIG_OPTION_PIC
 
-  /* this array is a storage in non-PIC mode, so ; is needed in END */
 #define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type )  \
           static const type name[] = {
 #define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix )  \
           { raccess_guess_ ## func_suffix,                           \
             FT_RFork_Rule_ ## type_suffix },
+  /* this array is a storage, thus a final `;' is needed */
 #define CONST_FT_RFORK_RULE_ARRAY_END  };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-  /* this array is a function in PIC mode, so no ; is needed in END */
-#define CONST_FT_RFORK_RULE_ARRAY_BEGIN( name, type )  \
-          void                                         \
-          FT_Init_Table_ ## name( type*  storage )     \
-          {                                            \
-            type*  local = storage;                    \
-                                                       \
-                                                       \
-            int  i = 0;
-#define CONST_FT_RFORK_RULE_ARRAY_ENTRY( func_suffix, type_suffix )  \
-          local[i].func = raccess_guess_ ## func_suffix;             \
-          local[i].type = FT_RFork_Rule_ ## type_suffix;             \
-          i++;
-#define CONST_FT_RFORK_RULE_ARRAY_END  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 #endif /* FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -160,37 +140,37 @@
                     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.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -199,55 +179,54 @@
                              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.                                                */
-  /*                                                                       */
-  /*    sort_by_res_id ::                                                  */
-  /*      A Boolean to sort the fragmented resource by their ids.          */
-  /*      The fragmented resources for `POST' resource should be sorted    */
-  /*      to restore Type1 font properly.  For `sfnt' resources, sorting   */
-  /*      may induce a different order of the faces in comparison to that  */
-  /*      by QuickDraw API.                                                */
-  /*                                                                       */
-  /* <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_mem_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'.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   sort_by_res_id ::
+   *     A Boolean to sort the fragmented resource by their ids.  The
+   *     fragmented resources for 'POST' resource should be sorted to restore
+   *     Type1 font properly.  For 'sfnt' resources, sorting may induce a
+   *     different order of the faces in comparison to that by QuickDraw API.
+   *
+   * @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_mem_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,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftserv.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftserv.h	Thu May 09 16:09:39 2019 -0700
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftserv.h                                                               */
-/*                                                                         */
-/*    The FreeType services (specification only).                          */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftserv.h
+ *
+ *   The FreeType services (specification only).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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).         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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_
@@ -34,7 +34,8 @@
 
 FT_BEGIN_HEADER
 
-  /*
+  /**************************************************************************
+   *
    * @macro:
    *   FT_FACE_FIND_SERVICE
    *
@@ -46,15 +47,15 @@
    *     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_'.
+   *     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.
+   *     A variable that receives the service pointer.  Will be `NULL` if not
+   *     found.
    */
 #ifdef __cplusplus
 
@@ -85,7 +86,8 @@
 #endif /* !C++ */
 
 
-  /*
+  /**************************************************************************
+   *
    * @macro:
    *   FT_FACE_FIND_GLOBAL_SERVICE
    *
@@ -97,15 +99,15 @@
    *     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_'.
+   *     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.
+   *     A variable that receives the service pointer.  Will be `NULL` if not
+   *     found.
    */
 #ifdef __cplusplus
 
@@ -144,8 +146,8 @@
   /*************************************************************************/
 
   /*
-   *  The following structure is used to _describe_ a given service
-   *  to the library.  This is useful to build simple static service lists.
+   * 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_
   {
@@ -157,35 +159,26 @@
   typedef const FT_ServiceDescRec*  FT_ServiceDesc;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Macro>                                                               */
-  /*    FT_DEFINE_SERVICEDESCREC1                                          */
-  /*    FT_DEFINE_SERVICEDESCREC2                                          */
-  /*    FT_DEFINE_SERVICEDESCREC3                                          */
-  /*    FT_DEFINE_SERVICEDESCREC4                                          */
-  /*    FT_DEFINE_SERVICEDESCREC5                                          */
-  /*    FT_DEFINE_SERVICEDESCREC6                                          */
-  /*    FT_DEFINE_SERVICEDESCREC7                                          */
-  /*    FT_DEFINE_SERVICEDESCREC8                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Used to initialize an array of FT_ServiceDescRec structures.       */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is defined a `create' function needs to  */
-  /*    be called with a pointer to return an allocated array.  As soon as */
-  /*    it is no longer needed, a `destroy' function needs to be called to */
-  /*    release that allocation.                                           */
-  /*                                                                       */
-  /*    These functions should be manually called from the `pic_init' and  */
-  /*    `pic_free' functions of your module (see FT_DEFINE_MODULE).        */
-  /*                                                                       */
-  /*    When FT_CONFIG_OPTION_PIC is not defined the array will be         */
-  /*    allocated in the global scope (or the scope where the macro is     */
-  /*    used).                                                             */
-  /*                                                                       */
-#ifndef FT_CONFIG_OPTION_PIC
-
+  /**************************************************************************
+   *
+   * @macro:
+   *   FT_DEFINE_SERVICEDESCREC1
+   *   FT_DEFINE_SERVICEDESCREC2
+   *   FT_DEFINE_SERVICEDESCREC3
+   *   FT_DEFINE_SERVICEDESCREC4
+   *   FT_DEFINE_SERVICEDESCREC5
+   *   FT_DEFINE_SERVICEDESCREC6
+   *   FT_DEFINE_SERVICEDESCREC7
+   *   FT_DEFINE_SERVICEDESCREC8
+   *   FT_DEFINE_SERVICEDESCREC9
+   *   FT_DEFINE_SERVICEDESCREC10
+   *
+   * @description:
+   *   Used to initialize an array of FT_ServiceDescRec structures.
+   *
+   *   The array will be allocated in the global scope (or the scope where
+   *   the macro is used).
+   */
 #define FT_DEFINE_SERVICEDESCREC1( class_,                                  \
                                    serv_id_1, serv_data_1 )                 \
   static const FT_ServiceDescRec  class_[] =                                \
@@ -356,504 +349,15 @@
     { NULL, NULL }                                                          \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICEDESCREC1( class_,                                  \
-                                   serv_id_1, serv_data_1 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 2 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = NULL;                                              \
-    clazz[1].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC2( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 3 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = NULL;                                              \
-    clazz[2].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC3( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 4 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = NULL;                                              \
-    clazz[3].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC4( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 5 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = NULL;                                              \
-    clazz[4].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC5( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 6 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = NULL;                                              \
-    clazz[5].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC6( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5,                  \
-                                   serv_id_6, serv_data_6 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 7 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = serv_id_6;                                         \
-    clazz[5].serv_data = serv_data_6;                                       \
-    clazz[6].serv_id   = NULL;                                              \
-    clazz[6].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC7( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5,                  \
-                                   serv_id_6, serv_data_6,                  \
-                                   serv_id_7, serv_data_7 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 8 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = serv_id_6;                                         \
-    clazz[5].serv_data = serv_data_6;                                       \
-    clazz[6].serv_id   = serv_id_7;                                         \
-    clazz[6].serv_data = serv_data_7;                                       \
-    clazz[7].serv_id   = NULL;                                              \
-    clazz[7].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC8( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5,                  \
-                                   serv_id_6, serv_data_6,                  \
-                                   serv_id_7, serv_data_7,                  \
-                                   serv_id_8, serv_data_8 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 9 ) )                         \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = serv_id_6;                                         \
-    clazz[5].serv_data = serv_data_6;                                       \
-    clazz[6].serv_id   = serv_id_7;                                         \
-    clazz[6].serv_data = serv_data_7;                                       \
-    clazz[7].serv_id   = serv_id_8;                                         \
-    clazz[7].serv_data = serv_data_8;                                       \
-    clazz[8].serv_id   = NULL;                                              \
-    clazz[8].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC9( class_,                                  \
-                                   serv_id_1, serv_data_1,                  \
-                                   serv_id_2, serv_data_2,                  \
-                                   serv_id_3, serv_data_3,                  \
-                                   serv_id_4, serv_data_4,                  \
-                                   serv_id_5, serv_data_5,                  \
-                                   serv_id_6, serv_data_6,                  \
-                                   serv_id_7, serv_data_7,                  \
-                                   serv_id_8, serv_data_8,                  \
-                                   serv_id_9, serv_data_9 )                 \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 10 ) )                        \
-      return error;                                                         \
-                                                                            \
-    clazz[0].serv_id   = serv_id_1;                                         \
-    clazz[0].serv_data = serv_data_1;                                       \
-    clazz[1].serv_id   = serv_id_2;                                         \
-    clazz[1].serv_data = serv_data_2;                                       \
-    clazz[2].serv_id   = serv_id_3;                                         \
-    clazz[2].serv_data = serv_data_3;                                       \
-    clazz[3].serv_id   = serv_id_4;                                         \
-    clazz[3].serv_data = serv_data_4;                                       \
-    clazz[4].serv_id   = serv_id_5;                                         \
-    clazz[4].serv_data = serv_data_5;                                       \
-    clazz[5].serv_id   = serv_id_6;                                         \
-    clazz[5].serv_data = serv_data_6;                                       \
-    clazz[6].serv_id   = serv_id_7;                                         \
-    clazz[6].serv_data = serv_data_7;                                       \
-    clazz[7].serv_id   = serv_id_8;                                         \
-    clazz[7].serv_data = serv_data_8;                                       \
-    clazz[8].serv_id   = serv_id_9;                                         \
-    clazz[8].serv_data = serv_data_9;                                       \
-    clazz[9].serv_id   = NULL;                                              \
-    clazz[9].serv_data = NULL;                                              \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#define FT_DEFINE_SERVICEDESCREC10( class_,                                 \
-                                    serv_id_1, serv_data_1,                 \
-                                    serv_id_2, serv_data_2,                 \
-                                    serv_id_3, serv_data_3,                 \
-                                    serv_id_4, serv_data_4,                 \
-                                    serv_id_5, serv_data_5,                 \
-                                    serv_id_6, serv_data_6,                 \
-                                    serv_id_7, serv_data_7,                 \
-                                    serv_id_8, serv_data_8,                 \
-                                    serv_id_9, serv_data_9,                 \
-                                    serv_id_10, serv_data_10 )              \
-  void                                                                      \
-  FT_Destroy_Class_ ## class_( FT_Library          library,                 \
-                               FT_ServiceDescRec*  clazz )                  \
-  {                                                                         \
-    FT_Memory  memory = library->memory;                                    \
-                                                                            \
-                                                                            \
-    if ( clazz )                                                            \
-      FT_FREE( clazz );                                                     \
-  }                                                                         \
-                                                                            \
-  FT_Error                                                                  \
-  FT_Create_Class_ ## class_( FT_Library           library,                 \
-                              FT_ServiceDescRec**  output_class )           \
-  {                                                                         \
-    FT_ServiceDescRec*  clazz  = NULL;                                      \
-    FT_Error            error;                                              \
-    FT_Memory           memory = library->memory;                           \
-                                                                            \
-                                                                            \
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * 11 ) )                        \
-      return error;                                                         \
-                                                                            \
-    clazz[ 0].serv_id   = serv_id_1;                                        \
-    clazz[ 0].serv_data = serv_data_1;                                      \
-    clazz[ 1].serv_id   = serv_id_2;                                        \
-    clazz[ 1].serv_data = serv_data_2;                                      \
-    clazz[ 2].serv_id   = serv_id_3;                                        \
-    clazz[ 2].serv_data = serv_data_3;                                      \
-    clazz[ 3].serv_id   = serv_id_4;                                        \
-    clazz[ 3].serv_data = serv_data_4;                                      \
-    clazz[ 4].serv_id   = serv_id_5;                                        \
-    clazz[ 4].serv_data = serv_data_5;                                      \
-    clazz[ 5].serv_id   = serv_id_6;                                        \
-    clazz[ 5].serv_data = serv_data_6;                                      \
-    clazz[ 6].serv_id   = serv_id_7;                                        \
-    clazz[ 6].serv_data = serv_data_7;                                      \
-    clazz[ 7].serv_id   = serv_id_8;                                        \
-    clazz[ 7].serv_data = serv_data_8;                                      \
-    clazz[ 8].serv_id   = serv_id_9;                                        \
-    clazz[ 8].serv_data = serv_data_9;                                      \
-    clazz[ 9].serv_id   = serv_id_10;                                       \
-    clazz[ 9].serv_data = serv_data_10;                                     \
-    clazz[10].serv_id   = NULL;                                             \
-    clazz[10].serv_data = NULL;                                             \
-                                                                            \
-    *output_class = clazz;                                                  \
-                                                                            \
-    return FT_Err_Ok;                                                       \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 
   /*
-   *  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.
+   * 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.
+   * 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,
@@ -869,16 +373,16 @@
   /*************************************************************************/
 
   /*
-   *  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.
+   * 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.
+   * 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.
+   * 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_
@@ -894,14 +398,15 @@
 
 
   /*
-   *  A magic number used within the services cache.
+   * A magic number used within the services cache.
    */
 
   /* ensure that value `1' has the same width as a pointer */
 #define FT_SERVICE_UNAVAILABLE  ((FT_Pointer)~(FT_PtrDist)1)
 
 
-  /*
+  /**************************************************************************
+   *
    * @macro:
    *   FT_FACE_LOOKUP_SERVICE
    *
@@ -910,7 +415,7 @@
    *   using its cache.
    *
    * @input:
-   *   face::
+   *   face ::
    *     The source face handle containing the cache.
    *
    *   field ::
@@ -921,7 +426,7 @@
    *
    * @output:
    *   ptr ::
-   *     A variable receiving the service data.  NULL if not available.
+   *     A variable receiving the service data.  `NULL` if not available.
    */
 #ifdef __cplusplus
 
@@ -969,7 +474,7 @@
 #endif /* !C++ */
 
   /*
-   *  A macro used to define new service structure types.
+   * A macro used to define new service structure types.
    */
 
 #define FT_DEFINE_SERVICE( name )            \
@@ -982,7 +487,7 @@
   /* */
 
   /*
-   *  The header files containing the services.
+   * The header files containing the services.
    */
 
 #define FT_SERVICE_BDF_H                <freetype/internal/services/svbdf.h>
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftstream.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftstream.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstream.h                                                             */
-/*                                                                         */
-/*    Stream handling (specification).                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstream.h
+ *
+ *   Stream handling (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -96,13 +96,13 @@
   /* The structure type must be set in the FT_STRUCTURE macro before       */
   /* calling the FT_FRAME_START() macro.                                   */
   /*                                                                       */
-#define FT_FIELD_SIZE( f ) \
+#define FT_FIELD_SIZE( f )                          \
           (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f )
 
-#define FT_FIELD_SIZE_DELTA( f ) \
+#define FT_FIELD_SIZE_DELTA( f )                       \
           (FT_Byte)sizeof ( ((FT_STRUCTURE*)0)->f[0] )
 
-#define FT_FIELD_OFFSET( f ) \
+#define FT_FIELD_OFFSET( f )                         \
           (FT_UShort)( offsetof( FT_STRUCTURE, f ) )
 
 #define FT_FRAME_FIELD( frame_op, field ) \
@@ -147,11 +147,11 @@
 #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).                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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)] )
 
@@ -165,6 +165,10 @@
 #define FT_BYTE_U32( p, i, s )  ( FT_UINT32( FT_BYTE_( p, i ) ) << (s) )
 
 
+  /*
+   * `FT_PEEK_XXX' are generic macros to get data from a buffer position.  No
+   * safety checks are performed.
+   */
 #define FT_PEEK_SHORT( p )  FT_INT16( FT_BYTE_U16( p, 0, 8 ) | \
                                       FT_BYTE_U16( p, 1, 0 ) )
 
@@ -213,7 +217,10 @@
                                           FT_BYTE_U32( p, 1,  8 ) | \
                                           FT_BYTE_U32( p, 0,  0 ) )
 
-
+  /*
+   * `FT_NEXT_XXX' are generic macros to get data from a buffer position
+   * which is then increased appropriately.  No safety checks are performed.
+   */
 #define FT_NEXT_CHAR( buffer )       \
           ( (signed char)*buffer++ )
 
@@ -258,10 +265,14 @@
           ( (unsigned long)( buffer += 4, FT_PEEK_ULONG_LE( buffer - 4 ) ) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Each GET_xxxx() macro uses an implicit `stream' variable.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The `FT_GET_XXX` macros use an implicit 'stream' variable.
+   *
+   * Note that a call to `FT_STREAM_SEEK` or `FT_STREAM_POS` has **no**
+   * effect on `FT_GET_XXX`!  They operate on `stream->pos`, while
+   * `FT_GET_XXX` use `stream->cursor`.
+   */
 #if 0
 #define FT_GET_MACRO( type )    FT_NEXT_ ## type ( stream->cursor )
 
@@ -299,10 +310,18 @@
 #define FT_GET_ULONG_LE()   FT_GET_MACRO( FT_Stream_GetULongLE, FT_ULong )
 #endif
 
+
 #define FT_READ_MACRO( func, type, var )        \
           ( var = (type)func( stream, &error ), \
             error != FT_Err_Ok )
 
+  /*
+   * The `FT_READ_XXX' macros use implicit `stream' and `error' variables.
+   *
+   * `FT_READ_XXX' can be controlled with `FT_STREAM_SEEK' and
+   * `FT_STREAM_POS'.  They use the full machinery to check whether a read is
+   * valid.
+   */
 #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_ReadUShort, FT_Short, var )
@@ -387,12 +406,14 @@
 
   /* 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      */
+  /* the `FT_Stream_GetXXX' functions to retrieve frame data without     */
   /* error checks.                                                       */
   /*                                                                     */
-  /* You must _always_ call FT_Stream_ExitFrame() once you have entered  */
+  /* You must _always_ call `FT_Stream_ExitFrame' once you have entered  */
   /* a stream frame!                                                     */
   /*                                                                     */
+  /* Nested frames are not permitted.                                    */
+  /*                                                                     */
   FT_BASE( FT_Error )
   FT_Stream_EnterFrame( FT_Stream  stream,
                         FT_ULong   count );
@@ -401,25 +422,29 @@
   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.   */
+  /* is memory-based, this function simply sets 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_Stream_GetXXX' functions can't be used.                        */
+  /*                                                                    */
+  /* An extracted frame 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) */
+  /* 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 );
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/fttrace.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttrace.h                                                              */
-/*                                                                         */
-/*    Tracing handling (specification only).                               */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttrace.h
+ *
+ *   Tracing handling (specification only).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 */
@@ -23,23 +23,24 @@
 
   /* base components */
 FT_TRACE_DEF( calc )      /* calculations            (ftcalc.c)   */
+FT_TRACE_DEF( gloader )   /* glyph loader            (ftgloadr.c) */
+FT_TRACE_DEF( glyph )     /* glyph management        (ftglyph.c)  */
 FT_TRACE_DEF( memory )    /* memory manager          (ftobjs.c)   */
-FT_TRACE_DEF( stream )    /* stream manager          (ftstream.c) */
+FT_TRACE_DEF( init )      /* initialization          (ftinit.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( gloader )   /* glyph loader            (ftgloadr.c) */
+FT_TRACE_DEF( stream )    /* stream manager          (ftstream.c) */
 
+FT_TRACE_DEF( bitmap )    /* bitmap manipulation     (ftbitmap.c) */
+FT_TRACE_DEF( checksum )  /* bitmap checksum         (ftobjs.c)   */
+FT_TRACE_DEF( mm )        /* MM interface            (ftmm.c)     */
+FT_TRACE_DEF( psprops )   /* PS driver properties    (ftpsprop.c) */
+FT_TRACE_DEF( raccess )   /* resource fork accessor  (ftrfork.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)  */
 FT_TRACE_DEF( synth )     /* bold/slant synthesizer  (ftsynth.c)  */
-FT_TRACE_DEF( bitmap )    /* bitmap checksum         (ftobjs.c)   */
-FT_TRACE_DEF( psprops )   /* PS driver properties    (ftpsprop.c) */
 
   /* Cache sub-system */
 FT_TRACE_DEF( cache )     /* cache sub-system        (ftcache.c, etc.) */
@@ -47,21 +48,23 @@
   /* SFNT driver components */
 FT_TRACE_DEF( sfdriver )  /* SFNT font driver        (sfdriver.c) */
 FT_TRACE_DEF( sfobjs )    /* SFNT object handler     (sfobjs.c)   */
+FT_TRACE_DEF( ttbdf )     /* TrueType embedded BDF   (ttbdf.c)    */
 FT_TRACE_DEF( ttcmap )    /* charmap handler         (ttcmap.c)   */
+FT_TRACE_DEF( ttcolr )    /* glyph layer table       (ttcolr.c)   */
+FT_TRACE_DEF( ttcpal )    /* color palette table     (ttcpal.c)   */
 FT_TRACE_DEF( ttkern )    /* kerning handler         (ttkern.c)   */
 FT_TRACE_DEF( ttload )    /* basic TrueType tables   (ttload.c)   */
 FT_TRACE_DEF( ttmtx )     /* metrics-related tables  (ttmtx.c)    */
 FT_TRACE_DEF( ttpost )    /* PS table processing     (ttpost.c)   */
 FT_TRACE_DEF( ttsbit )    /* TrueType sbit handling  (ttsbit.c)   */
-FT_TRACE_DEF( ttbdf )     /* TrueType embedded BDF   (ttbdf.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( ttgxvar )   /* TrueType GX var handler (ttgxvar.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( t1afm )
@@ -72,14 +75,14 @@
 FT_TRACE_DEF( t1parse )
 
   /* PostScript helper module `psaux' */
+FT_TRACE_DEF( cffdecode )
+FT_TRACE_DEF( psconv )
+FT_TRACE_DEF( psobjs )
 FT_TRACE_DEF( t1decode )
-FT_TRACE_DEF( cffdecode )
-FT_TRACE_DEF( psobjs )
-FT_TRACE_DEF( psconv )
 
   /* PostScript hinting module `pshinter' */
+FT_TRACE_DEF( pshalgo )
 FT_TRACE_DEF( pshrec )
-FT_TRACE_DEF( pshalgo )
 
   /* Type 2 driver components */
 FT_TRACE_DEF( cffdriver )
@@ -117,7 +120,6 @@
 FT_TRACE_DEF( pfr )
 
   /* OpenType validation components */
-FT_TRACE_DEF( otvmodule )
 FT_TRACE_DEF( otvcommon )
 FT_TRACE_DEF( otvbase )
 FT_TRACE_DEF( otvgdef )
@@ -125,29 +127,30 @@
 FT_TRACE_DEF( otvgsub )
 FT_TRACE_DEF( otvjstf )
 FT_TRACE_DEF( otvmath )
+FT_TRACE_DEF( otvmodule )
 
   /* TrueTypeGX/AAT validation components */
-FT_TRACE_DEF( gxvmodule )
+FT_TRACE_DEF( gxvbsln )
 FT_TRACE_DEF( gxvcommon )
 FT_TRACE_DEF( gxvfeat )
-FT_TRACE_DEF( gxvmort )
-FT_TRACE_DEF( gxvmorx )
-FT_TRACE_DEF( gxvbsln )
 FT_TRACE_DEF( gxvjust )
 FT_TRACE_DEF( gxvkern )
+FT_TRACE_DEF( gxvmodule )
+FT_TRACE_DEF( gxvmort )
+FT_TRACE_DEF( gxvmorx )
+FT_TRACE_DEF( gxvlcar )
 FT_TRACE_DEF( gxvopbd )
+FT_TRACE_DEF( gxvprop )
 FT_TRACE_DEF( gxvtrak )
-FT_TRACE_DEF( gxvprop )
-FT_TRACE_DEF( gxvlcar )
 
   /* autofit components */
-FT_TRACE_DEF( afmodule )
+FT_TRACE_DEF( afcjk )
+FT_TRACE_DEF( afglobal )
 FT_TRACE_DEF( afhints )
-FT_TRACE_DEF( afcjk )
+FT_TRACE_DEF( afmodule )
 FT_TRACE_DEF( aflatin )
 FT_TRACE_DEF( aflatin2 )
+FT_TRACE_DEF( afshaper )
 FT_TRACE_DEF( afwarp )
-FT_TRACE_DEF( afshaper )
-FT_TRACE_DEF( afglobal )
 
 /* END */
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftvalid.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/ftvalid.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftvalid.h                                                              */
-/*                                                                         */
-/*    FreeType validation support (specification).                         */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftvalid.h
+ *
+ *   FreeType validation support (specification).
+ *
+ * Copyright (C) 2004-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTVALID_H_
@@ -42,31 +42,31 @@
   typedef struct FT_ValidatorRec_ volatile*  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, that 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 checks that fields which 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.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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, that 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 checks that fields which 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,
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/internal.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/internal.h	Thu May 09 16:09:39 2019 -0700
@@ -1,31 +1,30 @@
-/***************************************************************************/
-/*                                                                         */
-/*  internal.h                                                             */
-/*                                                                         */
-/*    Internal header files (specification only).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * internal.h
+ *
+ *   Internal header files (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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!                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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_PIC_H                 <freetype/internal/ftpic.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>
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/psaux.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/psaux.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psaux.h                                                                */
-/*                                                                         */
-/*    Auxiliary functions and data structures related to PostScript fonts  */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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.h
+ *
+ *   Auxiliary functions and data structures related to PostScript fonts
+ *   (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -35,10 +35,10 @@
 FT_BEGIN_HEADER
 
 
-  /***********************************************************************/
-  /*                                                                     */
-  /* PostScript modules driver class.                                    */
-  /*                                                                     */
+  /**************************************************************************
+   *
+   * PostScript modules driver class.
+   */
   typedef struct  PS_DriverRec_
   {
     FT_DriverRec  root;
@@ -64,23 +64,27 @@
   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.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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
@@ -103,41 +107,47 @@
   } 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.                                        */
-  /*                                                                       */
-  /*    init      :: Set to 0xDEADBEEF if `elements' and `lengths' have    */
-  /*                 been allocated.                                       */
-  /*                                                                       */
-  /*    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.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   init ::
+   *     Set to 0xDEADBEEF if 'elements' and 'lengths' have been allocated.
+   *
+   *   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           */
@@ -425,27 +435,33 @@
   } 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.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -484,51 +500,67 @@
   } PS_Builder_FuncsRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Structure>                                                           */
-  /*    PS_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       :: XXX                                                */
-  /*                                                                       */
-  /*    base         :: The base glyph outline.                            */
-  /*                                                                       */
-  /*    current      :: The current glyph outline.                         */
-  /*                                                                       */
-  /*    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.                                            */
-  /*                                                                       */
-  /*    is_t1        :: Set if current font type is Type 1.                */
-  /*                                                                       */
-  /*    funcs        :: An array of function pointers for the builder.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_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 ::
+   *     XXX
+   *
+   *   base ::
+   *     The base glyph outline.
+   *
+   *   current ::
+   *     The current glyph outline.
+   *
+   *   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.
+   *
+   *   is_t1 ::
+   *     Set if current font type is Type 1.
+   *
+   *   funcs ::
+   *     An array of function pointers for the builder.
+   */
   struct  PS_Builder_
   {
     FT_Memory       memory;
@@ -729,54 +761,70 @@
   } 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 :: Maximum number of contours in builder outline.     */
-  /*                                                                       */
-  /*    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.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   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 ::
+   *     Maximum number of contours in builder outline.
+   *
+   *   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;
@@ -817,19 +865,19 @@
 
 #if 0
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine   */
-  /* calls during glyph loading.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity.  A
+   * minimum of 16 is required.
+   */
 #define T1_MAX_CHARSTRINGS_OPERANDS  32
 
 #endif /* 0 */
@@ -993,53 +1041,70 @@
   } CFF_Builder_FuncsRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                        */
-  /*                                                                       */
-  /*    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.                    */
-  /*                                                                       */
-  /*    funcs         :: A table of method pointers for this object.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   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.
+   *
+   *   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.
+   *
+   *   funcs ::
+   *     A table of method pointers for this object.
+   */
   struct  CFF_Builder_
   {
     FT_Memory       memory;
@@ -1211,25 +1276,27 @@
   typedef struct AFM_StreamRec_*  AFM_Stream;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    AFM_ParserRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An AFM_Parser is a parser for the AFM files.                       */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    memory    :: The object used for memory operations (alloc and      */
-  /*                 realloc).                                             */
-  /*                                                                       */
-  /*    stream    :: This is an opaque object.                             */
-  /*                                                                       */
-  /*    FontInfo  :: The result will be stored here.                       */
-  /*                                                                       */
-  /*    get_index :: A user provided function to get a glyph index by its  */
-  /*                 name.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   AFM_ParserRec
+   *
+   * @description:
+   *   An AFM_Parser is a parser for the AFM files.
+   *
+   * @fields:
+   *   memory ::
+   *     The object used for memory operations (alloc and realloc).
+   *
+   *   stream ::
+   *     This is an opaque object.
+   *
+   *   FontInfo ::
+   *     The result will be stored here.
+   *
+   *   get_index ::
+   *     A user provided function to get a glyph index by its name.
+   */
   typedef struct  AFM_ParserRec_
   {
     FT_Memory     memory;
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/pshints.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/pshints.h	Thu May 09 16:09:39 2019 -0700
@@ -1,21 +1,21 @@
-/***************************************************************************/
-/*                                                                         */
-/*  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-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * 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 (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -73,7 +73,7 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   T1_Hints
@@ -86,16 +86,16 @@
    *   @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.
+   *   - Open a new hint recording session by calling the 'open' method.
    *     This rewinds 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
+   *     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
-   *     returns an error code if the hints were invalid or something
-   *     strange happened (e.g., memory shortage).
+   *   - Close the recording session by calling the 'close' method.  It
+   *     returns 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.
@@ -104,7 +104,7 @@
   typedef struct T1_HintsRec_*  T1_Hints;
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   T1_Hints_Funcs
@@ -117,7 +117,7 @@
   typedef const struct T1_Hints_FuncsRec_*  T1_Hints_Funcs;
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   T1_Hints_OpenFunc
@@ -139,14 +139,14 @@
   (*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'
+   *   vertical stem.  This corresponds to the Type 1 'hstem' and 'vstem'
    *   operators.
    *
    * @input:
@@ -164,15 +164,15 @@
    *   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.
+   *   '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 is interpreted as a `ghost' stem, according to the Type 1
+   *   -21.  It is interpreted as a 'ghost' stem, according to the Type 1
    *   specification.
    *
-   *   If the length is -21 (corresponding to a bottom ghost stem), then
-   *   the real stem position is `coords[0]+coords[1]'.
+   *   If the length is -21 (corresponding to a bottom ghost stem), then the
+   *   real stem position is 'coords[0]+coords[1]'.
    *
    */
   typedef void
@@ -181,7 +181,7 @@
                            FT_Fixed*  coords );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   T1_Hints_SetStem3Func
@@ -215,7 +215,7 @@
                             FT_Fixed*  coords );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   T1_Hints_ResetFunc
@@ -238,7 +238,7 @@
                          FT_UInt   end_point );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   T1_Hints_CloseFunc
@@ -267,7 +267,7 @@
                          FT_UInt   end_point );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   T1_Hints_ApplyFunc
@@ -297,7 +297,7 @@
    *   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
+   *   The scaling transformation is taken from the 'globals' object which
    *   must correspond to the same font as the glyph.
    *
    */
@@ -308,7 +308,7 @@
                          FT_Render_Mode  hint_mode );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @struct:
    *   T1_Hints_FuncsRec
@@ -360,7 +360,7 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   T2_Hints
@@ -373,16 +373,16 @@
    *   @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.
+   *   - Open a new hint recording session by calling the 'open' method.
    *     This rewinds 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.
+   *     method ('stems', 'hintmask', 'counters').  Note that these functions
+   *     do not return an error code.
    *
-   *   - Close the recording session by calling the `close' method.  It
-   *     returns an error code if the hints were invalid or something
-   *     strange happened (e.g., memory shortage).
+   *   - Close the recording session by calling the 'close' method.  It
+   *     returns 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.
@@ -391,7 +391,7 @@
   typedef struct T2_HintsRec_*  T2_Hints;
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @type:
    *   T2_Hints_Funcs
@@ -404,7 +404,7 @@
   typedef const struct T2_Hints_FuncsRec_*  T2_Hints_Funcs;
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   T2_Hints_OpenFunc
@@ -426,7 +426,7 @@
   (*T2_Hints_OpenFunc)( T2_Hints  hints );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   T2_Hints_StemsFunc
@@ -434,7 +434,7 @@
    * @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.
+   *   'hstem', 'vstem', 'hstemhm', and 'vstemhm' Type 2 operators.
    *
    * @input:
    *   hints ::
@@ -447,18 +447,18 @@
    *     The number of stems.
    *
    *   coords ::
-   *     An array of `count' (position,length) pairs in 16.16 format.
+   *     An array of 'count' (position,length) pairs in 16.16 format.
    *
    * @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' array.  Each even
-   *   element is an absolute position in font units, each odd element is a
-   *   length in font units.
+   *   There are '2*count' elements in the 'coords' array.  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 is interpreted as a `ghost' stem, according to the Type 1
+   *   A length can be negative, in which case it must be either -20 or -21.
+   *   It is interpreted as a 'ghost' stem, according to the Type 1
    *   specification.
    *
    */
@@ -469,22 +469,22 @@
                          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).
+   *   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
-   *     or activated hints apply.
+   *     The glyph index of the last point to which the previously defined or
+   *     activated hints apply.
    *
    *   bit_count ::
    *     The number of bits in the hint mask.
@@ -494,13 +494,13 @@
    *
    * @note:
    *   If the hintmask starts the charstring (before any glyph point
-   *   definition), the value of `end_point' should be 0.
+   *   definition), the value of `end_point` should be 0.
    *
-   *   `bit_count' is the number of meaningful bits in the `bytes' array; it
+   *   `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
+   *   The 'bytes' array can come directly from the Type 2 charstring and
    *   respects the same format.
    *
    */
@@ -511,14 +511,14 @@
                         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).
+   *   A method of the @T2_Hints class used to set a given counter mask (this
+   *   corresponds to the 'hintmask' Type 2 operator).
    *
    * @input:
    *   hints ::
@@ -536,13 +536,13 @@
    *
    * @note:
    *   If the hintmask starts the charstring (before any glyph point
-   *   definition), the value of `end_point' should be 0.
+   *   definition), the value of `end_point` should be 0.
    *
-   *   `bit_count' is the number of meaningful bits in the `bytes' array; it
+   *   `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
+   *    The 'bytes' array can come directly from the Type 2 charstring and
    *    respects the same format.
    *
    */
@@ -552,7 +552,7 @@
                            const FT_Byte*  bytes );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @functype:
    *   T2_Hints_CloseFunc
@@ -581,15 +581,14 @@
                          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.
+   *   corresponding glyph outline.  Must be called after the 'close' method.
    *
    * @input:
    *   hints ::
@@ -611,7 +610,7 @@
    *   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
+   *   The scaling transformation is taken from the 'globals' object which
    *   must correspond to the same font than the glyph.
    *
    */
@@ -622,7 +621,7 @@
                          FT_Render_Mode  hint_mode );
 
 
-  /*************************************************************************
+  /**************************************************************************
    *
    * @struct:
    *   T2_Hints_FuncsRec
@@ -680,8 +679,6 @@
   typedef PSHinter_Interface*  PSHinter_Service;
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_PSHINTER_INTERFACE(        \
           class_,                            \
           get_globals_funcs_,                \
@@ -694,25 +691,6 @@
     get_t2_funcs_                            \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_PSHINTER_INTERFACE(                      \
-          class_,                                          \
-          get_globals_funcs_,                              \
-          get_t1_funcs_,                                   \
-          get_t2_funcs_ )                                  \
-  void                                                     \
-  FT_Init_Class_ ## class_( FT_Library           library,  \
-                            PSHinter_Interface*  clazz )   \
-  {                                                        \
-    FT_UNUSED( library );                                  \
-                                                           \
-    clazz->get_globals_funcs = get_globals_funcs_;         \
-    clazz->get_t1_funcs      = get_t1_funcs_;              \
-    clazz->get_t2_funcs      = get_t2_funcs_;              \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 FT_END_HEADER
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svbdf.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svbdf.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svbdf.h                                                                */
-/*                                                                         */
-/*    The FreeType BDF services (specification).                           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svbdf.h
+ *
+ *   The FreeType BDF services (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -46,8 +46,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_BDFRec( class_,                                \
                                   get_charset_id_,                       \
                                   get_property_ )                        \
@@ -56,20 +54,6 @@
     get_charset_id_, get_property_                                       \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_BDFRec( class_,                                \
-                                  get_charset_id_,                       \
-                                  get_property_ )                        \
-  void                                                                   \
-  FT_Init_Class_ ## class_( FT_Service_BDFRec*  clazz )                  \
-  {                                                                      \
-    clazz->get_charset_id = get_charset_id_;                             \
-    clazz->get_property   = get_property_;                               \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcfftl.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcfftl.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svcfftl.h                                                              */
-/*                                                                         */
-/*    The FreeType CFF tables loader service (specification).              */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svcfftl.h
+ *
+ *   The FreeType CFF tables loader service (specification).
+ *
+ * Copyright (C) 2017-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVCFFTL_H_
@@ -65,8 +65,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_CFFLOADREC( class_,                  \
                                       get_standard_encoding_,  \
                                       load_private_dict_,      \
@@ -82,26 +80,6 @@
     blend_build_vector_                                        \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_CFFLOADREC( class_,                  \
-                                      get_standard_encoding_,  \
-                                      load_private_dict_,      \
-                                      fd_select_get_,          \
-                                      blend_check_vector_,     \
-                                      blend_build_vector_ )    \
-  void                                                         \
-  FT_Init_Class_ ## class_( FT_Service_CFFLoadRec*  clazz )    \
-  {                                                            \
-    clazz->get_standard_encoding = get_standard_encoding_;     \
-    clazz->load_private_dict     = load_private_dict_;         \
-    clazz->fd_select_get         = fd_select_get_;             \
-    clazz->blend_check_vector    = blend_check_vector_;        \
-    clazz->blend_build_vector    = blend_build_vector_;        \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 
 FT_END_HEADER
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcid.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svcid.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svcid.h                                                                */
-/*                                                                         */
-/*    The FreeType CID font services (specification).                      */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Derek Clegg and Michael Toftdal.                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svcid.h
+ *
+ *   The FreeType CID font services (specification).
+ *
+ * Copyright (C) 2007-2019 by
+ * Derek Clegg and Michael Toftdal.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVCID_H_
@@ -48,8 +48,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_CIDREC( class_,                                   \
                                   get_ros_,                                 \
                                   get_is_cid_,                              \
@@ -59,25 +57,6 @@
     get_ros_, get_is_cid_, get_cid_from_glyph_index_                        \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_CIDREC( class_,                                   \
-                                  get_ros_,                                 \
-                                  get_is_cid_,                              \
-                                  get_cid_from_glyph_index_ )               \
-  void                                                                      \
-  FT_Init_Class_ ## class_( FT_Library          library,                    \
-                            FT_Service_CIDRec*  clazz )                     \
-  {                                                                         \
-    FT_UNUSED( library );                                                   \
-                                                                            \
-    clazz->get_ros                  = get_ros_;                             \
-    clazz->get_is_cid               = get_is_cid_;                          \
-    clazz->get_cid_from_glyph_index = get_cid_from_glyph_index_;            \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svfntfmt.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svfntfmt.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svfntfmt.h                                                             */
-/*                                                                         */
-/*    The FreeType font format service (specification only).               */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svfntfmt.h
+ *
+ *   The FreeType font format service (specification only).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVFNTFMT_H_
@@ -26,9 +26,9 @@
 
 
   /*
-   *  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.
+   * 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_FONT_FORMAT  "font-format"
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgldict.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgldict.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svgldict.h                                                             */
-/*                                                                         */
-/*    The FreeType glyph dictionary services (specification).              */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svgldict.h
+ *
+ *   The FreeType glyph dictionary services (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,8 +26,8 @@
 
 
   /*
-   *  A service used to retrieve glyph names, as well as to find the
-   *  index of a given glyph name in a font.
+   * A service used to retrieve glyph names, as well as to find the index of
+   * a given glyph name in a font.
    *
    */
 
@@ -52,8 +52,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_GLYPHDICTREC( class_,                        \
                                         get_name_,                     \
                                         name_index_ )                  \
@@ -62,23 +60,6 @@
     get_name_, name_index_                                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_GLYPHDICTREC( class_,                        \
-                                        get_name_,                     \
-                                        name_index_ )                  \
-  void                                                                 \
-  FT_Init_Class_ ## class_( FT_Library                library,         \
-                            FT_Service_GlyphDictRec*  clazz )          \
-  {                                                                    \
-    FT_UNUSED( library );                                              \
-                                                                       \
-    clazz->get_name   = get_name_;                                     \
-    clazz->name_index = name_index_;                                   \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgxval.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svgxval.h	Thu May 09 16:09:39 2019 -0700
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svgxval.h                                                              */
-/*                                                                         */
-/*    FreeType API for validating TrueTypeGX/AAT tables (specification).   */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  Masatake YAMATO, Red Hat K.K.,                                         */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svgxval.h
+ *
+ *   FreeType API for validating TrueTypeGX/AAT tables (specification).
+ *
+ * Copyright (C) 2004-2019 by
+ * Masatake YAMATO, Red Hat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
-/***************************************************************************/
-/*                                                                         */
-/* gxvalid is derived from both gxlayout module and otvalid module.        */
-/* Development of gxlayout is supported by the Information-technology      */
-/* Promotion Agency(IPA), Japan.                                           */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * gxvalid is derived from both gxlayout module and otvalid module.
+ * Development of gxlayout is supported by the Information-technology
+ * Promotion Agency(IPA), Japan.
+ *
+ */
 
 
 #ifndef SVGXVAL_H_
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svkern.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svkern.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svkern.h                                                               */
-/*                                                                         */
-/*    The FreeType Kerning service (specification).                        */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svkern.h
+ *
+ *   The FreeType Kerning service (specification).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVKERN_H_
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmetric.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmetric.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svmetric.h                                                             */
-/*                                                                         */
-/*    The FreeType services for metrics variations (specification).        */
-/*                                                                         */
-/*  Copyright 2016-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svmetric.h
+ *
+ *   The FreeType services for metrics variations (specification).
+ *
+ * Copyright (C) 2016-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVMETRIC_H_
@@ -26,7 +26,7 @@
 
 
   /*
-   *  A service to manage the `HVAR, `MVAR', and `VVAR' OpenType tables.
+   * A service to manage the `HVAR, `MVAR', and `VVAR' OpenType tables.
    *
    */
 
@@ -93,8 +93,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_METRICSVARIATIONSREC( class_,            \
                                                 hadvance_adjust_,  \
                                                 lsb_adjust_,       \
@@ -116,32 +114,6 @@
     metrics_adjust_                                                \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_METRICSVARIATIONSREC( class_,               \
-                                                hadvance_adjust_,     \
-                                                lsb_adjust_,          \
-                                                rsb_adjust_,          \
-                                                vadvance_adjust_,     \
-                                                tsb_adjust_,          \
-                                                bsb_adjust_,          \
-                                                vorg_adjust_,         \
-                                                metrics_adjust_  )    \
-  void                                                                \
-  FT_Init_Class_ ## class_( FT_Service_MetricsVariationsRec*  clazz ) \
-  {                                                                   \
-    clazz->hadvance_adjust = hadvance_adjust_;                        \
-    clazz->lsb_adjust      = lsb_adjust_;                             \
-    clazz->rsb_adjust      = rsb_adjust_;                             \
-    clazz->vadvance_adjust = vadvance_adjust_;                        \
-    clazz->tsb_adjust      = tsb_adjust_;                             \
-    clazz->bsb_adjust      = bsb_adjust_;                             \
-    clazz->vorg_adjust     = vorg_adjust_;                            \
-    clazz->metrics_adjust  = metrics_adjust_;                         \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmm.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svmm.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svmm.h                                                                 */
-/*                                                                         */
-/*    The FreeType Multiple Masters and GX var services (specification).   */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svmm.h
+ *
+ *   The FreeType Multiple Masters and GX var services (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,9 +26,9 @@
 
 
   /*
-   *  A service used to manage multiple-masters data in a given face.
+   * A service used to manage multiple-masters data in a given face.
    *
-   *  See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
+   * See the related APIs in `ftmm.h' (FT_MULTIPLE_MASTERS_H).
    *
    */
 
@@ -86,81 +86,65 @@
   typedef void
   (*FT_Done_Blend_Func)( FT_Face );
 
+  typedef FT_Error
+  (*FT_Set_MM_WeightVector_Func)( FT_Face    face,
+                                  FT_UInt    len,
+                                  FT_Fixed*  weight_vector );
+
+  typedef FT_Error
+  (*FT_Get_MM_WeightVector_Func)( FT_Face    face,
+                                  FT_UInt*   len,
+                                  FT_Fixed*  weight_vector );
+
 
   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_Blend_Func    get_mm_blend;
-    FT_Get_MM_Var_Func      get_mm_var;
-    FT_Set_Var_Design_Func  set_var_design;
-    FT_Get_Var_Design_Func  get_var_design;
-    FT_Set_Instance_Func    set_instance;
+    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_Blend_Func         get_mm_blend;
+    FT_Get_MM_Var_Func           get_mm_var;
+    FT_Set_Var_Design_Func       set_var_design;
+    FT_Get_Var_Design_Func       get_var_design;
+    FT_Set_Instance_Func         set_instance;
+    FT_Set_MM_WeightVector_Func  set_mm_weightvector;
+    FT_Get_MM_WeightVector_Func  get_mm_weightvector;
 
     /* for internal use; only needed for code sharing between modules */
-    FT_Get_Var_Blend_Func   get_var_blend;
-    FT_Done_Blend_Func      done_blend;
+    FT_Get_Var_Blend_Func  get_var_blend;
+    FT_Done_Blend_Func     done_blend;
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_,          \
-                                           get_mm_,         \
-                                           set_mm_design_,  \
-                                           set_mm_blend_,   \
-                                           get_mm_blend_,   \
-                                           get_mm_var_,     \
-                                           set_var_design_, \
-                                           get_var_design_, \
-                                           set_instance_,   \
-                                           get_var_blend_,  \
-                                           done_blend_ )    \
-  static const FT_Service_MultiMastersRec  class_ =         \
-  {                                                         \
-    get_mm_,                                                \
-    set_mm_design_,                                         \
-    set_mm_blend_,                                          \
-    get_mm_blend_,                                          \
-    get_mm_var_,                                            \
-    set_var_design_,                                        \
-    get_var_design_,                                        \
-    set_instance_,                                          \
-    get_var_blend_,                                         \
-    done_blend_                                             \
+#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_,            \
+                                           get_mm_,           \
+                                           set_mm_design_,    \
+                                           set_mm_blend_,     \
+                                           get_mm_blend_,     \
+                                           get_mm_var_,       \
+                                           set_var_design_,   \
+                                           get_var_design_,   \
+                                           set_instance_,     \
+                                           set_weightvector_, \
+                                           get_weightvector_, \
+                                           get_var_blend_,    \
+                                           done_blend_ )      \
+  static const FT_Service_MultiMastersRec  class_ =           \
+  {                                                           \
+    get_mm_,                                                  \
+    set_mm_design_,                                           \
+    set_mm_blend_,                                            \
+    get_mm_blend_,                                            \
+    get_mm_var_,                                              \
+    set_var_design_,                                          \
+    get_var_design_,                                          \
+    set_instance_,                                            \
+    set_weightvector_,                                        \
+    get_weightvector_,                                        \
+    get_var_blend_,                                           \
+    done_blend_                                               \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_MULTIMASTERSREC( class_,               \
-                                           get_mm_,              \
-                                           set_mm_design_,       \
-                                           set_mm_blend_,        \
-                                           get_mm_blend_,        \
-                                           get_mm_var_,          \
-                                           set_var_design_,      \
-                                           get_var_design_,      \
-                                           set_instance_,        \
-                                           get_var_blend_,       \
-                                           done_blend_ )         \
-  void                                                           \
-  FT_Init_Class_ ## class_( FT_Service_MultiMastersRec*  clazz ) \
-  {                                                              \
-    clazz->get_mm         = get_mm_;                             \
-    clazz->set_mm_design  = set_mm_design_;                      \
-    clazz->set_mm_blend   = set_mm_blend_;                       \
-    clazz->get_mm_blend   = get_mm_blend_;                       \
-    clazz->get_mm_var     = get_mm_var_;                         \
-    clazz->set_var_design = set_var_design_;                     \
-    clazz->get_var_design = get_var_design_;                     \
-    clazz->set_instance   = set_instance_;                       \
-    clazz->get_var_blend  = get_var_blend_;                      \
-    clazz->done_blend     = done_blend_;                         \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svotval.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svotval.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svotval.h                                                              */
-/*                                                                         */
-/*    The FreeType OpenType validation service (specification).            */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svotval.h
+ *
+ *   The FreeType OpenType validation service (specification).
+ *
+ * Copyright (C) 2004-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVOTVAL_H_
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpfr.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpfr.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svpfr.h                                                                */
-/*                                                                         */
-/*    Internal PFR service functions (specification).                      */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svpfr.h
+ *
+ *   Internal PFR service functions (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpostnm.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpostnm.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svpostnm.h                                                             */
-/*                                                                         */
-/*    The FreeType PostScript name services (specification).               */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svpostnm.h
+ *
+ *   The FreeType PostScript name services (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -25,13 +25,13 @@
 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.
+   * A trivial service used to retrieve the PostScript name of a given font
+   * when available.  The `get_name' field should never be `NULL`.
    *
-   *  The corresponding function can return NULL to indicate that the
-   *  PostScript name is not available.
+   * The corresponding 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.
+   * The name is owned by the face and will be destroyed with it.
    */
 
 #define FT_SERVICE_ID_POSTSCRIPT_FONT_NAME  "postscript-font-name"
@@ -47,28 +47,12 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \
   static const FT_Service_PsFontNameRec  class_ =                    \
   {                                                                  \
     get_ps_font_name_                                                \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_PSFONTNAMEREC( class_, get_ps_font_name_ ) \
-  void                                                               \
-  FT_Init_Class_ ## class_( FT_Library                 library,      \
-                            FT_Service_PsFontNameRec*  clazz )       \
-  {                                                                  \
-    FT_UNUSED( library );                                            \
-                                                                     \
-    clazz->get_ps_font_name = get_ps_font_name_;                     \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svprop.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svprop.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svprop.h                                                               */
-/*                                                                         */
-/*    The FreeType property service (specification).                       */
-/*                                                                         */
-/*  Copyright 2012-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svprop.h
+ *
+ *   The FreeType property service (specification).
+ *
+ * Copyright (C) 2012-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVPROP_H_
@@ -45,8 +45,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_PROPERTIESREC( class_,          \
                                          set_property_,   \
                                          get_property_ )  \
@@ -56,20 +54,6 @@
     get_property_                                         \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_PROPERTIESREC( class_,                \
-                                         set_property_,         \
-                                         get_property_ )        \
-  void                                                          \
-  FT_Init_Class_ ## class_( FT_Service_PropertiesRec*  clazz )  \
-  {                                                             \
-    clazz->set_property = set_property_;                        \
-    clazz->get_property = get_property_;                        \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpscmap.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpscmap.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svpscmap.h                                                             */
-/*                                                                         */
-/*    The FreeType PostScript charmap service (specification).             */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svpscmap.h
+ *
+ *   The FreeType PostScript charmap service (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -29,27 +29,26 @@
 
 
   /*
-   *  Adobe glyph name to unicode value.
+   * Adobe glyph name to unicode value.
    */
   typedef FT_UInt32
   (*PS_Unicode_ValueFunc)( const char*  glyph_name );
 
   /*
-   *  Macintosh name id to glyph name.  NULL if invalid index.
+   * Macintosh name id to glyph name.  `NULL` if invalid index.
    */
   typedef const char*
   (*PS_Macintosh_NameFunc)( FT_UInt  name_index );
 
   /*
-   *  Adobe standard string ID to glyph name.  NULL if invalid index.
+   * Adobe standard string ID to glyph name.  `NULL` if invalid index.
    */
   typedef const char*
   (*PS_Adobe_Std_StringsFunc)( FT_UInt  string_index );
 
 
   /*
-   *  Simple unicode -> glyph index charmap built from font glyph names
-   *  table.
+   * Simple unicode -> glyph index charmap built from font glyph names table.
    */
   typedef struct  PS_UniMap_
   {
@@ -71,16 +70,16 @@
 
 
   /*
-   *  A function which returns a glyph name for a given index.  Returns
-   *  NULL if invalid index.
+   * A function which returns a glyph name for a given index.  Returns
+   * `NULL` if invalid index.
    */
   typedef const char*
   (*PS_GetGlyphNameFunc)( FT_Pointer  data,
                           FT_UInt     string_index );
 
   /*
-   *  A function used to release the glyph name returned by
-   *  PS_GetGlyphNameFunc, when needed
+   * A function used to release the glyph name returned by
+   * PS_GetGlyphNameFunc, when needed
    */
   typedef void
   (*PS_FreeGlyphNameFunc)( FT_Pointer  data,
@@ -118,8 +117,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_PSCMAPSREC( class_,                               \
                                       unicode_value_,                       \
                                       unicodes_init_,                       \
@@ -136,35 +133,6 @@
     adobe_std_strings_, adobe_std_encoding_, adobe_expert_encoding_         \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_PSCMAPSREC( class_,                               \
-                                      unicode_value_,                       \
-                                      unicodes_init_,                       \
-                                      unicodes_char_index_,                 \
-                                      unicodes_char_next_,                  \
-                                      macintosh_name_,                      \
-                                      adobe_std_strings_,                   \
-                                      adobe_std_encoding_,                  \
-                                      adobe_expert_encoding_ )              \
-  void                                                                      \
-  FT_Init_Class_ ## class_( FT_Library              library,                \
-                            FT_Service_PsCMapsRec*  clazz )                 \
-  {                                                                         \
-    FT_UNUSED( library );                                                   \
-                                                                            \
-    clazz->unicode_value         = unicode_value_;                          \
-    clazz->unicodes_init         = unicodes_init_;                          \
-    clazz->unicodes_char_index   = unicodes_char_index_;                    \
-    clazz->unicodes_char_next    = unicodes_char_next_;                     \
-    clazz->macintosh_name        = macintosh_name_;                         \
-    clazz->adobe_std_strings     = adobe_std_strings_;                      \
-    clazz->adobe_std_encoding    = adobe_std_encoding_;                     \
-    clazz->adobe_expert_encoding = adobe_expert_encoding_;                  \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpsinfo.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svpsinfo.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svpsinfo.h                                                             */
-/*                                                                         */
-/*    The FreeType PostScript info service (specification).                */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svpsinfo.h
+ *
+ *   The FreeType PostScript info service (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -62,8 +62,6 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_PSINFOREC( class_,                     \
                                      get_font_info_,             \
                                      ps_get_font_extra_,         \
@@ -76,29 +74,6 @@
     get_font_private_, get_font_value_                           \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_PSINFOREC( class_,                     \
-                                     get_font_info_,             \
-                                     ps_get_font_extra_,         \
-                                     has_glyph_names_,           \
-                                     get_font_private_,          \
-                                     get_font_value_ )           \
-  void                                                           \
-  FT_Init_Class_ ## class_( FT_Library             library,      \
-                            FT_Service_PsInfoRec*  clazz )       \
-  {                                                              \
-    FT_UNUSED( library );                                        \
-                                                                 \
-    clazz->ps_get_font_info    = get_font_info_;                 \
-    clazz->ps_get_font_extra   = ps_get_font_extra_;             \
-    clazz->ps_has_glyph_names  = has_glyph_names_;               \
-    clazz->ps_get_font_private = get_font_private_;              \
-    clazz->ps_get_font_value   = get_font_value_;                \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svsfnt.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svsfnt.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svsfnt.h                                                               */
-/*                                                                         */
-/*    The FreeType SFNT table loading service (specification).             */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svsfnt.h
+ *
+ *   The FreeType SFNT table loading service (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -27,7 +27,7 @@
 
 
   /*
-   *  SFNT table loading service.
+   * SFNT table loading service.
    */
 
 #define FT_SERVICE_ID_SFNT_TABLE  "sfnt-table"
@@ -70,27 +70,12 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ )  \
   static const FT_Service_SFNT_TableRec  class_ =                      \
   {                                                                    \
     load_, get_, info_                                                 \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_SFNT_TABLEREC( class_, load_, get_, info_ ) \
-  void                                                                \
-  FT_Init_Class_ ## class_( FT_Service_SFNT_TableRec*  clazz )        \
-  {                                                                   \
-    clazz->load_table = load_;                                        \
-    clazz->get_table  = get_;                                         \
-    clazz->table_info = info_;                                        \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttcmap.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttcmap.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svttcmap.h                                                             */
-/*                                                                         */
-/*    The FreeType TrueType/sfnt cmap extra information service.           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  Masatake YAMATO, Redhat K.K.,                                          */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svttcmap.h
+ *
+ *   The FreeType TrueType/sfnt cmap extra information service.
+ *
+ * Copyright (C) 2003-2019 by
+ * Masatake YAMATO, Redhat K.K.,
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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. */
@@ -32,29 +32,28 @@
 #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 */
-  /*      `ttnameid.h'.                                                    */
-  /*                                                                       */
-  /*    format ::                                                          */
-  /*      The cmap format.  OpenType 1.6 defines the formats 0 (byte       */
-  /*      encoding table), 2~(high-byte mapping through table), 4~(segment */
-  /*      mapping to delta values), 6~(trimmed table mapping), 8~(mixed    */
-  /*      16-bit and 32-bit coverage), 10~(trimmed array), 12~(segmented   */
-  /*      coverage), 13~(last resort font), and 14 (Unicode Variation      */
-  /*      Sequences).                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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
+   *     `ttnameid.h`.
+   *
+   *   format ::
+   *     The cmap format.  OpenType 1.6 defines the formats 0 (byte encoding
+   *     table), 2~(high-byte mapping through table), 4~(segment mapping to
+   *     delta values), 6~(trimmed table mapping), 8~(mixed 16-bit and 32-bit
+   *     coverage), 10~(trimmed array), 12~(segmented coverage), 13~(last
+   *     resort font), and 14 (Unicode Variation Sequences).
+   */
   typedef struct  TT_CMapInfo_
   {
     FT_ULong  language;
@@ -73,7 +72,6 @@
     TT_CMap_Info_GetFunc  get_cmap_info;
   };
 
-#ifndef FT_CONFIG_OPTION_PIC
 
 #define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
   static const FT_Service_TTCMapsRec  class_ =                  \
@@ -81,20 +79,6 @@
     get_cmap_info_                                              \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
-  void                                                          \
-  FT_Init_Class_ ## class_( FT_Library              library,    \
-                            FT_Service_TTCMapsRec*  clazz )     \
-  {                                                             \
-    FT_UNUSED( library );                                       \
-                                                                \
-    clazz->get_cmap_info = get_cmap_info_;                      \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svtteng.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svtteng.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svtteng.h                                                              */
-/*                                                                         */
-/*    The FreeType TrueType engine query service (specification).          */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svtteng.h
+ *
+ *   The FreeType TrueType engine query service (specification).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVTTENG_H_
@@ -27,7 +27,7 @@
 
 
   /*
-   *  SFNT table loading service.
+   * SFNT table loading service.
    */
 
 #define FT_SERVICE_ID_TRUETYPE_ENGINE  "truetype-engine"
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttglyf.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svttglyf.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svttglyf.h                                                             */
-/*                                                                         */
-/*    The FreeType TrueType glyph service.                                 */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner.                                                          */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svttglyf.h
+ *
+ *   The FreeType TrueType glyph service.
+ *
+ * Copyright (C) 2007-2019 by
+ * David Turner.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 SVTTGLYF_H_
 #define SVTTGLYF_H_
@@ -39,25 +39,12 @@
   };
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ )  \
   static const FT_Service_TTGlyfRec  class_ =                 \
   {                                                           \
     get_location_                                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_SERVICE_TTGLYFREC( class_, get_location_ )  \
-  void                                                        \
-  FT_Init_Class_ ## class_( FT_Service_TTGlyfRec*  clazz )    \
-  {                                                           \
-    clazz->get_location = get_location_;                      \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
   /* */
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svwinfnt.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/services/svwinfnt.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  svwinfnt.h                                                             */
-/*                                                                         */
-/*    The FreeType Windows FNT/FONT service (specification).               */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * svwinfnt.h
+ *
+ *   The FreeType Windows FNT/FONT service (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/sfnt.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfnt.h                                                                 */
-/*                                                                         */
-/*    High-level `sfnt' driver interface (specification).                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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.h
+ *
+ *   High-level 'sfnt' driver interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -28,43 +28,46 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Init_Face_Func                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    First part of the SFNT face object initialization.  This finds     */
-  /*    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, in bits 0-15.  The numbered instance     */
-  /*                  index~+~1 of a GX (sub)font, if applicable, in bits  */
-  /*                  16-30.                                               */
-  /*                                                                       */
-  /*    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.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Init_Face_Func
+   *
+   * @description:
+   *   First part of the SFNT face object initialization.  This finds 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, in
+   *     bits 0-15.  The numbered instance index~+~1 of a GX (sub)font, if
+   *     applicable, in bits 16-30.
+   *
+   *   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,
@@ -73,36 +76,40 @@
                         FT_Parameter*  params );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_Face_Func                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Second part of the SFNT face object initialization.  This loads    */
-  /*    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, in bits 0-15.  The numbered instance     */
-  /*                  index~+~1 of a GX (sub)font, if applicable, in bits  */
-  /*                  16-30.                                               */
-  /*                                                                       */
-  /*    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().            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Face_Func
+   *
+   * @description:
+   *   Second part of the SFNT face object initialization.  This loads 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, in
+   *     bits 0-15.  The numbered instance index~+~1 of a GX (sub)font, if
+   *     applicable, in bits 16-30.
+   *
+   *   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,
@@ -111,64 +118,64 @@
                         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.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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_Any_Func                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Any_Func
+   *
+   * @description:
+   *   Load 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,
@@ -177,34 +184,39 @@
                        FT_ULong*  length );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Find_SBit_Image_Func                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Check 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.                                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Find_SBit_Image_Func
+   *
+   * @description:
+   *   Check 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,
@@ -214,78 +226,81 @@
                               FT_ULong        *aglyph_offset );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_SBit_Metrics_Func                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get 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.                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_SBit_Metrics_Func
+   *
+   * @description:
+   *   Get 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>                                                         */
-  /*    Load 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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_SBit_Image_Func
+   *
+   * @description:
+   *   Load 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,
@@ -296,130 +311,144 @@
                               TT_SBit_MetricsRec  *ametrics );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Set_SBit_Strike_Func                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Select an sbit strike for a given size request.                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face          :: The target face object.                           */
-  /*                                                                       */
-  /*    req           :: The size request.                                 */
-  /*                                                                       */
-  /* <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.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Set_SBit_Strike_Func
+   *
+   * @description:
+   *   Select an sbit strike for a given size request.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   req ::
+   *     The size request.
+   *
+   * @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_Size_Request  req,
                               FT_ULong*        astrike_index );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_Strike_Metrics_Func                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the metrics of a given strike.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face          :: The target face object.                           */
-  /*                                                                       */
-  /*    strike_index  :: The strike index.                                 */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    metrics       :: the metrics of the strike.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.  Returns an error if no     */
-  /*    such sbit strike exists.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Strike_Metrics_Func
+   *
+   * @description:
+   *   Load the metrics of a given strike.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   strike_index ::
+   *     The strike index.
+   *
+   * @output:
+   *   metrics ::
+   *     the metrics of the strike.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.  Returns an error if no such
+   *   sbit strike exists.
+   */
   typedef FT_Error
   (*TT_Load_Strike_Metrics_Func)( TT_Face           face,
                                   FT_ULong          strike_index,
                                   FT_Size_Metrics*  metrics );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Get_PS_Name_Func                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_PS_Name_Func
+   *
+   * @description:
+   *   Get 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>                                                         */
-  /*    Load a metrics table, which is a table with a horizontal and a     */
-  /*    vertical version.                                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the target face object.                    */
-  /*                                                                       */
-  /*    stream   :: The input stream.                                      */
-  /*                                                                       */
-  /*    vertical :: A boolean flag.  If set, load the vertical one.        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Metrics_Func
+   *
+   * @description:
+   *   Load a metrics table, which is a table with a horizontal and a
+   *   vertical version.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   *   vertical ::
+   *     A boolean flag.  If set, load the vertical one.
+   *
+   * @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_Get_Metrics_Func                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the horizontal or vertical header in a face object.           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the target face object.                    */
-  /*                                                                       */
-  /*    vertical :: A boolean flag.  If set, load vertical metrics.        */
-  /*                                                                       */
-  /*    gindex   :: The glyph index.                                       */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    abearing :: The horizontal (or vertical) bearing.  Set to zero in  */
-  /*                case of error.                                         */
-  /*                                                                       */
-  /*    aadvance :: The horizontal (or vertical) advance.  Set to zero in  */
-  /*                case of error.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_Metrics_Func
+   *
+   * @description:
+   *   Load the horizontal or vertical header in a face object.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   vertical ::
+   *     A boolean flag.  If set, load vertical metrics.
+   *
+   *   gindex ::
+   *     The glyph index.
+   *
+   * @output:
+   *   abearing ::
+   *     The horizontal (or vertical) bearing.  Set to zero in case of error.
+   *
+   *   aadvance ::
+   *     The horizontal (or vertical) advance.  Set to zero in case of error.
+   */
   typedef void
   (*TT_Get_Metrics_Func)( TT_Face     face,
                           FT_Bool     vertical,
@@ -428,57 +457,168 @@
                           FT_UShort*  aadvance );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Get_Name_Func                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    From the `name' table, return 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.              */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    name     :: The address of an allocated string pointer.  NULL if   */
-  /*                no name is present.                                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Set_Palette_Func
+   *
+   * @description:
+   *   Load the colors into `face->palette` for a given palette index.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   idx ::
+   *     The palette index.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   */
+  typedef FT_Error
+  (*TT_Set_Palette_Func)( TT_Face  face,
+                          FT_UInt  idx );
+
+
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_Colr_Layer_Func
+   *
+   * @description:
+   *   Iteratively get the color layer data of a given glyph index.
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   base_glyph ::
+   *     The glyph index the colored glyph layers are associated with.
+   *
+   * @inout:
+   *   iterator ::
+   *     An @FT_LayerIterator object.  For the first call you should set
+   *     `iterator->p` to `NULL`.  For all following calls, simply use the
+   *     same object again.
+   *
+   * @output:
+   *   aglyph_index ::
+   *     The glyph index of the current layer.
+   *
+   *   acolor_index ::
+   *     The color index into the font face's color palette of the current
+   *     layer.  The value 0xFFFF is special; it doesn't reference a palette
+   *     entry but indicates that the text foreground color should be used
+   *     instead (to be set up by the application outside of FreeType).
+   *
+   * @return:
+   *   Value~1 if everything is OK.  If there are no more layers (or if there
+   *   are no layers at all), value~0 gets returned.  In case of an error,
+   *   value~0 is returned also.
+   */
+  typedef FT_Bool
+  (*TT_Get_Colr_Layer_Func)( TT_Face            face,
+                             FT_UInt            base_glyph,
+                             FT_UInt           *aglyph_index,
+                             FT_UInt           *acolor_index,
+                             FT_LayerIterator*  iterator );
+
+
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Blend_Colr_Func
+   *
+   * @description:
+   *   Blend the bitmap in `new_glyph` into `base_glyph` using the color
+   *   specified by `color_index`.  If `color_index` is 0xFFFF, use
+   *   `face->foreground_color` if `face->have_foreground_color` is set.
+   *   Otherwise check `face->palette_data.palette_flags`: If present and
+   *   @FT_PALETTE_FOR_DARK_BACKGROUND is set, use BGRA value 0xFFFFFFFF
+   *   (white opaque).  Otherwise use BGRA value 0x000000FF (black opaque).
+   *
+   * @input:
+   *   face ::
+   *     The target face object.
+   *
+   *   color_index ::
+   *     Color index from the COLR table.
+   *
+   *   base_glyph ::
+   *     Slot for bitmap to be merged into.  The underlying bitmap may get
+   *     reallocated.
+   *
+   *   new_glyph ::
+   *     Slot to be incooperated into `base_glyph`.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.  Returns an error if
+   *   color_index is invalid or reallocation fails.
+   */
+  typedef FT_Error
+  (*TT_Blend_Colr_Func)( TT_Face       face,
+                         FT_UInt       color_index,
+                         FT_GlyphSlot  base_glyph,
+                         FT_GlyphSlot  new_glyph );
+
+
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_Name_Func
+   *
+   * @description:
+   *   From the 'name' table, return 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.
+   *
+   * @inout:
+   *   name ::
+   *     The address of an allocated string pointer.  `NULL` if no name is
+   *     present.
+   *
+   * @return:
+   *   FreeType error code.  0 means success.
+   */
   typedef FT_Error
   (*TT_Get_Name_Func)( TT_Face      face,
                        FT_UShort    nameid,
                        FT_String**  name );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Get_Name_ID_Func                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Search whether an ENGLISH version for a given name ID is in the    */
-  /*    `name' table.                                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A handle to the source face object.                    */
-  /*                                                                       */
-  /*    nameid   :: The name id of the name record to return.              */
-  /*                                                                       */
-  /* <Out>                                                                 */
-  /*    win      :: If non-negative, an index into the `name' table with   */
-  /*                the corresponding (3,1) or (3,0) Windows entry.        */
-  /*                                                                       */
-  /*    apple    :: If non-negative, an index into the `name' table with   */
-  /*                the corresponding (1,0) Apple entry.                   */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    1 if there is either a win or apple entry (or both), 0 otheriwse.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Get_Name_ID_Func
+   *
+   * @description:
+   *   Search whether an ENGLISH version for a given name ID is in the 'name'
+   *   table.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the source face object.
+   *
+   *   nameid ::
+   *     The name id of the name record to return.
+   *
+   * @output:
+   *   win ::
+   *     If non-negative, an index into the 'name' table with the
+   *     corresponding (3,1) or (3,0) Windows entry.
+   *
+   *   apple ::
+   *     If non-negative, an index into the 'name' table with the
+   *     corresponding (1,0) Apple entry.
+   *
+   * @return:
+   *   1 if there is either a win or apple entry (or both), 0 otheriwse.
+   */
   typedef FT_Bool
   (*TT_Get_Name_ID_Func)( TT_Face    face,
                           FT_UShort  nameid,
@@ -486,42 +626,45 @@
                           FT_Int    *apple );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Load_Table_Func                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load 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 uses `face->goto_table' to seek the stream to the     */
-  /*    start of the table, except while loading the font directory.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Load_Table_Func
+   *
+   * @description:
+   *   Load 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 uses `face->goto_table` to seek the stream to the start
+   *   of the table, except while loading the font directory.
+   */
   typedef FT_Error
   (*TT_Load_Table_Func)( TT_Face    face,
                          FT_Stream  stream );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <FuncType>                                                            */
-  /*    TT_Free_Table_Func                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Free a given TrueType table.                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the target face object.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @functype:
+   *   TT_Free_Table_Func
+   *
+   * @description:
+   *   Free a given TrueType table.
+   *
+   * @input:
+   *   face ::
+   *     A handle to the target face object.
+   */
   typedef void
   (*TT_Free_Table_Func)( TT_Face  face );
 
@@ -534,9 +677,14 @@
    *    Return the horizontal kerning value between two glyphs.
    *
    * @input:
-   *    face        :: A handle to the source face object.
-   *    left_glyph  :: The left glyph index.
-   *    right_glyph :: The right glyph index.
+   *    face ::
+   *      A handle to the source face object.
+   *
+   *    left_glyph ::
+   *      The left glyph index.
+   *
+   *    right_glyph ::
+   *      The right glyph index.
    *
    * @return:
    *    The kerning value in font units.
@@ -547,18 +695,18 @@
                              FT_UInt  right_glyph );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -616,6 +764,14 @@
     TT_Set_SBit_Strike_Func      set_sbit_strike;
     TT_Load_Strike_Metrics_Func  load_strike_metrics;
 
+    TT_Load_Table_Func           load_cpal;
+    TT_Load_Table_Func           load_colr;
+    TT_Free_Table_Func           free_cpal;
+    TT_Free_Table_Func           free_colr;
+    TT_Set_Palette_Func          set_palette;
+    TT_Get_Colr_Layer_Func       get_colr_layer;
+    TT_Blend_Colr_Func           colr_blend;
+
     TT_Get_Metrics_Func          get_metrics;
 
     TT_Get_Name_Func             get_name;
@@ -627,7 +783,6 @@
   /* transitional */
   typedef SFNT_Interface*   SFNT_Service;
 
-#ifndef FT_CONFIG_OPTION_PIC
 
 #define FT_DEFINE_SFNT_INTERFACE(        \
           class_,                        \
@@ -659,6 +814,13 @@
           free_eblc_,                    \
           set_sbit_strike_,              \
           load_strike_metrics_,          \
+          load_cpal_,                    \
+          load_colr_,                    \
+          free_cpal_,                    \
+          free_colr_,                    \
+          set_palette_,                  \
+          get_colr_layer_,               \
+          colr_blend_,                   \
           get_metrics_,                  \
           get_name_,                     \
           get_name_id_ )                 \
@@ -692,89 +854,18 @@
     free_eblc_,                          \
     set_sbit_strike_,                    \
     load_strike_metrics_,                \
+    load_cpal_,                          \
+    load_colr_,                          \
+    free_cpal_,                          \
+    free_colr_,                          \
+    set_palette_,                        \
+    get_colr_layer_,                     \
+    colr_blend_,                         \
     get_metrics_,                        \
     get_name_,                           \
     get_name_id_                         \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_INTERNAL( a, a_ )  \
-          clazz->a = a_;
-
-#define FT_DEFINE_SFNT_INTERFACE(                       \
-          class_,                                       \
-          goto_table_,                                  \
-          init_face_,                                   \
-          load_face_,                                   \
-          done_face_,                                   \
-          get_interface_,                               \
-          load_any_,                                    \
-          load_head_,                                   \
-          load_hhea_,                                   \
-          load_cmap_,                                   \
-          load_maxp_,                                   \
-          load_os2_,                                    \
-          load_post_,                                   \
-          load_name_,                                   \
-          free_name_,                                   \
-          load_kern_,                                   \
-          load_gasp_,                                   \
-          load_pclt_,                                   \
-          load_bhed_,                                   \
-          load_sbit_image_,                             \
-          get_psname_,                                  \
-          free_psnames_,                                \
-          get_kerning_,                                 \
-          load_font_dir_,                               \
-          load_hmtx_,                                   \
-          load_eblc_,                                   \
-          free_eblc_,                                   \
-          set_sbit_strike_,                             \
-          load_strike_metrics_,                         \
-          get_metrics_,                                 \
-          get_name_,                                    \
-          get_name_id_ )                                \
-  void                                                  \
-  FT_Init_Class_ ## class_( FT_Library       library,   \
-                            SFNT_Interface*  clazz )    \
-  {                                                     \
-    FT_UNUSED( library );                               \
-                                                        \
-    clazz->goto_table          = goto_table_;           \
-    clazz->init_face           = init_face_;            \
-    clazz->load_face           = load_face_;            \
-    clazz->done_face           = done_face_;            \
-    clazz->get_interface       = get_interface_;        \
-    clazz->load_any            = load_any_;             \
-    clazz->load_head           = load_head_;            \
-    clazz->load_hhea           = load_hhea_;            \
-    clazz->load_cmap           = load_cmap_;            \
-    clazz->load_maxp           = load_maxp_;            \
-    clazz->load_os2            = load_os2_;             \
-    clazz->load_post           = load_post_;            \
-    clazz->load_name           = load_name_;            \
-    clazz->free_name           = free_name_;            \
-    clazz->load_kern           = load_kern_;            \
-    clazz->load_gasp           = load_gasp_;            \
-    clazz->load_pclt           = load_pclt_;            \
-    clazz->load_bhed           = load_bhed_;            \
-    clazz->load_sbit_image     = load_sbit_image_;      \
-    clazz->get_psname          = get_psname_;           \
-    clazz->free_psnames        = free_psnames_;         \
-    clazz->get_kerning         = get_kerning_;          \
-    clazz->load_font_dir       = load_font_dir_;        \
-    clazz->load_hmtx           = load_hmtx_;            \
-    clazz->load_eblc           = load_eblc_;            \
-    clazz->free_eblc           = free_eblc_;            \
-    clazz->set_sbit_strike     = set_sbit_strike_;      \
-    clazz->load_strike_metrics = load_strike_metrics_;  \
-    clazz->get_metrics         = get_metrics_;          \
-    clazz->get_name            = get_name_;             \
-    clazz->get_name_id         = get_name_id_;          \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
 
 FT_END_HEADER
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/t1types.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/t1types.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1types.h                                                              */
-/*                                                                         */
-/*    Basic Type1/Type2 type definitions and interface (specification      */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1types.h
+ *
+ *   Basic Type1/Type2 type definitions and interface (specification
+ *   only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -45,28 +45,31 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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     */
-  /*                  + 1. When equal to code_first there are no valid     */
-  /*                  character codes.                                     */
-  /*                                                                       */
-  /*    char_index :: An array of corresponding glyph indices.             */
-  /*                                                                       */
-  /*    char_name  :: An array of corresponding glyph names.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 + 1. When equal to
+   *     code_first there are no valid character codes.
+   *
+   *   char_index ::
+   *     An array of corresponding glyph indices.
+   *
+   *   char_name ::
+   *     An array of corresponding glyph names.
+   */
   typedef struct  T1_EncodingRecRec_
   {
     FT_Int       num_chars;
--- a/src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/internal/tttypes.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  tttypes.h                                                              */
-/*                                                                         */
-/*    Basic SFNT/TrueType type definitions and interface (specification    */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * tttypes.h
+ *
+ *   Basic SFNT/TrueType type definitions and interface (specification
+ *   only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -24,6 +24,7 @@
 #include <ft2build.h>
 #include FT_TRUETYPE_TABLES_H
 #include FT_INTERNAL_OBJECTS_H
+#include FT_COLOR_H
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 #include FT_MULTIPLE_MASTERS_H
@@ -46,27 +47,30 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -77,25 +81,30 @@
   } 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'.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -109,24 +118,28 @@
   } 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).                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 */
@@ -137,19 +150,19 @@
   } TT_TableRec, *TT_Table;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    WOFF_HeaderRec                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    WOFF file format header.                                           */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    See                                                                */
-  /*                                                                       */
-  /*      https://www.w3.org/TR/WOFF/#WOFFHeader                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   WOFF_HeaderRec
+   *
+   * @description:
+   *   WOFF file format header.
+   *
+   * @fields:
+   *   See
+   *
+   *     https://www.w3.org/TR/WOFF/#WOFFHeader
+   */
   typedef struct  WOFF_HeaderRec_
   {
     FT_ULong   signature;
@@ -169,30 +182,36 @@
   } WOFF_HeaderRec, *WOFF_Header;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    WOFF_TableRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This structure describes a given table of a WOFF font.             */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    Tag        :: A four-bytes tag describing the table.               */
-  /*                                                                       */
-  /*    Offset     :: The offset of the table from the start of the WOFF   */
-  /*                  font in its resource.                                */
-  /*                                                                       */
-  /*    CompLength :: Compressed table length (in bytes).                  */
-  /*                                                                       */
-  /*    OrigLength :: Uncompressed table length (in bytes).                */
-  /*                                                                       */
-  /*    CheckSum   :: The table checksum.  This value can be ignored.      */
-  /*                                                                       */
-  /*    OrigOffset :: The uncompressed table file offset.  This value gets */
-  /*                  computed while constructing the (uncompressed) SFNT  */
-  /*                  header.  It is not contained in the WOFF file.       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   WOFF_TableRec
+   *
+   * @description:
+   *   This structure describes a given table of a WOFF font.
+   *
+   * @fields:
+   *   Tag ::
+   *     A four-bytes tag describing the table.
+   *
+   *   Offset ::
+   *     The offset of the table from the start of the WOFF font in its
+   *     resource.
+   *
+   *   CompLength ::
+   *     Compressed table length (in bytes).
+   *
+   *   OrigLength ::
+   *     Uncompressed table length (in bytes).
+   *
+   *   CheckSum ::
+   *     The table checksum.  This value can be ignored.
+   *
+   *   OrigOffset ::
+   *     The uncompressed table file offset.  This value gets computed while
+   *     constructing the (uncompressed) SFNT header.  It is not contained in
+   *     the WOFF file.
+   */
   typedef struct  WOFF_TableRec_
   {
     FT_ULong  Tag;           /* table ID                  */
@@ -206,20 +225,22 @@
   } WOFF_TableRec, *WOFF_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.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -228,45 +249,51 @@
   } TT_LongMetricsRec, *TT_LongMetrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    TT_ShortMetrics                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A simple type to model the short metrics of the `hmtx' and `vmtx'  */
-  /*    tables.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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_NameRec                                                         */
-  /*                                                                       */
-  /* <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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_NameRec
+   *
+   * @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_NameRec_
   {
     FT_UShort  platformID;
@@ -284,23 +311,26 @@
   } TT_NameRec, *TT_Name;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_LangTagRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure modeling language tag records in SFNT `name' tables,   */
-  /*    introduced in OpenType version 1.6.                                */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    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 UTF-16BE encoded characters.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_LangTagRec
+   *
+   * @description:
+   *   A structure modeling language tag records in SFNT 'name' tables,
+   *   introduced in OpenType version 1.6.
+   *
+   * @fields:
+   *   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 UTF-16BE
+   *     encoded characters.
+   */
   typedef struct TT_LangTagRec_
   {
     FT_UShort  stringLength;
@@ -314,30 +344,36 @@
   } TT_LangTagRec, *TT_LangTag;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                     */
-  /*                                                                       */
-  /*    numLangTagRecords :: The number of language tags in table.         */
-  /*                                                                       */
-  /*    langTags          :: An array of language tag records.             */
-  /*                                                                       */
-  /*    stream            :: The file's input stream.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   numLangTagRecords ::
+   *     The number of language tags in table.
+   *
+   *   langTags ::
+   *     An array of language tag records.
+   *
+   *   stream ::
+   *     The file's input stream.
+   */
   typedef struct  TT_NameTableRec_
   {
     FT_UShort       format;
@@ -364,21 +400,23 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -391,22 +429,25 @@
 #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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -429,33 +470,41 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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_UShort  height;
@@ -472,27 +521,32 @@
   } 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.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -505,57 +559,60 @@
   } 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.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -573,43 +630,53 @@
   } 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.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -631,47 +698,55 @@
   } 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                         */
-  /*                                                                       */
-  /*                         https://developer.apple.com/fonts/TrueType-Reference-Manual/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                             */
-  /*                                                                       */
-  /*                         https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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
+   *
+   *    https://developer.apple.com/fonts/TrueType-Reference-Manual/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
+   *
+   *    https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6bloc.html
+   */
   typedef struct  TT_SBit_StrikeRec_
   {
     FT_Int                  num_ranges;
@@ -695,21 +770,24 @@
   } 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.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -719,28 +797,34 @@
   } 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.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -768,24 +852,28 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -796,21 +884,22 @@
   } 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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -819,21 +908,24 @@
   } 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.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -879,25 +971,25 @@
 
   /*
    * These types are used to support a `BDF ' table that isn't part of the
-   * official TrueType specification.  It is mainly used in SFNT-based
-   * bitmap fonts that were generated from a set of BDF fonts.
+   * official TrueType specification.  It is mainly used in SFNT-based bitmap
+   * fonts that were generated from a set of BDF fonts.
    *
    * The format of the table is as follows.
    *
-   *   USHORT   version      `BDF ' table version number, should be 0x0001.
-   *   USHORT   strikeCount  Number of strikes (bitmap sizes) in this table.
-   *   ULONG    stringTable  Offset (from start of BDF table) to string
+   *   USHORT version `BDF ' table version number, should be 0x0001.  USHORT
+   *   strikeCount Number of strikes (bitmap sizes) in this table.  ULONG
+   *   stringTable Offset (from start of BDF table) to string
    *                         table.
    *
    * This is followed by an array of `strikeCount' descriptors, having the
    * following format.
    *
-   *   USHORT   ppem         Vertical pixels per EM for this strike.
-   *   USHORT   numItems     Number of items for this strike (properties and
+   *   USHORT ppem Vertical pixels per EM for this strike.  USHORT numItems
+   *   Number of items for this strike (properties and
    *                         atoms).  Maximum is 255.
    *
-   * This array in turn is followed by `strikeCount' value sets.  Each
-   * `value set' is an array of `numItems' items with the following format.
+   * This array in turn is followed by `strikeCount' value sets.  Each `value
+   * set' is an array of `numItems' items with the following format.
    *
    *   ULONG    item_name    Offset in string table to item name.
    *   USHORT   item_type    The item type.  Possible values are
@@ -945,31 +1037,30 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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'.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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).                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
 
 
@@ -981,31 +1072,34 @@
   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.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -1013,34 +1107,36 @@
                               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.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -1048,36 +1144,38 @@
                                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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 );
 
@@ -1124,270 +1222,317 @@
 #define TT_FACE_FLAG_VAR_MVAR  ( 1 << 8 )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                         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.         */
-  /*                                                                       */
-  /*    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 `vertical_info' 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. */
-  /*                                                                       */
-  /*    mm                   :: A pointer to the Multiple Masters service. */
-  /*                                                                       */
-  /*    var                  :: A pointer to the Metrics Variations        */
-  /*                            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_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.  */
-  /*                                                                       */
-  /*    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.                  */
-  /*                                                                       */
-  /*    interpreter          :: A pointer to the TrueType bytecode         */
-  /*                            interpreters field is also used to hook    */
-  /*                            the debugger in `ttdebug'.                 */
-  /*                                                                       */
-  /*    extra                :: Reserved for third-party font drivers.     */
-  /*                                                                       */
-  /*    postscript_name      :: The PS name of the font.  Used by the      */
-  /*                            postscript name service.                   */
-  /*                                                                       */
-  /*    glyf_len             :: The length of the `glyf' table.  Needed    */
-  /*                            for malformed `loca' tables.               */
-  /*                                                                       */
-  /*    glyf_offset          :: The file offset of the `glyf' table.       */
-  /*                                                                       */
-  /*    is_cff2              :: Set if the font format is CFF2.            */
-  /*                                                                       */
-  /*    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).                              */
-  /*                                                                       */
-  /*    variation_support    :: Flags that indicate which OpenType         */
-  /*                            functionality related to font variation    */
-  /*                            support is present, valid, and usable.     */
-  /*                            For example, TT_FACE_FLAG_VAR_FVAR is only */
-  /*                            set if we have at least one design axis.   */
-  /*                                                                       */
-  /*    var_postscript_prefix ::                                           */
-  /*                            The PostScript name prefix needed for      */
-  /*                            constructing a variation font instance's   */
-  /*                            PS name .                                  */
-  /*                                                                       */
-  /*    var_postscript_prefix_len ::                                       */
-  /*                            The length of the `var_postscript_prefix'  */
-  /*                            string.                                    */
-  /*                                                                       */
-  /*    horz_metrics_size    :: The size of the `hmtx' table.              */
-  /*                                                                       */
-  /*    vert_metrics_size    :: The size of the `vmtx' table.              */
-  /*                                                                       */
-  /*    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.             */
-  /*                                                                       */
-  /*    hdmx_table           :: A pointer to the `hdmx' table.             */
-  /*                                                                       */
-  /*    hdmx_table_size      :: The size of the `hdmx' table.              */
-  /*                                                                       */
-  /*    hdmx_record_count    :: The number of hdmx records.                */
-  /*                                                                       */
-  /*    hdmx_record_size     :: The size of a single hdmx record.          */
-  /*                                                                       */
-  /*    hdmx_record_sizes    :: An array holding the ppem sizes available  */
-  /*                            in the `hdmx' table.                       */
-  /*                                                                       */
-  /*    sbit_table           :: A pointer to the font's embedded bitmap    */
-  /*                            location table.                            */
-  /*                                                                       */
-  /*    sbit_table_size      :: The size of `sbit_table'.                  */
-  /*                                                                       */
-  /*    sbit_table_type      :: The sbit table type (CBLC, sbix, etc.).    */
-  /*                                                                       */
-  /*    sbit_num_strikes     :: The number of sbit strikes exposed by      */
-  /*                            FreeType's API, omitting invalid strikes.  */
-  /*                                                                       */
-  /*    sbit_strike_map      :: A mapping between the strike indices       */
-  /*                            exposed by the API and the indices used in */
-  /*                            the font's sbit table.                     */
-  /*                                                                       */
-  /*    kern_table           :: A pointer to the `kern' table.             */
-  /*                                                                       */
-  /*    kern_table_size      :: The size of the `kern' table.              */
-  /*                                                                       */
-  /*    num_kern_tables      :: The number of supported kern subtables     */
-  /*                            (up to 32; FreeType recognizes only        */
-  /*                            horizontal ones with format 0).            */
-  /*                                                                       */
-  /*    kern_avail_bits      :: The availability status of kern subtables; */
-  /*                            if bit n is set, table n is available.     */
-  /*                                                                       */
-  /*    kern_order_bits      :: The sortedness status of kern subtables;   */
-  /*                            if bit n is set, table n is sorted.        */
-  /*                                                                       */
-  /*    bdf                  :: Data related to an SFNT font's `bdf'       */
-  /*                            table; see `tttypes.h'.                    */
-  /*                                                                       */
-  /*    horz_metrics_offset  :: The file offset of the `hmtx' table.       */
-  /*                                                                       */
-  /*    vert_metrics_offset  :: The file offset of the `vmtx' table.       */
-  /*                                                                       */
-  /*    sph_found_func_flags :: Flags identifying special bytecode         */
-  /*                            functions (used by the v38 implementation  */
-  /*                            of the bytecode interpreter).              */
-  /*                                                                       */
-  /*    sph_compatibility_mode ::                                          */
-  /*                            This flag is set if we are in ClearType    */
-  /*                            backward compatibility mode (used by the   */
-  /*                            v38 implementation of the bytecode         */
-  /*                            interpreter).                              */
-  /*                                                                       */
-  /*    ebdt_start           :: The file offset of the sbit data table     */
-  /*                            (CBDT, bdat, etc.).                        */
-  /*                                                                       */
-  /*    ebdt_size            :: The size of the sbit data table.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   *                        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.
+   *
+   *   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
+   *     `vertical_info` 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.
+   *
+   *   mm ::
+   *     A pointer to the Multiple Masters service.
+   *
+   *   var ::
+   *     A pointer to the Metrics Variations 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_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.
+   *
+   *   palette_data ::
+   *     Some fields from the 'CPAL' table that are directly indexed.
+   *
+   *   palette_index ::
+   *     The current palette index, as set by @FT_Palette_Select.
+   *
+   *   palette ::
+   *     An array containing the current palette's colors.
+   *
+   *   have_foreground_color ::
+   *     There was a call to @FT_Palette_Set_Foreground_Color.
+   *
+   *   foreground_color ::
+   *     The current foreground color corresponding to 'CPAL' color index
+   *     0xFFFF.  Only valid if `have_foreground_color` is set.
+   *
+   *   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.
+   *
+   *   interpreter ::
+   *     A pointer to the TrueType bytecode interpreters field is also used
+   *     to hook the debugger in 'ttdebug'.
+   *
+   *   extra ::
+   *     Reserved for third-party font drivers.
+   *
+   *   postscript_name ::
+   *     The PS name of the font.  Used by the postscript name service.
+   *
+   *   glyf_len ::
+   *     The length of the 'glyf' table.  Needed for malformed 'loca' tables.
+   *
+   *   glyf_offset ::
+   *     The file offset of the 'glyf' table.
+   *
+   *   is_cff2 ::
+   *     Set if the font format is CFF2.
+   *
+   *   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).
+   *
+   *   variation_support ::
+   *     Flags that indicate which OpenType functionality related to font
+   *     variation support is present, valid, and usable.  For example,
+   *     TT_FACE_FLAG_VAR_FVAR is only set if we have at least one design
+   *     axis.
+   *
+   *   var_postscript_prefix ::
+   *     The PostScript name prefix needed for constructing a variation font
+   *     instance's PS name .
+   *
+   *   var_postscript_prefix_len ::
+   *     The length of the `var_postscript_prefix` string.
+   *
+   *   horz_metrics_size ::
+   *     The size of the 'hmtx' table.
+   *
+   *   vert_metrics_size ::
+   *     The size of the 'vmtx' table.
+   *
+   *   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.
+   *
+   *   hdmx_table ::
+   *     A pointer to the 'hdmx' table.
+   *
+   *   hdmx_table_size ::
+   *     The size of the 'hdmx' table.
+   *
+   *   hdmx_record_count ::
+   *     The number of hdmx records.
+   *
+   *   hdmx_record_size ::
+   *     The size of a single hdmx record.
+   *
+   *   hdmx_record_sizes ::
+   *     An array holding the ppem sizes available in the 'hdmx' table.
+   *
+   *   sbit_table ::
+   *     A pointer to the font's embedded bitmap location table.
+   *
+   *   sbit_table_size ::
+   *     The size of `sbit_table`.
+   *
+   *   sbit_table_type ::
+   *     The sbit table type (CBLC, sbix, etc.).
+   *
+   *   sbit_num_strikes ::
+   *     The number of sbit strikes exposed by FreeType's API, omitting
+   *     invalid strikes.
+   *
+   *   sbit_strike_map ::
+   *     A mapping between the strike indices exposed by the API and the
+   *     indices used in the font's sbit table.
+   *
+   *   cpal ::
+   *     A pointer to data related to the 'CPAL' table.  `NULL` if the table
+   *     is not available.
+   *
+   *   colr ::
+   *     A pointer to data related to the 'COLR' table.  `NULL` if the table
+   *     is not available.
+   *
+   *   kern_table ::
+   *     A pointer to the 'kern' table.
+   *
+   *   kern_table_size ::
+   *     The size of the 'kern' table.
+   *
+   *   num_kern_tables ::
+   *     The number of supported kern subtables (up to 32; FreeType
+   *     recognizes only horizontal ones with format 0).
+   *
+   *   kern_avail_bits ::
+   *     The availability status of kern subtables; if bit n is set, table n
+   *     is available.
+   *
+   *   kern_order_bits ::
+   *     The sortedness status of kern subtables; if bit n is set, table n is
+   *     sorted.
+   *
+   *   bdf ::
+   *     Data related to an SFNT font's 'bdf' table; see `tttypes.h`.
+   *
+   *   horz_metrics_offset ::
+   *     The file offset of the 'hmtx' table.
+   *
+   *   vert_metrics_offset ::
+   *     The file offset of the 'vmtx' table.
+   *
+   *   sph_found_func_flags ::
+   *     Flags identifying special bytecode functions (used by the v38
+   *     implementation of the bytecode interpreter).
+   *
+   *   sph_compatibility_mode ::
+   *     This flag is set if we are in ClearType backward compatibility mode
+   *     (used by the v38 implementation of the bytecode interpreter).
+   *
+   *   ebdt_start ::
+   *     The file offset of the sbit data table (CBDT, bdat, etc.).
+   *
+   *   ebdt_size ::
+   *     The size of the sbit data table.
+   */
   typedef struct  TT_FaceRec_
   {
     FT_FaceRec            root;
@@ -1445,11 +1590,11 @@
     void*                 psaux;
 
 
-    /***********************************************************************/
-    /*                                                                     */
-    /* Optional TrueType/OpenType tables                                   */
-    /*                                                                     */
-    /***********************************************************************/
+    /************************************************************************
+     *
+     * Optional TrueType/OpenType tables
+     *
+     */
 
     /* grid-fitting and scaling table */
     TT_GaspRec            gasp;                 /* the `gasp' table */
@@ -1464,12 +1609,19 @@
     /* postscript names table */
     TT_Post_NamesRec      postscript_names;
 
+    /* glyph colors */
+    FT_Palette_Data       palette_data;         /* since 2.10 */
+    FT_UShort             palette_index;
+    FT_Color*             palette;
+    FT_Bool               have_foreground_color;
+    FT_Color              foreground_color;
 
-    /***********************************************************************/
-    /*                                                                     */
-    /* TrueType-specific fields (ignored by the CFF driver)                */
-    /*                                                                     */
-    /***********************************************************************/
+
+    /************************************************************************
+     *
+     * TrueType-specific fields (ignored by the CFF driver)
+     *
+     */
 
     /* the font program, if any */
     FT_ULong              font_program_size;
@@ -1488,12 +1640,12 @@
     TT_Interpreter        interpreter;
 
 
-    /***********************************************************************/
-    /*                                                                     */
-    /* Other tables or fields. This is used by derivative formats like     */
-    /* OpenType.                                                           */
-    /*                                                                     */
-    /***********************************************************************/
+    /************************************************************************
+     *
+     * Other tables or fields. This is used by derivative formats like
+     * OpenType.
+     *
+     */
 
     FT_Generic            extra;
 
@@ -1562,40 +1714,53 @@
     FT_ULong              ebdt_size;
 #endif
 
+    /* since 2.10 */
+    void*                 cpal;
+    void*                 colr;
+
   } 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 maximum size in points of the zone.           */
-  /*                                                                       */
-  /*     max_contours :: Max size in links contours of the zone.           */
-  /*                                                                       */
-  /*     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.                          */
-  /*                                                                       */
-  /*     first_point  :: Offset of the current subglyph's first point.     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 maximum size in points of the zone.
+   *
+   *   max_contours ::
+   *     Max size in links contours of the zone.
+   *
+   *   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.
+   *
+   *   first_point ::
+   *     Offset of the current subglyph's first point.
+   */
   typedef struct  TT_GlyphZoneRec_
   {
     FT_Memory   memory;
@@ -1620,14 +1785,14 @@
   typedef struct TT_ExecContextRec_*  TT_ExecContext;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    TT_Size                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a TrueType size object.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @type:
+   *   TT_Size
+   *
+   * @description:
+   *   A handle to a TrueType size object.
+   */
   typedef struct TT_SizeRec_*  TT_Size;
 
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/t1tables.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/t1tables.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1tables.h                                                             */
-/*                                                                         */
-/*    Basic Type 1/Type 2 tables definitions and interface (specification  */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1tables.h
+ *
+ *   Basic Type 1/Type 2 tables definitions and interface (specification
+ *   only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -34,58 +34,58 @@
 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.     */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    PS_FontInfoRec                                                     */
-  /*    PS_FontInfo                                                        */
-  /*    PS_PrivateRec                                                      */
-  /*    PS_Private                                                         */
-  /*                                                                       */
-  /*    CID_FaceDictRec                                                    */
-  /*    CID_FaceDict                                                       */
-  /*    CID_FaceInfoRec                                                    */
-  /*    CID_FaceInfo                                                       */
-  /*                                                                       */
-  /*    FT_Has_PS_Glyph_Names                                              */
-  /*    FT_Get_PS_Font_Info                                                */
-  /*    FT_Get_PS_Font_Private                                             */
-  /*    FT_Get_PS_Font_Value                                               */
-  /*                                                                       */
-  /*    T1_Blend_Flags                                                     */
-  /*    T1_EncodingType                                                    */
-  /*    PS_Dict_Keys                                                       */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   type1_tables
+   *
+   * @title:
+   *   Type 1 Tables
+   *
+   * @abstract:
+   *   Type~1-specific font tables.
+   *
+   * @description:
+   *   This section contains the definition of Type~1-specific tables,
+   *   including structures related to other PostScript font formats.
+   *
+   * @order:
+   *   PS_FontInfoRec
+   *   PS_FontInfo
+   *   PS_PrivateRec
+   *   PS_Private
+   *
+   *   CID_FaceDictRec
+   *   CID_FaceDict
+   *   CID_FaceInfoRec
+   *   CID_FaceInfo
+   *
+   *   FT_Has_PS_Glyph_Names
+   *   FT_Get_PS_Font_Info
+   *   FT_Get_PS_Font_Private
+   *   FT_Get_PS_Font_Value
+   *
+   *   T1_Blend_Flags
+   *   T1_EncodingType
+   *   PS_Dict_Keys
+   *
+   */
 
 
   /* 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 Type~1 or Type~2 FontInfo dictionary.  */
-  /*    Note that for Multiple Master fonts, each instance has its own     */
-  /*    FontInfo dictionary.                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_FontInfoRec
+   *
+   * @description:
+   *   A structure used to model a Type~1 or Type~2 FontInfo dictionary.
+   *   Note that for Multiple Master fonts, each instance has its own
+   *   FontInfo dictionary.
+   */
   typedef struct  PS_FontInfoRec_
   {
     FT_String*  version;
@@ -101,40 +101,39 @@
   } PS_FontInfoRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_FontInfo                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a @PS_FontInfoRec structure.                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_FontInfo
+   *
+   * @description:
+   *   A handle to a @PS_FontInfoRec structure.
+   */
   typedef struct 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.                                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 Type~1 or Type~2 private dictionary.   */
-  /*    Note that for Multiple Master fonts, each instance has its own     */
-  /*    Private dictionary.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_PrivateRec
+   *
+   * @description:
+   *   A structure used to model a Type~1 or Type~2 private dictionary.  Note
+   *   that for Multiple Master fonts, each instance has its own Private
+   *   dictionary.
+   */
   typedef struct  PS_PrivateRec_
   {
     FT_Int     unique_id;
@@ -176,56 +175,55 @@
   } PS_PrivateRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    PS_Private                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a @PS_PrivateRec structure.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   PS_Private
+   *
+   * @description:
+   *   A handle to a @PS_PrivateRec structure.
+   */
   typedef struct 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.                                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                            */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    T1_BLEND_UNDERLINE_POSITION ::                                     */
-  /*    T1_BLEND_UNDERLINE_THICKNESS ::                                    */
-  /*    T1_BLEND_ITALIC_ANGLE ::                                           */
-  /*    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 ::                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   * @values:
+   *   T1_BLEND_UNDERLINE_POSITION ::
+   *   T1_BLEND_UNDERLINE_THICKNESS ::
+   *   T1_BLEND_ITALIC_ANGLE ::
+   *   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 ::
+   */
   typedef enum  T1_Blend_Flags_
   {
     /* required fields in a FontInfo blend dictionary */
@@ -252,7 +250,7 @@
 
 
   /* these constants are deprecated; use the corresponding */
-  /* `T1_Blend_Flags' values instead                       */
+  /* `T1_Blend_Flags` values instead                       */
 #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
@@ -330,14 +328,23 @@
   typedef PS_BlendRec  T1_Blend;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FaceDictRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to represent data in a CID top-level dictionary.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FaceDictRec
+   *
+   * @description:
+   *   A structure used to represent data in a CID top-level dictionary.  In
+   *   most cases, they are part of the font's '/FDArray' array.  Within a
+   *   CID font file, such (internal) subfont dictionaries are enclosed by
+   *   '%ADOBeginFontDict' and '%ADOEndFontDict' comments.
+   *
+   *   Note that `CID_FaceDictRec` misses a field for the '/FontName'
+   *   keyword, specifying the subfont's name (the top-level font name is
+   *   given by the '/CIDFontName' keyword).  This is an oversight, but it
+   *   doesn't limit the 'cid' font module's functionality because FreeType
+   *   neither needs this entry nor gives access to CID subfonts.
+   */
   typedef struct  CID_FaceDictRec_
   {
     PS_PrivateRec  private_dict;
@@ -345,8 +352,8 @@
     FT_UInt        len_buildchar;
     FT_Fixed       forcebold_threshold;
     FT_Pos         stroke_width;
-    FT_Fixed       expansion_factor;
-
+    FT_Fixed       expansion_factor;   /* this is a duplicate of           */
+                                       /* `private_dict->expansion_factor' */
     FT_Byte        paint_type;
     FT_Byte        font_type;
     FT_Matrix      font_matrix;
@@ -359,38 +366,38 @@
   } CID_FaceDictRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FaceDict                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a @CID_FaceDictRec structure.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FaceDict
+   *
+   * @description:
+   *   A handle to a @CID_FaceDictRec structure.
+   */
   typedef struct CID_FaceDictRec_*  CID_FaceDict;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FontDict                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This type is equivalent to @CID_FaceDictRec.  It is deprecated but */
-  /*    kept to maintain source compatibility between various versions of  */
-  /*    FreeType.                                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FontDict
+   *
+   * @description:
+   *   This type is equivalent to @CID_FaceDictRec.  It is deprecated but
+   *   kept to maintain source compatibility between various versions of
+   *   FreeType.
+   */
   typedef CID_FaceDictRec  CID_FontDict;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FaceInfoRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure used to represent CID Face information.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FaceInfoRec
+   *
+   * @description:
+   *   A structure used to represent CID Face information.
+   */
   typedef struct  CID_FaceInfoRec_
   {
     FT_String*      cid_font_name;
@@ -421,47 +428,45 @@
   } CID_FaceInfoRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    CID_FaceInfo                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a @CID_FaceInfoRec structure.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   CID_FaceInfo
+   *
+   * @description:
+   *   A handle to a @CID_FaceInfoRec structure.
+   */
   typedef struct 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.                                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *    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
+   *      face handle
    *
    * @return:
    *    Boolean.  True if glyph names are reliable.
@@ -471,7 +476,7 @@
   FT_Has_PS_Glyph_Names( FT_Face  face );
 
 
-  /************************************************************************
+  /**************************************************************************
    *
    * @function:
    *    FT_Get_PS_Font_Info
@@ -482,22 +487,22 @@
    *
    * @input:
    *    face ::
-   *       PostScript face handle.
+   *      PostScript face handle.
    *
    * @output:
    *    afont_info ::
-   *       Output font info structure pointer.
+   *      Output font info structure pointer.
    *
    * @return:
    *    FreeType error code.  0~means success.
    *
    * @note:
-   *    String pointers within the @PS_FontInfoRec structure are owned by
-   *    the face and don't need to be freed by the caller.  Missing entries
-   *    in the font's FontInfo dictionary are represented by NULL pointers.
+   *    String pointers within the @PS_FontInfoRec structure are owned by the
+   *    face and don't need to be freed by the caller.  Missing entries in
+   *    the font's FontInfo dictionary are represented by `NULL` pointers.
    *
    *    If the font's format is not PostScript-based, this function will
-   *    return the `FT_Err_Invalid_Argument' error code.
+   *    return the `FT_Err_Invalid_Argument` error code.
    *
    */
   FT_EXPORT( FT_Error )
@@ -505,7 +510,7 @@
                        PS_FontInfo  afont_info );
 
 
-  /************************************************************************
+  /**************************************************************************
    *
    * @function:
    *    FT_Get_PS_Font_Private
@@ -516,11 +521,11 @@
    *
    * @input:
    *    face ::
-   *       PostScript face handle.
+   *      PostScript face handle.
    *
    * @output:
    *    afont_private ::
-   *       Output private dictionary structure pointer.
+   *      Output private dictionary structure pointer.
    *
    * @return:
    *    FreeType error code.  0~means success.
@@ -530,7 +535,7 @@
    *    the face and don't need to be freed by the caller.
    *
    *    If the font's format is not PostScript-based, this function returns
-   *    the `FT_Err_Invalid_Argument' error code.
+   *    the `FT_Err_Invalid_Argument` error code.
    *
    */
   FT_EXPORT( FT_Error )
@@ -538,25 +543,24 @@
                           PS_Private  afont_private );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    T1_EncodingType                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration describing the `Encoding' entry in a Type 1         */
-  /*    dictionary.                                                        */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    T1_ENCODING_TYPE_NONE ::                                           */
-  /*    T1_ENCODING_TYPE_ARRAY ::                                          */
-  /*    T1_ENCODING_TYPE_STANDARD ::                                       */
-  /*    T1_ENCODING_TYPE_ISOLATIN1 ::                                      */
-  /*    T1_ENCODING_TYPE_EXPERT ::                                         */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.8                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   T1_EncodingType
+   *
+   * @description:
+   *   An enumeration describing the 'Encoding' entry in a Type 1 dictionary.
+   *
+   * @values:
+   *   T1_ENCODING_TYPE_NONE ::
+   *   T1_ENCODING_TYPE_ARRAY ::
+   *   T1_ENCODING_TYPE_STANDARD ::
+   *   T1_ENCODING_TYPE_ISOLATIN1 ::
+   *   T1_ENCODING_TYPE_EXPERT ::
+   *
+   * @since:
+   *   2.4.8
+   */
   typedef enum  T1_EncodingType_
   {
     T1_ENCODING_TYPE_NONE = 0,
@@ -568,66 +572,66 @@
   } T1_EncodingType;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    PS_Dict_Keys                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration used in calls to @FT_Get_PS_Font_Value to identify  */
-  /*    the Type~1 dictionary entry to retrieve.                           */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    PS_DICT_FONT_TYPE ::                                               */
-  /*    PS_DICT_FONT_MATRIX ::                                             */
-  /*    PS_DICT_FONT_BBOX ::                                               */
-  /*    PS_DICT_PAINT_TYPE ::                                              */
-  /*    PS_DICT_FONT_NAME ::                                               */
-  /*    PS_DICT_UNIQUE_ID ::                                               */
-  /*    PS_DICT_NUM_CHAR_STRINGS ::                                        */
-  /*    PS_DICT_CHAR_STRING_KEY ::                                         */
-  /*    PS_DICT_CHAR_STRING ::                                             */
-  /*    PS_DICT_ENCODING_TYPE ::                                           */
-  /*    PS_DICT_ENCODING_ENTRY ::                                          */
-  /*    PS_DICT_NUM_SUBRS ::                                               */
-  /*    PS_DICT_SUBR ::                                                    */
-  /*    PS_DICT_STD_HW ::                                                  */
-  /*    PS_DICT_STD_VW ::                                                  */
-  /*    PS_DICT_NUM_BLUE_VALUES ::                                         */
-  /*    PS_DICT_BLUE_VALUE ::                                              */
-  /*    PS_DICT_BLUE_FUZZ ::                                               */
-  /*    PS_DICT_NUM_OTHER_BLUES ::                                         */
-  /*    PS_DICT_OTHER_BLUE ::                                              */
-  /*    PS_DICT_NUM_FAMILY_BLUES ::                                        */
-  /*    PS_DICT_FAMILY_BLUE ::                                             */
-  /*    PS_DICT_NUM_FAMILY_OTHER_BLUES ::                                  */
-  /*    PS_DICT_FAMILY_OTHER_BLUE ::                                       */
-  /*    PS_DICT_BLUE_SCALE ::                                              */
-  /*    PS_DICT_BLUE_SHIFT ::                                              */
-  /*    PS_DICT_NUM_STEM_SNAP_H ::                                         */
-  /*    PS_DICT_STEM_SNAP_H ::                                             */
-  /*    PS_DICT_NUM_STEM_SNAP_V ::                                         */
-  /*    PS_DICT_STEM_SNAP_V ::                                             */
-  /*    PS_DICT_FORCE_BOLD ::                                              */
-  /*    PS_DICT_RND_STEM_UP ::                                             */
-  /*    PS_DICT_MIN_FEATURE ::                                             */
-  /*    PS_DICT_LEN_IV ::                                                  */
-  /*    PS_DICT_PASSWORD ::                                                */
-  /*    PS_DICT_LANGUAGE_GROUP ::                                          */
-  /*    PS_DICT_VERSION ::                                                 */
-  /*    PS_DICT_NOTICE ::                                                  */
-  /*    PS_DICT_FULL_NAME ::                                               */
-  /*    PS_DICT_FAMILY_NAME ::                                             */
-  /*    PS_DICT_WEIGHT ::                                                  */
-  /*    PS_DICT_IS_FIXED_PITCH ::                                          */
-  /*    PS_DICT_UNDERLINE_POSITION ::                                      */
-  /*    PS_DICT_UNDERLINE_THICKNESS ::                                     */
-  /*    PS_DICT_FS_TYPE ::                                                 */
-  /*    PS_DICT_ITALIC_ANGLE ::                                            */
-  /*                                                                       */
-  /* <Since>                                                               */
-  /*    2.4.8                                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   PS_Dict_Keys
+   *
+   * @description:
+   *   An enumeration used in calls to @FT_Get_PS_Font_Value to identify the
+   *   Type~1 dictionary entry to retrieve.
+   *
+   * @values:
+   *   PS_DICT_FONT_TYPE ::
+   *   PS_DICT_FONT_MATRIX ::
+   *   PS_DICT_FONT_BBOX ::
+   *   PS_DICT_PAINT_TYPE ::
+   *   PS_DICT_FONT_NAME ::
+   *   PS_DICT_UNIQUE_ID ::
+   *   PS_DICT_NUM_CHAR_STRINGS ::
+   *   PS_DICT_CHAR_STRING_KEY ::
+   *   PS_DICT_CHAR_STRING ::
+   *   PS_DICT_ENCODING_TYPE ::
+   *   PS_DICT_ENCODING_ENTRY ::
+   *   PS_DICT_NUM_SUBRS ::
+   *   PS_DICT_SUBR ::
+   *   PS_DICT_STD_HW ::
+   *   PS_DICT_STD_VW ::
+   *   PS_DICT_NUM_BLUE_VALUES ::
+   *   PS_DICT_BLUE_VALUE ::
+   *   PS_DICT_BLUE_FUZZ ::
+   *   PS_DICT_NUM_OTHER_BLUES ::
+   *   PS_DICT_OTHER_BLUE ::
+   *   PS_DICT_NUM_FAMILY_BLUES ::
+   *   PS_DICT_FAMILY_BLUE ::
+   *   PS_DICT_NUM_FAMILY_OTHER_BLUES ::
+   *   PS_DICT_FAMILY_OTHER_BLUE ::
+   *   PS_DICT_BLUE_SCALE ::
+   *   PS_DICT_BLUE_SHIFT ::
+   *   PS_DICT_NUM_STEM_SNAP_H ::
+   *   PS_DICT_STEM_SNAP_H ::
+   *   PS_DICT_NUM_STEM_SNAP_V ::
+   *   PS_DICT_STEM_SNAP_V ::
+   *   PS_DICT_FORCE_BOLD ::
+   *   PS_DICT_RND_STEM_UP ::
+   *   PS_DICT_MIN_FEATURE ::
+   *   PS_DICT_LEN_IV ::
+   *   PS_DICT_PASSWORD ::
+   *   PS_DICT_LANGUAGE_GROUP ::
+   *   PS_DICT_VERSION ::
+   *   PS_DICT_NOTICE ::
+   *   PS_DICT_FULL_NAME ::
+   *   PS_DICT_FAMILY_NAME ::
+   *   PS_DICT_WEIGHT ::
+   *   PS_DICT_IS_FIXED_PITCH ::
+   *   PS_DICT_UNDERLINE_POSITION ::
+   *   PS_DICT_UNDERLINE_THICKNESS ::
+   *   PS_DICT_FS_TYPE ::
+   *   PS_DICT_ITALIC_ANGLE ::
+   *
+   * @since:
+   *   2.4.8
+   */
   typedef enum  PS_Dict_Keys_
   {
     /* conventionally in the font dictionary */
@@ -687,7 +691,7 @@
   } PS_Dict_Keys;
 
 
-  /************************************************************************
+  /**************************************************************************
    *
    * @function:
    *    FT_Get_PS_Font_Value
@@ -697,57 +701,57 @@
    *
    * @input:
    *    face ::
-   *       PostScript face handle.
+   *      PostScript face handle.
    *
    *    key ::
-   *       An enumeration value representing the dictionary key to retrieve.
+   *      An enumeration value representing the dictionary key to retrieve.
    *
    *    idx ::
-   *       For array values, this specifies the index to be returned.
+   *      For array values, this specifies the index to be returned.
    *
    *    value ::
-   *       A pointer to memory into which to write the value.
+   *      A pointer to memory into which to write the value.
    *
    *    valen_len ::
-   *       The size, in bytes, of the memory supplied for the value.
+   *      The size, in bytes, of the memory supplied for the value.
    *
    * @output:
    *    value ::
-   *       The value matching the above key, if it exists.
+   *      The value matching the above key, if it exists.
    *
    * @return:
-   *    The amount of memory (in bytes) required to hold the requested
-   *    value (if it exists, -1 otherwise).
+   *    The amount of memory (in bytes) required to hold the requested value
+   *    (if it exists, -1 otherwise).
    *
    * @note:
    *    The values returned are not pointers into the internal structures of
-   *    the face, but are `fresh' copies, so that the memory containing them
+   *    the face, but are 'fresh' copies, so that the memory containing them
    *    belongs to the calling application.  This also enforces the
-   *    `read-only' nature of these values, i.e., this function cannot be
+   *    'read-only' nature of these values, i.e., this function cannot be
    *    used to manipulate the face.
    *
-   *    `value' is a void pointer because the values returned can be of
+   *    `value` is a void pointer because the values returned can be of
    *    various types.
    *
-   *    If either `value' is NULL or `value_len' is too small, just the
+   *    If either `value` is `NULL` or `value_len` is too small, just the
    *    required memory size for the requested entry is returned.
    *
-   *    The `idx' parameter is used, not only to retrieve elements of, for
+   *    The `idx` parameter is used, not only to retrieve elements of, for
    *    example, the FontMatrix or FontBBox, but also to retrieve name keys
    *    from the CharStrings dictionary, and the charstrings themselves.  It
    *    is ignored for atomic values.
    *
-   *    PS_DICT_BLUE_SCALE returns a value that is scaled up by 1000.  To
-   *    get the value as in the font stream, you need to divide by
-   *    65536000.0 (to remove the FT_Fixed scale, and the x1000 scale).
+   *    `PS_DICT_BLUE_SCALE` returns a value that is scaled up by 1000.  To
+   *    get the value as in the font stream, you need to divide by 65536000.0
+   *    (to remove the FT_Fixed scale, and the x1000 scale).
    *
    *    IMPORTANT: Only key/value pairs read by the FreeType interpreter can
-   *    be retrieved.  So, for example, PostScript procedures such as NP,
-   *    ND, and RD are not available.  Arbitrary keys are, obviously, not be
+   *    be retrieved.  So, for example, PostScript procedures such as NP, ND,
+   *    and RD are not available.  Arbitrary keys are, obviously, not be
    *    available either.
    *
    *    If the font's format is not PostScript-based, this function returns
-   *    the `FT_Err_Invalid_Argument' error code.
+   *    the `FT_Err_Invalid_Argument` error code.
    *
    * @since:
    *    2.4.8
--- a/src/java.desktop/share/native/libfreetype/include/freetype/ttnameid.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/ttnameid.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttnameid.h                                                             */
-/*                                                                         */
-/*    TrueType name ID definitions (specification only).                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttnameid.h
+ *
+ *   TrueType name ID definitions (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,53 +26,54 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    truetype_tables                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @section:
+   *   truetype_tables
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Possible values for the `platform' identifier code in the name        */
-  /* records of an SFNT `name' table.                                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Possible values for the 'platform' identifier code in the name records
+   * of an SFNT 'name' table.
+   *
+   */
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   TT_PLATFORM_XXX
    *
    * @description:
-   *   A list of valid values for the `platform_id' identifier code in
+   *   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
+   *     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).
+   *     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 ISO/IEC 10646 charmaps.  It is however
-   *     now deprecated.  See @TT_ISO_ID_XXX for a list of corresponding
-   *     `encoding_id' values.
+   *     This value was used to specify ISO/IEC 10646 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.
+   *     @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_MICROSOFT`, @TT_MS_ID_UNICODE_CS).
    *
    *   TT_PLATFORM_CUSTOM ::
    *     Used to indicate application-specific charmaps.
@@ -91,13 +92,13 @@
 #define TT_PLATFORM_ADOBE          7 /* artificial */
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   TT_APPLE_ID_XXX
    *
    * @description:
-   *   A list of valid values for the `encoding_id' for
+   *   A list of valid values for the `encoding_id` for
    *   @TT_PLATFORM_APPLE_UNICODE charmaps and name entries.
    *
    * @values:
@@ -117,8 +118,8 @@
    *     Unicode 3.1 and beyond, using UTF-32.
    *
    *   TT_APPLE_ID_VARIANT_SELECTOR ::
-   *     From Adobe, not Apple.  Not a normal cmap.  Specifies variations
-   *     on a real cmap.
+   *     From Adobe, not Apple.  Not a normal cmap.  Specifies variations on
+   *     a real cmap.
    *
    *   TT_APPLE_ID_FULL_UNICODE ::
    *     Used for fallback fonts that provide complete Unicode coverage with
@@ -134,13 +135,13 @@
 #define TT_APPLE_ID_FULL_UNICODE      6 /* used with type 13 cmaps       */
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   TT_MAC_ID_XXX
    *
    * @description:
-   *   A list of valid values for the `encoding_id' for
+   *   A list of valid values for the `encoding_id` for
    *   @TT_PLATFORM_MACINTOSH charmaps and name entries.
    */
 
@@ -180,14 +181,14 @@
 #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.
+   *   A list of valid values for the `encoding_id` for @TT_PLATFORM_ISO
+   *   charmaps and name entries.
    *
    *   Their use is now deprecated.
    *
@@ -205,13 +206,13 @@
 #define TT_ISO_ID_8859_1      2
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   TT_MS_ID_XXX
    *
    * @description:
-   *   A list of valid values for the `encoding_id' for
+   *   A list of valid values for the `encoding_id` for
    *   @TT_PLATFORM_MICROSOFT charmaps and name entries.
    *
    * @values:
@@ -219,16 +220,15 @@
    *     Microsoft symbol encoding.  See @FT_ENCODING_MS_SYMBOL.
    *
    *   TT_MS_ID_UNICODE_CS ::
-   *     Microsoft WGL4 charmap, matching Unicode.  See
-   *     @FT_ENCODING_UNICODE.
+   *     Microsoft WGL4 charmap, matching Unicode.  See @FT_ENCODING_UNICODE.
    *
    *   TT_MS_ID_SJIS ::
    *     Shift JIS Japanese encoding.  See @FT_ENCODING_SJIS.
    *
    *   TT_MS_ID_PRC ::
    *     Chinese encodings as used in the People's Republic of China (PRC).
-   *     This means the encodings GB~2312 and its supersets GBK and
-   *     GB~18030.  See @FT_ENCODING_PRC.
+   *     This means the encodings GB~2312 and its supersets GBK and GB~18030.
+   *     See @FT_ENCODING_PRC.
    *
    *   TT_MS_ID_BIG_5 ::
    *     Traditional Chinese as used in Taiwan and Hong Kong.  See
@@ -258,14 +258,14 @@
 #define TT_MS_ID_GB2312  TT_MS_ID_PRC
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @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!
+   *   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 ::
@@ -284,14 +284,14 @@
 #define TT_ADOBE_ID_LATIN_1   3
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   TT_MAC_LANGID_XXX
    *
    * @description:
    *   Possible values of the language identifier field in the name records
-   *   of the SFNT `name' table if the `platform' identifier code is
+   *   of the SFNT 'name' table if the 'platform' identifier code is
    *   @TT_PLATFORM_MACINTOSH.  These values are also used as return values
    *   for function @FT_Get_CMap_Language_ID.
    *
@@ -424,24 +424,24 @@
 #define TT_MAC_LANGID_AZERBAIJANI_ROMAN_SCRIPT    150
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   TT_MS_LANGID_XXX
    *
    * @description:
    *   Possible values of the language identifier field in the name records
-   *   of the SFNT `name' table if the `platform' identifier code is
+   *   of the SFNT 'name' table if the 'platform' identifier code is
    *   @TT_PLATFORM_MICROSOFT.  These values are also used as return values
    *   for function @FT_Get_CMap_Language_ID.
    *
    *   The canonical source for Microsoft's IDs is
    *
-   *     https://www.microsoft.com/globaldev/reference/lcid-all.mspx ,
+   *     https://docs.microsoft.com/en-us/windows/desktop/Intl/language-identifier-constants-and-strings ,
    *
    *   however, we only provide macros for language identifiers present in
    *   the OpenType specification: Microsoft has abandoned the concept of
-   *   LCIDs (language code identifiers), and format~1 of the `name' table
+   *   LCIDs (language code identifiers), and format~1 of the 'name' table
    *   provides a better mechanism for languages not covered here.
    *
    *   More legacy values not listed in the reference can be found in the
@@ -780,14 +780,14 @@
           TT_MS_LANGID_UIGHUR_PRC
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   TT_NAME_ID_XXX
    *
    * @description:
-   *   Possible values of the `name' identifier field in the name records of
-   *   an SFNT `name' table.  These values are platform independent.
+   *   Possible values of the 'name' identifier field in the name records of
+   *   an SFNT 'name' table.  These values are platform independent.
    */
 
 #define TT_NAME_ID_COPYRIGHT              0
@@ -834,14 +834,14 @@
 #define TT_NAME_ID_PREFERRED_SUBFAMILY  TT_NAME_ID_TYPOGRAPHIC_SUBFAMILY
 
 
-  /***********************************************************************
+  /**************************************************************************
    *
    * @enum:
    *   TT_UCR_XXX
    *
    * @description:
-   *   Possible bit mask values for the `ulUnicodeRangeX' fields in an SFNT
-   *   `OS/2' table.
+   *   Possible bit mask values for the `ulUnicodeRangeX` fields in an SFNT
+   *   'OS/2' table.
    */
 
   /* ulUnicodeRange1 */
--- a/src/java.desktop/share/native/libfreetype/include/freetype/tttables.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/tttables.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  tttables.h                                                             */
-/*                                                                         */
-/*    Basic SFNT/TrueType tables definitions and interface                 */
-/*    (specification only).                                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * tttables.h
+ *
+ *   Basic SFNT/TrueType tables definitions and interface
+ *   (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -33,53 +33,55 @@
 
 FT_BEGIN_HEADER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    truetype_tables                                                    */
-  /*                                                                       */
-  /* <Title>                                                               */
-  /*    TrueType Tables                                                    */
-  /*                                                                       */
-  /* <Abstract>                                                            */
-  /*    TrueType specific table types and functions.                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This section contains definitions of some basic tables specific to */
-  /*    TrueType and OpenType as well as some routines used to access and  */
-  /*    process them.                                                      */
-  /*                                                                       */
-  /* <Order>                                                               */
-  /*    TT_Header                                                          */
-  /*    TT_HoriHeader                                                      */
-  /*    TT_VertHeader                                                      */
-  /*    TT_OS2                                                             */
-  /*    TT_Postscript                                                      */
-  /*    TT_PCLT                                                            */
-  /*    TT_MaxProfile                                                      */
-  /*                                                                       */
-  /*    FT_Sfnt_Tag                                                        */
-  /*    FT_Get_Sfnt_Table                                                  */
-  /*    FT_Load_Sfnt_Table                                                 */
-  /*    FT_Sfnt_Table_Info                                                 */
-  /*                                                                       */
-  /*    FT_Get_CMap_Language_ID                                            */
-  /*    FT_Get_CMap_Format                                                 */
-  /*                                                                       */
-  /*    FT_PARAM_TAG_UNPATENTED_HINTING                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * @section:
+   *   truetype_tables
+   *
+   * @title:
+   *   TrueType Tables
+   *
+   * @abstract:
+   *   TrueType-specific table types and functions.
+   *
+   * @description:
+   *   This section contains definitions of some basic tables specific to
+   *   TrueType and OpenType as well as some routines used to access and
+   *   process them.
+   *
+   * @order:
+   *   TT_Header
+   *   TT_HoriHeader
+   *   TT_VertHeader
+   *   TT_OS2
+   *   TT_Postscript
+   *   TT_PCLT
+   *   TT_MaxProfile
+   *
+   *   FT_Sfnt_Tag
+   *   FT_Get_Sfnt_Table
+   *   FT_Load_Sfnt_Table
+   *   FT_Sfnt_Table_Info
+   *
+   *   FT_Get_CMap_Language_ID
+   *   FT_Get_CMap_Format
+   *
+   *   FT_PARAM_TAG_UNPATENTED_HINTING
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_Header                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType font header table.  All fields     */
-  /*    follow the OpenType specification.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_Header
+   *
+   * @description:
+   *   A structure to model a TrueType font header table.  All fields follow
+   *   the OpenType specification.  The 64-bit timestamps are stored in
+   *   two-element arrays `Created` and `Modified`, first the upper then
+   *   the lower 32~bits.
+   */
   typedef struct  TT_Header_
   {
     FT_Fixed   Table_Version;
@@ -91,8 +93,8 @@
     FT_UShort  Flags;
     FT_UShort  Units_Per_EM;
 
-    FT_Long    Created [2];
-    FT_Long    Modified[2];
+    FT_ULong   Created [2];
+    FT_ULong   Modified[2];
 
     FT_Short   xMin;
     FT_Short   yMin;
@@ -109,93 +111,93 @@
   } TT_Header;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_HoriHeader                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType horizontal header, the `hhea'      */
-  /*    table, as well as the corresponding horizontal metrics table,      */
-  /*    `hmtx'.                                                            */
-  /*                                                                       */
-  /* <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.                                   */
-  /*                                                                       */
-  /*    caret_Offset           :: The cursor's offset for slanted fonts.   */
-  /*                                                                       */
-  /*    Reserved               :: 8~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>                                                                */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `caret_Slope_Rise', */
-  /*    `caret_Slope_Run', and `caret_Offset'.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_HoriHeader
+   *
+   * @description:
+   *   A structure to model a TrueType horizontal header, the 'hhea' table,
+   *   as well as the corresponding horizontal metrics table, 'hmtx'.
+   *
+   * @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.
+   *
+   *   caret_Offset ::
+   *     The cursor's offset for slanted fonts.
+   *
+   *   Reserved ::
+   *     8~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:
+   *   For an OpenType variation font, the values of the following fields can
+   *   change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+   *   the font contains an 'MVAR' table: `caret_Slope_Rise`,
+   *   `caret_Slope_Run`, and `caret_Offset`.
+   */
   typedef struct  TT_HoriHeader_
   {
     FT_Fixed   Version;
@@ -219,7 +221,7 @@
 
     /* The following fields are not defined by the OpenType specification */
     /* but they are used to connect the metrics header to the relevant    */
-    /* `hmtx' table.                                                      */
+    /* 'hmtx' table.                                                      */
 
     void*      long_metrics;
     void*      short_metrics;
@@ -227,97 +229,93 @@
   } 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,        */
-  /*    `vmtx'.                                                            */
-  /*                                                                       */
-  /* <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.  */
-  /*                                                                       */
-  /*    Reserved                :: 8~reserved bytes.                       */
-  /*                                                                       */
-  /*    metric_Data_Format      :: Always~0.                               */
-  /*                                                                       */
-  /*    number_Of_VMetrics      :: 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>                                                                */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `Ascender',         */
-  /*    `Descender', `Line_Gap', `caret_Slope_Rise', `caret_Slope_Run',    */
-  /*    and `caret_Offset'.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_VertHeader
+   *
+   * @description:
+   *   A structure used to model a TrueType vertical header, the 'vhea'
+   *   table, as well as the corresponding vertical metrics table, 'vmtx'.
+   *
+   * @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.
+   *
+   *   Reserved ::
+   *     8~reserved bytes.
+   *
+   *   metric_Data_Format ::
+   *     Always~0.
+   *
+   *   number_Of_VMetrics ::
+   *     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:
+   *   For an OpenType variation font, the values of the following fields can
+   *   change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+   *   the font contains an 'MVAR' table: `Ascender`, `Descender`,
+   *   `Line_Gap`, `caret_Slope_Rise`, `caret_Slope_Run`, and `caret_Offset`.
+   */
   typedef struct  TT_VertHeader_
   {
     FT_Fixed   Version;
@@ -341,7 +339,7 @@
 
     /* The following fields are not defined by the OpenType specification */
     /* but they are used to connect the metrics header to the relevant    */
-    /* `vmtx' table.                                                      */
+    /* 'vmtx' table.                                                      */
 
     void*      long_metrics;
     void*      short_metrics;
@@ -349,33 +347,31 @@
   } TT_VertHeader;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_OS2                                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType `OS/2' table.  All fields comply   */
-  /*    to the OpenType specification.                                     */
-  /*                                                                       */
-  /*    Note that we now support old Mac fonts that do not include an      */
-  /*    `OS/2' table.  In this case, the `version' field is always set to  */
-  /*    0xFFFF.                                                            */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `sCapHeight',       */
-  /*    `sTypoAscender', `sTypoDescender', `sTypoLineGap', `sxHeight',     */
-  /*    `usWinAscent', `usWinDescent', `yStrikeoutPosition',               */
-  /*    `yStrikeoutSize', `ySubscriptXOffset', `ySubScriptXSize',          */
-  /*    `ySubscriptYOffset', `ySubscriptYSize', `ySuperscriptXOffset',     */
-  /*    `ySuperscriptXSize', `ySuperscriptYOffset', and                    */
-  /*    `ySuperscriptYSize'.                                               */
-  /*                                                                       */
-  /*    Possible values for bits in the `ulUnicodeRangeX' fields are given */
-  /*    by the @TT_UCR_XXX macros.                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_OS2
+   *
+   * @description:
+   *   A structure to model a TrueType 'OS/2' table.  All fields comply to
+   *   the OpenType specification.
+   *
+   *   Note that we now support old Mac fonts that do not include an 'OS/2'
+   *   table.  In this case, the `version` field is always set to 0xFFFF.
+   *
+   * @note:
+   *   For an OpenType variation font, the values of the following fields can
+   *   change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+   *   the font contains an 'MVAR' table: `sCapHeight`, `sTypoAscender`,
+   *   `sTypoDescender`, `sTypoLineGap`, `sxHeight`, `usWinAscent`,
+   *   `usWinDescent`, `yStrikeoutPosition`, `yStrikeoutSize`,
+   *   `ySubscriptXOffset`, `ySubScriptXSize`, `ySubscriptYOffset`,
+   *   `ySubscriptYSize`, `ySuperscriptXOffset`, `ySuperscriptXSize`,
+   *   `ySuperscriptYOffset`, and `ySuperscriptYSize`.
+   *
+   *   Possible values for bits in the `ulUnicodeRangeX` fields are given by
+   *   the @TT_UCR_XXX macros.
+   */
 
   typedef struct  TT_OS2_
   {
@@ -435,23 +431,23 @@
   } TT_OS2;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_Postscript                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType `post' table.  All fields comply   */
-  /*    to the OpenType specification.  This structure does not reference  */
-  /*    a font's PostScript glyph names; use @FT_Get_Glyph_Name to         */
-  /*    retrieve them.                                                     */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    For an OpenType variation font, the values of the following fields */
-  /*    can change after a call to @FT_Set_Var_Design_Coordinates (and     */
-  /*    friends) if the font contains an `MVAR' table: `underlinePosition' */
-  /*    and `underlineThickness'.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_Postscript
+   *
+   * @description:
+   *   A structure to model a TrueType 'post' table.  All fields comply to
+   *   the OpenType specification.  This structure does not reference a
+   *   font's PostScript glyph names; use @FT_Get_Glyph_Name to retrieve
+   *   them.
+   *
+   * @note:
+   *   For an OpenType variation font, the values of the following fields can
+   *   change after a call to @FT_Set_Var_Design_Coordinates (and friends) if
+   *   the font contains an 'MVAR' table: `underlinePosition` and
+   *   `underlineThickness`.
+   */
   typedef struct  TT_Postscript_
   {
     FT_Fixed  FormatType;
@@ -464,21 +460,21 @@
     FT_ULong  minMemType1;
     FT_ULong  maxMemType1;
 
-    /* Glyph names follow in the `post' table, but we don't */
+    /* Glyph names follow in the 'post' table, but we don't */
     /* load them by default.                                */
 
   } TT_Postscript;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_PCLT                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A structure to model a TrueType `PCLT' table.  All fields comply   */
-  /*    to the OpenType specification.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_PCLT
+   *
+   * @description:
+   *   A structure to model a TrueType 'PCLT' table.  All fields comply to
+   *   the OpenType specification.
+   */
   typedef struct  TT_PCLT_
   {
     FT_Fixed   Version;
@@ -500,70 +496,75 @@
   } TT_PCLT;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    TT_MaxProfile                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The maximum profile (`maxp') table contains many max values, which */
-  /*    can be used to pre-allocate arrays for speeding up glyph loading   */
-  /*    and hinting.                                                       */
-  /*                                                                       */
-  /* <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   */
-  /*                             `maxCompositePoints'.                     */
-  /*                                                                       */
-  /*    maxContours           :: The maximum number of contours in a       */
-  /*                             non-composite TrueType glyph.  See also   */
-  /*                             `maxCompositeContours'.                   */
-  /*                                                                       */
-  /*    maxCompositePoints    :: The maximum number of points in a         */
-  /*                             composite TrueType glyph.  See also       */
-  /*                             `maxPoints'.                              */
-  /*                                                                       */
-  /*    maxCompositeContours  :: The maximum number of contours in a       */
-  /*                             composite TrueType glyph.  See also       */
-  /*                             `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.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @struct:
+   *   TT_MaxProfile
+   *
+   * @description:
+   *   The maximum profile ('maxp') table contains many max values, which can
+   *   be used to pre-allocate arrays for speeding up glyph loading and
+   *   hinting.
+   *
+   * @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 `maxCompositePoints`.
+   *
+   *   maxContours ::
+   *     The maximum number of contours in a non-composite TrueType glyph.
+   *     See also `maxCompositeContours`.
+   *
+   *   maxCompositePoints ::
+   *     The maximum number of points in a composite TrueType glyph.  See
+   *     also `maxPoints`.
+   *
+   *   maxCompositeContours ::
+   *     The maximum number of contours in a composite TrueType glyph.  See
+   *     also `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;
@@ -585,31 +586,38 @@
   } TT_MaxProfile;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Enum>                                                                */
-  /*    FT_Sfnt_Tag                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An enumeration to specify indices of SFNT tables loaded and parsed */
-  /*    by FreeType during initialization of an SFNT font.  Used in the    */
-  /*    @FT_Get_Sfnt_Table API function.                                   */
-  /*                                                                       */
-  /* <Values>                                                              */
-  /*    FT_SFNT_HEAD :: To access the font's @TT_Header structure.         */
-  /*                                                                       */
-  /*    FT_SFNT_MAXP :: To access the font's @TT_MaxProfile structure.     */
-  /*                                                                       */
-  /*    FT_SFNT_OS2  :: To access the font's @TT_OS2 structure.            */
-  /*                                                                       */
-  /*    FT_SFNT_HHEA :: To access the font's @TT_HoriHeader structure.     */
-  /*                                                                       */
-  /*    FT_SFNT_VHEA :: To access the font's @TT_VertHeader structure.     */
-  /*                                                                       */
-  /*    FT_SFNT_POST :: To access the font's @TT_Postscript structure.     */
-  /*                                                                       */
-  /*    FT_SFNT_PCLT :: To access the font's @TT_PCLT structure.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @enum:
+   *   FT_Sfnt_Tag
+   *
+   * @description:
+   *   An enumeration to specify indices of SFNT tables loaded and parsed by
+   *   FreeType during initialization of an SFNT font.  Used in the
+   *   @FT_Get_Sfnt_Table API function.
+   *
+   * @values:
+   *   FT_SFNT_HEAD ::
+   *     To access the font's @TT_Header structure.
+   *
+   *   FT_SFNT_MAXP ::
+   *     To access the font's @TT_MaxProfile structure.
+   *
+   *   FT_SFNT_OS2 ::
+   *     To access the font's @TT_OS2 structure.
+   *
+   *   FT_SFNT_HHEA ::
+   *     To access the font's @TT_HoriHeader structure.
+   *
+   *   FT_SFNT_VHEA ::
+   *     To access the font's @TT_VertHeader structure.
+   *
+   *   FT_SFNT_POST ::
+   *     To access the font's @TT_Postscript structure.
+   *
+   *   FT_SFNT_PCLT ::
+   *     To access the font's @TT_PCLT structure.
+   */
   typedef enum  FT_Sfnt_Tag_
   {
     FT_SFNT_HEAD,
@@ -624,7 +632,7 @@
 
   } FT_Sfnt_Tag;
 
-  /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag' */
+  /* these constants are deprecated; use the corresponding `FT_Sfnt_Tag` */
   /* values instead                                                      */
 #define ft_sfnt_head  FT_SFNT_HEAD
 #define ft_sfnt_maxp  FT_SFNT_MAXP
@@ -635,44 +643,46 @@
 #define ft_sfnt_pclt  FT_SFNT_PCLT
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_Sfnt_Table                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return a pointer to a given SFNT table stored 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 NULL in case of    */
-  /*    error, or if the corresponding table was not found *OR* loaded     */
-  /*    from the file.                                                     */
-  /*                                                                       */
-  /*    Use a typecast according to `tag' to access the structure          */
-  /*    elements.                                                          */
-  /*                                                                       */
-  /* <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, and opentype drivers.  See @FT_Sfnt_Tag for */
-  /*    a list.                                                            */
-  /*                                                                       */
-  /*    Here an example how to access the `vhea' table:                    */
-  /*                                                                       */
-  /*    {                                                                  */
-  /*      TT_VertHeader*  vert_header;                                     */
-  /*                                                                       */
-  /*                                                                       */
-  /*      vert_header =                                                    */
-  /*        (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA );       */
-  /*    }                                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_Sfnt_Table
+   *
+   * @description:
+   *   Return a pointer to a given SFNT table stored 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 `NULL` in case of
+   *   error, or if the corresponding table was not found **OR** loaded from
+   *   the file.
+   *
+   *   Use a typecast according to `tag` to access the structure elements.
+   *
+   * @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, and opentype drivers.  See @FT_Sfnt_Tag for a
+   *   list.
+   *
+   * @example:
+   *   Here is an example demonstrating access to the 'vhea' table.
+   *
+   *   ```
+   *     TT_VertHeader*  vert_header;
+   *
+   *
+   *     vert_header =
+   *       (TT_VertHeader*)FT_Get_Sfnt_Table( face, FT_SFNT_VHEA );
+   *   ```
+   */
   FT_EXPORT( void* )
   FT_Get_Sfnt_Table( FT_Face      face,
                      FT_Sfnt_Tag  tag );
@@ -691,8 +701,8 @@
    *     A handle to the source face.
    *
    *   tag ::
-   *     The four-byte tag of the table to load.  Use value~0 if you want
-   *     to access the whole font file.  Otherwise, you can use one of the
+   *     The four-byte tag of the table to load.  Use 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.
    *
@@ -706,10 +716,10 @@
    *
    * @inout:
    *   length ::
-   *     If the `length' parameter is NULL, try to load the whole table.
+   *     If the `length` parameter is `NULL`, try to load the whole table.
    *     Return an error code if it fails.
    *
-   *     Else, if `*length' is~0, exit immediately while returning the
+   *     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
@@ -720,21 +730,21 @@
    *
    * @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:
+   *   function with `*length` set to~0, as in the following example:
    *
-   *     {
-   *       FT_ULong  length = 0;
+   *   ```
+   *     FT_ULong  length = 0;
    *
    *
-   *       error = FT_Load_Sfnt_Table( face, tag, 0, NULL, &length );
-   *       if ( error ) { ... table does not exist ... }
+   *     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 ... }
+   *     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 ... }
-   *     }
+   *     error = FT_Load_Sfnt_Table( face, tag, 0, buffer, &length );
+   *     if ( error ) { ... could not load table ... }
+   *   ```
    *
    *   Note that structures like @TT_Header or @TT_OS2 can't be used with
    *   this function; they are limited to @FT_Get_Sfnt_Table.  Reason is that
@@ -768,14 +778,14 @@
    *
    * @inout:
    *   tag ::
-   *     The name tag of the SFNT table.  If the value is NULL, `table_index'
-   *     is ignored, and `length' returns the number of SFNT tables in the
-   *     font.
+   *     The name tag of the SFNT table.  If the value is `NULL`,
+   *     `table_index` is ignored, and `length` returns the number of SFNT
+   *     tables in the font.
    *
    * @output:
    *   length ::
-   *     The length of the SFNT table (or the number of SFNT tables, depending
-   *     on `tag').
+   *     The length of the SFNT table (or the number of SFNT tables,
+   *     depending on `tag`).
    *
    * @return:
    *   FreeType error code.  0~means success.
@@ -792,46 +802,46 @@
                       FT_ULong  *length );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_CMap_Language_ID                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return cmap language ID as specified in the OpenType standard.     */
-  /*    Definitions of language ID values are in file @FT_TRUETYPE_IDS_H.  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    charmap ::                                                         */
-  /*      The target charmap.                                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The language ID of `charmap'.  If `charmap' doesn't belong to an   */
-  /*    SFNT face, just return~0 as the default value.                     */
-  /*                                                                       */
-  /*    For a format~14 cmap (to access Unicode IVS), the return value is  */
-  /*    0xFFFFFFFF.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_CMap_Language_ID
+   *
+   * @description:
+   *   Return cmap language ID as specified in the OpenType standard.
+   *   Definitions of language ID values are in file @FT_TRUETYPE_IDS_H.
+   *
+   * @input:
+   *   charmap ::
+   *     The target charmap.
+   *
+   * @return:
+   *   The language ID of `charmap`.  If `charmap` doesn't belong to an SFNT
+   *   face, just return~0 as the default value.
+   *
+   *   For a format~14 cmap (to access Unicode IVS), the return value is
+   *   0xFFFFFFFF.
+   */
   FT_EXPORT( FT_ULong )
   FT_Get_CMap_Language_ID( FT_CharMap  charmap );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Get_CMap_Format                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the format of an SFNT `cmap' table.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    charmap ::                                                         */
-  /*      The target charmap.                                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The format of `charmap'.  If `charmap' doesn't belong to an SFNT   */
-  /*    face, return -1.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @function:
+   *   FT_Get_CMap_Format
+   *
+   * @description:
+   *   Return the format of an SFNT 'cmap' table.
+   *
+   * @input:
+   *   charmap ::
+   *     The target charmap.
+   *
+   * @return:
+   *   The format of `charmap`.  If `charmap` doesn't belong to an SFNT face,
+   *   return -1.
+   */
   FT_EXPORT( FT_Long )
   FT_Get_CMap_Format( FT_CharMap  charmap );
 
--- a/src/java.desktop/share/native/libfreetype/include/freetype/tttags.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/freetype/tttags.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  tttags.h                                                               */
-/*                                                                         */
-/*    Tags for TrueType and OpenType tables (specification only).          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * tttags.h
+ *
+ *   Tags for TrueType and OpenType tables (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -46,6 +46,8 @@
 #define TTAG_CFF2  FT_MAKE_TAG( 'C', 'F', 'F', '2' )
 #define TTAG_CID   FT_MAKE_TAG( 'C', 'I', 'D', ' ' )
 #define TTAG_cmap  FT_MAKE_TAG( 'c', 'm', 'a', 'p' )
+#define TTAG_COLR  FT_MAKE_TAG( 'C', 'O', 'L', 'R' )
+#define TTAG_CPAL  FT_MAKE_TAG( 'C', 'P', 'A', 'L' )
 #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' )
--- a/src/java.desktop/share/native/libfreetype/include/ft2build.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/include/ft2build.h	Thu May 09 16:09:39 2019 -0700
@@ -1,34 +1,36 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ft2build.h                                                             */
-/*                                                                         */
-/*    FreeType 2 build and setup macros.                                   */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ft2build.h
+ *
+ *   FreeType 2 build and setup macros.
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 `entry point' for FreeType header file inclusions.  It is */
-  /* the only header file which should be included directly; all other     */
-  /* FreeType header files should be accessed with macro names (after      */
-  /* including `ft2build.h').                                              */
-  /*                                                                       */
-  /* A typical example is                                                  */
-  /*                                                                       */
-  /*   #include <ft2build.h>                                               */
-  /*   #include FT_FREETYPE_H                                              */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This is the 'entry point' for FreeType header file inclusions.  It is
+   * the only header file which should be included directly; all other
+   * FreeType header files should be accessed with macro names (after
+   * including `ft2build.h`).
+   *
+   * A typical example is
+   *
+   * ```
+   *   #include <ft2build.h>
+   *   #include FT_FREETYPE_H
+   * ```
+   *
+   */
 
 
 #ifndef FT2BUILD_H_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afangles.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afangles.c	Thu May 09 16:09:39 2019 -0700
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afangles.c                                                             */
-/*                                                                         */
-/*    Routines used to compute vector angles with limited accuracy         */
-/*    and very high speed.  It also contains sorting routines (body).      */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afangles.c
+ *
+ *   Routines used to compute vector angles with limited accuracy
+ *   and very high speed.  It also contains sorting routines (body).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "aftypes.h"
 
 
   /*
-   *  We are not using `af_angle_atan' anymore, but we keep the source
-   *  code below just in case...
+   * We are not using `af_angle_atan' anymore, but we keep the source
+   * code below just in case...
    */
 
 
@@ -30,16 +30,16 @@
 
 
   /*
-   *  The trick here is to realize that we don't need a very accurate angle
-   *  approximation.  We are going to use the result of `af_angle_atan' to
-   *  only compare the sign of angle differences, or check whether its
-   *  magnitude is very small.
+   * The trick here is to realize that we don't need a very accurate angle
+   * approximation.  We are going to use the result of `af_angle_atan' to
+   * only compare the sign of angle differences, or check whether its
+   * magnitude is very small.
    *
-   *  The approximation
+   * The approximation
    *
-   *    dy * PI / (|dx|+|dy|)
+   *   dy * PI / (|dx|+|dy|)
    *
-   *  should be enough, and much faster to compute.
+   * should be enough, and much faster to compute.
    */
   FT_LOCAL_DEF( AF_Angle )
   af_angle_atan( FT_Fixed  dx,
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afangles.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afangles.h	Thu May 09 16:09:39 2019 -0700
@@ -1,7 +1,7 @@
 /*
- *  afangles.h
+ * afangles.h
  *
- *  This is a dummy file, used to please the build system.  It is never
- *  included by the auto-fitter sources.
+ * This is a dummy file, used to please the build system.  It is never
+ * included by the auto-fitter sources.
  *
  */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afblue.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afblue.c	Thu May 09 16:09:39 2019 -0700
@@ -1,22 +1,22 @@
 /* This file has been generated by the Perl script `afblue.pl', */
 /* using data from file `afblue.dat'.                           */
 
-/***************************************************************************/
-/*                                                                         */
-/*  afblue.c                                                               */
-/*                                                                         */
-/*    Auto-fitter data for blue strings (body).                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afblue.c
+ *
+ *   Auto-fitter data for blue strings (body).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "aftypes.h"
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afblue.cin	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afblue.cin	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afblue.c                                                               */
-/*                                                                         */
-/*    Auto-fitter data for blue strings (body).                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afblue.c
+ *
+ *   Auto-fitter data for blue strings (body).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "aftypes.h"
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afblue.dat	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afblue.dat	Thu May 09 16:09:39 2019 -0700
@@ -1,15 +1,15 @@
-//  afblue.dat
+// afblue.dat
 //
-//    Auto-fitter data for blue strings.
+//   Auto-fitter data for blue strings.
 //
-//  Copyright 2013-2018 by
-//  David Turner, Robert Wilhelm, and Werner Lemberg.
+// Copyright (C) 2013-2019 by
+// David Turner, Robert Wilhelm, and Werner Lemberg.
 //
-//  This file is part of the FreeType project, and may only be used,
-//  modified, and distributed under the terms of the FreeType project
-//  license, LICENSE.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 part of the FreeType project, and may only be used,
+// modified, and distributed under the terms of the FreeType project
+// license, LICENSE.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 data specific to blue zones.  It gets processed by
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afblue.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afblue.h	Thu May 09 16:09:39 2019 -0700
@@ -1,22 +1,22 @@
 /* This file has been generated by the Perl script `afblue.pl', */
 /* using data from file `afblue.dat'.                           */
 
-/***************************************************************************/
-/*                                                                         */
-/*  afblue.h                                                               */
-/*                                                                         */
-/*    Auto-fitter data for blue strings (specification).                   */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afblue.h
+ *
+ *   Auto-fitter data for blue strings (specification).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFBLUE_H_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afblue.hin	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afblue.hin	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afblue.h                                                               */
-/*                                                                         */
-/*    Auto-fitter data for blue strings (specification).                   */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afblue.h
+ *
+ *   Auto-fitter data for blue strings (specification).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFBLUE_H_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afcjk.c	Thu May 09 16:09:39 2019 -0700
@@ -1,24 +1,24 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afcjk.c                                                                */
-/*                                                                         */
-/*    Auto-fitter hinting routines for CJK writing system (body).          */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afcjk.c
+ *
+ *   Auto-fitter hinting routines for CJK writing system (body).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 algorithm is based on akito's autohint patch, archived at
+   * The algorithm is based on akito's autohint patch, archived at
    *
-   *  https://web.archive.org/web/20051219160454/http://www.kde.gr.jp:80/~akito/patch/freetype2/2.1.7/
+   * https://web.archive.org/web/20051219160454/http://www.kde.gr.jp:80/~akito/patch/freetype2/2.1.7/
    *
    */
 
@@ -27,7 +27,6 @@
 #include FT_INTERNAL_DEBUG_H
 
 #include "afglobal.h"
-#include "afpic.h"
 #include "aflatin.h"
 #include "afcjk.h"
 
@@ -44,14 +43,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_afcjk
+#define FT_COMPONENT  afcjk
 
 
   /*************************************************************************/
@@ -92,23 +91,29 @@
       AF_CJKMetricsRec  dummy[1];
       AF_Scaler         scaler = &dummy->root.scaler;
 
-#ifdef FT_CONFIG_OPTION_PIC
-      AF_FaceGlobals  globals = metrics->root.globals;
+      AF_StyleClass   style_class  = metrics->root.style_class;
+      AF_ScriptClass  script_class = af_script_classes[style_class->script];
+
+      /* If HarfBuzz is not available, we need a pointer to a single */
+      /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+      void*     shaper_buf;
+#else
+      FT_ULong  shaper_buf_;
+      void*     shaper_buf = &shaper_buf_;
 #endif
 
-      AF_StyleClass   style_class  = metrics->root.style_class;
-      AF_ScriptClass  script_class = AF_SCRIPT_CLASSES_GET
-                                       [style_class->script];
-
-      void*        shaper_buf;
       const char*  p;
 
 #ifdef FT_DEBUG_LEVEL_TRACE
       FT_ULong  ch = 0;
 #endif
 
-      p          = script_class->standard_charstring;
+      p = script_class->standard_charstring;
+
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
       shaper_buf = af_shaper_buf_create( face );
+#endif
 
       /* We check a list of standard characters.  The first match wins. */
 
@@ -193,10 +198,10 @@
           goto Exit;
 
         /*
-         *  We assume that the glyphs selected for the stem width
-         *  computation are `featureless' enough so that the linking
-         *  algorithm works fine without adjustments of its scoring
-         *  function.
+         * We assume that the glyphs selected for the stem width
+         * computation are `featureless' enough so that the linking
+         * algorithm works fine without adjustments of its scoring
+         * function.
          */
         af_latin_hints_link_segments( hints,
                                       0,
@@ -296,7 +301,14 @@
     AF_Blue_Stringset         bss = sc->blue_stringset;
     const AF_Blue_StringRec*  bs  = &af_blue_stringsets[bss];
 
-    void*  shaper_buf;
+    /* If HarfBuzz is not available, we need a pointer to a single */
+    /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+    void*     shaper_buf;
+#else
+    FT_ULong  shaper_buf_;
+    void*     shaper_buf = &shaper_buf_;
+#endif
 
 
     /* we walk over the blue character strings as specified in the   */
@@ -307,7 +319,9 @@
                 "==========================\n"
                 "\n" ));
 
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
     shaper_buf = af_shaper_buf_create( face );
+#endif
 
     for ( ; bs->string != AF_BLUE_STRING_MAX; bs++ )
     {
@@ -483,8 +497,8 @@
       if ( num_flats == 0 && num_fills == 0 )
       {
         /*
-         *  we couldn't find a single glyph to compute this blue zone,
-         *  we will simply ignore it then
+         * we couldn't find a single glyph to compute this blue zone,
+         * we will simply ignore it then
          */
         FT_TRACE5(( "  empty\n" ));
         continue;
@@ -565,15 +579,25 @@
     FT_Bool   started = 0, same_width = 1;
     FT_Fixed  advance = 0, old_advance = 0;
 
-    void*  shaper_buf;
+    /* If HarfBuzz is not available, we need a pointer to a single */
+    /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+    void*     shaper_buf;
+#else
+    FT_ULong  shaper_buf_;
+    void*     shaper_buf = &shaper_buf_;
+#endif
 
     /* in all supported charmaps, digits have character codes 0x30-0x39 */
     const char   digits[] = "0 1 2 3 4 5 6 7 8 9";
     const char*  p;
 
 
-    p          = digits;
+    p = digits;
+
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
     shaper_buf = af_shaper_buf_create( face );
+#endif
 
     while ( *p )
     {
@@ -890,11 +914,11 @@
     }
 
     /*
-     *  now compute the `serif' segments
+     * now compute the `serif' segments
      *
-     *  In Hanzi, some strokes are wider on one or both of the ends.
-     *  We either identify the stems on the ends as serifs or remove
-     *  the linkage, depending on the length of the stems.
+     * In Hanzi, some strokes are wider on one or both of the ends.
+     * We either identify the stems on the ends as serifs or remove
+     * the linkage, depending on the length of the stems.
      *
      */
 
@@ -1000,21 +1024,21 @@
     scale = ( dim == AF_DIMENSION_HORZ ) ? hints->x_scale
                                          : hints->y_scale;
 
-    /*********************************************************************/
-    /*                                                                   */
-    /* We 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 is then processed in the second step to compute the    */
-    /* edge's properties.                                                */
-    /*                                                                   */
-    /* Note that the edges table is sorted along the segment/edge        */
-    /* position.                                                         */
-    /*                                                                   */
-    /*********************************************************************/
+    /**********************************************************************
+     *
+     * We 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 is then 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 );
@@ -1114,17 +1138,17 @@
       }
     }
 
-    /******************************************************************/
-    /*                                                                */
-    /* Good, we now compute each edge's properties according to the   */
-    /* segments found on its position.  Basically, these are          */
-    /*                                                                */
-    /*  - the 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                                               */
-    /*                                                                */
-    /******************************************************************/
+    /*******************************************************************
+     *
+     * Good, we now compute each edge's properties according to the
+     * segments found on its position.  Basically, these are
+     *
+     * - the 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                       */
@@ -1174,7 +1198,7 @@
 
           /* check for links -- if seg->serif is set, then seg->link must */
           /* be ignored                                                   */
-          is_serif = (FT_Bool)( seg->serif && seg->serif->edge != edge );
+          is_serif = FT_BOOL( seg->serif && seg->serif->edge != edge );
 
           if ( seg->link || is_serif )
           {
@@ -1364,8 +1388,8 @@
     af_glyph_hints_rescale( hints, (AF_StyleMetrics)metrics );
 
     /*
-     *  correct x_scale and y_scale when needed, since they may have
-     *  been modified af_cjk_scale_dim above
+     * correct x_scale and y_scale when needed, since they may have
+     * been modified af_cjk_scale_dim above
      */
     hints->x_scale = metrics->axis[AF_DIMENSION_HORZ].scale;
     hints->x_delta = metrics->axis[AF_DIMENSION_HORZ].delta;
@@ -1384,21 +1408,21 @@
     other_flags  = 0;
 
     /*
-     *  We snap the width of vertical stems for the monochrome and
-     *  horizontal LCD rendering targets only.
+     * 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 )
       other_flags |= AF_LATIN_HINTS_HORZ_SNAP;
 
     /*
-     *  We snap the width of horizontal stems for the monochrome and
-     *  vertical LCD rendering targets only.
+     * 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 )
       other_flags |= AF_LATIN_HINTS_VERT_SNAP;
 
     /*
-     *  We adjust stems to full pixels unless in `light' or `lcd' mode.
+     * We adjust stems to full pixels unless in `light' or `lcd' mode.
      */
     if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
       other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
@@ -2094,8 +2118,8 @@
       goto Exit;
 
     /*
-     *  now hint the remaining edges (serifs and single) in order
-     *  to complete our processing
+     * now hint the remaining edges (serifs and single) in order
+     * to complete our processing
      */
     for ( edge = edges; edge < edge_limit; edge++ )
     {
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afcjk.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afcjk.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afcjk.h                                                                */
-/*                                                                         */
-/*    Auto-fitter hinting routines for CJK writing system (specification). */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afcjk.h
+ *
+ *   Auto-fitter hinting routines for CJK writing system (specification).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFCJK_H_
@@ -41,9 +41,9 @@
 
 
   /*
-   *  CJK glyphs tend to fill the square.  So we have both vertical and
-   *  horizontal blue zones.  But some glyphs have flat bounding strokes that
-   *  leave some space between neighbour glyphs.
+   * CJK glyphs tend to fill the square.  So we have both vertical and
+   * horizontal blue zones.  But some glyphs have flat bounding strokes that
+   * leave some space between neighbour glyphs.
    */
 
 #define AF_CJK_IS_TOP_BLUE( b ) \
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afcover.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afcover.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afcover.h                                                              */
-/*                                                                         */
-/*    Auto-fitter coverages (specification only).                          */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afcover.h
+ *
+ *   Auto-fitter coverages (specification only).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 can be included multiple times. */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afdummy.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afdummy.c	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afdummy.c                                                              */
-/*                                                                         */
-/*    Auto-fitter dummy routines to be used if no hinting should be        */
-/*    performed (body).                                                    */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afdummy.c
+ *
+ *   Auto-fitter dummy routines to be used if no hinting should be
+ *   performed (body).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "afdummy.h"
@@ -38,13 +38,15 @@
 
 
   static FT_Error
-  af_dummy_hints_apply( FT_UInt        glyph_index,
-                        AF_GlyphHints  hints,
-                        FT_Outline*    outline )
+  af_dummy_hints_apply( FT_UInt          glyph_index,
+                        AF_GlyphHints    hints,
+                        FT_Outline*      outline,
+                        AF_StyleMetrics  metrics )
   {
     FT_Error  error;
 
     FT_UNUSED( glyph_index );
+    FT_UNUSED( metrics );
 
 
     error = af_glyph_hints_reload( hints, outline );
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afdummy.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afdummy.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afdummy.h                                                              */
-/*                                                                         */
-/*    Auto-fitter dummy routines to be used if no hinting should be        */
-/*    performed (specification).                                           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afdummy.h
+ *
+ *   Auto-fitter dummy routines to be used if no hinting should be
+ *   performed (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFDUMMY_H_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/aferrors.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/aferrors.h	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  aferrors.h                                                             */
-/*                                                                         */
-/*    Autofitter error codes (specification only).                         */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aferrors.h
+ *
+ *   Autofitter error codes (specification only).
+ *
+ * Copyright (C) 2005-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 Autofitter error enumeration          */
-  /* constants.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the Autofitter error enumeration
+   * constants.
+   *
+   */
 
 #ifndef AFERRORS_H_
 #define AFERRORS_H_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afglobal.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afglobal.c                                                             */
-/*                                                                         */
-/*    Auto-fitter routines to compute global hinting values (body).        */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afglobal.c
+ *
+ *   Auto-fitter routines to compute global hinting values (body).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "afglobal.h"
@@ -22,14 +22,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_afglobal
+#define FT_COMPONENT  afglobal
 
 
   /* get writing system specific header files */
@@ -38,7 +38,6 @@
 #include "afwrtsys.h"
 
 #include "aferrors.h"
-#include "afpic.h"
 
 
 #undef  SCRIPT
@@ -67,8 +66,6 @@
 #include "afstyles.h"
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #undef  WRITING_SYSTEM
 #define WRITING_SYSTEM( ws, WS )               \
           &af_ ## ws ## _writing_system_class,
@@ -110,8 +107,6 @@
     NULL  /* do not remove */
   };
 
-#endif /* !FT_CONFIG_OPTION_PIC */
-
 
 #ifdef FT_DEBUG_LEVEL_TRACE
 
@@ -159,12 +154,12 @@
     }
 
     /* scan each style in a Unicode charmap */
-    for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
+    for ( ss = 0; af_style_classes[ss]; ss++ )
     {
       AF_StyleClass       style_class =
-                            AF_STYLE_CLASSES_GET[ss];
+                            af_style_classes[ss];
       AF_ScriptClass      script_class =
-                            AF_SCRIPT_CLASSES_GET[style_class->script];
+                            af_script_classes[style_class->script];
       AF_Script_UniRange  range;
 
 
@@ -172,8 +167,8 @@
         continue;
 
       /*
-       *  Scan all Unicode points in the range and set the corresponding
-       *  glyph style index.
+       * Scan all Unicode points in the range and set the corresponding
+       * glyph style index.
        */
       if ( style_class->coverage == AF_COVERAGE_DEFAULT )
       {
@@ -246,9 +241,9 @@
     }
 
     /* handle the remaining default OpenType features ... */
-    for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
+    for ( ss = 0; af_style_classes[ss]; ss++ )
     {
-      AF_StyleClass  style_class = AF_STYLE_CLASSES_GET[ss];
+      AF_StyleClass  style_class = af_style_classes[ss];
 
 
       if ( style_class->coverage == AF_COVERAGE_DEFAULT )
@@ -256,7 +251,7 @@
     }
 
     /* ... and finally the default OpenType features of the default script */
-    af_shaper_get_coverage( globals, AF_STYLE_CLASSES_GET[dflt], gstyles, 1 );
+    af_shaper_get_coverage( globals, af_style_classes[dflt], gstyles, 1 );
 
     /* mark ASCII digits */
     for ( i = 0x30; i <= 0x39; i++ )
@@ -270,8 +265,8 @@
 
   Exit:
     /*
-     *  By default, all uncovered glyphs are set to the fallback style.
-     *  XXX: Shouldn't we disable hinting or do something similar?
+     * By default, all uncovered glyphs are set to the fallback style.
+     * XXX: Shouldn't we disable hinting or do something similar?
      */
     if ( globals->module->fallback_style != AF_STYLE_UNASSIGNED )
     {
@@ -295,9 +290,9 @@
                 "==============\n"
                 "\n" ));
 
-    for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
+    for ( ss = 0; af_style_classes[ss]; ss++ )
     {
-      AF_StyleClass  style_class = AF_STYLE_CLASSES_GET[ss];
+      AF_StyleClass  style_class = af_style_classes[ss];
       FT_UInt        count       = 0;
       FT_Long        idx;
 
@@ -397,9 +392,9 @@
         if ( globals->metrics[nn] )
         {
           AF_StyleClass          style_class =
-            AF_STYLE_CLASSES_GET[nn];
+            af_style_classes[nn];
           AF_WritingSystemClass  writing_system_class =
-            AF_WRITING_SYSTEM_CLASSES_GET[style_class->writing_system];
+            af_writing_system_classes[style_class->writing_system];
 
 
           if ( writing_system_class->style_metrics_done )
@@ -448,8 +443,8 @@
       style = (AF_Style)( globals->glyph_styles[gindex] &
                           AF_STYLE_UNASSIGNED           );
 
-    style_class          = AF_STYLE_CLASSES_GET[style];
-    writing_system_class = AF_WRITING_SYSTEM_CLASSES_GET
+    style_class          = af_style_classes[style];
+    writing_system_class = af_writing_system_classes
                              [style_class->writing_system];
 
     metrics = globals->metrics[style];
@@ -494,9 +489,9 @@
                             FT_UInt         gindex )
   {
     if ( gindex < (FT_ULong)globals->glyph_count )
-      return (FT_Bool)( globals->glyph_styles[gindex] & AF_DIGIT );
+      return FT_BOOL( globals->glyph_styles[gindex] & AF_DIGIT );
 
-    return (FT_Bool)0;
+    return FT_BOOL( 0 );
   }
 
 
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afglobal.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afglobal.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afglobal.h                                                             */
-/*                                                                         */
-/*    Auto-fitter routines to compute global hinting values                */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afglobal.h
+ *
+ *   Auto-fitter routines to compute global hinting values
+ *   (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFGLOBAL_H_
@@ -60,8 +60,8 @@
 
 
   /*
-   *  Default values and flags for both autofitter globals (found in
-   *  AF_ModuleRec) and face globals (in AF_FaceGlobalsRec).
+   * Default values and flags for both autofitter globals (found in
+   * AF_ModuleRec) and face globals (in AF_FaceGlobalsRec).
    */
 
   /* index of fallback style in `af_style_classes' */
@@ -98,8 +98,8 @@
 
 
   /*
-   *  Note that glyph_styles[] maps each glyph to an index into the
-   *  `af_style_classes' array.
+   * Note that glyph_styles[] maps each glyph to an index into the
+   * `af_style_classes' array.
    *
    */
   typedef struct  AF_FaceGlobalsRec_
@@ -140,8 +140,8 @@
 
 
   /*
-   *  model the global hints data for a given face, decomposed into
-   *  style-specific items
+   * model the global hints data for a given face, decomposed into
+   * style-specific items
    */
 
   FT_LOCAL( FT_Error )
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afhints.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afhints.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afhints.c                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines (body).                                 */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afhints.c
+ *
+ *   Auto-fitter hinting routines (body).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "afhints.h"
@@ -22,14 +22,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_afhints
+#define FT_COMPONENT  afhints
 
 
   /* Get new segment for given axis. */
@@ -297,6 +297,19 @@
   }
 
 
+  static int
+  af_get_strong_edge_index( AF_GlyphHints  hints,
+                            AF_Edge*       strong_edges,
+                            int            dimension )
+  {
+    AF_AxisHints  axis  = &hints->axis[dimension];
+    AF_Edge       edges = axis->edges;
+
+
+    return AF_INDEX_NUM( strong_edges[dimension], edges );
+  }
+
+
 #ifdef __cplusplus
   extern "C" {
 #endif
@@ -317,8 +330,10 @@
     {
       AF_DUMP(( "  index  hedge  hseg  vedge  vseg  flags "
              /* "  XXXXX  XXXXX XXXXX  XXXXX XXXXX  XXXXXX" */
-                "  xorg  yorg  xscale  yscale   xfit    yfit" ));
+                "  xorg  yorg  xscale  yscale   xfit    yfit "
              /* " XXXXX XXXXX XXXX.XX XXXX.XX XXXX.XX XXXX.XX" */
+                "  hbef  haft  vbef  vaft" ));
+             /* " XXXXX XXXXX XXXXX XXXXX" */
     }
     else
       AF_DUMP(( "  (none)\n" ));
@@ -330,6 +345,7 @@
       int  segment_idx_1 = af_get_segment_index( hints, point_idx, 1 );
 
       char  buf1[16], buf2[16], buf3[16], buf4[16];
+      char  buf5[16], buf6[16], buf7[16], buf8[16];
 
 
       /* insert extra newline at the beginning of a contour */
@@ -340,7 +356,8 @@
       }
 
       AF_DUMP(( "  %5d  %5s %5s  %5s %5s  %s"
-                " %5d %5d %7.2f %7.2f %7.2f %7.2f\n",
+                " %5d %5d %7.2f %7.2f %7.2f %7.2f"
+                " %5s %5s %5s %5s\n",
                 point_idx,
                 af_print_idx( buf1,
                               af_get_edge_index( hints, segment_idx_1, 1 ) ),
@@ -359,7 +376,20 @@
                 point->ox / 64.0,
                 point->oy / 64.0,
                 point->x / 64.0,
-                point->y / 64.0 ));
+                point->y / 64.0,
+
+                af_print_idx( buf5, af_get_strong_edge_index( hints,
+                                                              point->before,
+                                                              1 ) ),
+                af_print_idx( buf6, af_get_strong_edge_index( hints,
+                                                              point->after,
+                                                              1 ) ),
+                af_print_idx( buf7, af_get_strong_edge_index( hints,
+                                                              point->before,
+                                                              0 ) ),
+                af_print_idx( buf8, af_get_strong_edge_index( hints,
+                                                              point->after,
+                                                              0 ) ) ));
     }
     AF_DUMP(( "\n" ));
   }
@@ -519,7 +549,7 @@
     *offset  = ( dim == AF_DIMENSION_HORZ ) ? seg->first->fx
                                             : seg->first->fy;
     if ( seg->edge )
-      *is_blue = (FT_Bool)( seg->edge->blue_edge != 0 );
+      *is_blue = FT_BOOL( seg->edge->blue_edge );
     else
       *is_blue = FALSE;
 
@@ -558,8 +588,8 @@
 
 
       /*
-       *  note: AF_DIMENSION_HORZ corresponds to _vertical_ edges
-       *        since they have a constant X coordinate.
+       * note: AF_DIMENSION_HORZ corresponds to _vertical_ edges
+       *       since they have a constant X coordinate.
        */
       if ( dimension == AF_DIMENSION_HORZ )
         AF_DUMP(( "Table of %s edges (1px=%.2fu, 10u=%.2fpx):\n",
@@ -681,8 +711,8 @@
     memory = hints->memory;
 
     /*
-     *  note that we don't need to free the segment and edge
-     *  buffers since they are really within the hints->points array
+     * note that we don't need to free the segment and edge
+     * buffers since they are really within the hints->points array
      */
     for ( dim = 0; dim < AF_DIMENSION_MAX; dim++ )
     {
@@ -776,9 +806,9 @@
     }
 
     /*
-     *  then reallocate the points arrays if necessary --
-     *  note that we reserve two additional point positions, used to
-     *  hint metrics appropriately
+     * then reallocate the points arrays if necessary --
+     * note that we reserve two additional point positions, used to
+     * hint metrics appropriately
      */
     new_max = (FT_UInt)( outline->n_points + 2 );
     old_max = (FT_UInt)hints->max_points;
@@ -898,6 +928,14 @@
               prev     = end;
             }
           }
+
+#ifdef FT_DEBUG_AUTOFIT
+          point->before[0] = NULL;
+          point->before[1] = NULL;
+          point->after[0]  = NULL;
+          point->after[1]  = NULL;
+#endif
+
         }
       }
 
@@ -918,15 +956,15 @@
 
       {
         /*
-         *  Compute directions of `in' and `out' vectors.
+         * Compute directions of `in' and `out' vectors.
          *
-         *  Note that distances between points that are very near to each
-         *  other are accumulated.  In other words, the auto-hinter either
-         *  prepends the small vectors between near points to the first
-         *  non-near vector, or the sum of small vector lengths exceeds a
-         *  threshold, thus `grouping' the small vectors.  All intermediate
-         *  points are tagged as weak; the directions are adjusted also to
-         *  be equal to the accumulated one.
+         * Note that distances between points that are very near to each
+         * other are accumulated.  In other words, the auto-hinter either
+         * prepends the small vectors between near points to the first
+         * non-near vector, or the sum of small vector lengths exceeds a
+         * threshold, thus `grouping' the small vectors.  All intermediate
+         * points are tagged as weak; the directions are adjusted also to
+         * be equal to the accumulated one.
          */
 
         FT_Int  near_limit2 = 2 * near_limit - 1;
@@ -956,12 +994,12 @@
             out_y = point->fy - prev->fy;
 
             /*
-             *  We use Taxicab metrics to measure the vector length.
+             * We use Taxicab metrics to measure the vector length.
              *
-             *  Note that the accumulated distances so far could have the
-             *  opposite direction of the distance measured here.  For this
-             *  reason we use `near_limit2' for the comparison to get a
-             *  non-near point even in the worst case.
+             * Note that the accumulated distances so far could have the
+             * opposite direction of the distance measured here.  For this
+             * reason we use `near_limit2' for the comparison to get a
+             * non-near point even in the worst case.
              */
             if ( FT_ABS( out_x ) + FT_ABS( out_y ) >= near_limit2 )
               break;
@@ -979,11 +1017,11 @@
           curr = first;
 
           /*
-           *  We abuse the `u' and `v' fields to store index deltas to the
-           *  next and previous non-near point, respectively.
+           * We abuse the `u' and `v' fields to store index deltas to the
+           * next and previous non-near point, respectively.
            *
-           *  To avoid problems with not having non-near points, we point to
-           *  `first' by default as the next non-near point.
+           * To avoid problems with not having non-near points, we point to
+           * `first' by default as the next non-near point.
            *
            */
           curr->u  = (FT_Pos)( first - curr );
@@ -1035,12 +1073,12 @@
         }
 
         /*
-         *  The next step is to `simplify' an outline's topology so that we
-         *  can identify local extrema more reliably: A series of
-         *  non-horizontal or non-vertical vectors pointing into the same
-         *  quadrant are handled as a single, long vector.  From a
-         *  topological point of the view, the intermediate points are of no
-         *  interest and thus tagged as weak.
+         * The next step is to `simplify' an outline's topology so that we
+         * can identify local extrema more reliably: A series of
+         * non-horizontal or non-vertical vectors pointing into the same
+         * quadrant are handled as a single, long vector.  From a
+         * topological point of the view, the intermediate points are of no
+         * interest and thus tagged as weak.
          */
 
         for ( point = points; point < point_limit; point++ )
@@ -1080,9 +1118,9 @@
         }
 
         /*
-         *  Finally, check for remaining weak points.  Everything else not
-         *  collected in edges so far is then implicitly classified as strong
-         *  points.
+         * Finally, check for remaining weak points.  Everything else not
+         * collected in edges so far is then implicitly classified as strong
+         * points.
          */
 
         for ( point = points; point < point_limit; point++ )
@@ -1309,6 +1347,12 @@
         if ( delta >= 0 )
         {
           u = edge->pos - ( edge->opos - ou );
+
+#ifdef FT_DEBUG_AUTOFIT
+          point->before[dim] = edge;
+          point->after[dim]  = NULL;
+#endif
+
           goto Store_Point;
         }
 
@@ -1318,6 +1362,12 @@
         if ( delta >= 0 )
         {
           u = edge->pos + ( ou - edge->opos );
+
+#ifdef FT_DEBUG_AUTOFIT
+          point->before[dim] = NULL;
+          point->after[dim]  = edge;
+#endif
+
           goto Store_Point;
         }
 
@@ -1364,6 +1414,12 @@
             {
               /* we are on the edge */
               u = edge->pos;
+
+#ifdef FT_DEBUG_AUTOFIT
+              point->before[dim] = NULL;
+              point->after[dim]  = NULL;
+#endif
+
               goto Store_Point;
             }
           }
@@ -1374,6 +1430,11 @@
             AF_Edge  after  = edges + min + 0;
 
 
+#ifdef FT_DEBUG_AUTOFIT
+            point->before[dim] = before;
+            point->after[dim]  = after;
+#endif
+
             /* assert( before && after && before != after ) */
             if ( before->scale == 0 )
               before->scale = FT_DivFix( after->pos - before->pos,
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afhints.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afhints.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afhints.h                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines (specification).                        */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afhints.h
+ *
+ *   Auto-fitter hinting routines (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFHINTS_H_
@@ -26,8 +26,8 @@
 FT_BEGIN_HEADER
 
   /*
-   *  The definition of outline glyph hints.  These are shared by all
-   *  writing system analysis routines (until now).
+   * The definition of outline glyph hints.  These are shared by all
+   * writing system analysis routines (until now).
    */
 
   typedef enum  AF_Dimension_
@@ -56,153 +56,153 @@
 
 
   /*
-   *  The following explanations are mostly taken from the article
+   * The following explanations are mostly taken from the article
    *
-   *    Real-Time Grid Fitting of Typographic Outlines
+   *   Real-Time Grid Fitting of Typographic Outlines
    *
-   *  by David Turner and Werner Lemberg
+   * by David Turner and Werner Lemberg
    *
-   *    https://www.tug.org/TUGboat/Articles/tb24-3/lemberg.pdf
+   *   https://www.tug.org/TUGboat/Articles/tb24-3/lemberg.pdf
    *
-   *  with appropriate updates.
+   * with appropriate updates.
    *
    *
-   *  Segments
+   * Segments
    *
-   *    `af_{cjk,latin,...}_hints_compute_segments' are the functions to
-   *    find segments in an outline.
+   *   `af_{cjk,latin,...}_hints_compute_segments' are the functions to
+   *   find segments in an outline.
    *
-   *    A segment is a series of at least two consecutive points that are
-   *    approximately aligned along a coordinate axis.  The analysis to do
-   *    so is specific to a writing system.
+   *   A segment is a series of at least two consecutive points that are
+   *   approximately aligned along a coordinate axis.  The analysis to do
+   *   so is specific to a writing system.
    *
    *
-   *  Edges
+   * Edges
    *
-   *    `af_{cjk,latin,...}_hints_compute_edges' are the functions to find
-   *    edges.
+   *   `af_{cjk,latin,...}_hints_compute_edges' are the functions to find
+   *   edges.
    *
-   *    As soon as segments are defined, the auto-hinter groups them into
-   *    edges.  An edge corresponds to a single position on the main
-   *    dimension that collects one or more segments (allowing for a small
-   *    threshold).
+   *   As soon as segments are defined, the auto-hinter groups them into
+   *   edges.  An edge corresponds to a single position on the main
+   *   dimension that collects one or more segments (allowing for a small
+   *   threshold).
    *
-   *    As an example, the `latin' writing system first tries to grid-fit
-   *    edges, then to align segments on the edges unless it detects that
-   *    they form a serif.
+   *   As an example, the `latin' writing system first tries to grid-fit
+   *   edges, then to align segments on the edges unless it detects that
+   *   they form a serif.
    *
    *
-   *                      A          H
-   *                       |        |
-   *                       |        |
-   *                       |        |
-   *                       |        |
-   *         C             |        |             F
-   *          +------<-----+        +-----<------+
-   *          |             B      G             |
-   *          |                                  |
-   *          |                                  |
-   *          +--------------->------------------+
-   *         D                                    E
+   *                     A          H
+   *                      |        |
+   *                      |        |
+   *                      |        |
+   *                      |        |
+   *        C             |        |             F
+   *         +------<-----+        +-----<------+
+   *         |             B      G             |
+   *         |                                  |
+   *         |                                  |
+   *         +--------------->------------------+
+   *        D                                    E
    *
    *
-   *  Stems
+   * Stems
    *
-   *    Stems are detected by `af_{cjk,latin,...}_hint_edges'.
+   *   Stems are detected by `af_{cjk,latin,...}_hint_edges'.
    *
-   *    Segments need to be `linked' to other ones in order to detect stems.
-   *    A stem is made of two segments that face each other in opposite
-   *    directions and that are sufficiently close to each other.  Using
-   *    vocabulary from the TrueType specification, stem segments form a
-   *    `black distance'.
+   *   Segments need to be `linked' to other ones in order to detect stems.
+   *   A stem is made of two segments that face each other in opposite
+   *   directions and that are sufficiently close to each other.  Using
+   *   vocabulary from the TrueType specification, stem segments form a
+   *   `black distance'.
    *
-   *    In the above ASCII drawing, the horizontal segments are BC, DE, and
-   *    FG; the vertical segments are AB, CD, EF, and GH.
+   *   In the above ASCII drawing, the horizontal segments are BC, DE, and
+   *   FG; the vertical segments are AB, CD, EF, and GH.
    *
-   *    Each segment has at most one `best' candidate to form a black
-   *    distance, or no candidate at all.  Notice that two distinct segments
-   *    can have the same candidate, which frequently means a serif.
+   *   Each segment has at most one `best' candidate to form a black
+   *   distance, or no candidate at all.  Notice that two distinct segments
+   *   can have the same candidate, which frequently means a serif.
    *
-   *    A stem is recognized by the following condition:
+   *   A stem is recognized by the following condition:
    *
-   *      best segment_1 = segment_2 && best segment_2 = segment_1
+   *     best segment_1 = segment_2 && best segment_2 = segment_1
    *
-   *    The best candidate is stored in field `link' in structure
-   *    `AF_Segment'.
+   *   The best candidate is stored in field `link' in structure
+   *   `AF_Segment'.
    *
-   *    In the above ASCII drawing, the best candidate for both AB and CD is
-   *    GH, while the best candidate for GH is AB.  Similarly, the best
-   *    candidate for EF and GH is AB, while the best candidate for AB is
-   *    GH.
+   *   In the above ASCII drawing, the best candidate for both AB and CD is
+   *   GH, while the best candidate for GH is AB.  Similarly, the best
+   *   candidate for EF and GH is AB, while the best candidate for AB is
+   *   GH.
    *
-   *    The detection and handling of stems is dependent on the writing
-   *    system.
+   *   The detection and handling of stems is dependent on the writing
+   *   system.
    *
    *
-   *  Serifs
+   * Serifs
    *
-   *    Serifs are detected by `af_{cjk,latin,...}_hint_edges'.
+   *   Serifs are detected by `af_{cjk,latin,...}_hint_edges'.
    *
-   *    In comparison to a stem, a serif (as handled by the auto-hinter
-   *    module that takes care of the `latin' writing system) has
+   *   In comparison to a stem, a serif (as handled by the auto-hinter
+   *   module that takes care of the `latin' writing system) has
    *
-   *      best segment_1 = segment_2 && best segment_2 != segment_1
+   *     best segment_1 = segment_2 && best segment_2 != segment_1
    *
-   *    where segment_1 corresponds to the serif segment (CD and EF in the
-   *    above ASCII drawing).
+   *   where segment_1 corresponds to the serif segment (CD and EF in the
+   *   above ASCII drawing).
    *
-   *    The best candidate is stored in field `serif' in structure
-   *    `AF_Segment' (and `link' is set to NULL).
+   *   The best candidate is stored in field `serif' in structure
+   *   `AF_Segment' (and `link' is set to NULL).
    *
    *
-   *  Touched points
+   * Touched points
    *
-   *    A point is called `touched' if it has been processed somehow by the
-   *    auto-hinter.  It basically means that it shouldn't be moved again
-   *    (or moved only under certain constraints to preserve the already
-   *    applied processing).
+   *   A point is called `touched' if it has been processed somehow by the
+   *   auto-hinter.  It basically means that it shouldn't be moved again
+   *   (or moved only under certain constraints to preserve the already
+   *   applied processing).
    *
    *
-   *  Flat and round segments
+   * Flat and round segments
    *
-   *    Segments are `round' or `flat', depending on the series of points
-   *    that define them.  A segment is round if the next and previous point
-   *    of an extremum (which can be either a single point or sequence of
-   *    points) are both conic or cubic control points.  Otherwise, a
-   *    segment with an extremum is flat.
+   *   Segments are `round' or `flat', depending on the series of points
+   *   that define them.  A segment is round if the next and previous point
+   *   of an extremum (which can be either a single point or sequence of
+   *   points) are both conic or cubic control points.  Otherwise, a
+   *   segment with an extremum is flat.
    *
    *
-   *  Strong Points
+   * Strong Points
    *
-   *    Experience has shown that points not part of an edge need to be
-   *    interpolated linearly between their two closest edges, even if these
-   *    are not part of the contour of those particular points.  Typical
-   *    candidates for this are
+   *   Experience has shown that points not part of an edge need to be
+   *   interpolated linearly between their two closest edges, even if these
+   *   are not part of the contour of those particular points.  Typical
+   *   candidates for this are
    *
-   *    - angle points (i.e., points where the `in' and `out' direction
-   *      differ greatly)
+   *   - angle points (i.e., points where the `in' and `out' direction
+   *     differ greatly)
    *
-   *    - inflection points (i.e., where the `in' and `out' angles are the
-   *      same, but the curvature changes sign) [currently, such points
-   *      aren't handled specially in the auto-hinter]
+   *   - inflection points (i.e., where the `in' and `out' angles are the
+   *     same, but the curvature changes sign) [currently, such points
+   *     aren't handled specially in the auto-hinter]
    *
-   *    `af_glyph_hints_align_strong_points' is the function that takes
-   *    care of such situations; it is equivalent to the TrueType `IP'
-   *    hinting instruction.
+   *   `af_glyph_hints_align_strong_points' is the function that takes
+   *   care of such situations; it is equivalent to the TrueType `IP'
+   *   hinting instruction.
    *
    *
-   *  Weak Points
+   * Weak Points
    *
-   *    Other points in the outline must be interpolated using the
-   *    coordinates of their previous and next unfitted contour neighbours.
-   *    These are called `weak points' and are touched by the function
-   *    `af_glyph_hints_align_weak_points', equivalent to the TrueType `IUP'
-   *    hinting instruction.  Typical candidates are control points and
-   *    points on the contour without a major direction.
+   *   Other points in the outline must be interpolated using the
+   *   coordinates of their previous and next unfitted contour neighbours.
+   *   These are called `weak points' and are touched by the function
+   *   `af_glyph_hints_align_weak_points', equivalent to the TrueType `IUP'
+   *   hinting instruction.  Typical candidates are control points and
+   *   points on the contour without a major direction.
    *
-   *    The major effect is to reduce possible distortion caused by
-   *    alignment of edges and strong points, thus weak points are processed
-   *    after strong points.
+   *   The major effect is to reduce possible distortion caused by
+   *   alignment of edges and strong points, thus weak points are processed
+   *   after strong points.
    */
 
 
@@ -252,6 +252,12 @@
     AF_Point   next;     /* next point in contour     */
     AF_Point   prev;     /* previous point in contour */
 
+#ifdef FT_DEBUG_AUTOFIT
+    /* track `before' and `after' edges for strong points */
+    AF_Edge    before[2];
+    AF_Edge    after[2];
+#endif
+
   } AF_PointRec;
 
 
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afindic.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afindic.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afindic.c                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines for Indic writing system (body).        */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.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.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afindic.c
+ *
+ *   Auto-fitter hinting routines for Indic writing system (body).
+ *
+ * Copyright (C) 2007-2019 by
+ * Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.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.
+ *
+ */
 
 
 #include "aftypes.h"
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afindic.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afindic.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afindic.h                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines for Indic writing system                */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.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.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afindic.h
+ *
+ *   Auto-fitter hinting routines for Indic writing system
+ *   (specification).
+ *
+ * Copyright (C) 2007-2019 by
+ * Rahul Bhalerao <rahul.bhalerao@redhat.com>, <b.rahul.pm@gmail.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 AFINDIC_H_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/aflatin.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/aflatin.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  aflatin.c                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines for latin writing system (body).        */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aflatin.c
+ *
+ *   Auto-fitter hinting routines for latin writing system (body).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -21,7 +21,6 @@
 #include FT_INTERNAL_DEBUG_H
 
 #include "afglobal.h"
-#include "afpic.h"
 #include "aflatin.h"
 #include "aferrors.h"
 
@@ -31,14 +30,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_aflatin
+#define FT_COMPONENT  aflatin
 
 
   /* needed for computation of round vs. flat segments */
@@ -83,24 +82,30 @@
       AF_LatinMetricsRec  dummy[1];
       AF_Scaler           scaler = &dummy->root.scaler;
 
-#ifdef FT_CONFIG_OPTION_PIC
-      AF_FaceGlobals  globals = metrics->root.globals;
+      AF_StyleClass   style_class  = metrics->root.style_class;
+      AF_ScriptClass  script_class = af_script_classes[style_class->script];
+
+      /* If HarfBuzz is not available, we need a pointer to a single */
+      /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+      void*     shaper_buf;
+#else
+      FT_ULong  shaper_buf_;
+      void*     shaper_buf = &shaper_buf_;
 #endif
 
-      AF_StyleClass   style_class  = metrics->root.style_class;
-      AF_ScriptClass  script_class = AF_SCRIPT_CLASSES_GET
-                                       [style_class->script];
-
-      void*        shaper_buf;
       const char*  p;
 
 #ifdef FT_DEBUG_LEVEL_TRACE
       FT_ULong  ch = 0;
 #endif
 
-      p          = script_class->standard_charstring;
+
+      p = script_class->standard_charstring;
+
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
       shaper_buf = af_shaper_buf_create( face );
-
+#endif
       /*
        * We check a list of standard characters to catch features like
        * `c2sc' (small caps from caps) that don't contain lowercase letters
@@ -186,10 +191,10 @@
           goto Exit;
 
         /*
-         *  We assume that the glyphs selected for the stem width
-         *  computation are `featureless' enough so that the linking
-         *  algorithm works fine without adjustments of its scoring
-         *  function.
+         * We assume that the glyphs selected for the stem width
+         * computation are `featureless' enough so that the linking
+         * algorithm works fine without adjustments of its scoring
+         * function.
          */
         af_latin_hints_link_segments( hints,
                                       0,
@@ -329,7 +334,14 @@
 
     FT_Pos  flat_threshold = FLAT_THRESHOLD( metrics->units_per_em );
 
-    void*  shaper_buf;
+    /* If HarfBuzz is not available, we need a pointer to a single */
+    /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+    void*     shaper_buf;
+#else
+    FT_ULong  shaper_buf_;
+    void*     shaper_buf = &shaper_buf_;
+#endif
 
 
     /* we walk over the blue character strings as specified in the */
@@ -339,7 +351,9 @@
                 "============================\n"
                 "\n" ));
 
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
     shaper_buf = af_shaper_buf_create( face );
+#endif
 
     for ( ; bs->string != AF_BLUE_STRING_MAX; bs++ )
     {
@@ -884,8 +898,8 @@
       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
+         * we couldn't find a single glyph to compute this blue zone,
+         * we will simply ignore it then
          */
         FT_TRACE5(( "  empty\n" ));
         continue;
@@ -1036,15 +1050,25 @@
     FT_Bool   started = 0, same_width = 1;
     FT_Fixed  advance = 0, old_advance = 0;
 
-    void*  shaper_buf;
+    /* If HarfBuzz is not available, we need a pointer to a single */
+    /* unsigned long value.                                        */
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
+    void*     shaper_buf;
+#else
+    FT_ULong  shaper_buf_;
+    void*     shaper_buf = &shaper_buf_;
+#endif
 
     /* in all supported charmaps, digits have character codes 0x30-0x39 */
     const char   digits[] = "0 1 2 3 4 5 6 7 8 9";
     const char*  p;
 
 
-    p          = digits;
+    p = digits;
+
+#ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
     shaper_buf = af_shaper_buf_create( face );
+#endif
 
     while ( *p )
     {
@@ -1283,7 +1307,7 @@
     /* an extra-light axis corresponds to a standard width that is */
     /* smaller than 5/8 pixels                                     */
     axis->extra_light =
-      (FT_Bool)( FT_MulFix( axis->standard_width, scale ) < 32 + 8 );
+      FT_BOOL( FT_MulFix( axis->standard_width, scale ) < 32 + 8 );
 
 #ifdef FT_DEBUG_LEVEL_TRACE
     if ( axis->extra_light )
@@ -1967,17 +1991,17 @@
           if ( len >= len_threshold )
           {
             /*
-             *  The score is the sum of two demerits indicating the
-             *  `badness' of a fit, measured along the segments' main axis
-             *  and orthogonal to it, respectively.
+             * The score is the sum of two demerits indicating the
+             * `badness' of a fit, measured along the segments' main axis
+             * and orthogonal to it, respectively.
              *
-             *  o The less overlapping along the main axis, the worse it
-             *    is, causing a larger demerit.
+             * - The less overlapping along the main axis, the worse it
+             *   is, causing a larger demerit.
              *
-             *  o The nearer the orthogonal distance to a stem width, the
-             *    better it is, causing a smaller demerit.  For simplicity,
-             *    however, we only increase the demerit for values that
-             *    exceed the largest stem width.
+             * - The nearer the orthogonal distance to a stem width, the
+             *   better it is, causing a smaller demerit.  For simplicity,
+             *   however, we only increase the demerit for values that
+             *   exceed the largest stem width.
              */
 
             FT_Pos  dist = pos2 - pos1;
@@ -2049,13 +2073,8 @@
     FT_Memory     memory = hints->memory;
     AF_LatinAxis  laxis  = &((AF_LatinMetrics)hints->metrics)->axis[dim];
 
-#ifdef FT_CONFIG_OPTION_PIC
-    AF_FaceGlobals  globals = hints->metrics->globals;
-#endif
-
     AF_StyleClass   style_class  = hints->metrics->style_class;
-    AF_ScriptClass  script_class = AF_SCRIPT_CLASSES_GET
-                                     [style_class->script];
+    AF_ScriptClass  script_class = af_script_classes[style_class->script];
 
     FT_Bool  top_to_bottom_hinting = 0;
 
@@ -2086,9 +2105,9 @@
       top_to_bottom_hinting = script_class->top_to_bottom_hinting;
 
     /*
-     *  We ignore all segments that are less than 1 pixel in length
-     *  to avoid many problems with serif fonts.  We compute the
-     *  corresponding threshold in font units.
+     * We ignore all segments that are less than 1 pixel in length
+     * to avoid many problems with serif fonts.  We compute the
+     * corresponding threshold in font units.
      */
     if ( dim == AF_DIMENSION_HORZ )
       segment_length_threshold = FT_DivFix( 64, hints->y_scale );
@@ -2096,26 +2115,26 @@
       segment_length_threshold = 0;
 
     /*
-     *  Similarly, we ignore segments that have a width delta
-     *  larger than 0.5px (i.e., a width larger than 1px).
+     * Similarly, we ignore segments that have a width delta
+     * larger than 0.5px (i.e., a width larger than 1px).
      */
     segment_width_threshold = FT_DivFix( 32, scale );
 
-    /*********************************************************************/
-    /*                                                                   */
-    /* We 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 gets processed in the second step to compute the       */
-    /* edge's properties.                                                */
-    /*                                                                   */
-    /* Note that the table of edges is sorted along the segment/edge     */
-    /* position.                                                         */
-    /*                                                                   */
-    /*********************************************************************/
+    /**********************************************************************
+     *
+     * We 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 gets processed in the second step to compute the
+     * edge's properties.
+     *
+     * Note that the table of edges is sorted along the segment/edge
+     * position.
+     *
+     */
 
     /* assure that edge distance threshold is at most 0.25px */
     edge_distance_threshold = FT_MulFix( laxis->edge_distance_threshold,
@@ -2237,17 +2256,17 @@
     }
 
 
-    /******************************************************************/
-    /*                                                                */
-    /* Good, we now compute each edge's properties according to the   */
-    /* segments found on its position.  Basically, these are          */
-    /*                                                                */
-    /*  - the 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                                               */
-    /*                                                                */
-    /******************************************************************/
+    /*******************************************************************
+     *
+     * Good, we now compute each edge's properties according to the
+     * segments found on its position.  Basically, these are
+     *
+     * - the 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                       */
@@ -2309,9 +2328,9 @@
 
           /* check for links -- if seg->serif is set, then seg->link must */
           /* be ignored                                                   */
-          is_serif = (FT_Bool)( seg->serif               &&
-                                seg->serif->edge         &&
-                                seg->serif->edge != edge );
+          is_serif = FT_BOOL( seg->serif               &&
+                              seg->serif->edge         &&
+                              seg->serif->edge != edge );
 
           if ( ( seg->link && seg->link->edge ) || is_serif )
           {
@@ -2546,8 +2565,8 @@
     af_glyph_hints_rescale( hints, (AF_StyleMetrics)metrics );
 
     /*
-     *  correct x_scale and y_scale if needed, since they may have
-     *  been modified by `af_latin_metrics_scale_dim' above
+     * correct x_scale and y_scale if needed, since they may have
+     * been modified by `af_latin_metrics_scale_dim' above
      */
     hints->x_scale = metrics->axis[AF_DIMENSION_HORZ].scale;
     hints->x_delta = metrics->axis[AF_DIMENSION_HORZ].delta;
@@ -2566,21 +2585,21 @@
     other_flags  = 0;
 
     /*
-     *  We snap the width of vertical stems for the monochrome and
-     *  horizontal LCD rendering targets only.
+     * 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 )
       other_flags |= AF_LATIN_HINTS_HORZ_SNAP;
 
     /*
-     *  We snap the width of horizontal stems for the monochrome and
-     *  vertical LCD rendering targets only.
+     * 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 )
       other_flags |= AF_LATIN_HINTS_VERT_SNAP;
 
     /*
-     *  We adjust stems to full pixels unless in `light' or `lcd' mode.
+     * We adjust stems to full pixels unless in `light' or `lcd' mode.
      */
     if ( mode != FT_RENDER_MODE_LIGHT && mode != FT_RENDER_MODE_LCD )
       other_flags |= AF_LATIN_HINTS_STEM_ADJUST;
@@ -2589,11 +2608,11 @@
       other_flags |= AF_LATIN_HINTS_MONO;
 
     /*
-     *  In `light' or `lcd' mode we disable horizontal hinting completely.
-     *  We also do it if the face is italic.
+     * In `light' or `lcd' mode we disable horizontal hinting completely.
+     * We also do it if the face is italic.
      *
-     *  However, if warping is enabled (which only works in `light' hinting
-     *  mode), advance widths get adjusted, too.
+     * However, if warping is enabled (which only works in `light' hinting
+     * mode), advance widths get adjusted, too.
      */
     if ( mode == FT_RENDER_MODE_LIGHT || mode == FT_RENDER_MODE_LCD ||
          ( face->style_flags & FT_STYLE_FLAG_ITALIC ) != 0          )
@@ -2936,13 +2955,8 @@
     AF_Edge       anchor     = NULL;
     FT_Int        has_serifs = 0;
 
-#ifdef FT_CONFIG_OPTION_PIC
-    AF_FaceGlobals  globals = hints->metrics->globals;
-#endif
-
     AF_StyleClass   style_class  = hints->metrics->style_class;
-    AF_ScriptClass  script_class = AF_SCRIPT_CLASSES_GET
-                                     [style_class->script];
+    AF_ScriptClass  script_class = af_script_classes[style_class->script];
 
     FT_Bool  top_to_bottom_hinting = 0;
 
@@ -2976,12 +2990,12 @@
         edge2 = edge->link;
 
         /*
-         *  If a stem contains both a neutral and a non-neutral blue zone,
-         *  skip the neutral one.  Otherwise, outlines with different
-         *  directions might be incorrectly aligned at the same vertical
-         *  position.
+         * If a stem contains both a neutral and a non-neutral blue zone,
+         * skip the neutral one.  Otherwise, outlines with different
+         * directions might be incorrectly aligned at the same vertical
+         * position.
          *
-         *  If we have two neutral blue zones, skip one of them.
+         * If we have two neutral blue zones, skip one of them.
          *
          */
         if ( edge->blue_edge && edge2 && edge2->blue_edge )
@@ -3344,8 +3358,8 @@
     if ( has_serifs || !anchor )
     {
       /*
-       *  now hint the remaining edges (serifs and single) in order
-       *  to complete our processing
+       * now hint the remaining edges (serifs and single) in order
+       * to complete our processing
        */
       for ( edge = edges; edge < edge_limit; edge++ )
       {
--- a/src/java.desktop/share/native/libfreetype/src/autofit/aflatin.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/aflatin.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  aflatin.h                                                              */
-/*                                                                         */
-/*    Auto-fitter hinting routines for latin writing system                */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aflatin.h
+ *
+ *   Auto-fitter hinting routines for latin writing system
+ *   (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFLATIN_H_
@@ -45,9 +45,9 @@
 
 
   /*
-   *  The following declarations could be embedded in the file `aflatin.c';
-   *  they have been made semi-public to allow alternate writing system
-   *  hinters to re-use some of them.
+   * The following declarations could be embedded in the file `aflatin.c';
+   * they have been made semi-public to allow alternate writing system
+   * hinters to re-use some of them.
    */
 
 
@@ -161,8 +161,8 @@
 
 
   /*
-   *  The next functions shouldn't normally be exported.  However, other
-   *  writing systems might like to use these functions as-is.
+   * The next functions shouldn't normally be exported.  However, other
+   * writing systems might like to use these functions as-is.
    */
   FT_LOCAL( FT_Error )
   af_latin_hints_compute_segments( AF_GlyphHints  hints,
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afloader.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afloader.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afloader.c                                                             */
-/*                                                                         */
-/*    Auto-fitter glyph loading routines (body).                           */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afloader.c
+ *
+ *   Auto-fitter glyph loading routines (body).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "afglobal.h"
@@ -21,7 +21,6 @@
 #include "afhints.h"
 #include "aferrors.h"
 #include "afmodule.h"
-#include "afpic.h"
 
 #include FT_INTERNAL_CALC_H
 
@@ -119,12 +118,12 @@
     }
 
     /*
-     *  We depend on the writing system (script analyzers) to supply
-     *  standard widths for the script of the glyph we are looking at.  If
-     *  it can't deliver, stem darkening is disabled.
+     * We depend on the writing system (script analyzers) to supply
+     * standard widths for the script of the glyph we are looking at.  If
+     * it can't deliver, stem darkening is disabled.
      */
     writing_system_class =
-      AF_WRITING_SYSTEM_CLASSES_GET[style_metrics->style_class->writing_system];
+      af_writing_system_classes[style_metrics->style_class->writing_system];
 
     if ( writing_system_class->style_metrics_getstdw )
       writing_system_class->style_metrics_getstdw( style_metrics,
@@ -174,22 +173,22 @@
       globals->darken_y                  = af_fixedToInt( darken_y );
 
       /*
-       *  Scale outlines down on the Y-axis to keep them inside their blue
-       *  zones.  The stronger the emboldening, the stronger the downscaling
-       *  (plus heuristical padding to prevent outlines still falling out
-       *  their zones due to rounding).
+       * Scale outlines down on the Y-axis to keep them inside their blue
+       * zones.  The stronger the emboldening, the stronger the downscaling
+       * (plus heuristical padding to prevent outlines still falling out
+       * their zones due to rounding).
        *
-       *  Reason: `FT_Outline_Embolden' works by shifting the rightmost
-       *  points of stems farther to the right, and topmost points farther
-       *  up.  This positions points on the Y-axis outside their
-       *  pre-computed blue zones and leads to distortion when applying the
-       *  hints in the code further below.  Code outside this emboldening
-       *  block doesn't know we are presenting it with modified outlines the
-       *  analyzer didn't see!
+       * Reason: `FT_Outline_Embolden' works by shifting the rightmost
+       * points of stems farther to the right, and topmost points farther
+       * up.  This positions points on the Y-axis outside their
+       * pre-computed blue zones and leads to distortion when applying the
+       * hints in the code further below.  Code outside this emboldening
+       * block doesn't know we are presenting it with modified outlines the
+       * analyzer didn't see!
        *
-       *  An unfortunate side effect of downscaling is that the emboldening
-       *  effect is slightly decreased.  The loss becomes more pronounced
-       *  versus the CFF driver at smaller sizes, e.g., at 9ppem and below.
+       * An unfortunate side effect of downscaling is that the emboldening
+       * effect is slightly decreased.  The loss becomes more pronounced
+       * versus the CFF driver at smaller sizes, e.g., at 9ppem and below.
        */
       globals->scale_down_factor =
         FT_DivFix( em_size - ( darken_by_font_units_y + af_intToFixed( 8 ) ),
@@ -232,10 +231,6 @@
     AF_StyleClass          style_class;
     AF_WritingSystemClass  writing_system_class;
 
-#ifdef FT_CONFIG_OPTION_PIC
-    AF_FaceGlobals  globals = loader->globals;
-#endif
-
 
     if ( !size )
       return FT_THROW( Invalid_Size_Handle );
@@ -282,13 +277,13 @@
     }
 
     /*
-     *  TODO: This code currently doesn't support fractional advance widths,
-     *  i.e., placing hinted glyphs at anything other than integer
-     *  x-positions.  This is only relevant for the warper code, which
-     *  scales and shifts glyphs to optimize blackness of stems (hinting on
-     *  the x-axis by nature places things on pixel integers, hinting on the
-     *  y-axis only, i.e., LIGHT mode, doesn't touch the x-axis).  The delta
-     *  values of the scaler would need to be adjusted.
+     * TODO: This code currently doesn't support fractional advance widths,
+     * i.e., placing hinted glyphs at anything other than integer
+     * x-positions.  This is only relevant for the warper code, which
+     * scales and shifts glyphs to optimize blackness of stems (hinting on
+     * the x-axis by nature places things on pixel integers, hinting on the
+     * y-axis only, i.e., LIGHT mode, doesn't touch the x-axis).  The delta
+     * values of the scaler would need to be adjusted.
      */
     scaler.face    = face;
     scaler.x_scale = size_internal->autohint_metrics.x_scale;
@@ -312,10 +307,10 @@
 #endif
 
     /*
-     *  Glyphs (really code points) are assigned to scripts.  Script
-     *  analysis is done lazily: For each glyph that passes through here,
-     *  the corresponding script analyzer is called, but returns immediately
-     *  if it has been run already.
+     * Glyphs (really code points) are assigned to scripts.  Script
+     * analysis is done lazily: For each glyph that passes through here,
+     * the corresponding script analyzer is called, but returns immediately
+     * if it has been run already.
      */
     error = af_face_globals_get_metrics( loader->globals, glyph_index,
                                          style_options, &style_metrics );
@@ -324,7 +319,7 @@
 
     style_class          = style_metrics->style_class;
     writing_system_class =
-      AF_WRITING_SYSTEM_CLASSES_GET[style_class->writing_system];
+      af_writing_system_classes[style_class->writing_system];
 
     loader->metrics = style_metrics;
 
@@ -342,11 +337,11 @@
     }
 
     /*
-     *  Do the main work of `af_loader_load_glyph'.  Note that we never have
-     *  to deal with composite glyphs as those get loaded into
-     *  FT_GLYPH_FORMAT_OUTLINE by the recursed `FT_Load_Glyph' function.
-     *  In the rare cases where FT_LOAD_NO_RECURSE is set, it implies
-     *  FT_LOAD_NO_SCALE and as such the auto-hinter is never called.
+     * Do the main work of `af_loader_load_glyph'.  Note that we never have
+     * to deal with composite glyphs as those get loaded into
+     * FT_GLYPH_FORMAT_OUTLINE by the recursed `FT_Load_Glyph' function.
+     * In the rare cases where FT_LOAD_NO_RECURSE is set, it implies
+     * FT_LOAD_NO_SCALE and as such the auto-hinter is never called.
      */
     load_flags |=  FT_LOAD_NO_SCALE         |
                    FT_LOAD_IGNORE_TRANSFORM |
@@ -358,26 +353,26 @@
       goto Exit;
 
     /*
-     *  Apply stem darkening (emboldening) here before hints are applied to
-     *  the outline.  Glyphs are scaled down proportionally to the
-     *  emboldening so that curve points don't fall outside their
-     *  precomputed blue zones.
+     * Apply stem darkening (emboldening) here before hints are applied to
+     * the outline.  Glyphs are scaled down proportionally to the
+     * emboldening so that curve points don't fall outside their
+     * precomputed blue zones.
      *
-     *  Any emboldening done by the font driver (e.g., the CFF driver)
-     *  doesn't reach here because the autohinter loads the unprocessed
-     *  glyphs in font units for analysis (functions `af_*_metrics_init_*')
-     *  and then above to prepare it for the rasterizers by itself,
-     *  independently of the font driver.  So emboldening must be done here,
-     *  within the autohinter.
+     * Any emboldening done by the font driver (e.g., the CFF driver)
+     * doesn't reach here because the autohinter loads the unprocessed
+     * glyphs in font units for analysis (functions `af_*_metrics_init_*')
+     * and then above to prepare it for the rasterizers by itself,
+     * independently of the font driver.  So emboldening must be done here,
+     * within the autohinter.
      *
-     *  All glyphs to be autohinted pass through here one by one.  The
-     *  standard widths can therefore change from one glyph to the next,
-     *  depending on what script a glyph is assigned to (each script has its
-     *  own set of standard widths and other metrics).  The darkening amount
-     *  must therefore be recomputed for each size and
-     *  `standard_{vertical,horizontal}_width' change.
+     * All glyphs to be autohinted pass through here one by one.  The
+     * standard widths can therefore change from one glyph to the next,
+     * depending on what script a glyph is assigned to (each script has its
+     * own set of standard widths and other metrics).  The darkening amount
+     * must therefore be recomputed for each size and
+     * `standard_{vertical,horizontal}_width' change.
      *
-     *  Ignore errors and carry on without emboldening.
+     * Ignore errors and carry on without emboldening.
      *
      */
 
@@ -426,35 +421,39 @@
       /* now load the slot image into the auto-outline */
       /* and run the automatic hinting process         */
       if ( writing_system_class->style_hints_apply )
-        writing_system_class->style_hints_apply( glyph_index,
-                                                 hints,
-                                                 &gloader->base.outline,
-                                                 style_metrics );
+      {
+        error = writing_system_class->style_hints_apply(
+                  glyph_index,
+                  hints,
+                  &gloader->base.outline,
+                  style_metrics );
+        if ( error )
+          goto Exit;
+      }
 
       /* we now need to adjust the metrics according to the change in */
       /* width/positioning that occurred during the hinting process   */
       if ( scaler.render_mode != FT_RENDER_MODE_LIGHT )
       {
-        FT_Pos  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 ( axis->num_edges > 1 && AF_HINTS_DO_ADVANCE( hints ) )
         {
-          old_rsb = loader->pp2.x - edge2->opos;
+          AF_Edge  edge1 = axis->edges;         /* leftmost edge  */
+          AF_Edge  edge2 = edge1 +
+                           axis->num_edges - 1; /* rightmost edge */
+
+          FT_Pos  old_rsb = loader->pp2.x - edge2->opos;
           /* loader->pp1.x is always zero at this point of time */
-          old_lsb = edge1->opos /* - loader->pp1.x */;
-          new_lsb = edge1->pos;
+          FT_Pos  old_lsb = edge1->opos;     /* - loader->pp1.x */
+          FT_Pos  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;
+          FT_Pos  pp1x_uh = new_lsb    - old_lsb;
+          FT_Pos  pp2x_uh = edge2->pos + old_rsb;
+
 
           /* prefer too much space over too little space */
           /* for very small sizes                        */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afloader.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afloader.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afloader.h                                                             */
-/*                                                                         */
-/*    Auto-fitter glyph loading routines (specification).                  */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afloader.h
+ *
+ *   Auto-fitter glyph loading routines (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFLOADER_H_
@@ -27,11 +27,11 @@
 FT_BEGIN_HEADER
 
   /*
-   *  The autofitter module's (global) data structure to communicate with
-   *  actual fonts.  If necessary, `local' data like the current face, the
-   *  current face's auto-hint data, or the current glyph's parameters
-   *  relevant to auto-hinting are `swapped in'.  Cf. functions like
-   *  `af_loader_reset' and `af_loader_load_g'.
+   * The autofitter module's (global) data structure to communicate with
+   * actual fonts.  If necessary, `local' data like the current face, the
+   * current face's auto-hint data, or the current glyph's parameters
+   * relevant to auto-hinting are `swapped in'.  Cf. functions like
+   * `af_loader_reset' and `af_loader_load_g'.
    */
 
   typedef struct  AF_LoaderRec_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afmodule.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afmodule.c	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,25 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afmodule.c                                                             */
-/*                                                                         */
-/*    Auto-fitter module implementation (body).                            */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afmodule.c
+ *
+ *   Auto-fitter module implementation (body).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "afglobal.h"
 #include "afmodule.h"
 #include "afloader.h"
 #include "aferrors.h"
-#include "afpic.h"
 
 #ifdef FT_DEBUG_AUTOFIT
 
@@ -60,14 +59,14 @@
 #include FT_SERVICE_PROPERTIES_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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_afmodule
+#define FT_COMPONENT  afmodule
 
 
   static FT_Error
@@ -104,19 +103,6 @@
   }
 
 
-#ifdef FT_CONFIG_OPTION_PIC
-
-#undef  AF_SCRIPT_CLASSES_GET
-#define AF_SCRIPT_CLASSES_GET  \
-          ( GET_PIC( ft_module->library )->af_script_classes )
-
-#undef  AF_STYLE_CLASSES_GET
-#define AF_STYLE_CLASSES_GET  \
-          ( GET_PIC( ft_module->library )->af_style_classes )
-
-#endif
-
-
   static FT_Error
   af_property_set( FT_Module    ft_module,
                    const char*  property_name,
@@ -147,9 +133,9 @@
       /* We translate the fallback script to a fallback style that uses */
       /* `fallback-script' as its script and `AF_COVERAGE_NONE' as its  */
       /* coverage value.                                                */
-      for ( ss = 0; AF_STYLE_CLASSES_GET[ss]; ss++ )
+      for ( ss = 0; af_style_classes[ss]; ss++ )
       {
-        AF_StyleClass  style_class = AF_STYLE_CLASSES_GET[ss];
+        AF_StyleClass  style_class = af_style_classes[ss];
 
 
         if ( (FT_UInt)style_class->script == *fallback_script &&
@@ -160,7 +146,7 @@
         }
       }
 
-      if ( !AF_STYLE_CLASSES_GET[ss] )
+      if ( !af_style_classes[ss] )
       {
         FT_TRACE0(( "af_property_set: Invalid value %d for property `%s'\n",
                     fallback_script, property_name ));
@@ -357,7 +343,7 @@
     {
       FT_UInt*  val = (FT_UInt*)value;
 
-      AF_StyleClass  style_class = AF_STYLE_CLASSES_GET[fallback_style];
+      AF_StyleClass  style_class = af_style_classes[fallback_style];
 
 
       *val = style_class->script;
@@ -440,28 +426,16 @@
   FT_DEFINE_SERVICEDESCREC1(
     af_services,
 
-    FT_SERVICE_ID_PROPERTIES, &AF_SERVICE_PROPERTIES_GET )
+    FT_SERVICE_ID_PROPERTIES, &af_service_properties )
 
 
   FT_CALLBACK_DEF( FT_Module_Interface )
   af_get_interface( FT_Module    module,
                     const char*  module_interface )
   {
-    /* AF_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    FT_Library  library;
-
+    FT_UNUSED( module );
 
-    if ( !module )
-      return NULL;
-    library = module->library;
-    if ( !library )
-      return NULL;
-#else
-    FT_UNUSED( module );
-#endif
-
-    return ft_service_list_lookup( AF_SERVICES_GET, module_interface );
+    return ft_service_list_lookup( af_services, module_interface );
   }
 
 
@@ -533,7 +507,7 @@
                                   glyph_index, load_flags );
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-    if ( ft_trace_levels[FT_COMPONENT] )
+    if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] )
     {
 #endif
       af_glyph_hints_dump_points( hints, 0 );
@@ -589,7 +563,7 @@
     0x10000L,   /* version 1.0 of the autofitter  */
     0x20000L,   /* requires FreeType 2.0 or above */
 
-    (const void*)&AF_INTERFACE_GET,
+    (const void*)&af_autofitter_interface,
 
     (FT_Module_Constructor)af_autofitter_init,  /* module_init   */
     (FT_Module_Destructor) af_autofitter_done,  /* module_done   */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afmodule.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afmodule.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afmodule.h                                                             */
-/*                                                                         */
-/*    Auto-fitter module implementation (specification).                   */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afmodule.h
+ *
+ *   Auto-fitter module implementation (specification).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFMODULE_H_
@@ -28,8 +28,8 @@
 
 
   /*
-   *  This is the `extended' FT_Module structure that holds the
-   *  autofitter's global data.
+   * This is the `extended' FT_Module structure that holds the
+   * autofitter's global data.
    */
 
   typedef struct  AF_ModuleRec_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afpic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,152 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afpic.c                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for autofit module.  */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "afpic.h"
-#include "afglobal.h"
-#include "aferrors.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from afmodule.c */
-  FT_Error
-  FT_Create_Class_af_services( FT_Library           library,
-                               FT_ServiceDescRec**  output_class );
-
-  void
-  FT_Destroy_Class_af_services( FT_Library          library,
-                                FT_ServiceDescRec*  clazz );
-
-  void
-  FT_Init_Class_af_service_properties( FT_Service_PropertiesRec*  clazz );
-
-  void FT_Init_Class_af_autofitter_interface(
-    FT_Library                   library,
-    FT_AutoHinter_InterfaceRec*  clazz );
-
-
-  /* forward declaration of PIC init functions from writing system classes */
-#undef  WRITING_SYSTEM
-#define WRITING_SYSTEM( ws, WS )  /* empty */
-
-#include "afwrtsys.h"
-
-
-  void
-  autofit_module_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->autofit )
-    {
-      AFModulePIC*  container = (AFModulePIC*)pic_container->autofit;
-
-
-      if ( container->af_services )
-        FT_Destroy_Class_af_services( library,
-                                      container->af_services );
-      container->af_services = NULL;
-
-      FT_FREE( container );
-      pic_container->autofit = NULL;
-    }
-  }
-
-
-  FT_Error
-  autofit_module_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_UInt            ss;
-    FT_Error           error         = FT_Err_Ok;
-    AFModulePIC*       container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC ( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->autofit = container;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    error = FT_Create_Class_af_services( library,
-                                         &container->af_services );
-    if ( error )
-      goto Exit;
-
-    FT_Init_Class_af_service_properties( &container->af_service_properties );
-
-    for ( ss = 0; ss < AF_WRITING_SYSTEM_MAX; ss++ )
-      container->af_writing_system_classes[ss] =
-        &container->af_writing_system_classes_rec[ss];
-    container->af_writing_system_classes[AF_WRITING_SYSTEM_MAX] = NULL;
-
-    for ( ss = 0; ss < AF_SCRIPT_MAX; ss++ )
-      container->af_script_classes[ss] =
-        &container->af_script_classes_rec[ss];
-    container->af_script_classes[AF_SCRIPT_MAX] = NULL;
-
-    for ( ss = 0; ss < AF_STYLE_MAX; ss++ )
-      container->af_style_classes[ss] =
-        &container->af_style_classes_rec[ss];
-    container->af_style_classes[AF_STYLE_MAX] = NULL;
-
-#undef  WRITING_SYSTEM
-#define WRITING_SYSTEM( ws, WS )                             \
-        FT_Init_Class_af_ ## ws ## _writing_system_class(    \
-          &container->af_writing_system_classes_rec[ss++] );
-
-    ss = 0;
-#include "afwrtsys.h"
-
-#undef  SCRIPT
-#define SCRIPT( s, S, d, h, H, sss )                 \
-        FT_Init_Class_af_ ## s ## _script_class(     \
-          &container->af_script_classes_rec[ss++] );
-
-    ss = 0;
-#include "afscript.h"
-
-#undef  STYLE
-#define STYLE( s, S, d, ws, sc, bss, c )            \
-        FT_Init_Class_af_ ## s ## _style_class(     \
-          &container->af_style_classes_rec[ss++] );
-
-    ss = 0;
-#include "afstyles.h"
-
-    FT_Init_Class_af_autofitter_interface(
-      library, &container->af_autofitter_interface );
-
-  Exit:
-    if ( error )
-      autofit_module_class_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afpic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afpic.h                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for autofit module.  */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 AFPIC_H_
-#define AFPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define AF_SERVICES_GET                af_services
-#define AF_SERVICE_PROPERTIES_GET      af_service_properties
-
-#define AF_WRITING_SYSTEM_CLASSES_GET  af_writing_system_classes
-#define AF_SCRIPT_CLASSES_GET          af_script_classes
-#define AF_STYLE_CLASSES_GET           af_style_classes
-#define AF_INTERFACE_GET               af_autofitter_interface
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-  /* some include files required for members of AFModulePIC */
-#include FT_SERVICE_PROPERTIES_H
-
-#include "aftypes.h"
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  AFModulePIC_
-  {
-    FT_ServiceDescRec*          af_services;
-    FT_Service_PropertiesRec    af_service_properties;
-
-    AF_WritingSystemClass       af_writing_system_classes
-                                  [AF_WRITING_SYSTEM_MAX + 1];
-    AF_WritingSystemClassRec    af_writing_system_classes_rec
-                                  [AF_WRITING_SYSTEM_MAX];
-
-    AF_ScriptClass              af_script_classes
-                                  [AF_SCRIPT_MAX + 1];
-    AF_ScriptClassRec           af_script_classes_rec
-                                  [AF_SCRIPT_MAX];
-
-    AF_StyleClass               af_style_classes
-                                  [AF_STYLE_MAX + 1];
-    AF_StyleClassRec            af_style_classes_rec
-                                  [AF_STYLE_MAX];
-
-    FT_AutoHinter_InterfaceRec  af_autofitter_interface;
-
-  } AFModulePIC;
-
-
-#define GET_PIC( lib )  \
-          ( (AFModulePIC*)( (lib)->pic_container.autofit ) )
-
-#define AF_SERVICES_GET  \
-          ( GET_PIC( library )->af_services )
-#define AF_SERVICE_PROPERTIES_GET  \
-          ( GET_PIC( library )->af_service_properties )
-
-#define AF_WRITING_SYSTEM_CLASSES_GET  \
-          ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_writing_system_classes )
-#define AF_SCRIPT_CLASSES_GET  \
-          ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_script_classes )
-#define AF_STYLE_CLASSES_GET  \
-          ( GET_PIC( FT_FACE_LIBRARY( globals->face ) )->af_style_classes )
-#define AF_INTERFACE_GET  \
-          ( GET_PIC( library )->af_autofitter_interface )
-
-
-  /* see afpic.c for the implementation */
-  void
-  autofit_module_class_pic_free( FT_Library  library );
-
-  FT_Error
-  autofit_module_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* AFPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afranges.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afranges.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afranges.c                                                             */
-/*                                                                         */
-/*    Auto-fitter Unicode script ranges (body).                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afranges.c
+ *
+ *   Auto-fitter Unicode script ranges (body).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 "afranges.h"
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afranges.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afranges.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afranges.h                                                             */
-/*                                                                         */
-/*    Auto-fitter Unicode script ranges (specification).                   */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afranges.h
+ *
+ *   Auto-fitter Unicode script ranges (specification).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFRANGES_H_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afscript.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afscript.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afscript.h                                                             */
-/*                                                                         */
-/*    Auto-fitter scripts (specification only).                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afscript.h
+ *
+ *   Auto-fitter scripts (specification only).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 following part can be included multiple times. */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afshaper.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afshaper.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afshaper.c                                                             */
-/*                                                                         */
-/*    HarfBuzz interface for accessing OpenType features (body).           */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afshaper.c
+ *
+ *   HarfBuzz interface for accessing OpenType features (body).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -26,14 +26,14 @@
 #ifdef FT_CONFIG_OPTION_USE_HARFBUZZ
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_afshaper
+#define FT_COMPONENT  afshaper
 
 
   /*
@@ -591,14 +591,9 @@
   void*
   af_shaper_buf_create( FT_Face  face )
   {
-    FT_Error   error;
-    FT_Memory  memory = face->memory;
-    FT_ULong*  buf;
+    FT_UNUSED( face );
 
-
-    FT_MEM_ALLOC( buf, sizeof ( FT_ULong ) );
-
-    return (void*)buf;
+    return NULL;
   }
 
 
@@ -606,10 +601,8 @@
   af_shaper_buf_destroy( FT_Face  face,
                          void*    buf )
   {
-    FT_Memory  memory = face->memory;
-
-
-    FT_FREE( buf );
+    FT_UNUSED( face );
+    FT_UNUSED( buf );
   }
 
 
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afshaper.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afshaper.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afshaper.h                                                             */
-/*                                                                         */
-/*    HarfBuzz interface for accessing OpenType features (specification).  */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afshaper.h
+ *
+ *   HarfBuzz interface for accessing OpenType features (specification).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFSHAPER_H_
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afstyles.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afstyles.h                                                             */
-/*                                                                         */
-/*    Auto-fitter styles (specification only).                             */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afstyles.h
+ *
+ *   Auto-fitter styles (specification only).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 following part can be included multiple times. */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/aftypes.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/aftypes.h	Thu May 09 16:09:39 2019 -0700
@@ -1,30 +1,30 @@
-/***************************************************************************/
-/*                                                                         */
-/*  aftypes.h                                                              */
-/*                                                                         */
-/*    Auto-fitter types (specification only).                              */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * aftypes.h
+ *
+ *   Auto-fitter types (specification only).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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-fitter is a complete rewrite of the old auto-hinter.
-   *  Its main feature is the ability to differentiate between different
-   *  writing systems and scripts in order to apply specific rules.
+   * The auto-fitter is a complete rewrite of the old auto-hinter.
+   * Its main feature is the ability to differentiate between different
+   * writing systems and scripts in order to apply specific rules.
    *
-   *  The code has also been compartmentalized into several entities that
-   *  should make algorithmic experimentation easier than with the old
-   *  code.
+   * The code has also been compartmentalized into several entities that
+   * should make algorithmic experimentation easier than with the old
+   * code.
    *
    *************************************************************************/
 
@@ -102,9 +102,9 @@
   /*************************************************************************/
 
   /*
-   *  The auto-fitter doesn't need a very high angular accuracy;
-   *  this allows us to speed up some computations considerably with a
-   *  light Cordic algorithm (see afangles.c).
+   * The auto-fitter doesn't need a very high angular accuracy;
+   * this allows us to speed up some computations considerably with a
+   * light Cordic algorithm (see afangles.c).
    */
 
   typedef FT_Int  AF_Angle;
@@ -118,7 +118,7 @@
 
 #if 0
   /*
-   *  compute the angle of a given 2-D vector
+   * compute the angle of a given 2-D vector
    */
   FT_LOCAL( AF_Angle )
   af_angle_atan( FT_Pos  dx,
@@ -126,8 +126,8 @@
 
 
   /*
-   *  compute `angle2 - angle1'; the result is always within
-   *  the range [-AF_ANGLE_PI .. AF_ANGLE_PI - 1]
+   * compute `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,
@@ -150,8 +150,9 @@
   FT_END_STMNT
 
 
-  /*  opaque handle to glyph-specific hints -- see `afhints.h' for more
-   *  details
+  /*
+   * opaque handle to glyph-specific hints -- see `afhints.h' for more
+   * details
    */
   typedef struct AF_GlyphHintsRec_*  AF_GlyphHints;
 
@@ -165,8 +166,8 @@
   /*************************************************************************/
 
   /*
-   *  A scaler models the target pixel device that will receive the
-   *  auto-hinted glyph image.
+   * A scaler models the target pixel device that will receive the
+   * auto-hinted glyph image.
    */
 
 #define AF_SCALER_FLAG_NO_HORIZONTAL  1U /* disable horizontal hinting */
@@ -197,8 +198,9 @@
 
   typedef struct AF_StyleMetricsRec_*  AF_StyleMetrics;
 
-  /*  This function parses an FT_Face to compute global metrics for
-   *  a specific style.
+  /*
+   * This function parses an FT_Face to compute global metrics for
+   * a specific style.
    */
   typedef FT_Error
   (*AF_WritingSystem_InitMetricsFunc)( AF_StyleMetrics  metrics,
@@ -237,22 +239,22 @@
   /*************************************************************************/
 
   /*
-   *  For the auto-hinter, a writing system consists of multiple scripts that
-   *  can be handled similarly *in a typographical way*; the relationship is
-   *  not based on history.  For example, both the Greek and the unrelated
-   *  Armenian scripts share the same features like ascender, descender,
-   *  x-height, etc.  Essentially, a writing system is covered by a
-   *  submodule of the auto-fitter; it contains
+   * For the auto-hinter, a writing system consists of multiple scripts that
+   * can be handled similarly *in a typographical way*; the relationship is
+   * not based on history.  For example, both the Greek and the unrelated
+   * Armenian scripts share the same features like ascender, descender,
+   * x-height, etc.  Essentially, a writing system is covered by a
+   * submodule of the auto-fitter; it contains
    *
-   *  - a specific global analyzer that computes global metrics specific to
-   *    the script (based on script-specific characters to identify ascender
-   *    height, x-height, etc.),
+   * - a specific global analyzer that computes global metrics specific to
+   *   the script (based on script-specific characters to identify ascender
+   *   height, x-height, etc.),
    *
-   *  - a specific glyph analyzer that computes segments and edges for each
-   *    glyph covered by the script,
+   * - a specific glyph analyzer that computes segments and edges for each
+   *   glyph covered by the script,
    *
-   *  - a specific grid-fitting algorithm that distorts the scaled glyph
-   *    outline according to the results of the glyph analyzer.
+   * - a specific grid-fitting algorithm that distorts the scaled glyph
+   *   outline according to the results of the glyph analyzer.
    */
 
 #define AFWRTSYS_H_  /* don't load header files */
@@ -300,12 +302,12 @@
   /*************************************************************************/
 
   /*
-   *  Each script is associated with two sets of Unicode ranges to test
-   *  whether the font face supports the script, and which non-base
-   *  characters the script contains.
+   * Each script is associated with two sets of Unicode ranges to test
+   * whether the font face supports the script, and which non-base
+   * characters the script contains.
    *
-   *  We use four-letter script tags from the OpenType specification,
-   *  extended by `NONE', which indicates `no script'.
+   * We use four-letter script tags from the OpenType specification,
+   * extended by `NONE', which indicates `no script'.
    */
 
 #undef  SCRIPT
@@ -361,41 +363,41 @@
   /*************************************************************************/
 
   /*
-   *  Usually, a font contains more glyphs than can be addressed by its
-   *  character map.
+   * Usually, a font contains more glyphs than can be addressed by its
+   * character map.
    *
-   *  In the PostScript font world, encoding vectors specific to a given
-   *  task are used to select such glyphs, and these glyphs can be often
-   *  recognized by having a suffix in its glyph names.  For example, a
-   *  superscript glyph `A' might be called `A.sup'.  Unfortunately, this
-   *  naming scheme is not standardized and thus unusable for us.
+   * In the PostScript font world, encoding vectors specific to a given
+   * task are used to select such glyphs, and these glyphs can be often
+   * recognized by having a suffix in its glyph names.  For example, a
+   * superscript glyph `A' might be called `A.sup'.  Unfortunately, this
+   * naming scheme is not standardized and thus unusable for us.
    *
-   *  In the OpenType world, a better solution was invented, namely
-   *  `features', which cleanly separate a character's input encoding from
-   *  the corresponding glyph's appearance, and which don't use glyph names
-   *  at all.  For our purposes, and slightly generalized, an OpenType
-   *  feature is a name of a mapping that maps character codes to
-   *  non-standard glyph indices (features get used for other things also).
-   *  For example, the `sups' feature provides superscript glyphs, thus
-   *  mapping character codes like `A' or `B' to superscript glyph
-   *  representation forms.  How this mapping happens is completely
-   *  uninteresting to us.
+   * In the OpenType world, a better solution was invented, namely
+   * `features', which cleanly separate a character's input encoding from
+   * the corresponding glyph's appearance, and which don't use glyph names
+   * at all.  For our purposes, and slightly generalized, an OpenType
+   * feature is a name of a mapping that maps character codes to
+   * non-standard glyph indices (features get used for other things also).
+   * For example, the `sups' feature provides superscript glyphs, thus
+   * mapping character codes like `A' or `B' to superscript glyph
+   * representation forms.  How this mapping happens is completely
+   * uninteresting to us.
    *
-   *  For the auto-hinter, a `coverage' represents all glyphs of an OpenType
-   *  feature collected in a set (as listed below) that can be hinted
-   *  together.  To continue the above example, superscript glyphs must not
-   *  be hinted together with normal glyphs because the blue zones
-   *  completely differ.
+   * For the auto-hinter, a `coverage' represents all glyphs of an OpenType
+   * feature collected in a set (as listed below) that can be hinted
+   * together.  To continue the above example, superscript glyphs must not
+   * be hinted together with normal glyphs because the blue zones
+   * completely differ.
    *
-   *  Note that FreeType itself doesn't compute coverages; it only provides
-   *  the glyphs addressable by the default Unicode character map.  Instead,
-   *  we use the HarfBuzz library (if available), which has many functions
-   *  exactly for this purpose.
+   * Note that FreeType itself doesn't compute coverages; it only provides
+   * the glyphs addressable by the default Unicode character map.  Instead,
+   * we use the HarfBuzz library (if available), which has many functions
+   * exactly for this purpose.
    *
-   *  AF_COVERAGE_DEFAULT is special: It should cover everything that isn't
-   *  listed separately (including the glyphs addressable by the character
-   *  map).  In case HarfBuzz isn't available, it exactly covers the glyphs
-   *  addressable by the character map.
+   * AF_COVERAGE_DEFAULT is special: It should cover everything that isn't
+   * listed separately (including the glyphs addressable by the character
+   * map).  In case HarfBuzz isn't available, it exactly covers the glyphs
+   * addressable by the character map.
    *
    */
 
@@ -423,8 +425,8 @@
   /*************************************************************************/
 
   /*
-   *  The topmost structure for modelling the auto-hinter glyph input data
-   *  is a `style class', grouping everything together.
+   * The topmost structure for modelling the auto-hinter glyph input data
+   * is a `style class', grouping everything together.
    */
 
 #undef  STYLE
@@ -486,8 +488,6 @@
 
 
   /* Declare and define vtables for classes */
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define AF_DECLARE_WRITING_SYSTEM_CLASS( writing_system_class ) \
   FT_CALLBACK_TABLE const AF_WritingSystemClassRec              \
   writing_system_class;
@@ -562,86 +562,8 @@
     coverage                            \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define AF_DECLARE_WRITING_SYSTEM_CLASS( writing_system_class )            \
-  FT_LOCAL( void )                                                         \
-  FT_Init_Class_ ## writing_system_class( AF_WritingSystemClassRec*  ac );
-
-#define AF_DEFINE_WRITING_SYSTEM_CLASS(                                   \
-          writing_system_class,                                           \
-          system,                                                         \
-          m_size,                                                         \
-          m_init,                                                         \
-          m_scale,                                                        \
-          m_done,                                                         \
-          m_stdw,                                                         \
-          h_init,                                                         \
-          h_apply )                                                       \
-  FT_LOCAL_DEF( void )                                                    \
-  FT_Init_Class_ ## writing_system_class( AF_WritingSystemClassRec*  ac ) \
-  {                                                                       \
-    ac->writing_system        = system;                                   \
-                                                                          \
-    ac->style_metrics_size    = m_size;                                   \
-                                                                          \
-    ac->style_metrics_init    = m_init;                                   \
-    ac->style_metrics_scale   = m_scale;                                  \
-    ac->style_metrics_done    = m_done;                                   \
-    ac->style_metrics_getstdw = m_stdw;                                   \
-                                                                          \
-    ac->style_hints_init      = h_init;                                   \
-    ac->style_hints_apply     = h_apply;                                  \
-  }
-
-
-#define AF_DECLARE_SCRIPT_CLASS( script_class )             \
-  FT_LOCAL( void )                                          \
-  FT_Init_Class_ ## script_class( AF_ScriptClassRec*  ac );
+/* */
 
-#define AF_DEFINE_SCRIPT_CLASS(                            \
-          script_class,                                    \
-          script_,                                         \
-          ranges,                                          \
-          nonbase_ranges,                                  \
-          top_to_bottom,                                   \
-          std_charstring )                                 \
-  FT_LOCAL_DEF( void )                                     \
-  FT_Init_Class_ ## script_class( AF_ScriptClassRec*  ac ) \
-  {                                                        \
-    ac->script                    = script_;               \
-    ac->script_uni_ranges         = ranges;                \
-    ac->script_uni_nonbase_ranges = nonbase_ranges;        \
-    ac->top_to_bottom_hinting     = top_to_bottom;         \
-    ac->standard_charstring       = std_charstring;        \
-  }
-
-
-#define AF_DECLARE_STYLE_CLASS( style_class )             \
-  FT_LOCAL( void )                                        \
-  FT_Init_Class_ ## style_class( AF_StyleClassRec*  ac );
-
-#define AF_DEFINE_STYLE_CLASS(                           \
-          style_class,                                   \
-          style_,                                        \
-          writing_system_,                               \
-          script_,                                       \
-          blue_stringset_,                               \
-          coverage_ )                                    \
-  FT_LOCAL_DEF( void )                                   \
-  FT_Init_Class_ ## style_class( AF_StyleClassRec*  ac ) \
-  {                                                      \
-    ac->style          = style_;                         \
-    ac->writing_system = writing_system_;                \
-    ac->script         = script_;                        \
-    ac->blue_stringset = blue_stringset_;                \
-    ac->coverage       = coverage_;                      \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* */
 
 FT_END_HEADER
 
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afwarp.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afwarp.c	Thu May 09 16:09:39 2019 -0700
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afwarp.c                                                               */
-/*                                                                         */
-/*    Auto-fitter warping algorithm (body).                                */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afwarp.c
+ *
+ *   Auto-fitter warping algorithm (body).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 idea of the warping code is to slightly scale and shift a glyph
-   *  within a single dimension so that as much of its segments are aligned
-   *  (more or less) on the grid.  To find out the optimal scaling and
-   *  shifting value, various parameter combinations are tried and scored.
+   * The idea of the warping code is to slightly scale and shift a glyph
+   * within a single dimension so that as much of its segments are aligned
+   * (more or less) on the grid.  To find out the optimal scaling and
+   * shifting value, various parameter combinations are tried and scored.
    */
 
 #include "afwarp.h"
 
 #ifdef AF_CONFIG_OPTION_USE_WARPER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_afwarp
+#define FT_COMPONENT  afwarp
 
 
   /* The weights cover the range 0/64 - 63/64 of a pixel.  Obviously, */
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afwarp.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afwarp.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afwarp.h                                                               */
-/*                                                                         */
-/*    Auto-fitter warping algorithm (specification).                       */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afwarp.h
+ *
+ *   Auto-fitter warping algorithm (specification).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFWARP_H_
@@ -47,12 +47,14 @@
   } AF_WarperRec, *AF_Warper;
 
 
+#ifdef AF_CONFIG_OPTION_USE_WARPER
   FT_LOCAL( void )
   af_warper_compute( AF_Warper      warper,
                      AF_GlyphHints  hints,
                      AF_Dimension   dim,
                      FT_Fixed      *a_scale,
-                     FT_Fixed      *a_delta );
+                     FT_Pos        *a_delta );
+#endif
 
 
 FT_END_HEADER
--- a/src/java.desktop/share/native/libfreetype/src/autofit/afwrtsys.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/autofit/afwrtsys.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afwrtsys.h                                                             */
-/*                                                                         */
-/*    Auto-fitter writing systems (specification only).                    */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afwrtsys.h
+ *
+ *   Auto-fitter writing systems (specification only).
+ *
+ * Copyright (C) 2013-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFWRTSYS_H_
--- a/src/java.desktop/share/native/libfreetype/src/base/basepic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,108 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  basepic.c                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for base.            */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "basepic.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from ftglyph.c */
-  void
-  FT_Init_Class_ft_outline_glyph_class( FT_Glyph_Class*  clazz );
-
-  void
-  FT_Init_Class_ft_bitmap_glyph_class( FT_Glyph_Class*  clazz );
-
-#ifdef FT_CONFIG_OPTION_MAC_FONTS
-  /* forward declaration of PIC init function from ftrfork.c */
-  /* (not modularized)                                       */
-  void
-  FT_Init_Table_ft_raccess_guess_table( ft_raccess_guess_rec*  record );
-#endif
-
-  /* forward declaration of PIC init functions from ftinit.c */
-  FT_Error
-  ft_create_default_module_classes( FT_Library  library );
-
-  void
-  ft_destroy_default_module_classes( FT_Library  library );
-
-
-  void
-  ft_base_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->base )
-    {
-      /* destroy default module classes            */
-      /* (in case FT_Add_Default_Modules was used) */
-      ft_destroy_default_module_classes( library );
-
-      FT_FREE( pic_container->base );
-      pic_container->base = NULL;
-    }
-  }
-
-
-  FT_Error
-  ft_base_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    BasePIC*           container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->base = container;
-
-    /* initialize default modules list and pointers */
-    error = ft_create_default_module_classes( library );
-    if ( error )
-      goto Exit;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    FT_Init_Class_ft_outline_glyph_class(
-      &container->ft_outline_glyph_class );
-    FT_Init_Class_ft_bitmap_glyph_class(
-      &container->ft_bitmap_glyph_class );
-#ifdef FT_CONFIG_OPTION_MAC_FONTS
-    FT_Init_Table_ft_raccess_guess_table(
-      (ft_raccess_guess_rec*)&container->ft_raccess_guess_table );
-#endif
-
-  Exit:
-    if ( error )
-      ft_base_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/base/basepic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,91 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  basepic.h                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for base.            */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 BASEPIC_H_
-#define BASEPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define FT_OUTLINE_GLYPH_CLASS_GET  &ft_outline_glyph_class
-#define FT_BITMAP_GLYPH_CLASS_GET   &ft_bitmap_glyph_class
-#define FT_DEFAULT_MODULES_GET      ft_default_modules
-
-#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-#define FT_RACCESS_GUESS_TABLE_GET  ft_raccess_guess_table
-#endif
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_GLYPH_H
-
-#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-#include FT_INTERNAL_RFORK_H
-#endif
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  BasePIC_
-  {
-    FT_Module_Class**  default_module_classes;
-    FT_Glyph_Class     ft_outline_glyph_class;
-    FT_Glyph_Class     ft_bitmap_glyph_class;
-
-#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-    ft_raccess_guess_rec  ft_raccess_guess_table[FT_RACCESS_N_RULES];
-#endif
-
-  } BasePIC;
-
-
-#define GET_PIC( lib )  ( (BasePIC*)( (lib)->pic_container.base ) )
-
-#define FT_OUTLINE_GLYPH_CLASS_GET                      \
-          ( &GET_PIC( library )->ft_outline_glyph_class )
-#define FT_BITMAP_GLYPH_CLASS_GET                        \
-          ( &GET_PIC( library )->ft_bitmap_glyph_class )
-#define FT_DEFAULT_MODULES_GET                           \
-          ( GET_PIC( library )->default_module_classes )
-
-#ifdef FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK
-#define FT_RACCESS_GUESS_TABLE_GET                       \
-          ( GET_PIC( library )->ft_raccess_guess_table )
-#endif
-
-
-  /* see basepic.c for the implementation */
-  void
-  ft_base_pic_free( FT_Library  library );
-
-  FT_Error
-  ft_base_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-  /* */
-
-#endif /* BASEPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/base/ftadvanc.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftadvanc.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftadvanc.c                                                             */
-/*                                                                         */
-/*    Quick computation of advance widths (body).                          */
-/*                                                                         */
-/*  Copyright 2008-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftadvanc.c
+ *
+ *   Quick computation of advance widths (body).
+ *
+ * Copyright (C) 2008-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
--- a/src/java.desktop/share/native/libfreetype/src/base/ftapi.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftapi.c                                                                */
-/*                                                                         */
-/*    The FreeType compatibility functions (body).                         */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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                       ****/
-  /****                                                                 ****/
-  /****                                                                 ****/
-  /*************************************************************************/
-  /*************************************************************************/
-  /*************************************************************************/
-
-  /* backward 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 */
--- a/src/java.desktop/share/native/libfreetype/src/base/ftbase.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftbase.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbase.h                                                               */
-/*                                                                         */
-/*    Private functions used in the `base' module (specification).         */
-/*                                                                         */
-/*  Copyright 2008-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya.      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbase.h
+ *
+ *   Private functions used in the `base' module (specification).
+ *
+ * Copyright (C) 2008-2019 by
+ * David Turner, Robert Wilhelm, Werner Lemberg, and suzuki toshiya.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 FTBASE_H_
--- a/src/java.desktop/share/native/libfreetype/src/base/ftbbox.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftbbox.c	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbbox.c                                                               */
-/*                                                                         */
-/*    FreeType bbox computation (body).                                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbbox.c
+ *
+ *   FreeType bbox computation (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This component has a _single_ role: to compute exact outline bounding
+   * boxes.
+   *
+   */
 
 
 #include <ft2build.h>
@@ -61,26 +61,28 @@
           ( p->y < bbox.yMin || p->y > bbox.yMax )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Move_To                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used as a `move_to' emitter during                */
-  /*    FT_Outline_Decompose().  It simply records the destination point   */
-  /*    in `user->last'. We also update bbox in case contour starts with   */
-  /*    an implicit `on' point.                                            */
-  /*                                                                       */
-  /* <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.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Move_To
+   *
+   * @Description:
+   *   This function is used as a `move_to' emitter during
+   *   FT_Outline_Decompose().  It simply records the destination point
+   *   in `user->last'. We also update bbox in case contour starts with
+   *   an implicit `on' point.
+   *
+   * @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 )
@@ -93,26 +95,28 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Line_To                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used as a `line_to' emitter during                */
-  /*    FT_Outline_Decompose().  It simply records the destination point   */
-  /*    in `user->last'; no further computations are necessary because     */
-  /*    bbox already contains both explicit ends of the line segment.      */
-  /*                                                                       */
-  /* <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.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Line_To
+   *
+   * @Description:
+   *   This function is used as a `line_to' emitter during
+   *   FT_Outline_Decompose().  It simply records the destination point
+   *   in `user->last'; no further computations are necessary because
+   *   bbox already contains both explicit ends of the line segment.
+   *
+   * @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_Line_To( FT_Vector*  to,
                 TBBox_Rec*  user )
@@ -123,28 +127,33 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Conic_Check                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Find 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.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Conic_Check
+   *
+   * @Description:
+   *   Find 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,
@@ -168,32 +177,35 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Conic_To                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used as a `conic_to' emitter during               */
-  /*    FT_Outline_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.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Conic_To
+   *
+   * @Description:
+   *   This function is used as a `conic_to' emitter during
+   *   FT_Outline_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,
@@ -222,30 +234,36 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Cubic_Check                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Find the extrema of a 1-dimensional cubic Bezier curve and         */
-  /*    update a bounding range.  This version uses iterative splitting    */
-  /*    because it is faster than the exact solution with square roots.    */
-  /*                                                                       */
-  /* <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.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Cubic_Check
+   *
+   * @Description:
+   *   Find the extrema of a 1-dimensional cubic Bezier curve and
+   *   update a bounding range.  This version uses iterative splitting
+   *   because it is faster than the exact solution with square roots.
+   *
+   * @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.
+   */
   static FT_Pos
   cubic_peak( FT_Pos  q1,
               FT_Pos  q2,
@@ -361,34 +379,38 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    BBox_Cubic_To                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used as a `cubic_to' emitter during               */
-  /*    FT_Outline_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.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   BBox_Cubic_To
+   *
+   * @Description:
+   *   This function is used as a `cubic_to' emitter during
+   *   FT_Outline_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,
@@ -490,12 +512,6 @@
       FT_Error   error;
       TBBox_Rec  user;
 
-#ifdef FT_CONFIG_OPTION_PIC
-      FT_Outline_Funcs  bbox_interface;
-
-
-      Init_Class_bbox_interface( &bbox_interface );
-#endif
 
       user.bbox = bbox;
 
--- a/src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftbitmap.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftbitmap.c                                                             */
-/*                                                                         */
-/*    FreeType utility functions for bitmaps (body).                       */
-/*                                                                         */
-/*  Copyright 2004-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftbitmap.c
+ *
+ *   FreeType utility functions for bitmaps (body).
+ *
+ * Copyright (C) 2004-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -24,8 +24,18 @@
 #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  bitmap
+
+
   static
-  const FT_Bitmap  null_bitmap = { 0, 0, 0, 0, 0, 0, 0, 0 };
+  const FT_Bitmap  null_bitmap = { 0, 0, 0, NULL, 0, 0, 0, NULL };
 
 
   /* documentation is in ftbitmap.h */
@@ -786,6 +796,331 @@
   /* documentation is in ftbitmap.h */
 
   FT_EXPORT_DEF( FT_Error )
+  FT_Bitmap_Blend( FT_Library        library,
+                   const FT_Bitmap*  source_,
+                   const FT_Vector   source_offset_,
+                   FT_Bitmap*        target,
+                   FT_Vector        *atarget_offset,
+                   FT_Color          color )
+  {
+    FT_Error   error = FT_Err_Ok;
+    FT_Memory  memory;
+
+    FT_Bitmap         source_bitmap;
+    const FT_Bitmap*  source;
+
+    FT_Vector  source_offset;
+    FT_Vector  target_offset;
+
+    FT_Bool  free_source_bitmap          = 0;
+    FT_Bool  free_target_bitmap_on_error = 0;
+
+    FT_Pos  source_llx, source_lly, source_urx, source_ury;
+    FT_Pos  target_llx, target_lly, target_urx, target_ury;
+    FT_Pos  final_llx, final_lly, final_urx, final_ury;
+
+    unsigned int  final_rows, final_width;
+    long          x, y;
+
+
+    if ( !library || !target || !source_ || !atarget_offset )
+      return FT_THROW( Invalid_Argument );
+
+    memory = library->memory;
+
+    if ( !( target->pixel_mode == FT_PIXEL_MODE_NONE     ||
+            ( target->pixel_mode == FT_PIXEL_MODE_BGRA &&
+              target->buffer                           ) ) )
+      return FT_THROW( Invalid_Argument );
+
+    if ( source_->pixel_mode == FT_PIXEL_MODE_NONE )
+      return FT_Err_Ok;               /* nothing to do */
+
+    /* pitches must have the same sign */
+    if ( target->pixel_mode == FT_PIXEL_MODE_BGRA &&
+         ( source_->pitch ^ target->pitch ) < 0   )
+      return FT_THROW( Invalid_Argument );
+
+    if ( !( source_->width && source_->rows ) )
+      return FT_Err_Ok;               /* nothing to do */
+
+    /* assure integer pixel offsets */
+    source_offset.x = FT_PIX_FLOOR( source_offset_.x );
+    source_offset.y = FT_PIX_FLOOR( source_offset_.y );
+    target_offset.x = FT_PIX_FLOOR( atarget_offset->x );
+    target_offset.y = FT_PIX_FLOOR( atarget_offset->y );
+
+    /* get source bitmap dimensions */
+    source_llx = source_offset.x;
+    if ( FT_LONG_MIN + (FT_Pos)( source_->rows << 6 ) + 64 > source_offset.y )
+    {
+      FT_TRACE5((
+        "FT_Bitmap_Blend: y coordinate overflow in source bitmap\n" ));
+      return FT_THROW( Invalid_Argument );
+    }
+    source_lly = source_offset.y - ( source_->rows << 6 );
+
+    if ( FT_LONG_MAX - (FT_Pos)( source_->width << 6 ) - 64 < source_llx )
+    {
+      FT_TRACE5((
+        "FT_Bitmap_Blend: x coordinate overflow in source bitmap\n" ));
+      return FT_THROW( Invalid_Argument );
+    }
+    source_urx = source_llx + ( source_->width << 6 );
+    source_ury = source_offset.y;
+
+    /* get target bitmap dimensions */
+    if ( target->width && target->rows )
+    {
+      target_llx = target_offset.x;
+      if ( FT_LONG_MIN + (FT_Pos)( target->rows << 6 ) > target_offset.y )
+      {
+        FT_TRACE5((
+          "FT_Bitmap_Blend: y coordinate overflow in target bitmap\n" ));
+        return FT_THROW( Invalid_Argument );
+      }
+      target_lly = target_offset.y - ( target->rows << 6 );
+
+      if ( FT_LONG_MAX - (FT_Pos)( target->width << 6 ) < target_llx )
+      {
+        FT_TRACE5((
+          "FT_Bitmap_Blend: x coordinate overflow in target bitmap\n" ));
+        return FT_THROW( Invalid_Argument );
+      }
+      target_urx = target_llx + ( target->width << 6 );
+      target_ury = target_offset.y;
+    }
+    else
+    {
+      target_llx = FT_LONG_MAX;
+      target_lly = FT_LONG_MAX;
+      target_urx = FT_LONG_MIN;
+      target_ury = FT_LONG_MIN;
+    }
+
+    /* compute final bitmap dimensions */
+    final_llx = FT_MIN( source_llx, target_llx );
+    final_lly = FT_MIN( source_lly, target_lly );
+    final_urx = FT_MAX( source_urx, target_urx );
+    final_ury = FT_MAX( source_ury, target_ury );
+
+    final_width = ( final_urx - final_llx ) >> 6;
+    final_rows  = ( final_ury - final_lly ) >> 6;
+
+#ifdef FT_DEBUG_LEVEL_TRACE
+    FT_TRACE5(( "FT_Bitmap_Blend:\n"
+                "  source bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
+      source_llx / 64, source_lly / 64,
+      source_urx / 64, source_ury / 64,
+      source_->width, source_->rows ));
+
+    if ( target->width && target->rows )
+      FT_TRACE5(( "  target bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
+        target_llx / 64, target_lly / 64,
+        target_urx / 64, target_ury / 64,
+        target->width, target->rows ));
+    else
+      FT_TRACE5(( "  target bitmap: empty\n" ));
+
+    FT_TRACE5(( "  final bitmap: (%d, %d) -- (%d, %d); %d x %d\n",
+      final_llx / 64, final_lly / 64,
+      final_urx / 64, final_ury / 64,
+      final_width, final_rows ));
+#endif /* FT_DEBUG_LEVEL_TRACE */
+
+    /* for blending, set offset vector of final bitmap */
+    /* temporarily to (0,0)                            */
+    source_llx -= final_llx;
+    source_lly -= final_lly;
+
+    if ( target->width && target->rows )
+    {
+      target_llx -= final_llx;
+      target_lly -= final_lly;
+    }
+
+    /* set up target bitmap */
+    if ( target->pixel_mode == FT_PIXEL_MODE_NONE )
+    {
+      /* create new empty bitmap */
+      target->width      = final_width;
+      target->rows       = final_rows;
+      target->pixel_mode = FT_PIXEL_MODE_BGRA;
+      target->pitch      = (int)final_width * 4;
+      target->num_grays  = 256;
+
+      if ( FT_LONG_MAX / target->pitch < (int)target->rows )
+      {
+        FT_TRACE5(( "FT_Blend_Bitmap: target bitmap too large (%d x %d)\n",
+                     final_width, final_rows ));
+        return FT_THROW( Invalid_Argument );
+      }
+
+      if ( FT_ALLOC( target->buffer, target->pitch * (int)target->rows ) )
+        return error;
+
+      free_target_bitmap_on_error = 1;
+    }
+    else if ( target->width != final_width ||
+              target->rows  != final_rows  )
+    {
+      /* adjust old bitmap to enlarged size */
+      int  pitch, new_pitch;
+
+      unsigned char*  buffer = NULL;
+
+
+      pitch = target->pitch;
+      if ( pitch < 0 )
+        pitch = -pitch;
+
+      new_pitch = (int)final_width * 4;
+
+      if ( FT_LONG_MAX / new_pitch < (int)final_rows )
+      {
+        FT_TRACE5(( "FT_Blend_Bitmap: target bitmap too large (%d x %d)\n",
+                     final_width, final_rows ));
+        return FT_THROW( Invalid_Argument );
+      }
+
+      /* TODO: provide an in-buffer solution for large bitmaps */
+      /*       to avoid allocation of a new buffer             */
+      if ( FT_ALLOC( buffer, new_pitch * (int)final_rows ) )
+        goto Error;
+
+      /* copy data to new buffer */
+      x = target_llx >> 6;
+      y = target_lly >> 6;
+
+      /* the bitmap flow is from top to bottom, */
+      /* but y is measured from bottom to top   */
+      if ( target->pitch < 0 )
+      {
+        /* XXX */
+      }
+      else
+      {
+        unsigned char*  p =
+          target->buffer;
+        unsigned char*  q =
+          buffer +
+          ( final_rows - y - target->rows ) * new_pitch +
+          x * 4;
+        unsigned char*  limit_p =
+          p + pitch * (int)target->rows;
+
+
+        while ( p < limit_p )
+        {
+          FT_MEM_COPY( q, p, pitch );
+
+          p += pitch;
+          q += new_pitch;
+        }
+      }
+
+      FT_FREE( target->buffer );
+
+      target->width = final_width;
+      target->rows  = final_rows;
+
+      if ( target->pitch < 0 )
+        target->pitch = -new_pitch;
+      else
+        target->pitch = new_pitch;
+
+      target->buffer = buffer;
+    }
+
+    /* adjust source bitmap if necessary */
+    if ( source_->pixel_mode != FT_PIXEL_MODE_GRAY )
+    {
+      FT_Bitmap_Init( &source_bitmap );
+      error = FT_Bitmap_Convert( library, source_, &source_bitmap, 1 );
+      if ( error )
+        goto Error;
+
+      source             = &source_bitmap;
+      free_source_bitmap = 1;
+    }
+    else
+      source = source_;
+
+    /* do blending; the code below returns pre-multiplied channels, */
+    /* similar to what FreeType gets from `CBDT' tables             */
+    x = source_llx >> 6;
+    y = source_lly >> 6;
+
+    /* the bitmap flow is from top to bottom, */
+    /* but y is measured from bottom to top   */
+    if ( target->pitch < 0 )
+    {
+      /* XXX */
+    }
+    else
+    {
+      unsigned char*  p =
+        source->buffer;
+      unsigned char*  q =
+        target->buffer +
+        ( target->rows - y - source->rows ) * target->pitch +
+        x * 4;
+      unsigned char*  limit_p =
+        p + source->pitch * (int)source->rows;
+
+
+      while ( p < limit_p )
+      {
+        unsigned char*  r       = p;
+        unsigned char*  s       = q;
+        unsigned char*  limit_r = r + source->width;
+
+
+        while ( r < limit_r )
+        {
+          int  aa = *r++;
+          int  fa = color.alpha * aa / 255;
+
+          int  fb = color.blue * fa / 255;
+          int  fg = color.green * fa / 255;
+          int  fr = color.red * fa / 255;
+
+          int  ba2 = 255 - fa;
+
+          int  bb = s[0];
+          int  bg = s[1];
+          int  br = s[2];
+          int  ba = s[3];
+
+
+          *s++ = (unsigned char)( bb * ba2 / 255 + fb );
+          *s++ = (unsigned char)( bg * ba2 / 255 + fg );
+          *s++ = (unsigned char)( br * ba2 / 255 + fr );
+          *s++ = (unsigned char)( ba * ba2 / 255 + fa );
+        }
+
+        p += source->pitch;
+        q += target->pitch;
+      }
+    }
+
+    atarget_offset->x = final_llx;
+    atarget_offset->y = final_lly + ( final_rows << 6 );
+
+  Error:
+    if ( error && free_target_bitmap_on_error )
+      FT_Bitmap_Done( library, target );
+
+    if ( free_source_bitmap )
+      FT_Bitmap_Done( library, &source_bitmap );
+
+    return error;
+  }
+
+
+  /* documentation is in ftbitmap.h */
+
+  FT_EXPORT_DEF( FT_Error )
   FT_GlyphSlot_Own_Bitmap( FT_GlyphSlot  slot )
   {
     if ( slot && slot->format == FT_GLYPH_FORMAT_BITMAP   &&
--- a/src/java.desktop/share/native/libfreetype/src/base/ftcalc.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftcalc.c	Thu May 09 16:09:39 2019 -0700
@@ -1,35 +1,35 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcalc.c                                                               */
-/*                                                                         */
-/*    Arithmetic computations (body).                                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcalc.c
+ *
+ *   Arithmetic computations (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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.                         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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>
@@ -58,14 +58,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  calc
 
 
   /* transfer sign, leaving a positive number;                        */
@@ -516,10 +516,10 @@
 #elif 0
 
     /*
-     *  This code is nonportable.  See comment below.
+     * This code is nonportable.  See comment below.
      *
-     *  However, on a platform where right-shift of a signed quantity fills
-     *  the leftmost bits by copying the sign bit, it might be faster.
+     * However, on a platform where right-shift of a signed quantity fills
+     * the leftmost bits by copying the sign bit, it might be faster.
      */
 
     FT_Long    sa, sb;
@@ -527,22 +527,22 @@
 
 
     /*
-     *  This is a clever way of converting a signed number `a' into its
-     *  absolute value (stored back into `a') and its sign.  The sign is
-     *  stored in `sa'; 0 means `a' was positive or zero, and -1 means `a'
-     *  was negative.  (Similarly for `b' and `sb').
+     * This is a clever way of converting a signed number `a' into its
+     * absolute value (stored back into `a') and its sign.  The sign is
+     * stored in `sa'; 0 means `a' was positive or zero, and -1 means `a'
+     * was negative.  (Similarly for `b' and `sb').
      *
-     *  Unfortunately, it doesn't work (at least not portably).
+     * Unfortunately, it doesn't work (at least not portably).
      *
-     *  It makes the assumption that right-shift on a negative signed value
-     *  fills the leftmost bits by copying the sign bit.  This is wrong.
-     *  According to K&R 2nd ed, section `A7.8 Shift Operators' on page 206,
-     *  the result of right-shift of a negative signed value is
-     *  implementation-defined.  At least one implementation fills the
-     *  leftmost bits with 0s (i.e., it is exactly the same as an unsigned
-     *  right shift).  This means that when `a' is negative, `sa' ends up
-     *  with the value 1 rather than -1.  After that, everything else goes
-     *  wrong.
+     * It makes the assumption that right-shift on a negative signed value
+     * fills the leftmost bits by copying the sign bit.  This is wrong.
+     * According to K&R 2nd ed, section `A7.8 Shift Operators' on page 206,
+     * the result of right-shift of a negative signed value is
+     * implementation-defined.  At least one implementation fills the
+     * leftmost bits with 0s (i.e., it is exactly the same as an unsigned
+     * right shift).  This means that when `a' is negative, `sa' ends up
+     * with the value 1 rather than -1.  After that, everything else goes
+     * wrong.
      */
     sa = ( a_ >> ( sizeof ( a_ ) * 8 - 1 ) );
     a  = ( a_ ^ sa ) - sa;
@@ -701,8 +701,8 @@
     if ( !delta )
       return FT_THROW( Invalid_Argument );  /* matrix can't be inverted */
 
-    matrix->xy = - FT_DivFix( matrix->xy, delta );
-    matrix->yx = - FT_DivFix( matrix->yx, delta );
+    matrix->xy = -FT_DivFix( matrix->xy, delta );
+    matrix->yx = -FT_DivFix( matrix->yx, delta );
 
     xx = matrix->xx;
     yy = matrix->yy;
@@ -747,6 +747,76 @@
 
   /* documentation is in ftcalc.h */
 
+  FT_BASE_DEF( FT_Bool )
+  FT_Matrix_Check( const FT_Matrix*  matrix )
+  {
+    FT_Matrix  m;
+    FT_Fixed   val[4];
+    FT_Fixed   nonzero_minval, maxval;
+    FT_Fixed   temp1, temp2;
+    FT_UInt    i;
+
+
+    if ( !matrix )
+      return 0;
+
+    val[0] = FT_ABS( matrix->xx );
+    val[1] = FT_ABS( matrix->xy );
+    val[2] = FT_ABS( matrix->yx );
+    val[3] = FT_ABS( matrix->yy );
+
+    /*
+     * To avoid overflow, we ensure that each value is not larger than
+     *
+     *   int(sqrt(2^31 / 4)) = 23170  ;
+     *
+     * we also check that no value becomes zero if we have to scale.
+     */
+
+    maxval         = 0;
+    nonzero_minval = FT_LONG_MAX;
+
+    for ( i = 0; i < 4; i++ )
+    {
+      if ( val[i] > maxval )
+        maxval = val[i];
+      if ( val[i] && val[i] < nonzero_minval )
+        nonzero_minval = val[i];
+    }
+
+    /* we only handle 32bit values */
+    if ( maxval > 0x7FFFFFFFL )
+      return 0;
+
+    if ( maxval > 23170 )
+    {
+      FT_Fixed  scale = FT_DivFix( maxval, 23170 );
+
+
+      if ( !FT_DivFix( nonzero_minval, scale ) )
+        return 0;    /* value range too large */
+
+      m.xx = FT_DivFix( matrix->xx, scale );
+      m.xy = FT_DivFix( matrix->xy, scale );
+      m.yx = FT_DivFix( matrix->yx, scale );
+      m.yy = FT_DivFix( matrix->yy, scale );
+    }
+    else
+      m = *matrix;
+
+    temp1 = FT_ABS( m.xx * m.yy - m.xy * m.yx );
+    temp2 = m.xx * m.xx + m.xy * m.xy + m.yx * m.yx + m.yy * m.yy;
+
+    if ( temp1 == 0         ||
+         temp2 / temp1 > 50 )
+      return 0;
+
+    return 1;
+  }
+
+
+  /* documentation is in ftcalc.h */
+
   FT_BASE_DEF( void )
   FT_Vector_Transform_Scaled( FT_Vector*        vector,
                               const FT_Matrix*  matrix,
@@ -913,9 +983,13 @@
                          FT_Pos  out_x,
                          FT_Pos  out_y )
   {
+    /* we silently ignore overflow errors since such large values */
+    /* lead to even more (harmless) rendering errors later on     */
+
 #ifdef FT_LONG64
 
-    FT_Int64  delta = (FT_Int64)in_x * out_y - (FT_Int64)in_y * out_x;
+    FT_Int64  delta = SUB_INT64( MUL_INT64( in_x, out_y ),
+                                 MUL_INT64( in_y, out_x ) );
 
 
     return ( delta > 0 ) - ( delta < 0 );
@@ -925,8 +999,6 @@
     FT_Int  result;
 
 
-    /* we silently ignore overflow errors, since such large values */
-    /* lead to even more (harmless) rendering errors later on      */
     if ( ADD_LONG( FT_ABS( in_x ), FT_ABS( out_y ) ) <= 131071L &&
          ADD_LONG( FT_ABS( in_y ), FT_ABS( out_x ) ) <= 131071L )
     {
--- a/src/java.desktop/share/native/libfreetype/src/base/ftcid.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftcid.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftcid.c                                                                */
-/*                                                                         */
-/*    FreeType API for accessing CID font information.                     */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  Derek Clegg and Michael Toftdal.                                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftcid.c
+ *
+ *   FreeType API for accessing CID font information.
+ *
+ * Copyright (C) 2007-2019 by
+ * Derek Clegg and Michael Toftdal.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
--- a/src/java.desktop/share/native/libfreetype/src/base/ftdbgmem.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftdbgmem.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdbgmem.c                                                             */
-/*                                                                         */
-/*    Memory debugger (body).                                              */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdbgmem.c
+ *
+ *   Memory debugger (body).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -50,9 +50,9 @@
 #define FT_MEM_VAL( addr )  ( (FT_PtrDist)(FT_Pointer)( addr ) )
 
   /*
-   *  This structure holds statistics for a single allocation/release
-   *  site.  This is useful to know where memory operations happen the
-   *  most.
+   * This structure holds statistics for a single allocation/release
+   * site.  This is useful to know where memory operations happen the
+   * most.
    */
   typedef struct  FT_MemSourceRec_
   {
@@ -76,17 +76,17 @@
 
 
   /*
-   *  We don't need a resizable array for the memory sources because
-   *  their number is pretty limited within FreeType.
+   * We don't need a resizable array for the memory sources because
+   * their number is pretty limited within FreeType.
    */
 #define FT_MEM_SOURCE_BUCKETS  128
 
   /*
-   *  This structure holds information related to a single allocated
-   *  memory block.  If KEEPALIVE is defined, blocks that are freed by
-   *  FreeType are never released to the system.  Instead, their `size'
-   *  field is set to `-size'.  This is mainly useful to detect double
-   *  frees, at the price of a large memory footprint during execution.
+   * This structure holds information related to a single allocated
+   * memory block.  If KEEPALIVE is defined, blocks that are freed by
+   * FreeType are never released to the system.  Instead, their `size'
+   * field is set to `-size'.  This is mainly useful to detect double
+   * frees, at the price of a large memory footprint during execution.
    */
   typedef struct  FT_MemNodeRec_
   {
@@ -106,8 +106,8 @@
 
 
   /*
-   *  The global structure, containing compound statistics and all hash
-   *  tables.
+   * The global structure, containing compound statistics and all hash
+   * tables.
    */
   typedef struct  FT_MemTableRec_
   {
@@ -146,8 +146,8 @@
 
 
   /*
-   *  Prime numbers are ugly to handle.  It would be better to implement
-   *  L-Hashing, which is 10% faster and doesn't require divisions.
+   * Prime numbers are ugly to handle.  It would be better to implement
+   * L-Hashing, which is 10% faster and doesn't require divisions.
    */
   static const FT_Int  ft_mem_primes[] =
   {
--- a/src/java.desktop/share/native/libfreetype/src/base/ftdebug.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftdebug.c	Thu May 09 16:09:39 2019 -0700
@@ -1,44 +1,44 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftdebug.c                                                              */
-/*                                                                         */
-/*    Debugging and logging component (body).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftdebug.c
+ *
+ *   Debugging and logging component (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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>
@@ -87,9 +87,19 @@
             int          line,
             const char*  file )
   {
+#if 0
+    /* activating the code in this block makes FreeType very chatty */
+    fprintf( stderr,
+             "%s:%d: error 0x%02x: %s\n",
+             file,
+             line,
+             error,
+             FT_Error_String( error ) );
+#else
     FT_UNUSED( error );
     FT_UNUSED( line );
     FT_UNUSED( file );
+#endif
 
     return 0;
   }
@@ -100,9 +110,16 @@
 
 #ifdef FT_DEBUG_LEVEL_TRACE
 
-  /* array of trace levels, initialized to 0 */
-  int  ft_trace_levels[trace_count];
+  /* array of trace levels, initialized to 0; */
+  /* this gets adjusted at run-time           */
+  static int  ft_trace_levels_enabled[trace_count];
 
+  /* array of trace levels, always initialized to 0 */
+  static int  ft_trace_levels_disabled[trace_count];
+
+  /* a pointer to either `ft_trace_levels_enabled' */
+  /* or `ft_trace_levels_disabled'                 */
+  int*  ft_trace_levels;
 
   /* define array of trace toggle names */
 #define FT_TRACE_DEF( x )  #x ,
@@ -140,24 +157,42 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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:7 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 7 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 7; 0 means quiet (except for serious  */
-  /* runtime errors), and 7 means _very_ verbose.                          */
-  /*                                                                       */
+  /* documentation is in ftdebug.h */
+
+  FT_BASE_DEF( void )
+  FT_Trace_Disable( void )
+  {
+    ft_trace_levels = ft_trace_levels_disabled;
+  }
+
+
+  /* documentation is in ftdebug.h */
+
+  FT_BASE_DEF( void )
+  FT_Trace_Enable( void )
+  {
+    ft_trace_levels = ft_trace_levels_enabled;
+  }
+
+
+  /**************************************************************************
+   *
+   * 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:7 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 7 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 7; 0 means quiet (except for serious
+   * runtime errors), and 7 means _very_ verbose.
+   */
   FT_BASE_DEF( void )
   ft_debug_init( void )
   {
@@ -223,14 +258,16 @@
             {
               /* special case for `any' */
               for ( n = 0; n < trace_count; n++ )
-                ft_trace_levels[n] = level;
+                ft_trace_levels_enabled[n] = level;
             }
             else
-              ft_trace_levels[found] = level;
+              ft_trace_levels_enabled[found] = level;
           }
         }
       }
     }
+
+    ft_trace_levels = ft_trace_levels_enabled;
   }
 
 
@@ -260,6 +297,22 @@
   }
 
 
+  FT_BASE_DEF( void )
+  FT_Trace_Disable( void )
+  {
+    /* nothing */
+  }
+
+
+  /* documentation is in ftdebug.h */
+
+  FT_BASE_DEF( void )
+  FT_Trace_Enable( void )
+  {
+    /* nothing */
+  }
+
+
 #endif /* !FT_DEBUG_LEVEL_TRACE */
 
 
--- a/src/java.desktop/share/native/libfreetype/src/base/ftfntfmt.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftfntfmt.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftfntfmt.c                                                             */
-/*                                                                         */
-/*    FreeType utility file for font formats (body).                       */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftfntfmt.c
+ *
+ *   FreeType utility file for font formats (body).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
--- a/src/java.desktop/share/native/libfreetype/src/base/ftfstype.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftfstype.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftfstype.c                                                             */
-/*                                                                         */
-/*    FreeType utility file to access FSType data (body).                  */
-/*                                                                         */
-/*  Copyright 2008-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftfstype.c
+ *
+ *   FreeType utility file to access FSType data (body).
+ *
+ * Copyright (C) 2008-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_TYPE1_TABLES_H
--- a/src/java.desktop/share/native/libfreetype/src/base/ftgasp.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftgasp.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgasp.c                                                               */
-/*                                                                         */
-/*    Access of TrueType's `gasp' table (body).                            */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgasp.c
+ *
+ *   Access of TrueType's `gasp' table (body).
+ *
+ * Copyright (C) 2007-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
--- a/src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftgloadr.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgloadr.c                                                             */
-/*                                                                         */
-/*    The FreeType glyph loader (body).                                    */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg                       */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgloadr.c
+ *
+ *   The FreeType glyph loader (body).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -23,7 +23,7 @@
 #include FT_INTERNAL_OBJECTS_H
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_gloader
+#define FT_COMPONENT  gloader
 
 
   /*************************************************************************/
@@ -38,31 +38,31 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                                               */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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 */
@@ -99,12 +99,12 @@
   }
 
 
-  /* reset the glyph loader, frees all allocated tables */
-  /* and starts from zero                               */
+  /* reset glyph loader, free all allocated tables, */
+  /* and start from zero                            */
   FT_BASE_DEF( void )
   FT_GlyphLoader_Reset( FT_GlyphLoader  loader )
   {
-    FT_Memory memory = loader->memory;
+    FT_Memory  memory = loader->memory;
 
 
     FT_FREE( loader->base.outline.points );
@@ -129,7 +129,7 @@
   {
     if ( loader )
     {
-      FT_Memory memory = loader->memory;
+      FT_Memory  memory = loader->memory;
 
 
       FT_GlyphLoader_Reset( loader );
@@ -361,46 +361,4 @@
   }
 
 
-  FT_BASE_DEF( FT_Error )
-  FT_GlyphLoader_CopyPoints( FT_GlyphLoader  target,
-                             FT_GlyphLoader  source )
-  {
-    FT_Error  error;
-    FT_UInt   num_points   = (FT_UInt)source->base.outline.n_points;
-    FT_UInt   num_contours = (FT_UInt)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 );
-        FT_ARRAY_COPY( target->base.extra_points2, source->base.extra_points2,
-                       num_points );
-      }
-
-      out->n_points   = (short)num_points;
-      out->n_contours = (short)num_contours;
-
-      FT_GlyphLoader_Adjust_Points( target );
-    }
-
-    return error;
-  }
-
-
 /* END */
--- a/src/java.desktop/share/native/libfreetype/src/base/ftglyph.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftglyph.c	Thu May 09 16:09:39 2019 -0700
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftglyph.c                                                              */
-/*                                                                         */
-/*    FreeType convenience functions to handle glyphs (body).              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftglyph.c
+ *
+ *   FreeType convenience functions to handle glyphs (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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>
@@ -36,16 +36,15 @@
 #include FT_BITMAP_H
 #include FT_INTERNAL_OBJECTS_H
 
-#include "basepic.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  glyph
 
 
   /*************************************************************************/
@@ -77,7 +76,7 @@
     /* do lazy copying whenever possible */
     if ( slot->internal->flags & FT_GLYPH_OWN_BITMAP )
     {
-      glyph->bitmap = slot->bitmap;
+      glyph->bitmap          = slot->bitmap;
       slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
     }
     else
@@ -359,37 +358,28 @@
 
   /* documentation is in ftglyph.h */
 
-  FT_EXPORT_DEF( FT_Error )
-  FT_Get_Glyph( FT_GlyphSlot  slot,
-                FT_Glyph     *aglyph )
+  FT_EXPORT( FT_Error )
+  FT_New_Glyph( FT_Library       library,
+                FT_Glyph_Format  format,
+                FT_Glyph        *aglyph )
   {
-    FT_Library  library;
-    FT_Error    error;
-    FT_Glyph    glyph;
-
     const FT_Glyph_Class*  clazz = NULL;
 
-
-    if ( !slot )
-      return FT_THROW( Invalid_Slot_Handle );
-
-    library = slot->library;
-
-    if ( !aglyph )
+    if ( !library || !aglyph )
       return FT_THROW( Invalid_Argument );
 
     /* if it is a bitmap, that's easy :-) */
-    if ( slot->format == FT_GLYPH_FORMAT_BITMAP )
-      clazz = FT_BITMAP_GLYPH_CLASS_GET;
+    if ( format == FT_GLYPH_FORMAT_BITMAP )
+      clazz = &ft_bitmap_glyph_class;
 
     /* if it is an outline */
-    else if ( slot->format == FT_GLYPH_FORMAT_OUTLINE )
-      clazz = FT_OUTLINE_GLYPH_CLASS_GET;
+    else if ( 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 );
+      FT_Renderer  render = FT_Lookup_Renderer( library, format, 0 );
 
 
       if ( render )
@@ -397,13 +387,31 @@
     }
 
     if ( !clazz )
-    {
-      error = FT_THROW( Invalid_Glyph_Format );
-      goto Exit;
-    }
+      return FT_THROW( Invalid_Glyph_Format );
 
     /* create FT_Glyph object */
-    error = ft_new_glyph( library, clazz, &glyph );
+    return ft_new_glyph( library, clazz, aglyph );
+  }
+
+
+  /* documentation is in ftglyph.h */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Get_Glyph( FT_GlyphSlot  slot,
+                FT_Glyph     *aglyph )
+  {
+    FT_Error  error;
+    FT_Glyph  glyph;
+
+
+    if ( !slot )
+      return FT_THROW( Invalid_Slot_Handle );
+
+    if ( !aglyph )
+      return FT_THROW( Invalid_Argument );
+
+    /* create FT_Glyph object */
+    error = FT_New_Glyph( slot->library, slot->format, &glyph );
     if ( error )
       goto Exit;
 
@@ -427,7 +435,7 @@
     glyph->advance.y = slot->advance.y * 1024;
 
     /* now import the image from the glyph slot */
-    error = clazz->glyph_init( glyph, slot );
+    error = glyph->clazz->glyph_init( glyph, slot );
 
   Exit2:
     /* if an error occurred, destroy the glyph */
@@ -505,8 +513,8 @@
     {
       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 );
+      acbox->xMax = FT_PIX_CEIL_LONG( acbox->xMax );
+      acbox->yMax = FT_PIX_CEIL_LONG( acbox->yMax );
     }
 
     /* convert to integer pixels if needed */
@@ -536,7 +544,6 @@
     FT_BitmapGlyph            bitmap = NULL;
     const FT_Glyph_Class*     clazz;
 
-    /* FT_BITMAP_GLYPH_CLASS_GET dereferences `library' in PIC mode */
     FT_Library                library;
 
 
@@ -553,7 +560,7 @@
       goto Bad;
 
     /* when called with a bitmap glyph, do nothing and return successfully */
-    if ( clazz == FT_BITMAP_GLYPH_CLASS_GET )
+    if ( clazz == &ft_bitmap_glyph_class )
       goto Exit;
 
     if ( !clazz->glyph_prepare )
@@ -569,7 +576,7 @@
     dummy.format   = clazz->glyph_format;
 
     /* create result bitmap glyph */
-    error = ft_new_glyph( library, FT_BITMAP_GLYPH_CLASS_GET, &b );
+    error = ft_new_glyph( library, &ft_bitmap_glyph_class, &b );
     if ( error )
       goto Exit;
     bitmap = (FT_BitmapGlyph)b;
--- a/src/java.desktop/share/native/libfreetype/src/base/fthash.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/fthash.c	Thu May 09 16:09:39 2019 -0700
@@ -1,10 +1,10 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fthash.c                                                               */
-/*                                                                         */
-/*    Hashing functions (body).                                            */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fthash.c
+ *
+ *   Hashing functions (body).
+ *
+ */
 
 /*
  * Copyright 2000 Computing Research Labs, New Mexico State University
@@ -30,13 +30,13 @@
  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  This file is based on code from bdf.c,v 1.22 2000/03/16 20:08:50     */
-  /*                                                                       */
-  /*  taken from Mark Leisher's xmbdfed package                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is based on code from bdf.c,v 1.22 2000/03/16 20:08:50
+   *
+   * taken from Mark Leisher's xmbdfed package
+   *
+   */
 
 
 #include <ft2build.h>
--- a/src/java.desktop/share/native/libfreetype/src/base/ftinit.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftinit.c	Thu May 09 16:09:39 2019 -0700
@@ -1,40 +1,40 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftinit.c                                                               */
-/*                                                                         */
-/*    FreeType initialization layer (body).                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftinit.c
+ *
+ *   FreeType initialization layer (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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'.                              */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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>
@@ -42,20 +42,16 @@
 #include FT_INTERNAL_OBJECTS_H
 #include FT_INTERNAL_DEBUG_H
 #include FT_MODULE_H
-#include "basepic.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
-
-
-#ifndef FT_CONFIG_OPTION_PIC
+#define FT_COMPONENT  init
 
 
 #undef  FT_USE_MODULE
@@ -78,120 +74,6 @@
   };
 
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-
-#ifdef __cplusplus
-#define FT_EXTERNC  extern "C"
-#else
-#define FT_EXTERNC  extern
-#endif
-
-  /* declare the module's class creation/destruction functions */
-#undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )                            \
-  FT_EXTERNC FT_Error                                       \
-  FT_Create_Class_ ## x( FT_Library         library,        \
-                         FT_Module_Class*  *output_class ); \
-  FT_EXTERNC void                                           \
-  FT_Destroy_Class_ ## x( FT_Library        library,        \
-                          FT_Module_Class*  clazz );
-
-#include FT_CONFIG_MODULES_H
-
-  /* count all module classes */
-#undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )  MODULE_CLASS_ ## x,
-
-  enum
-  {
-#include FT_CONFIG_MODULES_H
-    FT_NUM_MODULE_CLASSES
-  };
-
-  /* destroy all module classes */
-#undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )                   \
-  if ( classes[i] )                                \
-  {                                                \
-    FT_Destroy_Class_ ## x( library, classes[i] ); \
-  }                                                \
-  i++;
-
-
-  FT_BASE_DEF( void )
-  ft_destroy_default_module_classes( FT_Library  library )
-  {
-    FT_Module_Class*  *classes;
-    FT_Memory          memory;
-    FT_UInt            i;
-    BasePIC*           pic_container = (BasePIC*)library->pic_container.base;
-
-
-    if ( !pic_container->default_module_classes )
-      return;
-
-    memory  = library->memory;
-    classes = pic_container->default_module_classes;
-    i       = 0;
-
-#include FT_CONFIG_MODULES_H
-
-    FT_FREE( classes );
-    pic_container->default_module_classes = NULL;
-  }
-
-
-  /* initialize all module classes and the pointer table */
-#undef  FT_USE_MODULE
-#define FT_USE_MODULE( type, x )                     \
-  error = FT_Create_Class_ ## x( library, &clazz );  \
-  if ( error )                                       \
-    goto Exit;                                       \
-  classes[i++] = clazz;
-
-
-  FT_BASE_DEF( FT_Error )
-  ft_create_default_module_classes( FT_Library  library )
-  {
-    FT_Error           error;
-    FT_Memory          memory;
-    FT_Module_Class*  *classes = NULL;
-    FT_Module_Class*   clazz;
-    FT_UInt            i;
-    BasePIC*           pic_container = (BasePIC*)library->pic_container.base;
-
-
-    memory = library->memory;
-
-    pic_container->default_module_classes = NULL;
-
-    if ( FT_ALLOC( classes, sizeof ( FT_Module_Class* ) *
-                              ( FT_NUM_MODULE_CLASSES + 1 ) ) )
-      return error;
-
-    /* initialize all pointers to 0, especially the last one */
-    for ( i = 0; i < FT_NUM_MODULE_CLASSES; i++ )
-      classes[i] = NULL;
-    classes[FT_NUM_MODULE_CLASSES] = NULL;
-
-    i = 0;
-
-#include FT_CONFIG_MODULES_H
-
-  Exit:
-    if ( error )
-      ft_destroy_default_module_classes( library );
-    else
-      pic_container->default_module_classes = classes;
-
-    return error;
-  }
-
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
   /* documentation is in ftmodapi.h */
 
   FT_EXPORT_DEF( void )
@@ -201,16 +83,10 @@
     const FT_Module_Class* const*  cur;
 
 
-    /* FT_DEFAULT_MODULES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    if ( !library )
-      return;
-#endif
-
     /* GCC 4.6 warns the type difference:
      *   FT_Module_Class** != const FT_Module_Class* const*
      */
-    cur = (const FT_Module_Class* const*)FT_DEFAULT_MODULES_GET;
+    cur = (const FT_Module_Class* const*)ft_default_modules;
 
     /* test for valid `library' delayed to FT_Add_Module() */
     while ( *cur )
--- a/src/java.desktop/share/native/libfreetype/src/base/ftlcdfil.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftlcdfil.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftlcdfil.c                                                             */
-/*                                                                         */
-/*    FreeType API for color filtering of subpixel bitmap glyphs (body).   */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftlcdfil.c
+ *
+ *   FreeType API for color filtering of subpixel bitmap glyphs (body).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -34,9 +34,9 @@
 
   /* add padding according to filter weights */
   FT_BASE_DEF (void)
-  ft_lcd_padding( FT_Pos*       Min,
-                  FT_Pos*       Max,
-                  FT_GlyphSlot  slot )
+  ft_lcd_padding( FT_BBox*        cbox,
+                  FT_GlyphSlot    slot,
+                  FT_Render_Mode  mode )
   {
     FT_Byte*                 lcd_weights;
     FT_Bitmap_LcdFilterFunc  lcd_filter_func;
@@ -56,10 +56,20 @@
 
     if ( lcd_filter_func == ft_lcd_filter_fir )
     {
-      *Min -= lcd_weights[0] ? 43 :
-              lcd_weights[1] ? 22 : 0;
-      *Max += lcd_weights[4] ? 43 :
-              lcd_weights[3] ? 22 : 0;
+      if ( mode == FT_RENDER_MODE_LCD )
+      {
+        cbox->xMin -= lcd_weights[0] ? 43 :
+                      lcd_weights[1] ? 22 : 0;
+        cbox->xMax += lcd_weights[4] ? 43 :
+                      lcd_weights[3] ? 22 : 0;
+      }
+      else if ( mode == FT_RENDER_MODE_LCD_V )
+      {
+        cbox->yMin -= lcd_weights[0] ? 43 :
+                      lcd_weights[1] ? 22 : 0;
+        cbox->yMax += lcd_weights[4] ? 43 :
+                      lcd_weights[3] ? 22 : 0;
+      }
     }
   }
 
@@ -275,6 +285,8 @@
 #endif /* USE_LEGACY */
 
 
+  /* documentation in ftlcdfil.h */
+
   FT_EXPORT_DEF( FT_Error )
   FT_Library_SetLcdFilterWeights( FT_Library      library,
                                   unsigned char  *weights )
@@ -292,6 +304,8 @@
   }
 
 
+  /* documentation in ftlcdfil.h */
+
   FT_EXPORT_DEF( FT_Error )
   FT_Library_SetLcdFilter( FT_Library    library,
                            FT_LcdFilter  filter )
@@ -341,18 +355,41 @@
     return FT_Err_Ok;
   }
 
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Library_SetLcdGeometry( FT_Library  library,
+                             FT_Vector*  sub )
+  {
+    FT_UNUSED( library );
+    FT_UNUSED( sub );
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
 #else /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
-  /* add padding according to accommodate outline shifts */
+  /* add padding to accommodate outline shifts */
   FT_BASE_DEF (void)
-  ft_lcd_padding( FT_Pos*       Min,
-                  FT_Pos*       Max,
-                  FT_GlyphSlot  slot )
+  ft_lcd_padding( FT_BBox*        cbox,
+                  FT_GlyphSlot    slot,
+                  FT_Render_Mode  mode )
   {
-    FT_UNUSED( slot );
+    FT_Vector*  sub = slot->library->lcd_geometry;
 
-    *Min -= 21;
-    *Max += 21;
+    if ( mode == FT_RENDER_MODE_LCD )
+    {
+      cbox->xMin -= FT_MAX( FT_MAX( sub[0].x, sub[1].x ), sub[2].x );
+      cbox->xMax -= FT_MIN( FT_MIN( sub[0].x, sub[1].x ), sub[2].x );
+      cbox->yMin -= FT_MAX( FT_MAX( sub[0].y, sub[1].y ), sub[2].y );
+      cbox->yMax -= FT_MIN( FT_MIN( sub[0].y, sub[1].y ), sub[2].y );
+    }
+    else if ( mode == FT_RENDER_MODE_LCD_V )
+    {
+      cbox->xMin -= FT_MAX( FT_MAX( sub[0].y, sub[1].y ), sub[2].y );
+      cbox->xMax -= FT_MIN( FT_MIN( sub[0].y, sub[1].y ), sub[2].y );
+      cbox->yMin += FT_MIN( FT_MIN( sub[0].x, sub[1].x ), sub[2].x );
+      cbox->yMax += FT_MAX( FT_MAX( sub[0].x, sub[1].x ), sub[2].x );
+    }
   }
 
 
@@ -377,6 +414,24 @@
     return FT_THROW( Unimplemented_Feature );
   }
 
+
+  /* documentation in ftlcdfil.h */
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Library_SetLcdGeometry( FT_Library  library,
+                             FT_Vector   sub[3] )
+  {
+    if ( !library )
+      return FT_THROW( Invalid_Library_Handle );
+
+    if ( !sub )
+      return FT_THROW( Invalid_Argument );
+
+    ft_memcpy( library->lcd_geometry, sub, 3 * sizeof( FT_Vector ) );
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
 #endif /* !FT_CONFIG_OPTION_SUBPIXEL_RENDERING */
 
 
--- a/src/java.desktop/share/native/libfreetype/src/base/ftmac.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftmac.c	Thu May 09 16:09:39 2019 -0700
@@ -1,23 +1,23 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmac.c                                                                */
-/*                                                                         */
-/*    Mac FOND support.  Written by just@letterror.com.                    */
-/*  Heavily modified by mpsuzuki, George Williams, and Sean McBride.       */
-/*                                                                         */
-/*  This file is for Mac OS X only; see builds/mac/ftoldmac.c for          */
-/*  classic platforms built by MPW.                                        */
-/*                                                                         */
-/*  Copyright 1996-2018 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.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmac.c
+ *
+ *   Mac FOND support.  Written by just@letterror.com.
+ * Heavily modified by mpsuzuki, George Williams, and Sean McBride.
+ *
+ * This file is for Mac OS X only; see builds/mac/ftoldmac.c for
+ * classic platforms built by MPW.
+ *
+ * Copyright (C) 1996-2019 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.
+ *
+ */
 
 
   /*
@@ -954,17 +954,17 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -995,17 +995,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_Face_From_FSRef                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    FT_New_Face_From_FSRef is identical to FT_New_Face except it       */
-  /*    accepts an FSRef instead of a path.                                */
-  /*                                                                       */
-  /* This function is deprecated because Carbon data types (FSRef)         */
-  /* are not cross-platform, and thus not suitable for the FreeType API.   */
+  /**************************************************************************
+   *
+   * @Function:
+   *   FT_New_Face_From_FSRef
+   *
+   * @Description:
+   *   FT_New_Face_From_FSRef is identical to FT_New_Face except it
+   *   accepts an FSRef instead of a path.
+   *
+   * This function is deprecated because Carbon data types (FSRef)
+   * are not cross-platform, and thus not suitable for the FreeType API.
+   */
   FT_EXPORT_DEF( FT_Error )
   FT_New_Face_From_FSRef( FT_Library    library,
                           const FSRef*  ref,
@@ -1040,16 +1041,17 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                               */
-  /*                                                                       */
-  /* This function is deprecated because FSSpec is deprecated in Mac OS X  */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   * This function is deprecated because FSSpec is deprecated in Mac OS X
+   */
   FT_EXPORT_DEF( FT_Error )
   FT_New_Face_From_FSSpec( FT_Library     library,
                            const FSSpec*  spec,
--- a/src/java.desktop/share/native/libfreetype/src/base/ftmm.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftmm.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmm.c                                                                 */
-/*                                                                         */
-/*    Multiple Master font support (body).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmm.c
+ *
+ *   Multiple Master font support (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -25,14 +25,14 @@
 #include FT_SERVICE_METRICS_VARIATIONS_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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  mm
 
 
   static FT_Error
@@ -202,6 +202,67 @@
   /* documentation is in ftmm.h */
 
   FT_EXPORT_DEF( FT_Error )
+  FT_Set_MM_WeightVector( FT_Face    face,
+                          FT_UInt    len,
+                          FT_Fixed*  weightvector )
+  {
+    FT_Error                 error;
+    FT_Service_MultiMasters  service;
+
+
+    /* check of `face' delayed to `ft_face_get_mm_service' */
+
+    if ( len && !weightvector )
+      return FT_THROW( Invalid_Argument );
+
+    error = ft_face_get_mm_service( face, &service );
+    if ( !error )
+    {
+      error = FT_ERR( Invalid_Argument );
+      if ( service->set_mm_weightvector )
+        error = service->set_mm_weightvector( face, len, weightvector );
+    }
+
+    /* enforce recomputation of auto-hinting data */
+    if ( !error && face->autohint.finalizer )
+    {
+      face->autohint.finalizer( face->autohint.data );
+      face->autohint.data = NULL;
+    }
+
+    return error;
+  }
+
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Get_MM_WeightVector( FT_Face    face,
+                          FT_UInt*   len,
+                          FT_Fixed*  weightvector )
+  {
+    FT_Error                 error;
+    FT_Service_MultiMasters  service;
+
+
+    /* check of `face' delayed to `ft_face_get_mm_service' */
+
+    if ( len && !weightvector )
+      return FT_THROW( Invalid_Argument );
+
+    error = ft_face_get_mm_service( face, &service );
+    if ( !error )
+    {
+      error = FT_ERR( Invalid_Argument );
+      if ( service->get_mm_weightvector )
+        error = service->get_mm_weightvector( face, len, weightvector );
+    }
+
+    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 )
--- a/src/java.desktop/share/native/libfreetype/src/base/ftobjs.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftobjs.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftobjs.c                                                               */
-/*                                                                         */
-/*    The FreeType private base classes (body).                            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftobjs.c
+ *
+ *   The FreeType private base classes (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -79,6 +79,18 @@
 #pragma warning( pop )
 #endif
 
+  static const char* const  pixel_modes[] =
+  {
+    "none",
+    "monochrome bitmap",
+    "gray 8-bit bitmap",
+    "gray 2-bit bitmap",
+    "gray 4-bit bitmap",
+    "LCD 8-bit bitmap",
+    "vertical LCD 8-bit bitmap",
+    "BGRA 32-bit color image bitmap"
+  };
+
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
 
@@ -259,14 +271,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_objs
+#define FT_COMPONENT  objs
 
 
   /*************************************************************************/
@@ -330,7 +342,9 @@
   }
 
 
-  FT_BASE_DEF( void )
+  /* overflow-resistant presetting of bitmap position and dimensions; */
+  /* also check whether the size is too large for rendering           */
+  FT_BASE_DEF( FT_Bool )
   ft_glyphslot_preset_bitmap( FT_GlyphSlot      slot,
                               FT_Render_Mode    mode,
                               const FT_Vector*  origin )
@@ -340,15 +354,15 @@
 
     FT_Pixel_Mode  pixel_mode;
 
-    FT_BBox  cbox;
+    FT_BBox  cbox, pbox;
     FT_Pos   x_shift = 0;
     FT_Pos   y_shift = 0;
     FT_Pos   x_left, y_top;
     FT_Pos   width, height, pitch;
 
 
-    if ( slot->internal && ( slot->internal->flags & FT_GLYPH_OWN_BITMAP ) )
-      return;
+    if ( slot->format != FT_GLYPH_FORMAT_OUTLINE )
+      return 1;
 
     if ( origin )
     {
@@ -360,76 +374,89 @@
     /* taking into account the origin shift      */
     FT_Outline_Get_CBox( outline, &cbox );
 
-    cbox.xMin += x_shift;
-    cbox.yMin += y_shift;
-    cbox.xMax += x_shift;
-    cbox.yMax += y_shift;
+    /* rough estimate of pixel box */
+    pbox.xMin = ( cbox.xMin >> 6 ) + ( x_shift >> 6 );
+    pbox.yMin = ( cbox.yMin >> 6 ) + ( y_shift >> 6 );
+    pbox.xMax = ( cbox.xMax >> 6 ) + ( x_shift >> 6 );
+    pbox.yMax = ( cbox.yMax >> 6 ) + ( y_shift >> 6 );
+
+    /* tiny remainder box */
+    cbox.xMin = ( cbox.xMin & 63 ) + ( x_shift & 63 );
+    cbox.yMin = ( cbox.yMin & 63 ) + ( y_shift & 63 );
+    cbox.xMax = ( cbox.xMax & 63 ) + ( x_shift & 63 );
+    cbox.yMax = ( cbox.yMax & 63 ) + ( y_shift & 63 );
 
     switch ( mode )
     {
     case FT_RENDER_MODE_MONO:
       pixel_mode = FT_PIXEL_MODE_MONO;
 #if 1
-      /* undocumented but confirmed: bbox values get rounded    */
-      /* unless the rounded box can collapse for a narrow glyph */
-      if ( cbox.xMax - cbox.xMin < 64 )
-      {
-        cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
-        cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
-      }
-      else
-      {
-        cbox.xMin = FT_PIX_ROUND_LONG( cbox.xMin );
-        cbox.xMax = FT_PIX_ROUND_LONG( cbox.xMax );
-      }
-
-      if ( cbox.yMax - cbox.yMin < 64 )
+      /* x */
+
+      /* undocumented but confirmed: bbox values get rounded;    */
+      /* we do asymmetric rounding so that the center of a pixel */
+      /* gets always included                                    */
+
+      pbox.xMin += ( cbox.xMin + 31 ) >> 6;
+      pbox.xMax += ( cbox.xMax + 32 ) >> 6;
+
+      /* if the bbox collapsed, we add a pixel based on the total */
+      /* rounding remainder to cover most of the original cbox    */
+
+      if ( pbox.xMin == pbox.xMax )
       {
-        cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
-        cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
-      }
-      else
-      {
-        cbox.yMin = FT_PIX_ROUND_LONG( cbox.yMin );
-        cbox.yMax = FT_PIX_ROUND_LONG( cbox.yMax );
+        if ( ( ( cbox.xMin + 31 ) & 63 ) - 31 +
+             ( ( cbox.xMax + 32 ) & 63 ) - 32 < 0 )
+          pbox.xMin -= 1;
+        else
+          pbox.xMax += 1;
       }
+
+      /* y */
+
+      pbox.yMin += ( cbox.yMin + 31 ) >> 6;
+      pbox.yMax += ( cbox.yMax + 32 ) >> 6;
+
+      if ( pbox.yMin == pbox.yMax )
+      {
+        if ( ( ( cbox.yMin + 31 ) & 63 ) - 31 +
+             ( ( cbox.yMax + 32 ) & 63 ) - 32 < 0 )
+          pbox.yMin -= 1;
+        else
+          pbox.yMax += 1;
+      }
+
+      break;
 #else
-      cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
-      cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
-      cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
-      cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
+      goto Adjust;
 #endif
-      break;
 
     case FT_RENDER_MODE_LCD:
       pixel_mode = FT_PIXEL_MODE_LCD;
-      ft_lcd_padding( &cbox.xMin, &cbox.xMax, slot );
-      goto Round;
+      ft_lcd_padding( &cbox, slot, mode );
+      goto Adjust;
 
     case FT_RENDER_MODE_LCD_V:
       pixel_mode = FT_PIXEL_MODE_LCD_V;
-      ft_lcd_padding( &cbox.yMin, &cbox.yMax, slot );
-      goto Round;
+      ft_lcd_padding( &cbox, slot, mode );
+      goto Adjust;
 
     case FT_RENDER_MODE_NORMAL:
     case FT_RENDER_MODE_LIGHT:
     default:
       pixel_mode = FT_PIXEL_MODE_GRAY;
-    Round:
-      cbox.xMin = FT_PIX_FLOOR( cbox.xMin );
-      cbox.yMin = FT_PIX_FLOOR( cbox.yMin );
-      cbox.xMax = FT_PIX_CEIL_LONG( cbox.xMax );
-      cbox.yMax = FT_PIX_CEIL_LONG( cbox.yMax );
+    Adjust:
+      pbox.xMin += cbox.xMin >> 6;
+      pbox.yMin += cbox.yMin >> 6;
+      pbox.xMax += ( cbox.xMax + 63 ) >> 6;
+      pbox.yMax += ( cbox.yMax + 63 ) >> 6;
     }
 
-    x_shift = SUB_LONG( x_shift, cbox.xMin );
-    y_shift = SUB_LONG( y_shift, cbox.yMin );
-
-    x_left = cbox.xMin >> 6;
-    y_top  = cbox.yMax >> 6;
-
-    width  = ( (FT_ULong)cbox.xMax - (FT_ULong)cbox.xMin ) >> 6;
-    height = ( (FT_ULong)cbox.yMax - (FT_ULong)cbox.yMin ) >> 6;
+    x_left = pbox.xMin;
+    y_top  = pbox.yMax;
+
+    width  = pbox.xMax - pbox.xMin;
+    height = pbox.yMax - pbox.yMin;
 
     switch ( pixel_mode )
     {
@@ -459,6 +486,16 @@
     bitmap->width      = (unsigned int)width;
     bitmap->rows       = (unsigned int)height;
     bitmap->pitch      = pitch;
+
+    if ( pbox.xMin < -0x8000 || pbox.xMax > 0x7FFF ||
+         pbox.yMin < -0x8000 || pbox.yMax > 0x7FFF )
+    {
+      FT_TRACE3(( "ft_glyphslot_preset_bitmap: [%ld %ld %ld %ld]\n",
+                  pbox.xMin, pbox.yMin, pbox.xMax, pbox.yMax ));
+      return 1;
+    }
+
+    return 0;
   }
 
 
@@ -807,7 +844,7 @@
      * - Do only auto-hinting if we have
      *
      *   - a hinter module,
-     *   - a scalable font format dealing with outlines,
+     *   - a scalable font,
      *   - not a tricky font, and
      *   - no transforms except simple slants and/or rotations by
      *     integer multiples of 90 degrees.
@@ -825,8 +862,7 @@
     if ( hinter                                           &&
          !( load_flags & FT_LOAD_NO_HINTING )             &&
          !( load_flags & FT_LOAD_NO_AUTOHINT )            &&
-         FT_DRIVER_IS_SCALABLE( driver )                  &&
-         FT_DRIVER_USES_OUTLINES( driver )                &&
+         FT_IS_SCALABLE( face )                           &&
          !FT_IS_TRICKY( face )                            &&
          ( ( load_flags & FT_LOAD_IGNORE_TRANSFORM )    ||
            ( face->internal->transform_matrix.yx == 0 &&
@@ -846,7 +882,7 @@
         /* only the new Adobe engine (for both CFF and Type 1) is `light'; */
         /* we use `strstr' to catch both `Type 1' and `CID Type 1'         */
         is_light_type1 =
-          ft_strstr( FT_Get_Font_Format( face ), "Type 1" ) != NULL   &&
+          ft_strstr( FT_Get_Font_Format( face ), "Type 1" ) != NULL &&
           ((PS_Driver)driver)->hinting_engine == FT_HINTING_ADOBE;
 
         /* the check for `num_locations' assures that we actually    */
@@ -926,8 +962,9 @@
 
 #ifdef GRID_FIT_METRICS
         if ( !( load_flags & FT_LOAD_NO_HINTING ) )
-          ft_glyphslot_grid_fit_metrics( slot,
-              FT_BOOL( load_flags & FT_LOAD_VERTICAL_LAYOUT ) );
+          ft_glyphslot_grid_fit_metrics(
+            slot,
+            FT_BOOL( load_flags & FT_LOAD_VERTICAL_LAYOUT ) );
 #endif
       }
     }
@@ -995,6 +1032,9 @@
       }
     }
 
+    slot->glyph_index          = glyph_index;
+    slot->internal->load_flags = load_flags;
+
     /* do we need to render the image or preset the bitmap now? */
     if ( !error                                    &&
          ( load_flags & FT_LOAD_NO_SCALE ) == 0    &&
@@ -1014,17 +1054,21 @@
         ft_glyphslot_preset_bitmap( slot, mode, NULL );
     }
 
-    FT_TRACE5(( "FT_Load_Glyph: index %d, flags %x\n",
-                glyph_index, load_flags               ));
+#ifdef FT_DEBUG_LEVEL_TRACE
+    FT_TRACE5(( "FT_Load_Glyph: index %d, flags 0x%x\n",
+                glyph_index, load_flags ));
     FT_TRACE5(( "  x advance: %f\n", slot->advance.x / 64.0 ));
     FT_TRACE5(( "  y advance: %f\n", slot->advance.y / 64.0 ));
     FT_TRACE5(( "  linear x advance: %f\n",
                 slot->linearHoriAdvance / 65536.0 ));
     FT_TRACE5(( "  linear y advance: %f\n",
                 slot->linearVertAdvance / 65536.0 ));
-    FT_TRACE5(( "  bitmap %dx%d, mode %d\n",
-                slot->bitmap.width, slot->bitmap.rows,
-                slot->bitmap.pixel_mode               ));
+    FT_TRACE5(( "  bitmap %dx%d, %s (mode %d)\n",
+                slot->bitmap.width,
+                slot->bitmap.rows,
+                pixel_modes[slot->bitmap.pixel_mode],
+                slot->bitmap.pixel_mode ));
+#endif
 
   Exit:
     return error;
@@ -1162,20 +1206,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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 ).                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
   {
@@ -1192,26 +1236,26 @@
       return FT_THROW( 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.
+     * 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.
+     * 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:
+     * 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.
+     * - 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.
+     * - 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.
+     * 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 IDs (3,10), is normally the */
@@ -1255,15 +1299,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    find_variant_selector_charmap                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function finds the variant selector charmap, if there is one. */
-  /*    There can only be one (platform=0, specific=5, format=14).         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   find_variant_selector_charmap
+   *
+   * @Description:
+   *   This function finds the variant selector charmap, if there is one.
+   *   There can only be one (platform=0, specific=5, format=14).
+   */
   static FT_CharMap
   find_variant_selector_charmap( FT_Face  face )
   {
@@ -1294,14 +1338,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    open_face                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function does some work for FT_Open_Face().                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   open_face
+   *
+   * @Description:
+   *   This function does some work for FT_Open_Face().
+   */
   static FT_Error
   open_face( FT_Driver      driver,
              FT_Stream      *astream,
@@ -2176,13 +2220,13 @@
   {
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_raccess
+#define FT_COMPONENT  raccess
 
     FT_Memory  memory = library->memory;
     FT_Error   error  = FT_ERR( Unknown_File_Format );
     FT_UInt    i;
 
-    char *     file_names[FT_RACCESS_N_RULES];
+    char*      file_names[FT_RACCESS_N_RULES];
     FT_Long    offsets[FT_RACCESS_N_RULES];
     FT_Error   errors[FT_RACCESS_N_RULES];
     FT_Bool    is_darwin_vfs, vfs_rfork_has_no_font = FALSE; /* not tested */
@@ -2254,7 +2298,7 @@
     return error;
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_objs
+#define FT_COMPONENT  objs
 
   }
 
@@ -2282,7 +2326,7 @@
     {
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_raccess
+#define FT_COMPONENT  raccess
 
 #ifdef FT_DEBUG_LEVEL_TRACE
       FT_TRACE3(( "Try as dfont: " ));
@@ -2295,7 +2339,7 @@
       FT_TRACE3(( "%s\n", error ? "failed" : "successful" ));
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_objs
+#define FT_COMPONENT  objs
 
     }
 
@@ -2693,8 +2737,8 @@
 
     /* close the attached stream */
     FT_Stream_Free( stream,
-                    (FT_Bool)( parameters->stream &&
-                               ( parameters->flags & FT_OPEN_STREAM ) ) );
+                    FT_BOOL( parameters->stream                     &&
+                             ( parameters->flags & FT_OPEN_STREAM ) ) );
 
   Exit:
     return error;
@@ -3464,7 +3508,8 @@
     if ( !face )
       return FT_THROW( Invalid_Face_Handle );
 
-    if ( encoding == FT_ENCODING_NONE )
+    /* FT_ENCODING_NONE is a valid encoding for BDF, PCF, and Windows FNT */
+    if ( encoding == FT_ENCODING_NONE && !face->num_charmaps )
       return FT_THROW( Invalid_Argument );
 
     /* FT_ENCODING_UNICODE is special.  We try to find the `best' Unicode */
@@ -3485,7 +3530,7 @@
       if ( cur[0]->encoding == encoding )
       {
         face->charmap = cur[0];
-        return 0;
+        return FT_Err_Ok;
       }
     }
 
@@ -3510,14 +3555,12 @@
     if ( !cur || !charmap )
       return FT_THROW( Invalid_CharMap_Handle );
 
-    if ( FT_Get_CMap_Format( charmap ) == 14 )
-      return FT_THROW( Invalid_Argument );
-
     limit = cur + face->num_charmaps;
 
     for ( ; cur < limit; cur++ )
     {
-      if ( cur[0] == charmap )
+      if ( cur[0] == charmap                    &&
+           FT_Get_CMap_Format ( charmap ) != 14 )
       {
         face->charmap = cur[0];
         return FT_Err_Ok;
@@ -4487,16 +4530,89 @@
                             FT_Render_Mode  render_mode )
   {
     FT_Error     error = FT_Err_Ok;
+    FT_Face      face  = slot->face;
     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:
+      if ( slot->internal->load_flags & FT_LOAD_COLOR )
+      {
+        FT_LayerIterator  iterator;
+
+        FT_UInt  base_glyph = slot->glyph_index;
+
+        FT_Bool  have_layers;
+        FT_UInt  glyph_index;
+        FT_UInt  color_index;
+
+
+        /* check whether we have colored glyph layers */
+        iterator.p  = NULL;
+        have_layers = FT_Get_Color_Glyph_Layer( face,
+                                                base_glyph,
+                                                &glyph_index,
+                                                &color_index,
+                                                &iterator );
+        if ( have_layers )
+        {
+          error = FT_New_GlyphSlot( face, NULL );
+          if ( !error )
+          {
+            TT_Face       ttface = (TT_Face)face;
+            SFNT_Service  sfnt   = (SFNT_Service)ttface->sfnt;
+
+
+            do
+            {
+              FT_Int32  load_flags = slot->internal->load_flags;
+
+
+              /* disable the `FT_LOAD_COLOR' flag to avoid recursion */
+              /* right here in this function                         */
+              load_flags &= ~FT_LOAD_COLOR;
+
+              /* render into the new `face->glyph' glyph slot */
+              load_flags |= FT_LOAD_RENDER;
+
+              error = FT_Load_Glyph( face, glyph_index, load_flags );
+              if ( error )
+                break;
+
+              /* blend new `face->glyph' into old `slot'; */
+              /* at the first call, `slot' is still empty */
+              error = sfnt->colr_blend( ttface,
+                                        color_index,
+                                        slot,
+                                        face->glyph );
+              if ( error )
+                break;
+
+            } while ( FT_Get_Color_Glyph_Layer( face,
+                                                base_glyph,
+                                                &glyph_index,
+                                                &color_index,
+                                                &iterator ) );
+
+            if ( !error )
+              slot->format = FT_GLYPH_FORMAT_BITMAP;
+
+            /* this call also restores `slot' as the glyph slot */
+            FT_Done_GlyphSlot( face->glyph );
+          }
+
+          if ( !error )
+            return error;
+
+          /* Failed to do the colored layer.  Draw outline instead. */
+          slot->format = FT_GLYPH_FORMAT_OUTLINE;
+        }
+      }
+
       {
         FT_ListNode  node = NULL;
 
@@ -4532,7 +4648,7 @@
 #ifdef FT_DEBUG_LEVEL_TRACE
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_bitmap
+#define FT_COMPONENT  checksum
 
     /*
      * Computing the MD5 checksum is expensive, unnecessarily distorting a
@@ -4542,9 +4658,9 @@
      */
 
     /* we use FT_TRACE3 in this block */
-    if ( !error                             &&
-         ft_trace_levels[trace_bitmap] >= 3 &&
-         slot->bitmap.buffer                )
+    if ( !error                               &&
+         ft_trace_levels[trace_checksum] >= 3 &&
+         slot->bitmap.buffer                  )
     {
       FT_Bitmap  bitmap;
       FT_Error   err;
@@ -4565,8 +4681,11 @@
         int            pitch = bitmap.pitch;
 
 
-        FT_TRACE3(( "FT_Render_Glyph: bitmap %dx%d, mode %d\n",
-                    rows, pitch, slot->bitmap.pixel_mode ));
+        FT_TRACE3(( "FT_Render_Glyph: bitmap %dx%d, %s (mode %d)\n",
+                    pitch,
+                    rows,
+                    pixel_modes[slot->bitmap.pixel_mode],
+                    slot->bitmap.pixel_mode ));
 
         for ( i = 0; i < rows; i++ )
           for ( j = 0; j < pitch; j++ )
@@ -4594,49 +4713,56 @@
      */
 
     /* we use FT_TRACE7 in this block */
-    if ( !error                             &&
-         ft_trace_levels[trace_bitmap] >= 7 &&
-         slot->bitmap.rows  < 128U          &&
-         slot->bitmap.width < 128U          &&
-         slot->bitmap.buffer                )
+    if ( !error                               &&
+         ft_trace_levels[trace_checksum] >= 7 )
     {
-      int  rows  = (int)slot->bitmap.rows;
-      int  width = (int)slot->bitmap.width;
-      int  pitch =      slot->bitmap.pitch;
-      int  i, j, m;
-      unsigned char*  topleft = slot->bitmap.buffer;
-
-      if ( pitch < 0 )
-        topleft -= pitch * ( rows - 1 );
-
-      FT_TRACE7(( "Netpbm image: start\n" ));
-      switch ( slot->bitmap.pixel_mode )
+      if ( slot->bitmap.rows  < 128U &&
+           slot->bitmap.width < 128U &&
+           slot->bitmap.buffer       )
       {
-      case FT_PIXEL_MODE_MONO:
-        FT_TRACE7(( "P1 %d %d\n", width, rows ));
-        for ( i = 0; i < rows; i++ )
+        int  rows  = (int)slot->bitmap.rows;
+        int  width = (int)slot->bitmap.width;
+        int  pitch =      slot->bitmap.pitch;
+        int  i, j, m;
+
+        unsigned char*  topleft = slot->bitmap.buffer;
+
+
+        if ( pitch < 0 )
+          topleft -= pitch * ( rows - 1 );
+
+        FT_TRACE7(( "Netpbm image: start\n" ));
+        switch ( slot->bitmap.pixel_mode )
         {
-          for ( j = 0; j < width; )
-            for ( m = 128; m > 0 && j < width; m >>= 1, j++ )
-              FT_TRACE7(( " %d", ( topleft[i * pitch + j / 8] & m ) != 0 ));
-          FT_TRACE7(( "\n" ));
+        case FT_PIXEL_MODE_MONO:
+          FT_TRACE7(( "P1 %d %d\n", width, rows ));
+          for ( i = 0; i < rows; i++ )
+          {
+            for ( j = 0; j < width; )
+              for ( m = 128; m > 0 && j < width; m >>= 1, j++ )
+                FT_TRACE7(( " %d",
+                            ( topleft[i * pitch + j / 8] & m ) != 0 ));
+            FT_TRACE7(( "\n" ));
+          }
+          break;
+
+        default:
+          FT_TRACE7(( "P2 %d %d 255\n", width, rows ));
+          for ( i = 0; i < rows; i++ )
+          {
+            for ( j = 0; j < width; j += 1 )
+              FT_TRACE7(( " %3u", topleft[i * pitch + j] ));
+            FT_TRACE7(( "\n" ));
+          }
         }
-        break;
-
-      default:
-        FT_TRACE7(( "P2 %d %d 255\n", width, rows ));
-        for ( i = 0; i < rows; i++ )
-        {
-          for ( j = 0; j < width; j += 1 )
-            FT_TRACE7(( " %3u", topleft[i * pitch + j] ));
-          FT_TRACE7(( "\n" ));
-        }
+        FT_TRACE7(( "Netpbm image: end\n" ));
       }
-      FT_TRACE7(( "Netpbm image: end\n" ));
+      else
+        FT_TRACE7(( "Netpbm image: too large, omitted\n" ));
     }
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_objs
+#define FT_COMPONENT  objs
 
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
@@ -4675,21 +4801,22 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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!                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
   {
@@ -5028,9 +5155,9 @@
     service = (FT_Service_Properties)interface;
 
     if ( set )
-      missing_func = (FT_Bool)( !service->set_property );
+      missing_func = FT_BOOL( !service->set_property );
     else
-      missing_func = (FT_Bool)( !service->get_property );
+      missing_func = FT_BOOL( !service->get_property );
 
     if ( missing_func )
     {
@@ -5156,13 +5283,6 @@
 
     library->memory = memory;
 
-#ifdef FT_CONFIG_OPTION_PIC
-    /* initialize position independent code containers */
-    error = ft_pic_container_init( library );
-    if ( error )
-      goto Fail;
-#endif
-
     library->version_major = FREETYPE_MAJOR;
     library->version_minor = FREETYPE_MINOR;
     library->version_patch = FREETYPE_PATCH;
@@ -5173,13 +5293,6 @@
     *alibrary = library;
 
     return FT_Err_Ok;
-
-#ifdef FT_CONFIG_OPTION_PIC
-  Fail:
-    ft_pic_container_destroy( library );
-    FT_FREE( library );
-    return error;
-#endif
   }
 
 
@@ -5237,10 +5350,10 @@
      *
      * Example:
      *
-     *  - the cff font driver uses the pshinter module in cff_size_done
-     *  - if the pshinter module is destroyed before the cff font driver,
-     *    opened FT_Face objects managed by the driver are not properly
-     *    destroyed, resulting in a memory leak
+     * - the cff font driver uses the pshinter module in cff_size_done
+     * - if the pshinter module is destroyed before the cff font driver,
+     *   opened FT_Face objects managed by the driver are not properly
+     *   destroyed, resulting in a memory leak
      *
      * Some faces are dependent on other faces, like Type42 faces that
      * depend on TrueType faces synthesized internally.
@@ -5310,11 +5423,6 @@
     }
 #endif
 
-#ifdef FT_CONFIG_OPTION_PIC
-    /* Destroy pic container contents */
-    ft_pic_container_destroy( library );
-#endif
-
     FT_FREE( library );
 
   Exit:
@@ -5402,4 +5510,41 @@
   }
 
 
+  /* documentation is in freetype.h */
+
+  FT_EXPORT_DEF( FT_Bool )
+  FT_Get_Color_Glyph_Layer( FT_Face            face,
+                            FT_UInt            base_glyph,
+                            FT_UInt           *aglyph_index,
+                            FT_UInt           *acolor_index,
+                            FT_LayerIterator*  iterator )
+  {
+    TT_Face       ttface;
+    SFNT_Service  sfnt;
+
+
+    if ( !face                                   ||
+         !aglyph_index                           ||
+         !acolor_index                           ||
+         !iterator                               ||
+         base_glyph >= (FT_UInt)face->num_glyphs )
+      return 0;
+
+    if ( !FT_IS_SFNT( face ) )
+      return 0;
+
+    ttface = (TT_Face)face;
+    sfnt   = (SFNT_Service)ttface->sfnt;
+
+    if ( sfnt->get_colr_layer )
+      return sfnt->get_colr_layer( ttface,
+                                   base_glyph,
+                                   aglyph_index,
+                                   acolor_index,
+                                   iterator );
+    else
+      return 0;
+  }
+
+
 /* END */
--- a/src/java.desktop/share/native/libfreetype/src/base/ftoutln.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftoutln.c	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftoutln.c                                                              */
-/*                                                                         */
-/*    FreeType outline management (body).                                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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.                             */
-  /*                                                                       */
-  /*************************************************************************/
+/****************************************************************************
+ *
+ * ftoutln.c
+ *
+ *   FreeType outline management (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -31,14 +24,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  outline
 
 
   static
@@ -296,14 +289,22 @@
   }
 
 
+  /* documentation is in ftoutln.h */
+
   FT_EXPORT_DEF( FT_Error )
-  FT_Outline_New_Internal( FT_Memory    memory,
-                           FT_UInt      numPoints,
-                           FT_Int       numContours,
-                           FT_Outline  *anoutline )
+  FT_Outline_New( FT_Library   library,
+                  FT_UInt      numPoints,
+                  FT_Int       numContours,
+                  FT_Outline  *anoutline )
   {
-    FT_Error  error;
+    FT_Error   error;
+    FT_Memory  memory;
+
 
+    if ( !library )
+      return FT_THROW( Invalid_Library_Handle );
+
+    memory = library->memory;
 
     if ( !anoutline || !memory )
       return FT_THROW( Invalid_Argument );
@@ -330,7 +331,7 @@
 
   Fail:
     anoutline->flags |= FT_OUTLINE_OWNER;
-    FT_Outline_Done_Internal( memory, anoutline );
+    FT_Outline_Done( library, anoutline );
 
     return error;
   }
@@ -339,22 +340,6 @@
   /* 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_THROW( 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 )
@@ -436,13 +421,23 @@
   }
 
 
+  /* documentation is in ftoutln.h */
+
   FT_EXPORT_DEF( FT_Error )
-  FT_Outline_Done_Internal( FT_Memory    memory,
-                            FT_Outline*  outline )
+  FT_Outline_Done( FT_Library   library,
+                   FT_Outline*  outline )
   {
+    FT_Memory  memory;
+
+
+    if ( !library )
+      return FT_THROW( Invalid_Library_Handle );
+
     if ( !outline )
       return FT_THROW( Invalid_Outline );
 
+    memory = library->memory;
+
     if ( !memory )
       return FT_THROW( Invalid_Argument );
 
@@ -460,21 +455,6 @@
 
   /* 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_THROW( Invalid_Library_Handle );
-
-    return FT_Outline_Done_Internal( library->memory, outline );
-  }
-
-
-  /* documentation is in ftoutln.h */
-
   FT_EXPORT_DEF( void )
   FT_Outline_Get_CBox( const FT_Outline*  outline,
                        FT_BBox           *acbox )
@@ -619,6 +599,7 @@
     FT_Error     error;
     FT_Renderer  renderer;
     FT_ListNode  node;
+    FT_BBox      cbox;
 
 
     if ( !library )
@@ -630,6 +611,11 @@
     if ( !params )
       return FT_THROW( Invalid_Argument );
 
+    FT_Outline_Get_CBox( outline, &cbox );
+    if ( cbox.xMin < -0x1000000L || cbox.yMin < -0x1000000L ||
+         cbox.xMax >  0x1000000L || cbox.yMax >  0x1000000L )
+      return FT_THROW( Invalid_Outline );
+
     renderer = library->cur_renderer;
     node     = library->renderers.head;
 
@@ -911,9 +897,9 @@
                          FT_Pos       xstrength,
                          FT_Pos       ystrength )
   {
-    FT_Vector*  points;
-    FT_Int      c, first, last;
-    FT_Int      orientation;
+    FT_Vector*      points;
+    FT_Int          c, first, last;
+    FT_Orientation  orientation;
 
 
     if ( !outline )
@@ -1044,7 +1030,7 @@
   FT_EXPORT_DEF( FT_Orientation )
   FT_Outline_Get_Orientation( FT_Outline*  outline )
   {
-    FT_BBox     cbox;
+    FT_BBox     cbox = { 0, 0, 0, 0 };
     FT_Int      xshift, yshift;
     FT_Vector*  points;
     FT_Vector   v_prev, v_cur;
@@ -1090,7 +1076,8 @@
         v_cur.y = points[n].y >> yshift;
 
         area = ADD_LONG( area,
-                         ( v_cur.y - v_prev.y ) * ( v_cur.x + v_prev.x ) );
+                         MUL_LONG( v_cur.y - v_prev.y,
+                                   v_cur.x + v_prev.x ) );
 
         v_prev = v_cur;
       }
--- a/src/java.desktop/share/native/libfreetype/src/base/ftpatent.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftpatent.c	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpatent.c                                                             */
-/*                                                                         */
-/*    FreeType API for checking patented TrueType bytecode instructions    */
-/*    (body).  Obsolete, retained for backward compatibility.              */
-/*                                                                         */
-/*  Copyright 2007-2018 by                                                 */
-/*  David Turner.                                                          */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftpatent.c
+ *
+ *   FreeType API for checking patented TrueType bytecode instructions
+ *   (body).  Obsolete, retained for backward compatibility.
+ *
+ * Copyright (C) 2007-2019 by
+ * David Turner.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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
--- a/src/java.desktop/share/native/libfreetype/src/base/ftpic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpic.c                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services (body).              */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "basepic.h"
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* documentation is in ftpic.h */
-
-  FT_BASE_DEF( FT_Error )
-  ft_pic_container_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error;
-
-
-    FT_MEM_SET( pic_container, 0, sizeof ( *pic_container ) );
-
-    error = ft_base_pic_init( library );
-    if ( error )
-      return error;
-
-    return FT_Err_Ok;
-  }
-
-
-  /* Destroy the contents of the container. */
-  FT_BASE_DEF( void )
-  ft_pic_container_destroy( FT_Library  library )
-  {
-    ft_base_pic_free( library );
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/base/ftpsprop.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftpsprop.c	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftpsprop.c                                                             */
-/*                                                                         */
-/*    Get and set properties of PostScript drivers (body).                 */
-/*    See `ftdriver.h' for available properties.                           */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftpsprop.c
+ *
+ *   Get and set properties of PostScript drivers (body).
+ *   See `ftdriver.h' for available properties.
+ *
+ * Copyright (C) 2017-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -25,14 +25,14 @@
 #include FT_INTERNAL_POSTSCRIPT_PROPS_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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_psprops
+#define FT_COMPONENT  psprops
 
 
   FT_BASE_CALLBACK_DEF( FT_Error )
--- a/src/java.desktop/share/native/libfreetype/src/base/ftrfork.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftrfork.c	Thu May 09 16:09:39 2019 -0700
@@ -1,38 +1,38 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrfork.c                                                              */
-/*                                                                         */
-/*    Embedded resource forks accessor (body).                             */
-/*                                                                         */
-/*  Copyright 2004-2018 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.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrfork.c
+ *
+ *   Embedded resource forks accessor (body).
+ *
+ * Copyright (C) 2004-2019 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.                         */
-/***************************************************************************/
+/****************************************************************************
+ * 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
-#include "basepic.h"
+
 #include "ftbase.h"
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_raccess
+#define FT_COMPONENT  raccess
 
 
   /*************************************************************************/
@@ -438,7 +438,7 @@
 
   static FT_Error
   raccess_guess_linux_double_from_file_name( FT_Library  library,
-                                             char *      file_name,
+                                             char*       file_name,
                                              FT_Long    *result_offset );
 
   static char *
@@ -468,10 +468,10 @@
       if ( errors[i] )
         continue;
 
-      errors[i] = (FT_RACCESS_GUESS_TABLE_GET[i].func)( library,
-                                                 stream, base_name,
-                                                 &(new_names[i]),
-                                                 &(offsets[i]) );
+      errors[i] = ft_raccess_guess_table[i].func( library,
+                                                  stream, base_name,
+                                                  &(new_names[i]),
+                                                  &(offsets[i]) );
     }
 
     return;
@@ -488,7 +488,7 @@
     if ( rule_index >= FT_RACCESS_N_RULES )
       return FT_RFork_Rule_invalid;
 
-    return FT_RACCESS_GUESS_TABLE_GET[rule_index].type;
+    return ft_raccess_guess_table[rule_index].type;
   }
 
 
@@ -847,7 +847,7 @@
   {
     FT_Open_Args  args2;
     FT_Stream     stream2;
-    char *        nouse = NULL;
+    char*         nouse = NULL;
     FT_Error      error;
 
 
@@ -909,9 +909,9 @@
 #else   /* !FT_CONFIG_OPTION_GUESSING_EMBEDDED_RFORK */
 
 
-  /*************************************************************************/
-  /*                  Dummy function; just sets errors                     */
-  /*************************************************************************/
+  /**************************************************************************
+   *                 Dummy function; just sets errors
+   */
 
   FT_BASE_DEF( void )
   FT_Raccess_Guess( FT_Library  library,
--- a/src/java.desktop/share/native/libfreetype/src/base/ftsnames.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftsnames.c	Thu May 09 16:09:39 2019 -0700
@@ -1,22 +1,22 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsnames.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-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsnames.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 (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -142,7 +142,45 @@
   }
 
 
-#endif /* TT_CONFIG_OPTION_SFNT_NAMES */
+#else /* !TT_CONFIG_OPTION_SFNT_NAMES */
+
+
+  FT_EXPORT_DEF( FT_UInt )
+  FT_Get_Sfnt_Name_Count( FT_Face  face )
+  {
+    FT_UNUSED( face );
+
+    return 0;
+  }
+
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Get_Sfnt_Name( FT_Face       face,
+                    FT_UInt       idx,
+                    FT_SfntName  *aname )
+  {
+    FT_UNUSED( face );
+    FT_UNUSED( idx );
+    FT_UNUSED( aname );
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
+
+  FT_EXPORT_DEF( FT_Error )
+  FT_Get_Sfnt_LangTag( FT_Face          face,
+                       FT_UInt          langID,
+                       FT_SfntLangTag  *alangTag )
+  {
+    FT_UNUSED( face );
+    FT_UNUSED( langID );
+    FT_UNUSED( alangTag );
+
+    return FT_THROW( Unimplemented_Feature );
+  }
+
+
+#endif /* !TT_CONFIG_OPTION_SFNT_NAMES */
 
 
 /* END */
--- a/src/java.desktop/share/native/libfreetype/src/base/ftstream.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftstream.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstream.c                                                             */
-/*                                                                         */
-/*    I/O stream support (body).                                           */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstream.c
+ *
+ *   I/O stream support (body).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -21,14 +21,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  stream
 
 
   FT_BASE_DEF( void )
@@ -219,13 +219,14 @@
     {
       FT_Memory  memory = stream->memory;
 
+
 #ifdef FT_DEBUG_MEMORY
       ft_mem_free( memory, *pbytes );
-      *pbytes = NULL;
 #else
       FT_FREE( *pbytes );
 #endif
     }
+
     *pbytes = NULL;
   }
 
@@ -238,6 +239,8 @@
     FT_ULong  read_bytes;
 
 
+    FT_TRACE7(( "FT_Stream_EnterFrame: %ld bytes\n", count ));
+
     /* check for nested frame access */
     FT_ASSERT( stream && stream->cursor == 0 );
 
@@ -281,6 +284,7 @@
         FT_FREE( stream->base );
         error = FT_THROW( Invalid_Stream_Operation );
       }
+
       stream->cursor = stream->base;
       stream->limit  = stream->cursor + count;
       stream->pos   += read_bytes;
@@ -321,13 +325,16 @@
     /*  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_TRACE7(( "FT_Stream_ExitFrame\n" ));
+
     FT_ASSERT( stream );
 
     if ( stream->read )
     {
       FT_Memory  memory = stream->memory;
 
+
 #ifdef FT_DEBUG_MEMORY
       ft_mem_free( memory, stream->base );
       stream->base = NULL;
@@ -335,6 +342,7 @@
       FT_FREE( stream->base );
 #endif
     }
+
     stream->cursor = NULL;
     stream->limit  = NULL;
   }
--- a/src/java.desktop/share/native/libfreetype/src/base/ftstroke.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftstroke.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftstroke.c                                                             */
-/*                                                                         */
-/*    FreeType path stroker (body).                                        */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftstroke.c
+ *
+ *   FreeType path stroker (body).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -24,15 +24,10 @@
 #include FT_INTERNAL_DEBUG_H
 #include FT_INTERNAL_OBJECTS_H
 
-#include "basepic.h"
-
-
-  /* declare an extern to access `ft_outline_glyph_class' globally     */
-  /* allocated  in `ftglyph.c', and use the FT_OUTLINE_GLYPH_CLASS_GET */
-  /* macro to access it when FT_CONFIG_OPTION_PIC is defined           */
-#ifndef FT_CONFIG_OPTION_PIC
+
+  /* declare an extern to access `ft_outline_glyph_class' globally */
+  /* allocated  in `ftglyph.c'                                     */
   FT_CALLBACK_TABLE const FT_Glyph_Class  ft_outline_glyph_class;
-#endif
 
 
   /* documentation is in ftstroke.h */
@@ -372,6 +367,7 @@
       /* it contains the `adjusted' starting coordinates          */
       border->num_points    = --count;
       border->points[start] = border->points[count];
+      border->tags[start]   = border->tags[count];
 
       if ( reverse )
       {
@@ -436,8 +432,8 @@
     }
     else
     {
-      /* don't add zero-length lineto */
-      if ( border->num_points > 0                                          &&
+      /* don't add zero-length lineto, but always add moveto */
+      if ( border->num_points > (FT_UInt)border->start                     &&
            FT_IS_SMALL( border->points[border->num_points - 1].x - to->x ) &&
            FT_IS_SMALL( border->points[border->num_points - 1].y - to->y ) )
         return error;
@@ -2087,8 +2083,8 @@
   /* documentation is in ftstroke.h */
 
   /*
-   *  The following is very similar to FT_Outline_Decompose, except
-   *  that we do support opened paths, and do not scale the 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,
@@ -2306,17 +2302,12 @@
     FT_Error  error = FT_ERR( Invalid_Argument );
     FT_Glyph  glyph = NULL;
 
-    /* for FT_OUTLINE_GLYPH_CLASS_GET (in PIC mode) */
-    FT_Library  library = stroker->library;
-
-    FT_UNUSED( library );
-
 
     if ( !pglyph )
       goto Exit;
 
     glyph = *pglyph;
-    if ( !glyph || glyph->clazz != FT_OUTLINE_GLYPH_CLASS_GET )
+    if ( !glyph || glyph->clazz != &ft_outline_glyph_class )
       goto Exit;
 
     {
@@ -2386,17 +2377,12 @@
     FT_Error  error = FT_ERR( Invalid_Argument );
     FT_Glyph  glyph = NULL;
 
-    /* for FT_OUTLINE_GLYPH_CLASS_GET (in PIC mode) */
-    FT_Library  library = stroker->library;
-
-    FT_UNUSED( library );
-
 
     if ( !pglyph )
       goto Exit;
 
     glyph = *pglyph;
-    if ( !glyph || glyph->clazz != FT_OUTLINE_GLYPH_CLASS_GET )
+    if ( !glyph || glyph->clazz != &ft_outline_glyph_class )
       goto Exit;
 
     {
--- a/src/java.desktop/share/native/libfreetype/src/base/ftsynth.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftsynth.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsynth.c                                                              */
-/*                                                                         */
-/*    FreeType synthesizing code for emboldening and slanting (body).      */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsynth.c
+ *
+ *   FreeType synthesizing code for emboldening and slanting (body).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -24,14 +24,14 @@
 #include FT_BITMAP_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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_synth
+#define FT_COMPONENT  synth
 
 
   /*************************************************************************/
--- a/src/java.desktop/share/native/libfreetype/src/base/ftsystem.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftsystem.c	Thu May 09 16:09:39 2019 -0700
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsystem.c                                                             */
-/*                                                                         */
-/*    ANSI-specific FreeType low-level system interface (body).            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsystem.c
+ *
+ *   ANSI-specific FreeType low-level system interface (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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>
@@ -34,37 +34,39 @@
 #include FT_TYPES_H
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                       MEMORY MANAGEMENT INTERFACE                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                      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_mem_alloc() or ft_mem_realloc().                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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_mem_alloc() or ft_mem_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.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
@@ -75,26 +77,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -108,19 +114,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
@@ -131,39 +139,40 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                     RESOURCE MANAGEMENT INTERFACE                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                    RESOURCE MANAGEMENT INTERFACE
+   *
+   */
 
 #ifndef FT_CONFIG_OPTION_DISABLE_STREAM_SUPPORT
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  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 )  ( (FT_FILE*)stream->descriptor.pointer )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_ansi_stream_close                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The function to close a stream.                                    */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: A pointer to the stream object.                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
   {
@@ -175,28 +184,32 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.  If `count' is zero (this is,   */
-  /*    the function is used for seeking), a non-zero return value         */
-  /*    indicates an error.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.  If `count' is zero (this is,
+   *   the function is used for seeking), a non-zero return value
+   *   indicates an error.
+   */
   FT_CALLBACK_DEF( unsigned long )
   ft_ansi_stream_io( FT_Stream       stream,
                      unsigned long   offset,
--- a/src/java.desktop/share/native/libfreetype/src/base/fttrigon.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/fttrigon.c	Thu May 09 16:09:39 2019 -0700
@@ -1,33 +1,33 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttrigon.c                                                             */
-/*                                                                         */
-/*    FreeType trigonometric functions (body).                             */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttrigon.c
+ *
+ *   FreeType trigonometric functions (body).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 fixed-point CORDIC implementation of trigonometric          */
-  /* functions as well as transformations between Cartesian and polar      */
-  /* coordinates.  The angles are represented as 16.16 fixed-point values  */
-  /* in degrees, i.e., the angular resolution is 2^-16 degrees.  Note that */
-  /* only vectors longer than 2^16*180/pi (or at least 22 bits) on a       */
-  /* discrete Cartesian grid can have the same or better angular           */
-  /* resolution.  Therefore, to maintain this precision, some functions    */
-  /* require an interim upscaling of the vectors, whereas others operate   */
-  /* with 24-bit long vectors directly.                                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This is a fixed-point CORDIC implementation of trigonometric
+   * functions as well as transformations between Cartesian and polar
+   * coordinates.  The angles are represented as 16.16 fixed-point values
+   * in degrees, i.e., the angular resolution is 2^-16 degrees.  Note that
+   * only vectors longer than 2^16*180/pi (or at least 22 bits) on a
+   * discrete Cartesian grid can have the same or better angular
+   * resolution.  Therefore, to maintain this precision, some functions
+   * require an interim upscaling of the vectors, whereas others operate
+   * with 24-bit long vectors directly.
+   *
+   */
 
 #include <ft2build.h>
 #include FT_INTERNAL_OBJECTS_H
@@ -325,10 +325,10 @@
   FT_EXPORT_DEF( FT_Fixed )
   FT_Tan( FT_Angle  angle )
   {
-    FT_Vector  v;
+    FT_Vector  v = { 1 << 24, 0 };
 
 
-    FT_Vector_Unit( &v, angle );
+    ft_trig_pseudo_rotate( &v, angle );
 
     return FT_DivFix( v.y, v.x );
   }
@@ -372,14 +372,6 @@
   }
 
 
-  /* 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 )
@@ -408,8 +400,8 @@
       FT_Int32  half = (FT_Int32)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;
+      vec->x = ( v.x + half - ( v.x < 0 ) ) >> shift;
+      vec->y = ( v.y + half - ( v.y < 0 ) ) >> shift;
     }
     else
     {
--- a/src/java.desktop/share/native/libfreetype/src/base/fttype1.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/fttype1.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  fttype1.c                                                              */
-/*                                                                         */
-/*    FreeType utility file for PS names support (body).                   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * fttype1.c
+ *
+ *   FreeType utility file for PS names support (body).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
--- a/src/java.desktop/share/native/libfreetype/src/base/ftutil.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/base/ftutil.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftutil.c                                                               */
-/*                                                                         */
-/*    FreeType utility file for memory and list management (body).         */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftutil.c
+ *
+ *   FreeType utility file for memory and list management (body).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -23,14 +23,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  memory
 
 
   /*************************************************************************/
@@ -54,7 +54,7 @@
     FT_Error    error;
     FT_Pointer  block = ft_mem_qalloc( memory, size, &error );
 
-    if ( !error && size > 0 )
+    if ( !error && block && size > 0 )
       FT_MEM_ZERO( block, size );
 
     *p_error = error;
@@ -101,7 +101,7 @@
 
     block = ft_mem_qrealloc( memory, item_size,
                              cur_count, new_count, block, &error );
-    if ( !error && new_count > cur_count )
+    if ( !error && block && new_count > cur_count )
       FT_MEM_ZERO( (char*)block + cur_count * item_size,
                    ( new_count - cur_count ) * item_size );
 
@@ -185,7 +185,7 @@
     FT_Pointer  p = ft_mem_qalloc( memory, (FT_Long)size, &error );
 
 
-    if ( !error && address )
+    if ( !error && address && size > 0 )
       ft_memcpy( p, address, size );
 
     *p_error = error;
@@ -236,7 +236,7 @@
   /*************************************************************************/
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_list
+#define FT_COMPONENT  list
 
   /* documentation is in ftlist.h */
 
--- a/src/java.desktop/share/native/libfreetype/src/base/md5.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,291 +0,0 @@
-/*
- * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
- * MD5 Message-Digest Algorithm (RFC 1321).
- *
- * Homepage:
- * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
- *
- * Author:
- * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
- *
- * This software was written by Alexander Peslyak in 2001.  No copyright is
- * claimed, and the software is hereby placed in the public domain.
- * In case this attempt to disclaim copyright and place the software in the
- * public domain is deemed null and void, then the software is
- * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
- * general public under the following terms:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted.
- *
- * There's ABSOLUTELY NO WARRANTY, express or implied.
- *
- * (This is a heavily cut-down "BSD license".)
- *
- * This differs from Colin Plumb's older public domain implementation in that
- * no exactly 32-bit integer data type is required (any 32-bit or wider
- * unsigned integer data type will do), there's no compile-time endianness
- * configuration, and the function prototypes match OpenSSL's.  No code from
- * Colin Plumb's implementation has been reused; this comment merely compares
- * the properties of the two independent implementations.
- *
- * The primary goals of this implementation are portability and ease of use.
- * It is meant to be fast, but not as fast as possible.  Some known
- * optimizations are not included to reduce source code size and avoid
- * compile-time configuration.
- */
-
-#ifndef HAVE_OPENSSL
-
-#include <string.h>
-
-#include "md5.h"
-
-/*
- * The basic MD5 functions.
- *
- * F and G are optimized compared to their RFC 1321 definitions for
- * architectures that lack an AND-NOT instruction, just like in Colin Plumb's
- * implementation.
- */
-#define F(x, y, z)                      ((z) ^ ((x) & ((y) ^ (z))))
-#define G(x, y, z)                      ((y) ^ ((z) & ((x) ^ (y))))
-#define H(x, y, z)                      (((x) ^ (y)) ^ (z))
-#define H2(x, y, z)                     ((x) ^ ((y) ^ (z)))
-#define I(x, y, z)                      ((y) ^ ((x) | ~(z)))
-
-/*
- * The MD5 transformation for all four rounds.
- */
-#define STEP(f, a, b, c, d, x, t, s) \
-        (a) += f((b), (c), (d)) + (x) + (t); \
-        (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \
-        (a) += (b);
-
-/*
- * SET reads 4 input bytes in little-endian byte order and stores them in a
- * properly aligned word in host byte order.
- *
- * The check for little-endian architectures that tolerate unaligned memory
- * accesses is just an optimization.  Nothing will break if it fails to detect
- * a suitable architecture.
- *
- * Unfortunately, this optimization may be a C strict aliasing rules violation
- * if the caller's data buffer has effective type that cannot be aliased by
- * MD5_u32plus.  In practice, this problem may occur if these MD5 routines are
- * inlined into a calling function, or with future and dangerously advanced
- * link-time optimizations.  For the time being, keeping these MD5 routines in
- * their own translation unit avoids the problem.
- */
-#if defined(__i386__) || defined(__x86_64__) || defined(__vax__)
-#define SET(n) \
-        (*(MD5_u32plus *)&ptr[(n) * 4])
-#define GET(n) \
-        SET(n)
-#else
-#define SET(n) \
-        (ctx->block[(n)] = \
-        (MD5_u32plus)ptr[(n) * 4] | \
-        ((MD5_u32plus)ptr[(n) * 4 + 1] << 8) | \
-        ((MD5_u32plus)ptr[(n) * 4 + 2] << 16) | \
-        ((MD5_u32plus)ptr[(n) * 4 + 3] << 24))
-#define GET(n) \
-        (ctx->block[(n)])
-#endif
-
-/*
- * This processes one or more 64-byte data blocks, but does NOT update the bit
- * counters.  There are no alignment requirements.
- */
-static const void *body(MD5_CTX *ctx, const void *data, unsigned long size)
-{
-        const unsigned char *ptr;
-        MD5_u32plus a, b, c, d;
-        MD5_u32plus saved_a, saved_b, saved_c, saved_d;
-
-        ptr = (const unsigned char *)data;
-
-        a = ctx->a;
-        b = ctx->b;
-        c = ctx->c;
-        d = ctx->d;
-
-        do {
-                saved_a = a;
-                saved_b = b;
-                saved_c = c;
-                saved_d = d;
-
-/* Round 1 */
-                STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7)
-                STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12)
-                STEP(F, c, d, a, b, SET(2), 0x242070db, 17)
-                STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22)
-                STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7)
-                STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12)
-                STEP(F, c, d, a, b, SET(6), 0xa8304613, 17)
-                STEP(F, b, c, d, a, SET(7), 0xfd469501, 22)
-                STEP(F, a, b, c, d, SET(8), 0x698098d8, 7)
-                STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12)
-                STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17)
-                STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22)
-                STEP(F, a, b, c, d, SET(12), 0x6b901122, 7)
-                STEP(F, d, a, b, c, SET(13), 0xfd987193, 12)
-                STEP(F, c, d, a, b, SET(14), 0xa679438e, 17)
-                STEP(F, b, c, d, a, SET(15), 0x49b40821, 22)
-
-/* Round 2 */
-                STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5)
-                STEP(G, d, a, b, c, GET(6), 0xc040b340, 9)
-                STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14)
-                STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20)
-                STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5)
-                STEP(G, d, a, b, c, GET(10), 0x02441453, 9)
-                STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14)
-                STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20)
-                STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5)
-                STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9)
-                STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14)
-                STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20)
-                STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5)
-                STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9)
-                STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14)
-                STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20)
-
-/* Round 3 */
-                STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4)
-                STEP(H2, d, a, b, c, GET(8), 0x8771f681, 11)
-                STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16)
-                STEP(H2, b, c, d, a, GET(14), 0xfde5380c, 23)
-                STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4)
-                STEP(H2, d, a, b, c, GET(4), 0x4bdecfa9, 11)
-                STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16)
-                STEP(H2, b, c, d, a, GET(10), 0xbebfbc70, 23)
-                STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4)
-                STEP(H2, d, a, b, c, GET(0), 0xeaa127fa, 11)
-                STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16)
-                STEP(H2, b, c, d, a, GET(6), 0x04881d05, 23)
-                STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4)
-                STEP(H2, d, a, b, c, GET(12), 0xe6db99e5, 11)
-                STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16)
-                STEP(H2, b, c, d, a, GET(2), 0xc4ac5665, 23)
-
-/* Round 4 */
-                STEP(I, a, b, c, d, GET(0), 0xf4292244, 6)
-                STEP(I, d, a, b, c, GET(7), 0x432aff97, 10)
-                STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15)
-                STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21)
-                STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6)
-                STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10)
-                STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15)
-                STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21)
-                STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6)
-                STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10)
-                STEP(I, c, d, a, b, GET(6), 0xa3014314, 15)
-                STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21)
-                STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6)
-                STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10)
-                STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15)
-                STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21)
-
-                a += saved_a;
-                b += saved_b;
-                c += saved_c;
-                d += saved_d;
-
-                ptr += 64;
-        } while (size -= 64);
-
-        ctx->a = a;
-        ctx->b = b;
-        ctx->c = c;
-        ctx->d = d;
-
-        return ptr;
-}
-
-void MD5_Init(MD5_CTX *ctx)
-{
-        ctx->a = 0x67452301;
-        ctx->b = 0xefcdab89;
-        ctx->c = 0x98badcfe;
-        ctx->d = 0x10325476;
-
-        ctx->lo = 0;
-        ctx->hi = 0;
-}
-
-void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size)
-{
-        MD5_u32plus saved_lo;
-        unsigned long used, available;
-
-        saved_lo = ctx->lo;
-        if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo)
-                ctx->hi++;
-        ctx->hi += size >> 29;
-
-        used = saved_lo & 0x3f;
-
-        if (used) {
-                available = 64 - used;
-
-                if (size < available) {
-                        memcpy(&ctx->buffer[used], data, size);
-                        return;
-                }
-
-                memcpy(&ctx->buffer[used], data, available);
-                data = (const unsigned char *)data + available;
-                size -= available;
-                body(ctx, ctx->buffer, 64);
-        }
-
-        if (size >= 64) {
-                data = body(ctx, data, size & ~(unsigned long)0x3f);
-                size &= 0x3f;
-        }
-
-        memcpy(ctx->buffer, data, size);
-}
-
-#define OUT(dst, src) \
-        (dst)[0] = (unsigned char)(src); \
-        (dst)[1] = (unsigned char)((src) >> 8); \
-        (dst)[2] = (unsigned char)((src) >> 16); \
-        (dst)[3] = (unsigned char)((src) >> 24);
-
-void MD5_Final(unsigned char *result, MD5_CTX *ctx)
-{
-        unsigned long used, available;
-
-        used = ctx->lo & 0x3f;
-
-        ctx->buffer[used++] = 0x80;
-
-        available = 64 - used;
-
-        if (available < 8) {
-                memset(&ctx->buffer[used], 0, available);
-                body(ctx, ctx->buffer, 64);
-                used = 0;
-                available = 64;
-        }
-
-        memset(&ctx->buffer[used], 0, available - 8);
-
-        ctx->lo <<= 3;
-        OUT(&ctx->buffer[56], ctx->lo)
-        OUT(&ctx->buffer[60], ctx->hi)
-
-        body(ctx, ctx->buffer, 64);
-
-        OUT(&result[0], ctx->a)
-        OUT(&result[4], ctx->b)
-        OUT(&result[8], ctx->c)
-        OUT(&result[12], ctx->d)
-
-        memset(ctx, 0, sizeof(*ctx));
-}
-
-#endif
--- a/src/java.desktop/share/native/libfreetype/src/base/md5.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-/*
- * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc.
- * MD5 Message-Digest Algorithm (RFC 1321).
- *
- * Homepage:
- * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
- *
- * Author:
- * Alexander Peslyak, better known as Solar Designer <solar at openwall.com>
- *
- * This software was written by Alexander Peslyak in 2001.  No copyright is
- * claimed, and the software is hereby placed in the public domain.
- * In case this attempt to disclaim copyright and place the software in the
- * public domain is deemed null and void, then the software is
- * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
- * general public under the following terms:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted.
- *
- * There's ABSOLUTELY NO WARRANTY, express or implied.
- *
- * See md5.c for more information.
- */
-
-#ifdef HAVE_OPENSSL
-#include <openssl/md5.h>
-#elif !defined(_MD5_H)
-#define _MD5_H
-
-/* Any 32-bit or wider unsigned integer data type will do */
-typedef unsigned int MD5_u32plus;
-
-typedef struct {
-        MD5_u32plus lo, hi;
-        MD5_u32plus a, b, c, d;
-        unsigned char buffer[64];
-        MD5_u32plus block[16];
-} MD5_CTX;
-
-extern void MD5_Init(MD5_CTX *ctx);
-extern void MD5_Update(MD5_CTX *ctx, const void *data, unsigned long size);
-extern void MD5_Final(unsigned char *result, MD5_CTX *ctx);
-
-#endif
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffcmap.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffcmap.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffcmap.c                                                              */
-/*                                                                         */
-/*    CFF character mapping table (cmap) support (body).                   */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffcmap.c
+ *
+ *   CFF character mapping table (cmap) support (body).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -161,6 +161,9 @@
     if ( !charset->sids )
       return FT_THROW( No_Unicode_Glyph_Name );
 
+    if ( !psnames->unicodes_init )
+      return FT_THROW( Unimplemented_Feature );
+
     return psnames->unicodes_init( memory,
                                    unicodes,
                                    cff->num_glyphs,
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffcmap.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffcmap.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffcmap.h                                                              */
-/*                                                                         */
-/*    CFF character mapping table (cmap) support (specification).          */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffcmap.h
+ *
+ *   CFF character mapping table (cmap) support (specification).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffdrivr.c                                                             */
-/*                                                                         */
-/*    OpenType font driver implementation (body).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffdrivr.c
+ *
+ *   OpenType font driver implementation (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -42,7 +42,6 @@
 #endif
 
 #include "cfferrs.h"
-#include "cffpic.h"
 
 #include FT_SERVICE_FONT_FORMAT_H
 #include FT_SERVICE_GLYPH_DICT_H
@@ -50,14 +49,14 @@
 #include FT_DRIVER_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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cffdriver
 
 
   /*************************************************************************/
@@ -73,38 +72,42 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_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 )
   cff_get_kerning( FT_Face     ttface,          /* TT_Face */
                    FT_UInt     left_glyph,
@@ -125,32 +128,36 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_glyph_load                                                     */
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_glyph_load
+   *
+   * @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 )
   cff_glyph_load( FT_GlyphSlot  cffslot,      /* CFF_GlyphSlot */
                   FT_Size       cffsize,      /* CFF_Size      */
@@ -302,7 +309,7 @@
 
 
   /*
-   *  GLYPH DICT SERVICE
+   * GLYPH DICT SERVICE
    *
    */
 
@@ -341,7 +348,7 @@
         FT_ERROR(( "cff_get_glyph_name:"
                    " cannot get glyph name from a CFF2 font\n"
                    "                   "
-                   " without the `PSNames' module\n" ));
+                   " without the `psnames' module\n" ));
         error = FT_THROW( Missing_Module );
         goto Exit;
       }
@@ -352,7 +359,7 @@
       FT_ERROR(( "cff_get_glyph_name:"
                  " cannot get glyph name from CFF & CEF fonts\n"
                  "                   "
-                 " without the `PSNames' module\n" ));
+                 " without the `psnames' module\n" ));
       error = FT_THROW( Missing_Module );
       goto Exit;
     }
@@ -408,7 +415,7 @@
         FT_ERROR(( "cff_get_name_index:"
                    " cannot get glyph index from a CFF2 font\n"
                    "                   "
-                   " without the `PSNames' module\n" ));
+                   " without the `psnames' module\n" ));
         return 0;
       }
     }
@@ -446,7 +453,7 @@
 
 
   /*
-   *  POSTSCRIPT INFO SERVICE
+   * POSTSCRIPT INFO SERVICE
    *
    */
 
@@ -593,7 +600,7 @@
 
 
   /*
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -654,8 +661,8 @@
     FT_Library  library = FT_FACE_LIBRARY( face );
 
 
-    if ( cmap->clazz != &CFF_CMAP_ENCODING_CLASS_REC_GET &&
-         cmap->clazz != &CFF_CMAP_UNICODE_CLASS_REC_GET  )
+    if ( cmap->clazz != &cff_cmap_encoding_class_rec &&
+         cmap->clazz != &cff_cmap_unicode_class_rec  )
     {
       FT_Module           sfnt    = FT_Get_Module( library, "sfnt" );
       FT_Service_TTCMaps  service =
@@ -682,7 +689,7 @@
 
 
   /*
-   *  CID INFO SERVICE
+   * CID INFO SERVICE
    *
    */
   static FT_Error
@@ -788,7 +795,7 @@
         goto Fail;
       }
 
-      if ( glyph_index > cff->num_glyphs )
+      if ( glyph_index >= cff->num_glyphs )
       {
         error = FT_THROW( Invalid_Argument );
         goto Fail;
@@ -818,7 +825,7 @@
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
 
@@ -832,7 +839,7 @@
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
   /*
-   *  MULTIPLE MASTER SERVICE
+   * MULTIPLE MASTER SERVICE
    *
    */
 
@@ -861,6 +868,30 @@
 
 
   static FT_Error
+  cff_set_mm_weightvector( CFF_Face   face,
+                           FT_UInt    len,
+                           FT_Fixed*  weightvector )
+  {
+    FT_Service_MultiMasters  mm = (FT_Service_MultiMasters)face->mm;
+
+
+    return mm->set_mm_weightvector( FT_FACE( face ), len, weightvector );
+  }
+
+
+  static FT_Error
+  cff_get_mm_weightvector( CFF_Face   face,
+                           FT_UInt*   len,
+                           FT_Fixed*  weightvector )
+  {
+    FT_Service_MultiMasters  mm = (FT_Service_MultiMasters)face->mm;
+
+
+    return mm->get_mm_weightvector( FT_FACE( face ), len, weightvector );
+  }
+
+
+  static FT_Error
   cff_get_mm_var( CFF_Face     face,
                   FT_MM_Var*  *master )
   {
@@ -909,22 +940,24 @@
   FT_DEFINE_SERVICE_MULTIMASTERSREC(
     cff_service_multi_masters,
 
-    (FT_Get_MM_Func)        NULL,                   /* get_mm         */
-    (FT_Set_MM_Design_Func) NULL,                   /* set_mm_design  */
-    (FT_Set_MM_Blend_Func)  cff_set_mm_blend,       /* set_mm_blend   */
-    (FT_Get_MM_Blend_Func)  cff_get_mm_blend,       /* get_mm_blend   */
-    (FT_Get_MM_Var_Func)    cff_get_mm_var,         /* get_mm_var     */
-    (FT_Set_Var_Design_Func)cff_set_var_design,     /* set_var_design */
-    (FT_Get_Var_Design_Func)cff_get_var_design,     /* get_var_design */
-    (FT_Set_Instance_Func)  cff_set_instance,       /* set_instance   */
+    (FT_Get_MM_Func)             NULL,                    /* get_mm              */
+    (FT_Set_MM_Design_Func)      NULL,                    /* set_mm_design       */
+    (FT_Set_MM_Blend_Func)       cff_set_mm_blend,        /* set_mm_blend        */
+    (FT_Get_MM_Blend_Func)       cff_get_mm_blend,        /* get_mm_blend        */
+    (FT_Get_MM_Var_Func)         cff_get_mm_var,          /* get_mm_var          */
+    (FT_Set_Var_Design_Func)     cff_set_var_design,      /* set_var_design      */
+    (FT_Get_Var_Design_Func)     cff_get_var_design,      /* get_var_design      */
+    (FT_Set_Instance_Func)       cff_set_instance,        /* set_instance        */
+    (FT_Set_MM_WeightVector_Func)cff_set_mm_weightvector, /* set_mm_weightvector */
+    (FT_Get_MM_WeightVector_Func)cff_get_mm_weightvector, /* get_mm_weightvector */
 
-    (FT_Get_Var_Blend_Func) cff_get_var_blend,      /* get_var_blend  */
-    (FT_Done_Blend_Func)    cff_done_blend          /* done_blend     */
+    (FT_Get_Var_Blend_Func)      cff_get_var_blend,       /* get_var_blend       */
+    (FT_Done_Blend_Func)         cff_done_blend           /* done_blend          */
   )
 
 
   /*
-   *  METRICS VARIATIONS SERVICE
+   * METRICS VARIATIONS SERVICE
    *
    */
 
@@ -968,7 +1001,7 @@
 
 
   /*
-   *  CFFLOAD SERVICE
+   * CFFLOAD SERVICE
    *
    */
 
@@ -1001,54 +1034,54 @@
     cff_services,
 
     FT_SERVICE_ID_FONT_FORMAT,          FT_FONT_FORMAT_CFF,
-    FT_SERVICE_ID_MULTI_MASTERS,        &CFF_SERVICE_MULTI_MASTERS_GET,
-    FT_SERVICE_ID_METRICS_VARIATIONS,   &CFF_SERVICE_METRICS_VAR_GET,
-    FT_SERVICE_ID_POSTSCRIPT_INFO,      &CFF_SERVICE_PS_INFO_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_GLYPH_DICT,           &CFF_SERVICE_GLYPH_DICT_GET,
-    FT_SERVICE_ID_TT_CMAP,              &CFF_SERVICE_GET_CMAP_INFO_GET,
-    FT_SERVICE_ID_CID,                  &CFF_SERVICE_CID_INFO_GET,
-    FT_SERVICE_ID_PROPERTIES,           &CFF_SERVICE_PROPERTIES_GET,
-    FT_SERVICE_ID_CFF_LOAD,             &CFF_SERVICE_CFF_LOAD_GET
+    FT_SERVICE_ID_MULTI_MASTERS,        &cff_service_multi_masters,
+    FT_SERVICE_ID_METRICS_VARIATIONS,   &cff_service_metrics_variations,
+    FT_SERVICE_ID_POSTSCRIPT_INFO,      &cff_service_ps_info,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
+    FT_SERVICE_ID_GLYPH_DICT,           &cff_service_glyph_dict,
+    FT_SERVICE_ID_TT_CMAP,              &cff_service_get_cmap_info,
+    FT_SERVICE_ID_CID,                  &cff_service_cid_info,
+    FT_SERVICE_ID_PROPERTIES,           &cff_service_properties,
+    FT_SERVICE_ID_CFF_LOAD,             &cff_service_cff_load
   )
 #elif !defined FT_CONFIG_OPTION_NO_GLYPH_NAMES
   FT_DEFINE_SERVICEDESCREC8(
     cff_services,
 
     FT_SERVICE_ID_FONT_FORMAT,          FT_FONT_FORMAT_CFF,
-    FT_SERVICE_ID_POSTSCRIPT_INFO,      &CFF_SERVICE_PS_INFO_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_GLYPH_DICT,           &CFF_SERVICE_GLYPH_DICT_GET,
-    FT_SERVICE_ID_TT_CMAP,              &CFF_SERVICE_GET_CMAP_INFO_GET,
-    FT_SERVICE_ID_CID,                  &CFF_SERVICE_CID_INFO_GET,
-    FT_SERVICE_ID_PROPERTIES,           &CFF_SERVICE_PROPERTIES_GET,
-    FT_SERVICE_ID_CFF_LOAD,             &CFF_SERVICE_CFF_LOAD_GET
+    FT_SERVICE_ID_POSTSCRIPT_INFO,      &cff_service_ps_info,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
+    FT_SERVICE_ID_GLYPH_DICT,           &cff_service_glyph_dict,
+    FT_SERVICE_ID_TT_CMAP,              &cff_service_get_cmap_info,
+    FT_SERVICE_ID_CID,                  &cff_service_cid_info,
+    FT_SERVICE_ID_PROPERTIES,           &cff_service_properties,
+    FT_SERVICE_ID_CFF_LOAD,             &cff_service_cff_load
   )
 #elif defined TT_CONFIG_OPTION_GX_VAR_SUPPORT
   FT_DEFINE_SERVICEDESCREC9(
     cff_services,
 
     FT_SERVICE_ID_FONT_FORMAT,          FT_FONT_FORMAT_CFF,
-    FT_SERVICE_ID_MULTI_MASTERS,        &CFF_SERVICE_MULTI_MASTERS_GET,
-    FT_SERVICE_ID_METRICS_VARIATIONS,   &CFF_SERVICE_METRICS_VAR_GET,
-    FT_SERVICE_ID_POSTSCRIPT_INFO,      &CFF_SERVICE_PS_INFO_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_TT_CMAP,              &CFF_SERVICE_GET_CMAP_INFO_GET,
-    FT_SERVICE_ID_CID,                  &CFF_SERVICE_CID_INFO_GET,
-    FT_SERVICE_ID_PROPERTIES,           &CFF_SERVICE_PROPERTIES_GET,
-    FT_SERVICE_ID_CFF_LOAD,             &CFF_SERVICE_CFF_LOAD_GET
+    FT_SERVICE_ID_MULTI_MASTERS,        &cff_service_multi_masters,
+    FT_SERVICE_ID_METRICS_VARIATIONS,   &cff_service_metrics_var,
+    FT_SERVICE_ID_POSTSCRIPT_INFO,      &cff_service_ps_info,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
+    FT_SERVICE_ID_TT_CMAP,              &cff_service_get_cmap_info,
+    FT_SERVICE_ID_CID,                  &cff_service_cid_info,
+    FT_SERVICE_ID_PROPERTIES,           &cff_service_properties,
+    FT_SERVICE_ID_CFF_LOAD,             &cff_service_cff_load
   )
 #else
   FT_DEFINE_SERVICEDESCREC7(
     cff_services,
 
     FT_SERVICE_ID_FONT_FORMAT,          FT_FONT_FORMAT_CFF,
-    FT_SERVICE_ID_POSTSCRIPT_INFO,      &CFF_SERVICE_PS_INFO_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &CFF_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_TT_CMAP,              &CFF_SERVICE_GET_CMAP_INFO_GET,
-    FT_SERVICE_ID_CID,                  &CFF_SERVICE_CID_INFO_GET,
-    FT_SERVICE_ID_PROPERTIES,           &CFF_SERVICE_PROPERTIES_GET,
-    FT_SERVICE_ID_CFF_LOAD,             &CFF_SERVICE_CFF_LOAD_GET
+    FT_SERVICE_ID_POSTSCRIPT_INFO,      &cff_service_ps_info,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &cff_service_ps_name,
+    FT_SERVICE_ID_TT_CMAP,              &cff_service_get_cmap_info,
+    FT_SERVICE_ID_CID,                  &cff_service_cid_info,
+    FT_SERVICE_ID_PROPERTIES,           &cff_service_properties,
+    FT_SERVICE_ID_CFF_LOAD,             &cff_service_cff_load
   )
 #endif
 
@@ -1062,27 +1095,16 @@
     FT_Module_Interface  result;
 
 
-    /* CFF_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
+    result = ft_service_list_lookup( cff_services, module_interface );
+    if ( result )
+      return result;
+
+    /* `driver' is not yet evaluated */
     if ( !driver )
       return NULL;
     library = driver->library;
     if ( !library )
       return NULL;
-#endif
-
-    result = ft_service_list_lookup( CFF_SERVICES_GET, module_interface );
-    if ( result )
-      return result;
-
-    /* `driver' is not yet evaluated in non-PIC mode */
-#ifndef FT_CONFIG_OPTION_PIC
-    if ( !driver )
-      return NULL;
-    library = driver->library;
-    if ( !library )
-      return NULL;
-#endif
 
     /* we pass our request to the `sfnt' module */
     sfnt = FT_Get_Module( library, "sfnt" );
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffdrivr.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffdrivr.h                                                             */
-/*                                                                         */
-/*    High-level OpenType driver interface (specification).                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffdrivr.h
+ *
+ *   High-level OpenType driver interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,10 +26,8 @@
 
 FT_BEGIN_HEADER
 
-
   FT_DECLARE_DRIVER( cff_driver_class )
 
-
 FT_END_HEADER
 
 #endif /* CFFDRIVER_H_ */
--- a/src/java.desktop/share/native/libfreetype/src/cff/cfferrs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cfferrs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cfferrs.h                                                              */
-/*                                                                         */
-/*    CFF error codes (specification only).                                */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cfferrs.h
+ *
+ *   CFF error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the CFF error enumeration constants.
+   *
+   */
 
 #ifndef CFFERRS_H_
 #define CFFERRS_H_
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffgload.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffgload.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffgload.c                                                             */
-/*                                                                         */
-/*    OpenType Glyph Loader (body).                                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffgload.c
+ *
+ *   OpenType Glyph Loader (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -31,14 +31,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cffgload
 
 
   FT_LOCAL_DEF( FT_Error )
@@ -280,16 +280,16 @@
           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.width  = (FT_Pos)metrics.width  * 64;
+          glyph->root.metrics.height = (FT_Pos)metrics.height * 64;
 
-          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.horiBearingX = (FT_Pos)metrics.horiBearingX * 64;
+          glyph->root.metrics.horiBearingY = (FT_Pos)metrics.horiBearingY * 64;
+          glyph->root.metrics.horiAdvance  = (FT_Pos)metrics.horiAdvance  * 64;
 
-          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.metrics.vertBearingX = (FT_Pos)metrics.vertBearingX * 64;
+          glyph->root.metrics.vertBearingY = (FT_Pos)metrics.vertBearingY * 64;
+          glyph->root.metrics.vertAdvance  = (FT_Pos)metrics.vertAdvance  * 64;
 
           glyph->root.format = FT_GLYPH_FORMAT_BITMAP;
 
@@ -414,7 +414,7 @@
         decoder.width_only = TRUE;
 
       decoder.builder.no_recurse =
-        (FT_Bool)( load_flags & FT_LOAD_NO_RECURSE );
+        FT_BOOL( load_flags & FT_LOAD_NO_RECURSE );
 
       /* now load the unscaled outline */
       error = cff_get_glyph_data( face, glyph_index,
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffgload.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffgload.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffgload.h                                                             */
-/*                                                                         */
-/*    OpenType Glyph Loader (specification).                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffgload.h
+ *
+ *   OpenType Glyph Loader (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffload.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffload.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffload.c                                                              */
-/*                                                                         */
-/*    OpenType and CFF data/program tables loader (body).                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffload.c
+ *
+ *   OpenType and CFF data/program tables loader (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -196,14 +196,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cffload
 
 
   /* read an offset from the index's stream current position */
@@ -1398,7 +1398,14 @@
     FT_UInt       master;
 
 
-    FT_ASSERT( lenNDV == 0 || NDV );
+    /* protect against malformed fonts */
+    if ( !( lenNDV == 0 || NDV ) )
+    {
+      FT_TRACE4(( " cff_blend_build_vector:"
+                  " Malformed Normalize Design Vector data\n" ));
+      error = FT_THROW( Invalid_File_Format );
+      goto Exit;
+    }
 
     blend->builtBV = FALSE;
 
@@ -2080,13 +2087,13 @@
       /*
        * Initialize the random number generator.
        *
-       * . If we have a face-specific seed, use it.
+       * - If we have a face-specific seed, use it.
        *   If non-zero, update it to a positive value.
        *
-       * . Otherwise, use the seed from the CFF driver.
+       * - Otherwise, use the seed from the CFF driver.
        *   If non-zero, update it to a positive value.
        *
-       * . If the random value is zero, use the seed given by the subfont's
+       * - If the random value is zero, use the seed given by the subfont's
        *   `initialRandomSeed' value.
        *
        */
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffload.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffload.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffload.h                                                              */
-/*                                                                         */
-/*    OpenType & CFF data/program tables loader (specification).           */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffload.h
+ *
+ *   OpenType & CFF data/program tables loader (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffobjs.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffobjs.c                                                              */
-/*                                                                         */
-/*    OpenType objects manager (body).                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffobjs.c
+ *
+ *   OpenType objects manager (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -37,7 +37,6 @@
 #include "cffobjs.h"
 #include "cffload.h"
 #include "cffcmap.h"
-#include "cffpic.h"
 
 #include "cfferrs.h"
 
@@ -45,21 +44,21 @@
 #include FT_SERVICE_CFF_TABLE_LOAD_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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cffobjs
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SIZE FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SIZE FUNCTIONS
+   *
+   */
 
 
   static PSH_Globals_Funcs
@@ -341,11 +340,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SLOT  FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SLOT  FUNCTIONS
+   *
+   */
 
   FT_LOCAL_DEF( void )
   cff_slot_done( FT_GlyphSlot  slot )
@@ -383,11 +382,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                           FACE  FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                          FACE  FUNCTIONS
+   *
+   */
 
   static FT_String*
   cff_strcpy( FT_Memory         memory,
@@ -645,14 +644,14 @@
 
       dict = &cff->top_font.font_dict;
 
-      /* we need the `PSNames' module for CFF and CEF formats */
+      /* 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:"
                    " cannot open CFF & CEF fonts\n"
                    "              "
-                   " without the `PSNames' module\n" ));
+                   " without the `psnames' module\n" ));
         error = FT_THROW( Missing_Module );
         goto Exit;
       }
@@ -965,10 +964,10 @@
           /* assume "Regular" style if we don't know better */
           cffface->style_name = cff_strcpy( memory, (char *)"Regular" );
 
-        /*******************************************************************/
-        /*                                                                 */
-        /* Compute face flags.                                             */
-        /*                                                                 */
+        /********************************************************************
+         *
+         * Compute face flags.
+         */
         flags = FT_FACE_FLAG_SCALABLE   | /* scalable outlines */
                 FT_FACE_FLAG_HORIZONTAL | /* horizontal data   */
                 FT_FACE_FLAG_HINTER;      /* has native hinter */
@@ -989,10 +988,10 @@
 
         cffface->face_flags |= flags;
 
-        /*******************************************************************/
-        /*                                                                 */
-        /* Compute style flags.                                            */
-        /*                                                                 */
+        /********************************************************************
+         *
+         * Compute style flags.
+         */
         flags = 0;
 
         if ( dict->italic_angle )
@@ -1028,10 +1027,10 @@
       if ( dict->cid_registry != 0xFFFFU && pure_cff )
         cffface->face_flags |= FT_FACE_FLAG_CID_KEYED;
 
-      /*******************************************************************/
-      /*                                                                 */
-      /* Compute char maps.                                              */
-      /*                                                                 */
+      /********************************************************************
+       *
+       * Compute char maps.
+       */
 
       /* Try to synthesize a Unicode charmap if there is none available */
       /* already.  If an OpenType font contains a Unicode "cmap", we    */
@@ -1070,10 +1069,11 @@
 
         nn = (FT_UInt)cffface->num_charmaps;
 
-        error = FT_CMap_New( &CFF_CMAP_UNICODE_CLASS_REC_GET, NULL,
+        error = FT_CMap_New( &cff_cmap_unicode_class_rec, NULL,
                              &cmaprec, NULL );
         if ( error                                      &&
-             FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
+             FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) &&
+             FT_ERR_NEQ( error, Unimplemented_Feature ) )
           goto Exit;
         error = FT_Err_Ok;
 
@@ -1094,19 +1094,19 @@
           {
             cmaprec.encoding_id = TT_ADOBE_ID_STANDARD;
             cmaprec.encoding    = FT_ENCODING_ADOBE_STANDARD;
-            clazz               = &CFF_CMAP_ENCODING_CLASS_REC_GET;
+            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_GET;
+            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_GET;
+            clazz               = &cff_cmap_encoding_class_rec;
           }
 
           error = FT_CMap_New( clazz, NULL, &cmaprec, NULL );
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffobjs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffobjs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffobjs.h                                                              */
-/*                                                                         */
-/*    OpenType objects manager (specification).                            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffobjs.h
+ *
+ *   OpenType objects manager (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -51,10 +51,10 @@
   cff_slot_init( FT_GlyphSlot  slot );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Face functions                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Face functions
+   */
   FT_LOCAL( FT_Error )
   cff_face_init( FT_Stream      stream,
                  FT_Face        face,           /* CFF_Face */
@@ -66,10 +66,10 @@
   cff_face_done( FT_Face  face );               /* CFF_Face */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Driver functions                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Driver functions
+   */
   FT_LOCAL( FT_Error )
   cff_driver_init( FT_Module  module );         /* PS_Driver */
 
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffparse.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffparse.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffparse.c                                                             */
-/*                                                                         */
-/*    CFF token stream parser (body)                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffparse.c
+ *
+ *   CFF token stream parser (body)
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -22,20 +22,20 @@
 #include FT_INTERNAL_DEBUG_H
 #include FT_INTERNAL_CALC_H
 #include FT_INTERNAL_POSTSCRIPT_AUX_H
+#include FT_LIST_H
 
 #include "cfferrs.h"
-#include "cffpic.h"
 #include "cffload.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cffparse
 
 
   FT_LOCAL_DEF( FT_Error )
@@ -605,7 +605,6 @@
     FT_Vector*       offset = &dict->font_offset;
     FT_ULong*        upm    = &dict->units_per_em;
     FT_Byte**        data   = parser->stack;
-    FT_Error         error  = FT_ERR( Stack_Underflow );
 
 
     if ( parser->top >= parser->stack + 6 )
@@ -617,8 +616,6 @@
       int      i;
 
 
-      error = FT_Err_Ok;
-
       dict->has_font_matrix = TRUE;
 
       /* We expect a well-formed font matrix, this is, the matrix elements */
@@ -647,22 +644,11 @@
            ( max_scaling - min_scaling ) < 0 ||
            ( max_scaling - min_scaling ) > 9 )
       {
-        /* Return default matrix in case of unlikely values. */
-
         FT_TRACE1(( "cff_parse_font_matrix:"
                     " strange scaling values (minimum %d, maximum %d),\n"
                     "                      "
                     " using default matrix\n", min_scaling, max_scaling ));
-
-        matrix->xx = 0x10000L;
-        matrix->yx = 0;
-        matrix->xy = 0;
-        matrix->yy = 0x10000L;
-        offset->x  = 0;
-        offset->y  = 0;
-        *upm       = 1;
-
-        goto Exit;
+        goto Unlikely;
       }
 
       for ( i = 0; i < 6; i++ )
@@ -709,10 +695,31 @@
                   (double)matrix->yy / *upm / 65536,
                   (double)offset->x  / *upm / 65536,
                   (double)offset->y  / *upm / 65536 ));
+
+      if ( !FT_Matrix_Check( matrix ) )
+      {
+        FT_TRACE1(( "cff_parse_font_matrix:"
+                    " degenerate values, using default matrix\n" ));
+        goto Unlikely;
+      }
+
+      return FT_Err_Ok;
     }
+    else
+      return FT_THROW( Stack_Underflow );
 
-  Exit:
-    return error;
+  Unlikely:
+    /* Return default matrix in case of unlikely values. */
+
+    matrix->xx = 0x10000L;
+    matrix->yx = 0;
+    matrix->xy = 0;
+    matrix->yy = 0x10000L;
+    offset->x  = 0;
+    offset->y  = 0;
+    *upm       = 1;
+
+    return FT_Err_Ok;
   }
 
 
@@ -802,7 +809,7 @@
 
 #ifdef FT_DEBUG_LEVEL_TRACE
     /* beautify tracing message */
-    if ( ft_trace_levels[FT_COMPONENT] < 4 )
+    if ( ft_trace_levels[FT_TRACE_COMP( FT_COMPONENT )] < 4 )
       FT_TRACE1(( "Multiple Master CFFs not supported yet,"
                   " handling first master design only\n" ));
     else
@@ -1003,9 +1010,6 @@
           CFF_FIELD( code, name, id, cff_kind_bool )
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
-
 #undef  CFF_FIELD
 #undef  CFF_FIELD_DELTA
 
@@ -1118,182 +1122,16 @@
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-
-  void
-  FT_Destroy_Class_cff_field_handlers( FT_Library          library,
-                                       CFF_Field_Handler*  clazz )
-  {
-    FT_Memory  memory = library->memory;
-
-
-    if ( clazz )
-      FT_FREE( clazz );
-  }
-
-
-  FT_Error
-  FT_Create_Class_cff_field_handlers( FT_Library           library,
-                                      CFF_Field_Handler**  output_class )
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
+  static void
+  destruct_t2s_item( FT_Memory  memory,
+                     void*      data,
+                     void*      user )
   {
-    CFF_Field_Handler*  clazz  = NULL;
-    FT_Error            error;
-    FT_Memory           memory = library->memory;
-
-    int  i = 0;
-
-
-#undef CFF_FIELD
-#define CFF_FIELD( code, name, id, kind ) i++;
-#undef CFF_FIELD_DELTA
-#define CFF_FIELD_DELTA( code, name, max, id ) i++;
-#undef CFF_FIELD_CALLBACK
-#define CFF_FIELD_CALLBACK( code, name, id ) i++;
-#undef CFF_FIELD_BLEND
-#define CFF_FIELD_BLEND( code, id ) i++;
-
-#include "cfftoken.h"
-
-    i++; /* { 0, 0, 0, 0, 0, 0, 0 } */
-
-    if ( FT_ALLOC( clazz, sizeof ( CFF_Field_Handler ) * i ) )
-      return error;
-
-    i = 0;
-
-
-#ifndef FT_DEBUG_LEVEL_TRACE
-
-
-#undef CFF_FIELD_CALLBACK
-#define CFF_FIELD_CALLBACK( code_, name_, id_ )        \
-          clazz[i].kind         = cff_kind_callback;   \
-          clazz[i].code         = code_ | CFFCODE;     \
-          clazz[i].offset       = 0;                   \
-          clazz[i].size         = 0;                   \
-          clazz[i].reader       = cff_parse_ ## name_; \
-          clazz[i].array_max    = 0;                   \
-          clazz[i].count_offset = 0;                   \
-          i++;
-
-#undef  CFF_FIELD
-#define CFF_FIELD( code_, name_, id_, kind_ )               \
-          clazz[i].kind         = kind_;                    \
-          clazz[i].code         = code_ | CFFCODE;          \
-          clazz[i].offset       = FT_FIELD_OFFSET( name_ ); \
-          clazz[i].size         = FT_FIELD_SIZE( name_ );   \
-          clazz[i].reader       = 0;                        \
-          clazz[i].array_max    = 0;                        \
-          clazz[i].count_offset = 0;                        \
-          i++;                                              \
-
-#undef  CFF_FIELD_DELTA
-#define CFF_FIELD_DELTA( code_, name_, max_, id_ )                  \
-          clazz[i].kind         = cff_kind_delta;                   \
-          clazz[i].code         = code_ | CFFCODE;                  \
-          clazz[i].offset       = FT_FIELD_OFFSET( name_ );         \
-          clazz[i].size         = FT_FIELD_SIZE_DELTA( name_ );     \
-          clazz[i].reader       = 0;                                \
-          clazz[i].array_max    = max_;                             \
-          clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
-          i++;
-
-#undef  CFF_FIELD_BLEND
-#define CFF_FIELD_BLEND( code_, id_ )              \
-          clazz[i].kind         = cff_kind_blend;  \
-          clazz[i].code         = code_ | CFFCODE; \
-          clazz[i].offset       = 0;               \
-          clazz[i].size         = 0;               \
-          clazz[i].reader       = cff_parse_blend; \
-          clazz[i].array_max    = 0;               \
-          clazz[i].count_offset = 0;               \
-          i++;
-
-#include "cfftoken.h"
-
-    clazz[i].kind         = 0;
-    clazz[i].code         = 0;
-    clazz[i].offset       = 0;
-    clazz[i].size         = 0;
-    clazz[i].reader       = 0;
-    clazz[i].array_max    = 0;
-    clazz[i].count_offset = 0;
-
-
-#else /* FT_DEBUG_LEVEL_TRACE */
-
-
-#undef CFF_FIELD_CALLBACK
-#define CFF_FIELD_CALLBACK( code_, name_, id_ )        \
-          clazz[i].kind         = cff_kind_callback;   \
-          clazz[i].code         = code_ | CFFCODE;     \
-          clazz[i].offset       = 0;                   \
-          clazz[i].size         = 0;                   \
-          clazz[i].reader       = cff_parse_ ## name_; \
-          clazz[i].array_max    = 0;                   \
-          clazz[i].count_offset = 0;                   \
-          clazz[i].id           = id_;                 \
-          i++;
-
-#undef  CFF_FIELD
-#define CFF_FIELD( code_, name_, id_, kind_ )               \
-          clazz[i].kind         = kind_;                    \
-          clazz[i].code         = code_ | CFFCODE;          \
-          clazz[i].offset       = FT_FIELD_OFFSET( name_ ); \
-          clazz[i].size         = FT_FIELD_SIZE( name_ );   \
-          clazz[i].reader       = 0;                        \
-          clazz[i].array_max    = 0;                        \
-          clazz[i].count_offset = 0;                        \
-          clazz[i].id           = id_;                      \
-          i++;                                              \
-
-#undef  CFF_FIELD_DELTA
-#define CFF_FIELD_DELTA( code_, name_, max_, id_ )                  \
-          clazz[i].kind         = cff_kind_delta;                   \
-          clazz[i].code         = code_ | CFFCODE;                  \
-          clazz[i].offset       = FT_FIELD_OFFSET( name_ );         \
-          clazz[i].size         = FT_FIELD_SIZE_DELTA( name_ );     \
-          clazz[i].reader       = 0;                                \
-          clazz[i].array_max    = max_;                             \
-          clazz[i].count_offset = FT_FIELD_OFFSET( num_ ## name_ ); \
-          clazz[i].id           = id_;                              \
-          i++;
-
-#undef  CFF_FIELD_BLEND
-#define CFF_FIELD_BLEND( code_, id_ )              \
-          clazz[i].kind         = cff_kind_blend;  \
-          clazz[i].code         = code_ | CFFCODE; \
-          clazz[i].offset       = 0;               \
-          clazz[i].size         = 0;               \
-          clazz[i].reader       = cff_parse_blend; \
-          clazz[i].array_max    = 0;               \
-          clazz[i].count_offset = 0;               \
-          clazz[i].id           = id_;             \
-          i++;
-
-#include "cfftoken.h"
-
-    clazz[i].kind         = 0;
-    clazz[i].code         = 0;
-    clazz[i].offset       = 0;
-    clazz[i].size         = 0;
-    clazz[i].reader       = 0;
-    clazz[i].array_max    = 0;
-    clazz[i].count_offset = 0;
-    clazz[i].id           = 0;
-
-
-#endif /* FT_DEBUG_LEVEL_TRACE */
-
-
-    *output_class = clazz;
-
-    return FT_Err_Ok;
+    FT_UNUSED( user );
+    memory->free( memory, data );
   }
-
-
-#endif /* FT_CONFIG_OPTION_PIC */
+#endif /* CFF_CONFIG_OPTION_OLD_ENGINE */
 
 
   FT_LOCAL_DEF( FT_Error )
@@ -1301,16 +1139,20 @@
                   FT_Byte*    start,
                   FT_Byte*    limit )
   {
+    FT_Byte*  p     = start;
+    FT_Error  error = FT_Err_Ok;
+
 #ifdef CFF_CONFIG_OPTION_OLD_ENGINE
     PSAux_Service  psaux;
-#endif
+
+    FT_Library  library = parser->library;
+    FT_Memory   memory  = library->memory;
 
-    FT_Byte*    p       = start;
-    FT_Error    error   = FT_Err_Ok;
-    FT_Library  library = parser->library;
+    FT_ListRec  t2s;
+
 
-    FT_UNUSED( library );
-
+    FT_ZERO( &t2s );
+#endif
 
     parser->top    = parser->stack;
     parser->start  = start;
@@ -1321,6 +1163,7 @@
     {
       FT_UInt  v = *p;
 
+
       /* Opcode 31 is legacy MM T2 operator, not a number.      */
       /* Opcode 255 is reserved and should not appear in fonts; */
       /* it is used internally for CFF2 blends.                 */
@@ -1369,8 +1212,9 @@
         FT_Byte*     charstring_base;
         FT_ULong     charstring_len;
 
-        FT_Fixed*  stack;
-        FT_Byte*   q;
+        FT_Fixed*    stack;
+        FT_ListNode  node;
+        FT_Byte*     q;
 
 
         charstring_base = ++p;
@@ -1405,17 +1249,29 @@
 
         error = psaux->cff_decoder_funcs->parse_charstrings_old(
                   &decoder, charstring_base, charstring_len, 1 );
+        if ( error )
+          goto Exit;
 
         /* Now copy the stack data in the temporary decoder object,    */
         /* converting it back to charstring number representations     */
         /* (this is ugly, I know).                                     */
-        /*                                                             */
-        /* We overwrite the original top DICT charstring under the     */
-        /* assumption that the charstring representation of the result */
-        /* of `cff_decoder_parse_charstrings' is shorter, which should */
-        /* be always true.                                             */
+
+        node = (FT_ListNode)memory->alloc( memory,
+                                           sizeof ( FT_ListNodeRec ) );
+        if ( !node )
+          goto Out_Of_Memory_Error;
 
-        q     = charstring_base - 1;
+        /* `5' is the conservative upper bound of required bytes per stack */
+        /* element.                                                        */
+        q = (FT_Byte*)memory->alloc( memory,
+                                     5 * ( decoder.top - decoder.stack ) );
+        if ( !q )
+          goto Out_Of_Memory_Error;
+
+        node->data = q;
+
+        FT_List_Add( &t2s, node );
+
         stack = decoder.stack;
 
         while ( stack < decoder.top )
@@ -1431,7 +1287,7 @@
 
           if ( *stack < 0 )
           {
-            num = (FT_ULong)-*stack;
+            num = (FT_ULong)NEG_LONG( *stack );
             neg = 1;
           }
           else
@@ -1523,7 +1379,7 @@
         }
         code = code | parser->object_code;
 
-        for ( field = CFF_FIELD_HANDLERS_GET; field->kind; field++ )
+        for ( field = cff_field_handlers; field->kind; field++ )
         {
           if ( field->code == (FT_Int)code )
           {
@@ -1672,11 +1528,20 @@
           parser->top = parser->stack;
       }
       p++;
-    }
+    } /* while ( p < limit ) */
 
   Exit:
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
+    FT_List_Finalize( &t2s, destruct_t2s_item, memory, NULL );
+#endif
     return error;
 
+#ifdef CFF_CONFIG_OPTION_OLD_ENGINE
+  Out_Of_Memory_Error:
+    error = FT_THROW( Out_Of_Memory );
+    goto Exit;
+#endif
+
   Stack_Overflow:
     error = FT_THROW( Invalid_Argument );
     goto Exit;
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffparse.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cffparse.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffparse.h                                                             */
-/*                                                                         */
-/*    CFF token stream parser (specification)                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffparse.h
+ *
+ *   CFF token stream parser (specification)
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 CFFPARSE_H_
@@ -33,11 +33,11 @@
 #define CFF_MAX_STACK_DEPTH  96
 
   /*
-   *  There are plans to remove the `maxstack' operator in a forthcoming
-   *  revision of the CFF2 specification, increasing the (then static) stack
-   *  size to 513.  By making the default stack size equal to the maximum
-   *  stack size, the operator is essentially disabled, which has the
-   *  desired effect in FreeType.
+   * There are plans to remove the `maxstack' operator in a forthcoming
+   * revision of the CFF2 specification, increasing the (then static) stack
+   * size to 513.  By making the default stack size equal to the maximum
+   * stack size, the operator is essentially disabled, which has the
+   * desired effect in FreeType.
    */
 #define CFF2_MAX_STACK      513
 #define CFF2_DEFAULT_STACK  513
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffpic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,138 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffpic.c                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for cff module.      */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "cffcmap.h"
-#include "cffpic.h"
-#include "cfferrs.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from cffdrivr.c */
-  FT_Error
-  FT_Create_Class_cff_services( FT_Library           library,
-                                FT_ServiceDescRec**  output_class );
-  void
-  FT_Destroy_Class_cff_services( FT_Library          library,
-                                 FT_ServiceDescRec*  clazz );
-  void
-  FT_Init_Class_cff_service_ps_info( FT_Library             library,
-                                     FT_Service_PsInfoRec*  clazz );
-  void
-  FT_Init_Class_cff_service_glyph_dict( FT_Library                library,
-                                        FT_Service_GlyphDictRec*  clazz );
-  void
-  FT_Init_Class_cff_service_ps_name( FT_Library                 library,
-                                     FT_Service_PsFontNameRec*  clazz );
-  void
-  FT_Init_Class_cff_service_get_cmap_info( FT_Library              library,
-                                           FT_Service_TTCMapsRec*  clazz );
-  void
-  FT_Init_Class_cff_service_cid_info( FT_Library          library,
-                                      FT_Service_CIDRec*  clazz );
-
-  /* forward declaration of PIC init functions from cffparse.c */
-  FT_Error
-  FT_Create_Class_cff_field_handlers( FT_Library           library,
-                                      CFF_Field_Handler**  output_class );
-  void
-  FT_Destroy_Class_cff_field_handlers( FT_Library          library,
-                                       CFF_Field_Handler*  clazz );
-
-
-  void
-  cff_driver_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->cff )
-    {
-      CffModulePIC*  container = (CffModulePIC*)pic_container->cff;
-
-
-      if ( container->cff_services )
-        FT_Destroy_Class_cff_services( library,
-                                       container->cff_services );
-      container->cff_services = NULL;
-      if ( container->cff_field_handlers )
-        FT_Destroy_Class_cff_field_handlers(
-          library, container->cff_field_handlers );
-      container->cff_field_handlers = NULL;
-      FT_FREE( container );
-      pic_container->cff = NULL;
-    }
-  }
-
-
-  FT_Error
-  cff_driver_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    CffModulePIC*      container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC ( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->cff = container;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    error = FT_Create_Class_cff_services( library,
-                                          &container->cff_services );
-    if ( error )
-      goto Exit;
-
-    error = FT_Create_Class_cff_field_handlers(
-              library, &container->cff_field_handlers );
-    if ( error )
-      goto Exit;
-
-    FT_Init_Class_cff_service_ps_info(
-      library, &container->cff_service_ps_info );
-    FT_Init_Class_cff_service_glyph_dict(
-      library, &container->cff_service_glyph_dict );
-    FT_Init_Class_cff_service_ps_name(
-      library, &container->cff_service_ps_name );
-    FT_Init_Class_cff_service_get_cmap_info(
-      library, &container->cff_service_get_cmap_info );
-    FT_Init_Class_cff_service_cid_info(
-      library, &container->cff_service_cid_info );
-    FT_Init_Class_cff_cmap_encoding_class_rec(
-      library, &container->cff_cmap_encoding_class_rec );
-    FT_Init_Class_cff_cmap_unicode_class_rec(
-      library, &container->cff_cmap_unicode_class_rec );
-
-  Exit:
-    if ( error )
-      cff_driver_class_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/cff/cffpic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,121 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffpic.h                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for cff module.      */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 CFFPIC_H_
-#define CFFPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define CFF_SERVICE_PS_INFO_GET          cff_service_ps_info
-#define CFF_SERVICE_GLYPH_DICT_GET       cff_service_glyph_dict
-#define CFF_SERVICE_PS_NAME_GET          cff_service_ps_name
-#define CFF_SERVICE_GET_CMAP_INFO_GET    cff_service_get_cmap_info
-#define CFF_SERVICE_CID_INFO_GET         cff_service_cid_info
-#define CFF_SERVICE_PROPERTIES_GET       cff_service_properties
-#define CFF_SERVICES_GET                 cff_services
-#define CFF_SERVICE_MULTI_MASTERS_GET    cff_service_multi_masters
-#define CFF_SERVICE_METRICS_VAR_GET      cff_service_metrics_variations
-#define CFF_SERVICE_CFF_LOAD_GET         cff_service_cff_load
-#define CFF_CMAP_ENCODING_CLASS_REC_GET  cff_cmap_encoding_class_rec
-#define CFF_CMAP_UNICODE_CLASS_REC_GET   cff_cmap_unicode_class_rec
-#define CFF_FIELD_HANDLERS_GET           cff_field_handlers
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_SERVICE_GLYPH_DICT_H
-#include "cffparse.h"
-#include FT_SERVICE_POSTSCRIPT_INFO_H
-#include FT_SERVICE_POSTSCRIPT_NAME_H
-#include FT_SERVICE_TT_CMAP_H
-#include FT_SERVICE_CID_H
-#include FT_SERVICE_PROPERTIES_H
-#include FT_SERVICE_MULTIPLE_MASTERS_H
-#include FT_SERVICE_METRICS_VARIATIONS_H
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  CffModulePIC_
-  {
-    FT_ServiceDescRec*               cff_services;
-    CFF_Field_Handler*               cff_field_handlers;
-    FT_Service_PsInfoRec             cff_service_ps_info;
-    FT_Service_GlyphDictRec          cff_service_glyph_dict;
-    FT_Service_PsFontNameRec         cff_service_ps_name;
-    FT_Service_TTCMapsRec            cff_service_get_cmap_info;
-    FT_Service_CIDRec                cff_service_cid_info;
-    FT_Service_PropertiesRec         cff_service_properties;
-    FT_Service_MultiMastersRec       cff_service_multi_masters;
-    FT_Service_MetricsVariationsRec  cff_service_metrics_variations;
-    FT_Service_CFFLoadRec            cff_service_cff_load;
-    FT_CMap_ClassRec                 cff_cmap_encoding_class_rec;
-    FT_CMap_ClassRec                 cff_cmap_unicode_class_rec;
-
-  } CffModulePIC;
-
-
-#define GET_PIC( lib )                                    \
-          ( (CffModulePIC*)( (lib)->pic_container.cff ) )
-
-#define CFF_SERVICE_PS_INFO_GET                       \
-          ( GET_PIC( library )->cff_service_ps_info )
-#define CFF_SERVICE_GLYPH_DICT_GET                       \
-          ( GET_PIC( library )->cff_service_glyph_dict )
-#define CFF_SERVICE_PS_NAME_GET                       \
-          ( GET_PIC( library )->cff_service_ps_name )
-#define CFF_SERVICE_GET_CMAP_INFO_GET                       \
-          ( GET_PIC( library )->cff_service_get_cmap_info )
-#define CFF_SERVICE_CID_INFO_GET                       \
-          ( GET_PIC( library )->cff_service_cid_info )
-#define CFF_SERVICE_PROPERTIES_GET                       \
-          ( GET_PIC( library )->cff_service_properties )
-#define CFF_SERVICES_GET                       \
-          ( GET_PIC( library )->cff_services )
-#define CFF_SERVICE_MULTI_MASTERS_GET                       \
-          ( GET_PIC( library )->cff_service_multi_masters )
-#define CFF_SERVICE_METRICS_VAR_GET                              \
-          ( GET_PIC( library )->cff_service_metrics_variations )
-#define CFF_SERVICE_CFF_LOAD_GET                       \
-          ( GET_PIC( library )->cff_service_cff_load )
-#define CFF_CMAP_ENCODING_CLASS_REC_GET                       \
-          ( GET_PIC( library )->cff_cmap_encoding_class_rec )
-#define CFF_CMAP_UNICODE_CLASS_REC_GET                       \
-          ( GET_PIC( library )->cff_cmap_unicode_class_rec )
-#define CFF_FIELD_HANDLERS_GET                       \
-          ( GET_PIC( library )->cff_field_handlers )
-
-  /* see cffpic.c for the implementation */
-  void
-  cff_driver_class_pic_free( FT_Library  library );
-
-  FT_Error
-  cff_driver_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* CFFPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/cff/cfftoken.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cff/cfftoken.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cfftoken.h                                                             */
-/*                                                                         */
-/*    CFF token definitions (specification only).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cfftoken.h
+ *
+ *   CFF token definitions (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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
--- a/src/java.desktop/share/native/libfreetype/src/cid/ciderrs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/ciderrs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ciderrs.h                                                              */
-/*                                                                         */
-/*    CID error codes (specification only).                                */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ciderrs.h
+ *
+ *   CID error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the CID error enumeration constants.
+   *
+   */
 
 #ifndef CIDERRS_H_
 #define CIDERRS_H_
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidgload.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidgload.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidgload.c                                                             */
-/*                                                                         */
-/*    CID-keyed Type1 Glyph Loader (body).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidgload.c
+ *
+ *   CID-keyed Type1 Glyph Loader (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -31,14 +31,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cidgload
 
 
   FT_CALLBACK_DEF( FT_Error )
@@ -393,8 +393,7 @@
     must_finish_decoder = TRUE;
 
     /* set up the decoder */
-    decoder.builder.no_recurse = FT_BOOL(
-      ( ( load_flags & FT_LOAD_NO_RECURSE ) != 0 ) );
+    decoder.builder.no_recurse = FT_BOOL( load_flags & FT_LOAD_NO_RECURSE );
 
     error = cid_load_glyph( &decoder, glyph_index );
     if ( error )
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidgload.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidgload.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidgload.h                                                             */
-/*                                                                         */
-/*    OpenType Glyph Loader (specification).                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidgload.h
+ *
+ *   OpenType Glyph Loader (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidload.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidload.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidload.c                                                              */
-/*                                                                         */
-/*    CID-keyed Type1 font loader (body).                                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidload.c
+ *
+ *   CID-keyed Type1 font loader (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -21,20 +21,21 @@
 #include FT_CONFIG_CONFIG_H
 #include FT_MULTIPLE_MASTERS_H
 #include FT_INTERNAL_TYPE1_TYPES_H
+#include FT_INTERNAL_POSTSCRIPT_AUX_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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cidload
 
 
   /* read a single offset */
@@ -81,6 +82,8 @@
     /* if the keyword has a dedicated callback, call it */
     if ( keyword->type == T1_FIELD_TYPE_CALLBACK )
     {
+      FT_TRACE4(( "  %s", keyword->ident ));
+
       keyword->reader( (FT_Face)face, parser );
       error = parser->root.error;
       goto Exit;
@@ -131,6 +134,8 @@
       }
     }
 
+    FT_TRACE4(( "  %s", keyword->ident ));
+
     dummy_object = object;
 
     /* now, load the keyword data in the object's field(s) */
@@ -141,12 +146,15 @@
     else
       error = cid_parser_load_field( &loader->parser,
                                      keyword, &dummy_object );
+
+    FT_TRACE4(( "\n" ));
+
   Exit:
     return error;
   }
 
 
-  FT_CALLBACK_DEF( FT_Error )
+  FT_CALLBACK_DEF( void )
   cid_parse_font_matrix( CID_Face     face,
                          CID_Parser*  parser )
   {
@@ -171,14 +179,25 @@
       result = cid_parser_to_fixed_array( parser, 6, temp, 3 );
 
       if ( result < 6 )
-        return FT_THROW( Invalid_File_Format );
+      {
+        FT_ERROR(( "cid_parse_font_matrix: not enough matrix elements\n" ));
+        goto Exit;
+      }
+
+      FT_TRACE4(( " [%f %f %f %f %f %f]\n",
+                  (double)temp[0] / 65536 / 1000,
+                  (double)temp[1] / 65536 / 1000,
+                  (double)temp[2] / 65536 / 1000,
+                  (double)temp[3] / 65536 / 1000,
+                  (double)temp[4] / 65536 / 1000,
+                  (double)temp[5] / 65536 / 1000 ));
 
       temp_scale = FT_ABS( temp[3] );
 
       if ( temp_scale == 0 )
       {
         FT_ERROR(( "cid_parse_font_matrix: invalid font matrix\n" ));
-        return FT_THROW( Invalid_File_Format );
+        goto Exit;
       }
 
       /* atypical case */
@@ -200,16 +219,24 @@
       matrix->xy = temp[2];
       matrix->yy = temp[3];
 
+      if ( !FT_Matrix_Check( matrix ) )
+      {
+        FT_ERROR(( "t1_parse_font_matrix: invalid font matrix\n" ));
+        parser->root.error = FT_THROW( Invalid_File_Format );
+        goto Exit;
+      }
+
       /* note that the font offsets are expressed in integer font units */
       offset->x  = temp[4] >> 16;
       offset->y  = temp[5] >> 16;
     }
 
-    return FT_Err_Ok;
+  Exit:
+    return;
   }
 
 
-  FT_CALLBACK_DEF( FT_Error )
+  FT_CALLBACK_DEF( void )
   parse_fd_array( CID_Face     face,
                   CID_Parser*  parser )
   {
@@ -224,10 +251,11 @@
     if ( num_dicts < 0 )
     {
       FT_ERROR(( "parse_fd_array: invalid number of dictionaries\n" ));
-      error = FT_THROW( Invalid_File_Format );
       goto Exit;
     }
 
+    FT_TRACE4(( " %d\n", num_dicts ));
+
     /*
      * A single entry in the FDArray must (at least) contain the following
      * structure elements.
@@ -263,27 +291,31 @@
 
       cid->num_dicts = num_dicts;
 
-      /* don't forget to set a few defaults */
+      /* set some default values (the same as for Type 1 fonts) */
       for ( n = 0; n < cid->num_dicts; n++ )
       {
         CID_FaceDict  dict = cid->font_dicts + n;
 
 
-        /* default value for lenIV */
-        dict->private_dict.lenIV = 4;
+        dict->private_dict.blue_shift       = 7;
+        dict->private_dict.blue_fuzz        = 1;
+        dict->private_dict.lenIV            = 4;
+        dict->private_dict.expansion_factor = (FT_Fixed)( 0.06 * 0x10000L );
+        dict->private_dict.blue_scale       = (FT_Fixed)(
+                                                0.039625 * 0x10000L * 1000 );
       }
     }
 
   Exit:
-    return error;
+    return;
   }
 
 
-  /* by mistake, `expansion_factor' appears both in PS_PrivateRec */
+  /* By mistake, `expansion_factor' appears both in PS_PrivateRec */
   /* and CID_FaceDictRec (both are public header files and can't  */
-  /* changed); we simply copy the value                           */
+  /* changed).  We simply copy the value.                         */
 
-  FT_CALLBACK_DEF( FT_Error )
+  FT_CALLBACK_DEF( void )
   parse_expansion_factor( CID_Face     face,
                           CID_Parser*  parser )
   {
@@ -296,9 +328,43 @@
 
       dict->expansion_factor              = cid_parser_to_fixed( parser, 0 );
       dict->private_dict.expansion_factor = dict->expansion_factor;
+
+      FT_TRACE4(( "%d\n", dict->expansion_factor ));
     }
 
-    return FT_Err_Ok;
+    return;
+  }
+
+
+  /* By mistake, `CID_FaceDictRec' doesn't contain a field for the */
+  /* `FontName' keyword.  FreeType doesn't need it, but it is nice */
+  /* to catch it for producing better trace output.                */
+
+  FT_CALLBACK_DEF( void )
+  parse_font_name( CID_Face     face,
+                   CID_Parser*  parser )
+  {
+#ifdef FT_DEBUG_LEVEL_TRACE
+    if ( parser->num_dict >= 0 && parser->num_dict < face->cid.num_dicts )
+    {
+      T1_TokenRec  token;
+      FT_UInt      len;
+
+
+      cid_parser_to_token( parser, &token );
+
+      len = (FT_UInt)( token.limit - token.start );
+      if ( len )
+        FT_TRACE4(( " %.*s\n", len, token.start ));
+      else
+        FT_TRACE4(( " <no value>\n" ));
+    }
+#else
+    FT_UNUSED( face );
+    FT_UNUSED( parser );
+#endif
+
+    return;
   }
 
 
@@ -311,6 +377,7 @@
     T1_FIELD_CALLBACK( "FDArray",         parse_fd_array, 0 )
     T1_FIELD_CALLBACK( "FontMatrix",      cid_parse_font_matrix, 0 )
     T1_FIELD_CALLBACK( "ExpansionFactor", parse_expansion_factor, 0 )
+    T1_FIELD_CALLBACK( "FontName",        parse_font_name, 0 )
 
     { 0, T1_FIELD_LOCATION_CID_INFO, T1_FIELD_TYPE_NONE, 0, 0, 0, 0, 0, 0 }
   };
@@ -356,7 +423,16 @@
             /* 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++;
+
+#ifdef FT_DEBUG_LEVEL_TRACE
+              FT_TRACE4(( " FontDict %d", parser->num_dict ));
+              if ( parser->num_dict > face->cid.num_dicts )
+                FT_TRACE4(( " (ignored)" ));
+              FT_TRACE4(( "\n" ));
+#endif
+            }
           }
         }
 
@@ -757,7 +833,7 @@
 
     if ( cid->fd_bytes < 0 || cid->gd_bytes < 1 )
     {
-      FT_ERROR(( "cid_parse_dict:"
+      FT_ERROR(( "cid_face_open:"
                  " Invalid `FDBytes' or `GDBytes' value\n" ));
       error = FT_THROW( Invalid_File_Format );
       goto Exit;
@@ -766,7 +842,7 @@
     /* allow at most 32bit offsets */
     if ( cid->fd_bytes > 4 || cid->gd_bytes > 4 )
     {
-      FT_ERROR(( "cid_parse_dict:"
+      FT_ERROR(( "cid_face_open:"
                  " Values of `FDBytes' or `GDBytes' larger than 4\n"
                  "               "
                  " are not supported\n" ));
@@ -782,17 +858,36 @@
       CID_FaceDict  dict = cid->font_dicts + n;
 
 
+      /* the upper limits are ad-hoc values */
+      if ( dict->private_dict.blue_shift > 1000 ||
+           dict->private_dict.blue_shift < 0    )
+      {
+        FT_TRACE2(( "cid_face_open:"
+                    " setting unlikely BlueShift value %d to default (7)\n",
+                    dict->private_dict.blue_shift ));
+        dict->private_dict.blue_shift = 7;
+      }
+
+      if ( dict->private_dict.blue_fuzz > 1000 ||
+           dict->private_dict.blue_fuzz < 0    )
+      {
+        FT_TRACE2(( "cid_face_open:"
+                    " setting unlikely BlueFuzz value %d to default (1)\n",
+                    dict->private_dict.blue_fuzz ));
+        dict->private_dict.blue_fuzz = 1;
+      }
+
       if ( dict->sd_bytes < 0                        ||
            ( dict->num_subrs && dict->sd_bytes < 1 ) )
       {
-        FT_ERROR(( "cid_parse_dict: Invalid `SDBytes' value\n" ));
+        FT_ERROR(( "cid_face_open: Invalid `SDBytes' value\n" ));
         error = FT_THROW( Invalid_File_Format );
         goto Exit;
       }
 
       if ( dict->sd_bytes > 4 )
       {
-        FT_ERROR(( "cid_parse_dict:"
+        FT_ERROR(( "cid_face_open:"
                    " Values of `SDBytes' larger than 4"
                    " are not supported\n" ));
         error = FT_THROW( Invalid_File_Format );
@@ -801,7 +896,7 @@
 
       if ( dict->subrmap_offset > binary_length )
       {
-        FT_ERROR(( "cid_parse_dict: Invalid `SubrMapOffset' value\n" ));
+        FT_ERROR(( "cid_face_open: Invalid `SubrMapOffset' value\n" ));
         error = FT_THROW( Invalid_File_Format );
         goto Exit;
       }
@@ -812,7 +907,7 @@
              dict->num_subrs > ( binary_length - dict->subrmap_offset ) /
                                  (FT_UInt)dict->sd_bytes                 ) )
       {
-        FT_ERROR(( "cid_parse_dict: Invalid `SubrCount' value\n" ));
+        FT_ERROR(( "cid_face_open: Invalid `SubrCount' value\n" ));
         error = FT_THROW( Invalid_File_Format );
         goto Exit;
       }
@@ -820,7 +915,7 @@
 
     if ( cid->cidmap_offset > binary_length )
     {
-      FT_ERROR(( "cid_parse_dict: Invalid `CIDMapOffset' value\n" ));
+      FT_ERROR(( "cid_face_open: Invalid `CIDMapOffset' value\n" ));
       error = FT_THROW( Invalid_File_Format );
       goto Exit;
     }
@@ -829,7 +924,7 @@
          cid->cid_count >
            ( binary_length - cid->cidmap_offset ) / entry_len )
     {
-      FT_ERROR(( "cid_parse_dict: Invalid `CIDCount' value\n" ));
+      FT_ERROR(( "cid_face_open: Invalid `CIDCount' value\n" ));
       error = FT_THROW( Invalid_File_Format );
       goto Exit;
     }
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidload.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidload.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidload.h                                                              */
-/*                                                                         */
-/*    CID-keyed Type1 font loader (specification).                         */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidload.h
+ *
+ *   CID-keyed Type1 font loader (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidobjs.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidobjs.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidobjs.c                                                              */
-/*                                                                         */
-/*    CID objects manager (body).                                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidobjs.c
+ *
+ *   CID objects manager (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -31,21 +31,21 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cidobjs
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SLOT  FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SLOT  FUNCTIONS
+   *
+   */
 
   FT_LOCAL_DEF( void )
   cid_slot_done( FT_GlyphSlot  slot )
@@ -85,11 +85,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                           SIZE  FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                          SIZE  FUNCTIONS
+   *
+   */
 
 
   static PSH_Globals_Funcs
@@ -174,23 +174,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                           FACE  FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                          FACE  FUNCTIONS
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cid_face_done                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given face object.                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A pointer to the face object to destroy.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 */
   {
@@ -252,29 +253,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 */
@@ -449,20 +455,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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  module )
   {
@@ -505,17 +512,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cid_driver_done                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given CID driver.                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target CID driver.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
   {
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidobjs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidobjs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidobjs.h                                                              */
-/*                                                                         */
-/*    CID objects manager (specification).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidobjs.h
+ *
+ *   CID objects manager (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -34,60 +34,60 @@
   typedef struct CID_Glyph_Hints_  CID_Glyph_Hints;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    CID_Driver                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 driver object.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * HERE BEGINS THE TYPE 1 SPECIFIC STUFF
+   *
+   */
 
 
   typedef struct  CID_SizeRec_
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidparse.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidparse.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidparse.c                                                             */
-/*                                                                         */
-/*    CID-keyed Type1 parser (body).                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidparse.c
+ *
+ *   CID-keyed Type1 parser (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -26,14 +26,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  cidparse
 
 
   /*************************************************************************/
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidparse.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidparse.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidparse.h                                                             */
-/*                                                                         */
-/*    CID-keyed Type1 parser (specification).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidparse.h
+ *
+ *   CID-keyed Type1 parser (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -29,35 +29,43 @@
 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.                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -86,11 +94,11 @@
   cid_parser_done( CID_Parser*  parser );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            PARSING ROUTINES                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           PARSING ROUTINES
+   *
+   */
 
 #define cid_parser_skip_spaces( p )                 \
           (p)->root.funcs.skip_spaces( &(p)->root )
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidriver.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidriver.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidriver.c                                                             */
-/*                                                                         */
-/*    CID driver interface (body).                                         */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidriver.c
+ *
+ *   CID driver interface (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -34,18 +34,18 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  ciddriver
 
 
   /*
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -69,7 +69,7 @@
 
 
   /*
-   *  POSTSCRIPT INFO SERVICE
+   * POSTSCRIPT INFO SERVICE
    *
    */
 
@@ -105,7 +105,7 @@
 
 
   /*
-   *  CID INFO SERVICE
+   * CID INFO SERVICE
    *
    */
   static FT_Error
@@ -173,7 +173,7 @@
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
 
@@ -185,7 +185,7 @@
 
 
   /*
-   *  SERVICE LIST
+   * SERVICE LIST
    *
    */
 
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidriver.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidriver.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidriver.h                                                             */
-/*                                                                         */
-/*    High-level CID driver interface (specification).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidriver.h
+ *
+ *   High-level CID driver interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,15 +26,9 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
-
   FT_CALLBACK_TABLE
   const FT_Driver_ClassRec  t1cid_driver_class;
 
-
 FT_END_HEADER
 
 #endif /* CIDRIVER_H_ */
--- a/src/java.desktop/share/native/libfreetype/src/cid/cidtoken.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/cid/cidtoken.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cidtoken.h                                                             */
-/*                                                                         */
-/*    CID token definitions (specification only).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cidtoken.h
+ *
+ *   CID token definitions (specification only).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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
@@ -21,17 +21,20 @@
 #undef  T1CODE
 #define T1CODE        T1_FIELD_LOCATION_CID_INFO
 
-  T1_FIELD_KEY   ( "CIDFontName",    cid_font_name, 0 )
-  T1_FIELD_FIXED ( "CIDFontVersion", cid_version,   0 )
-  T1_FIELD_NUM   ( "CIDFontType",    cid_font_type, 0 )
-  T1_FIELD_STRING( "Registry",       registry,      0 )
-  T1_FIELD_STRING( "Ordering",       ordering,      0 )
-  T1_FIELD_NUM   ( "Supplement",     supplement,    0 )
-  T1_FIELD_NUM   ( "UIDBase",        uid_base,      0 )
-  T1_FIELD_NUM   ( "CIDMapOffset",   cidmap_offset, 0 )
-  T1_FIELD_NUM   ( "FDBytes",        fd_bytes,      0 )
-  T1_FIELD_NUM   ( "GDBytes",        gd_bytes,      0 )
-  T1_FIELD_NUM   ( "CIDCount",       cid_count,     0 )
+  T1_FIELD_KEY      ( "CIDFontName",    cid_font_name, 0 )
+  T1_FIELD_FIXED    ( "CIDFontVersion", cid_version,   0 )
+  T1_FIELD_NUM      ( "CIDFontType",    cid_font_type, 0 )
+  T1_FIELD_STRING   ( "Registry",       registry,      0 )
+  T1_FIELD_STRING   ( "Ordering",       ordering,      0 )
+  T1_FIELD_NUM      ( "Supplement",     supplement,    0 )
+  T1_FIELD_NUM      ( "UIDBase",        uid_base,      0 )
+
+  T1_FIELD_NUM_TABLE( "XUID",           xuid,          16, 0 )
+
+  T1_FIELD_NUM      ( "CIDMapOffset",   cidmap_offset, 0 )
+  T1_FIELD_NUM      ( "FDBytes",        fd_bytes,      0 )
+  T1_FIELD_NUM      ( "GDBytes",        gd_bytes,      0 )
+  T1_FIELD_NUM      ( "CIDCount",       cid_count,     0 )
 
 
 #undef  FT_STRUCTURE
--- a/src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/afmparse.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afmparse.c                                                             */
-/*                                                                         */
-/*    AFM parser (body).                                                   */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afmparse.c
+ *
+ *   AFM parser (body).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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
@@ -28,13 +28,13 @@
 #include "psauxerr.h"
 
 
-/***************************************************************************/
-/*                                                                         */
-/*    AFM_Stream                                                           */
-/*                                                                         */
-/* The use of AFM_Stream is largely inspired by parseAFM.[ch] from t1lib.  */
-/*                                                                         */
-/*                                                                         */
+  /**************************************************************************
+   *
+   * AFM_Stream
+   *
+   * The use of AFM_Stream is largely inspired by parseAFM.[ch] from t1lib.
+   *
+   */
 
   enum
   {
@@ -193,11 +193,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*    AFM_Parser                                                         */
-  /*                                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * AFM_Parser
+   *
+   */
 
   /* all keys defined in Ch. 7-10 of 5004.AFM_Spec.pdf */
   typedef enum  AFM_Token_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/afmparse.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/afmparse.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  afmparse.h                                                             */
-/*                                                                         */
-/*    AFM parser (specification).                                          */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * afmparse.h
+ *
+ *   AFM parser (specification).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 AFMPARSE_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffdecode.c                                                            */
-/*                                                                         */
-/*    PostScript CFF (Type 2) decoding routines (body).                    */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffdecode.c
+ *
+ *   PostScript CFF (Type 2) decoding routines (body).
+ *
+ * Copyright (C) 2017-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -28,14 +28,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_cffdecode
+#define FT_COMPONENT  cffdecode
 
 
 #ifdef CFF_CONFIG_OPTION_OLD_ENGINE
@@ -235,8 +235,8 @@
       return FT_THROW( Syntax_Error );
     }
 
-    adx += decoder->builder.left_bearing.x;
-    ady += decoder->builder.left_bearing.y;
+    adx = ADD_LONG( adx, decoder->builder.left_bearing.x );
+    ady = ADD_LONG( ady, decoder->builder.left_bearing.y );
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
     /* Incremental fonts don't necessarily have valid charsets.        */
@@ -378,23 +378,26 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    cff_compute_bias                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the bias value in dependence of the number of glyph       */
-  /*    subroutines.                                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    in_charstring_type :: The `CharstringType' value of the top DICT   */
-  /*                          dictionary.                                  */
-  /*                                                                       */
-  /*    num_subrs          :: The number of glyph subroutines.             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    The bias value.                                                    */
+  /**************************************************************************
+   *
+   * @Function:
+   *   cff_compute_bias
+   *
+   * @Description:
+   *   Computes the bias value in dependence of the number of glyph
+   *   subroutines.
+   *
+   * @Input:
+   *   in_charstring_type ::
+   *     The `CharstringType' value of the top DICT
+   *     dictionary.
+   *
+   *   num_subrs ::
+   *     The number of glyph subroutines.
+   *
+   * @Return:
+   *   The bias value.
+   */
   static FT_Int
   cff_compute_bias( FT_Int   in_charstring_type,
                     FT_UInt  num_subrs )
@@ -464,28 +467,32 @@
 
 #ifdef CFF_CONFIG_OPTION_OLD_ENGINE
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.   */
-  /*                                                                       */
-  /*    in_dict         :: Set to 1 if function is called from top or      */
-  /*                       private DICT (needed for Multiple Master CFFs). */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   in_dict ::
+   *     Set to 1 if function is called from top or
+   *     private DICT (needed for Multiple Master CFFs).
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   cff_decoder_parse_charstrings( CFF_Decoder*  decoder,
                                  FT_Byte*      charstring_base,
@@ -543,10 +550,10 @@
       FT_Byte       v;
 
 
-      /********************************************************************/
-      /*                                                                  */
-      /* Decode operator or operand                                       */
-      /*                                                                  */
+      /*********************************************************************
+       *
+       * Decode operator or operand
+       */
       v = *ip++;
       if ( v >= 32 || v == 28 )
       {
@@ -853,6 +860,15 @@
           case cff_op_flex1:
           case cff_op_callsubr:
           case cff_op_callgsubr:
+            /* deprecated opcodes */
+          case cff_op_dotsection:
+            /* invalid Type 1 opcodes */
+          case cff_op_hsbw:
+          case cff_op_closepath:
+          case cff_op_callothersubr:
+          case cff_op_seac:
+          case cff_op_sbw:
+          case cff_op_setcurrentpoint:
             goto MM_Error;
 
           default:
@@ -948,10 +964,10 @@
         case cff_op_hstemhm:
         case cff_op_vstemhm:
           /* the number of arguments is always even here */
-          FT_TRACE4((
-              op == cff_op_hstem   ? " hstem\n"   :
-            ( op == cff_op_vstem   ? " vstem\n"   :
-            ( op == cff_op_hstemhm ? " hstemhm\n" : " vstemhm\n" ) ) ));
+          FT_TRACE4(( "%s\n",
+              op == cff_op_hstem   ? " hstem"   :
+            ( op == cff_op_vstem   ? " vstem"   :
+            ( op == cff_op_hstemhm ? " hstemhm" : " vstemhm" ) ) ));
 
           if ( hinter )
             hinter->stems( hinter->hints,
@@ -965,7 +981,8 @@
 
         case cff_op_hintmask:
         case cff_op_cntrmask:
-          FT_TRACE4(( op == cff_op_hintmask ? " hintmask" : " cntrmask" ));
+          FT_TRACE4(( "%s", op == cff_op_hintmask ? " hintmask"
+                                                  : " cntrmask" ));
 
           /* implement vstem when needed --                        */
           /* the specification doesn't say it, but this also works */
@@ -1078,8 +1095,8 @@
             FT_Int  phase = ( op == cff_op_hlineto );
 
 
-            FT_TRACE4(( op == cff_op_hlineto ? " hlineto\n"
-                                             : " vlineto\n" ));
+            FT_TRACE4(( "%s\n", op == cff_op_hlineto ? " hlineto"
+                                                     : " vlineto" ));
 
             if ( num_args < 0 )
               goto Stack_Underflow;
@@ -1250,8 +1267,8 @@
             FT_Int  nargs;
 
 
-            FT_TRACE4(( op == cff_op_vhcurveto ? " vhcurveto\n"
-                                               : " hvcurveto\n" ));
+            FT_TRACE4(( "%s\n", op == cff_op_vhcurveto ? " vhcurveto"
+                                                       : " hvcurveto" ));
 
             if ( cff_builder_start_point( builder, x, y ) )
               goto Fail;
@@ -1539,9 +1556,9 @@
             }
 
             if ( dx < 0 )
-              dx = -dx;
+              dx = NEG_LONG( dx );
             if ( dy < 0 )
-              dy = -dy;
+              dy = NEG_LONG( dy );
 
             /* strange test, but here it is... */
             horizontal = ( dx > dy );
@@ -1551,7 +1568,7 @@
               x = ADD_LONG( x, args[0] );
               y = ADD_LONG( y, args[1] );
               cff_builder_add_point( builder, x, y,
-                                     (FT_Bool)( count == 3 ) );
+                                     FT_BOOL( count == 3 ) );
               args += 2;
             }
 
@@ -1589,7 +1606,7 @@
               x = ADD_LONG( x, args[0] );
               y = ADD_LONG( y, args[1] );
               cff_builder_add_point( builder, x, y,
-                                     (FT_Bool)( count == 4 || count == 1 ) );
+                                     FT_BOOL( count == 4 || count == 1 ) );
               args += 2;
             }
 
@@ -1705,16 +1722,20 @@
           break;
 
         case cff_op_random:
-          FT_TRACE4(( " random\n" ));
-
-          /* only use the lower 16 bits of `random'  */
-          /* to generate a number in the range (0;1] */
-          args[0] = (FT_Fixed)
-                      ( ( decoder->current_subfont->random & 0xFFFF ) + 1 );
-          args++;
-
-          decoder->current_subfont->random =
-            cff_random( decoder->current_subfont->random );
+          {
+            FT_UInt32*  randval = in_dict ? &decoder->cff->top_font.random
+                                          : &decoder->current_subfont->random;
+
+
+            FT_TRACE4(( " random\n" ));
+
+            /* only use the lower 16 bits of `random'  */
+            /* to generate a number in the range (0;1] */
+            args[0] = (FT_Fixed)( ( *randval & 0xFFFF ) + 1 );
+            args++;
+
+            *randval = cff_random( *randval );
+          }
           break;
 
         case cff_op_mul:
@@ -1727,7 +1748,10 @@
         case cff_op_sqrt:
           FT_TRACE4(( " sqrt\n" ));
 
-          if ( args[0] > 0 )
+          /* without upper limit the loop below might not finish */
+          if ( args[0] > 0x7FFFFFFFL )
+            args[0] = 46341;
+          else if ( args[0] > 0 )
           {
             FT_Fixed  root = args[0];
             FT_Fixed  new_root;
@@ -1800,6 +1824,7 @@
 
             if ( idx >= 0 )
             {
+              idx = idx % count;
               while ( idx > 0 )
               {
                 FT_Fixed  tmp = args[count - 1];
@@ -1814,6 +1839,10 @@
             }
             else
             {
+              /* before C99 it is implementation-defined whether    */
+              /* the result of `%' is negative if the first operand */
+              /* is negative                                        */
+              idx = -( NEG_INT( idx ) % count );
               while ( idx < 0 )
               {
                 FT_Fixed  tmp = args[0];
@@ -1914,6 +1943,7 @@
         case cff_op_blend:
           /* this operator was removed from the Type2 specification */
           /* in version 16-March-2000                               */
+          if ( num_designs )
           {
             FT_Int  num_results = (FT_Int)( args[0] >> 16 );
 
@@ -1923,7 +1953,8 @@
             if ( num_results < 0 )
               goto Syntax_Error;
 
-            if ( num_results * (FT_Int)num_designs > num_args )
+            if ( num_results > num_args                       ||
+                 num_results * (FT_Int)num_designs > num_args )
               goto Stack_Underflow;
 
             /* since we currently don't handle interpolation of multiple */
@@ -1932,6 +1963,8 @@
             args     -= num_results * ( num_designs - 1 );
             num_args -= num_results * ( num_designs - 1 );
           }
+          else
+            goto Syntax_Error;
           break;
 
         case cff_op_dotsection:
@@ -1998,20 +2031,31 @@
           break;
 
         case cff_op_callothersubr:
-          /* this is an invalid Type 2 operator; however, there        */
-          /* exist fonts which are incorrectly converted from probably */
-          /* Type 1 to CFF, and some parsers seem to accept it         */
-
-          FT_TRACE4(( " callothersubr (invalid op)\n" ));
-
-          /* subsequent `pop' operands should add the arguments,       */
-          /* this is the implementation described for `unknown' other  */
-          /* subroutines in the Type1 spec.                            */
-          /*                                                           */
-          /* XXX Fix return arguments (see discussion below).          */
-          args -= 2 + ( args[-2] >> 16 );
-          if ( args < stack )
-            goto Stack_Underflow;
+          {
+            FT_Fixed  arg;
+
+
+            /* this is an invalid Type 2 operator; however, there      */
+            /* exist fonts which are incorrectly converted from        */
+            /* probably Type 1 to CFF, and some parsers seem to accept */
+            /* it                                                      */
+
+            FT_TRACE4(( " callothersubr (invalid op)\n" ));
+
+            /* subsequent `pop' operands should add the arguments,     */
+            /* this is the implementation described for `unknown'      */
+            /* other subroutines in the Type1 spec.                    */
+            /*                                                         */
+            /* XXX Fix return arguments (see discussion below).        */
+
+            arg = 2 + ( args[-2] >> 16 );
+            if ( arg >= CFF_MAX_OPERANDS )
+              goto Stack_Underflow;
+
+            args -= arg;
+            if ( args < stack )
+              goto Stack_Underflow;
+          }
           break;
 
         case cff_op_pop:
@@ -2251,28 +2295,34 @@
 #endif /* CFF_CONFIG_OPTION_OLD_ENGINE */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
-  /*    hinting   :: Whether hinting is active.                            */
-  /*                                                                       */
-  /*    hint_mode :: The hinting mode.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   hinting ::
+   *     Whether hinting is active.
+   *
+   *   hint_mode ::
+   *     The hinting mode.
+   */
   FT_LOCAL_DEF( void )
   cff_decoder_init( CFF_Decoder*                     decoder,
                     TT_Face                          face,
--- a/src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/cffdecode.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  cffdecode.h                                                            */
-/*                                                                         */
-/*    PostScript CFF (Type 2) decoding routines (specification).           */
-/*                                                                         */
-/*  Copyright 2017-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * cffdecode.h
+ *
+ *   PostScript CFF (Type 2) decoding routines (specification).
+ *
+ * Copyright (C) 2017-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 CFFDECODE_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psarrst.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psarrst.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psarrst.c                                                              */
-/*                                                                         */
-/*    Adobe's code for Array Stacks (body).                                */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psarrst.c
+ *
+ *   Adobe's code for Array Stacks (body).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psarrst.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psarrst.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psarrst.h                                                              */
-/*                                                                         */
-/*    Adobe's code for Array Stacks (specification).                       */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psarrst.h
+ *
+ *   Adobe's code for Array Stacks (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSARRST_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psauxerr.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psauxerr.h	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psauxerr.h                                                             */
-/*                                                                         */
-/*    PS auxiliary module error codes (specification only).                */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psauxerr.h
+ *
+ *   PS auxiliary module error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the PS auxiliary module error enumeration
+   * constants.
+   *
+   */
 
 #ifndef PSAUXERR_H_
 #define PSAUXERR_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psauxmod.c                                                             */
-/*                                                                         */
-/*    FreeType auxiliary PostScript module implementation (body).          */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psauxmod.c
+ *
+ *   FreeType auxiliary PostScript module implementation (body).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psauxmod.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psauxmod.h                                                             */
-/*                                                                         */
-/*    FreeType auxiliary PostScript module implementation (specification). */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psauxmod.h
+ *
+ *   FreeType auxiliary PostScript module implementation (specification).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -28,10 +28,6 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
 
   FT_CALLBACK_TABLE
   const CFF_Builder_FuncsRec  cff_builder_funcs;
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psblues.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psblues.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psblues.c                                                              */
-/*                                                                         */
-/*    Adobe's code for handling Blue Zones (body).                         */
-/*                                                                         */
-/*  Copyright 2009-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psblues.c
+ *
+ *   Adobe's code for handling Blue Zones (body).
+ *
+ * Copyright 2009-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -44,14 +44,14 @@
 #include "psfont.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_cf2blues
+#define FT_COMPONENT  cf2blues
 
 
   /*
@@ -452,13 +452,13 @@
    * zones in the same pass (see `BlueLock').  If a hint is captured,
    * return true and position the edge(s) in one of 3 ways:
    *
-   *  1) If `BlueScale' suppresses overshoot, position the captured edge
-   *     at the flat edge of the zone.
-   *  2) If overshoot is not suppressed and `BlueShift' requires
-   *     overshoot, position the captured edge a minimum of 1 device pixel
-   *     from the flat edge.
-   *  3) If overshoot is not suppressed or required, position the captured
-   *     edge at the nearest device pixel.
+   * 1) If `BlueScale' suppresses overshoot, position the captured edge
+   *    at the flat edge of the zone.
+   * 2) If overshoot is not suppressed and `BlueShift' requires
+   *    overshoot, position the captured edge a minimum of 1 device pixel
+   *    from the flat edge.
+   * 3) If overshoot is not suppressed or required, position the captured
+   *    edge at the nearest device pixel.
    *
    */
   FT_LOCAL_DEF( FT_Bool )
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psblues.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psblues.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psblues.h                                                              */
-/*                                                                         */
-/*    Adobe's code for handling Blue Zones (specification).                */
-/*                                                                         */
-/*  Copyright 2009-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psblues.h
+ *
+ *   Adobe's code for handling Blue Zones (specification).
+ *
+ * Copyright 2009-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
   /*
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psconv.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psconv.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psconv.c                                                               */
-/*                                                                         */
-/*    Some convenience conversions (body).                                 */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psconv.c
+ *
+ *   Some convenience conversions (body).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -24,14 +24,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_psconv
+#define FT_COMPONENT  psconv
 
 
   /* The following array is used by various functions to quickly convert */
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psconv.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psconv.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psconv.h                                                               */
-/*                                                                         */
-/*    Some convenience conversions (specification).                        */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psconv.h
+ *
+ *   Some convenience conversions (specification).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 PSCONV_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/pserror.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/pserror.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pserror.c                                                              */
-/*                                                                         */
-/*    Adobe's code for error handling (body).                              */
-/*                                                                         */
-/*  Copyright 2006-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pserror.c
+ *
+ *   Adobe's code for error handling (body).
+ *
+ * Copyright 2006-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
--- a/src/java.desktop/share/native/libfreetype/src/psaux/pserror.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/pserror.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pserror.h                                                              */
-/*                                                                         */
-/*    Adobe's code for error handling (specification).                     */
-/*                                                                         */
-/*  Copyright 2006-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pserror.h
+ *
+ *   Adobe's code for error handling (specification).
+ *
+ * Copyright 2006-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSERROR_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psfixed.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psfixed.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psfixed.h                                                              */
-/*                                                                         */
-/*    Adobe's code for Fixed Point Mathematics (specification only).       */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psfixed.h
+ *
+ *   Adobe's code for Fixed Point Mathematics (specification only).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSFIXED_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psfont.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psfont.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psfont.c                                                               */
-/*                                                                         */
-/*    Adobe's code for font instances (body).                              */
-/*                                                                         */
-/*  Copyright 2007-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psfont.c
+ *
+ *   Adobe's code for font instances (body).
+ *
+ * Copyright 2007-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include <ft2build.h>
@@ -331,7 +331,7 @@
     }
 
     /* copy hinted flag on each call */
-    font->hinted = (FT_Bool)( font->renderingFlags & CF2_FlagsHinted );
+    font->hinted = FT_BOOL( font->renderingFlags & CF2_FlagsHinted );
 
     /* determine if transform has changed;       */
     /* include Fontmatrix but ignore translation */
@@ -366,7 +366,7 @@
     if ( font->stemDarkened != ( font->renderingFlags & CF2_FlagsDarkened ) )
     {
       font->stemDarkened =
-        (FT_Bool)( font->renderingFlags & CF2_FlagsDarkened );
+        FT_BOOL( font->renderingFlags & CF2_FlagsDarkened );
 
       /* blue zones depend on darkened flag */
       needExtraSetup = TRUE;
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psfont.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psfont.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psfont.h                                                               */
-/*                                                                         */
-/*    Adobe's code for font instances (specification).                     */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psfont.h
+ *
+ *   Adobe's code for font instances (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSFONT_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psft.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psft.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psft.c                                                                 */
-/*                                                                         */
-/*    FreeType Glue Component to Adobe's Interpreter (body).               */
-/*                                                                         */
-/*  Copyright 2013-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psft.c
+ *
+ *   FreeType Glue Component to Adobe's Interpreter (body).
+ *
+ * Copyright 2013-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -120,12 +120,12 @@
   }
 
 
-  /********************************************/
-  /*                                          */
-  /* functions for handling client outline;   */
-  /* FreeType uses coordinates in 26.6 format */
-  /*                                          */
-  /********************************************/
+  /*********************************************
+   *
+   * functions for handling client outline;
+   * FreeType uses coordinates in 26.6 format
+   *
+   */
 
   static void
   cf2_builder_moveTo( CF2_OutlineCallbacks      callbacks,
@@ -767,13 +767,14 @@
   cf2_freeT1SeacComponent( PS_Decoder*  decoder,
                            CF2_Buffer   buf )
   {
+#ifdef FT_CONFIG_OPTION_INCREMENTAL
+
     T1_Face  face;
     FT_Data  data;
 
 
     FT_ASSERT( decoder );
 
-#ifdef FT_CONFIG_OPTION_INCREMENTAL
     face = (T1_Face)decoder->builder.face;
 
     data.pointer = buf->start;
@@ -783,7 +784,13 @@
       face->root.internal->incremental_interface->funcs->free_glyph_data(
         face->root.internal->incremental_interface->object,
         &data );
-#endif /* FT_CONFIG_OPTION_INCREMENTAL */
+
+#else /* !FT_CONFIG_OPTION_INCREMENTAL */
+
+    FT_UNUSED( decoder );
+    FT_UNUSED( buf );
+
+#endif /* !FT_CONFIG_OPTION_INCREMENTAL */
   }
 
 
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psft.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psft.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psft.h                                                                 */
-/*                                                                         */
-/*    FreeType Glue Component to Adobe's Interpreter (specification).      */
-/*                                                                         */
-/*  Copyright 2013 Adobe Systems Incorporated.                             */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psft.h
+ *
+ *   FreeType Glue Component to Adobe's Interpreter (specification).
+ *
+ * Copyright 2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSFT_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psglue.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psglue.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psglue.h                                                               */
-/*                                                                         */
-/*    Adobe's code for shared stuff (specification only).                  */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psglue.h
+ *
+ *   Adobe's code for shared stuff (specification only).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSGLUE_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/pshints.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/pshints.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshints.c                                                              */
-/*                                                                         */
-/*    Adobe's code for handling CFF hints (body).                          */
-/*                                                                         */
-/*  Copyright 2007-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshints.c
+ *
+ *   Adobe's code for handling CFF hints (body).
+ *
+ * Copyright 2007-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -45,14 +45,14 @@
 #include "psintrp.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_cf2hints
+#define FT_COMPONENT  cf2hints
 
 
   typedef struct  CF2_HintMoveRec_
@@ -217,52 +217,49 @@
   FT_LOCAL_DEF( FT_Bool )
   cf2_hint_isValid( const CF2_Hint  hint )
   {
-    return (FT_Bool)( hint->flags != 0 );
+    return FT_BOOL( hint->flags );
   }
 
 
   static FT_Bool
   cf2_hint_isPair( const CF2_Hint  hint )
   {
-    return (FT_Bool)( ( hint->flags                      &
-                        ( CF2_PairBottom | CF2_PairTop ) ) != 0 );
+    return FT_BOOL( hint->flags & ( CF2_PairBottom | CF2_PairTop ) );
   }
 
 
   static FT_Bool
   cf2_hint_isPairTop( const CF2_Hint  hint )
   {
-    return (FT_Bool)( ( hint->flags & CF2_PairTop ) != 0 );
+    return FT_BOOL( hint->flags & CF2_PairTop );
   }
 
 
   FT_LOCAL_DEF( FT_Bool )
   cf2_hint_isTop( const CF2_Hint  hint )
   {
-    return (FT_Bool)( ( hint->flags                    &
-                        ( CF2_PairTop | CF2_GhostTop ) ) != 0 );
+    return FT_BOOL( hint->flags & ( CF2_PairTop | CF2_GhostTop ) );
   }
 
 
   FT_LOCAL_DEF( FT_Bool )
   cf2_hint_isBottom( const CF2_Hint  hint )
   {
-    return (FT_Bool)( ( hint->flags                          &
-                        ( CF2_PairBottom | CF2_GhostBottom ) ) != 0 );
+    return FT_BOOL( hint->flags & ( CF2_PairBottom | CF2_GhostBottom ) );
   }
 
 
   static FT_Bool
   cf2_hint_isLocked( const CF2_Hint  hint )
   {
-    return (FT_Bool)( ( hint->flags & CF2_Locked ) != 0 );
+    return FT_BOOL( hint->flags & CF2_Locked );
   }
 
 
   static FT_Bool
   cf2_hint_isSynthetic( const CF2_Hint  hint )
   {
-    return (FT_Bool)( ( hint->flags & CF2_Synthetic ) != 0 );
+    return FT_BOOL( hint->flags & CF2_Synthetic );
   }
 
 
@@ -334,7 +331,7 @@
   cf2_hintmap_map( CF2_HintMap  hintmap,
                    CF2_Fixed    csCoord )
   {
-    if ( hintmap->count == 0 || ! hintmap->hinted )
+    if ( hintmap->count == 0 || !hintmap->hinted )
     {
       /* there are no hints; use uniform scale and zero offset */
       return FT_MulFix( csCoord, hintmap->scale );
@@ -497,7 +494,7 @@
           {
             move     = moveDown;
             /* true if non-optimum move */
-            saveEdge = (FT_Bool)( moveUp < -moveDown );
+            saveEdge = FT_BOOL( moveUp < -moveDown );
           }
           else
           {
@@ -1025,10 +1022,10 @@
       }
     }
 
-    FT_TRACE6(( initialMap ? "flags: [p]air [g]host [t]op "
-                             "[b]ottom [L]ocked [S]ynthetic\n"
-                             "Initial hintmap\n"
-                           : "Hints:\n" ));
+    FT_TRACE6(( "%s\n", initialMap ? "flags: [p]air [g]host [t]op"
+                                     " [b]ottom [L]ocked [S]ynthetic\n"
+                                     "Initial hintmap"
+                                   : "Hints:" ));
     cf2_hintmap_dump( hintmap );
 
     /*
@@ -1215,7 +1212,7 @@
      * (`u').
      *
      * See notation in
-     * http://softsurfer.com/Archive/algorithm_0104/algorithm_0104B.htm.
+     * http://geomalgorithms.com/a05-_intersect-1.html.
      * Calculations are done in 16.16, but must handle the squaring of
      * line lengths in character space.  We scale all vectors by 1/32 to
      * avoid overflow.  This allows values up to 4095 to be squared.  The
--- a/src/java.desktop/share/native/libfreetype/src/psaux/pshints.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/pshints.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshints.h                                                              */
-/*                                                                         */
-/*    Adobe's code for handling CFF hints (body).                          */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshints.h
+ *
+ *   Adobe's code for handling CFF hints (body).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSHINT_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psintrp.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psintrp.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psintrp.c                                                              */
-/*                                                                         */
-/*    Adobe's CFF Interpreter (body).                                      */
-/*                                                                         */
-/*  Copyright 2007-2014 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psintrp.c
+ *
+ *   Adobe's CFF Interpreter (body).
+ *
+ * Copyright 2007-2014 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -52,14 +52,14 @@
 #include "t1decode.h" /* for t1 seac    */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_cf2interp
+#define FT_COMPONENT  cf2interp
 
 
   FT_LOCAL_DEF( void )
@@ -287,7 +287,7 @@
   {
     CF2_UInt  i;
     CF2_UInt  count       = cf2_stack_count( opStack );
-    FT_Bool   hasWidthArg = (FT_Bool)( count & 1 );
+    FT_Bool   hasWidthArg = FT_BOOL( count & 1 );
 
     /* variable accumulates delta values from operand stack */
     CF2_Fixed  position = hintOffset;
@@ -364,7 +364,7 @@
 
     if ( doConditionalLastRead )
     {
-      FT_Bool    lastIsX = (FT_Bool)(
+      FT_Bool    lastIsX = FT_BOOL(
                              cf2_fixedAbs( SUB_INT32( vals[10], *curX ) ) >
                              cf2_fixedAbs( SUB_INT32( vals[11], *curY ) ) );
       CF2_Fixed  lastVal = cf2_stack_getReal( opStack, idx );
@@ -612,14 +612,14 @@
     cf2_arrstack_setCount( &subrStack, CF2_MAX_SUBR + 1 );
 
     charstring  = (CF2_Buffer)cf2_arrstack_getBuffer( &subrStack );
-    *charstring = *buf;    /* structure copy */
-
-    charstringIndex = 0;       /* entry is valid now */
 
     /* catch errors so far */
     if ( *error )
       goto exit;
 
+    *charstring     = *buf;    /* structure copy     */
+    charstringIndex = 0;       /* entry is valid now */
+
     /* main interpreter loop */
     while ( 1 )
     {
@@ -663,6 +663,7 @@
           /* Skip outline commands first time round.       */
           /* `endchar' will trigger initial hintmap build  */
           /* and rewind the charstring.                    */
+          FT_TRACE4(( " <outline command skipped>\n" ));
           cf2_stack_clear( opStack );
           continue;
         }
@@ -775,7 +776,8 @@
 
       case cf2_cmdHSTEMHM:
       case cf2_cmdHSTEM:
-        FT_TRACE4(( op1 == cf2_cmdHSTEMHM ? " hstemhm\n" : " hstem\n" ));
+        FT_TRACE4(( "%s\n", op1 == cf2_cmdHSTEMHM ? " hstemhm"
+                                                  : " hstem" ));
 
         if ( !font->isT1 )
         {
@@ -805,7 +807,8 @@
 
       case cf2_cmdVSTEMHM:
       case cf2_cmdVSTEM:
-        FT_TRACE4(( op1 == cf2_cmdVSTEMHM ? " vstemhm\n" : " vstem\n" ));
+        FT_TRACE4(( "%s\n", op1 == cf2_cmdVSTEMHM ? " vstemhm"
+                                                  : " vstem" ));
 
         if ( !font->isT1 )
         {
@@ -888,7 +891,7 @@
           FT_Bool  isX = FT_BOOL( op1 == cf2_cmdHLINETO );
 
 
-          FT_TRACE4(( isX ? " hlineto\n" : " vlineto\n" ));
+          FT_TRACE4(( "%s\n", isX ? " hlineto" : " vlineto" ));
 
           for ( idx = 0; idx < count; idx++ )
           {
@@ -916,8 +919,8 @@
           CF2_UInt  idx   = 0;
 
 
-          FT_TRACE4(( op1 == cf2_cmdRCURVELINE ? " rcurveline\n"
-                                               : " rrcurveto\n" ));
+          FT_TRACE4(( "%s\n", op1 == cf2_cmdRCURVELINE ? " rcurveline"
+                                                       : " rrcurveto" ));
 
           while ( idx + 6 <= count )
           {
@@ -957,10 +960,10 @@
           FT_TRACE4(( " unknown op (%d)\n", op1 ));
         else
         {
-          FT_TRACE4(( " closepath" ));
+          FT_TRACE4(( " closepath\n" ));
 
           /* if there is no path, `closepath' is a no-op */
-          ps_builder_close_contour( &decoder->builder );
+          cf2_glyphpath_closeOpenPath( &glyphPath );
 
           haveWidth = TRUE;
         }
@@ -972,8 +975,8 @@
           CF2_Int  subrNum;
 
 
-          FT_TRACE4(( op1 == cf2_cmdCALLGSUBR ? " callgsubr"
-                                              : " callsubr" ));
+          FT_TRACE4(( "%s", op1 == cf2_cmdCALLGSUBR ? " callgsubr"
+                                                    : " callsubr" ));
 
           if ( ( !font->isT1 && charstringIndex > CF2_MAX_SUBR )       ||
                (  font->isT1 && charstringIndex > T1_MAX_SUBRS_CALLS ) )
@@ -1212,8 +1215,8 @@
                       FT_Bool  isV = FT_BOOL( op2 == cf2_escVSTEM3 );
 
 
-                      FT_TRACE4(( isV ? " vstem3\n"
-                                      : " hstem3\n" ));
+                      FT_TRACE4(( "%s\n", isV ? " vstem3"
+                                              : " hstem3" ));
 
                       FT_ASSERT( cf2_stack_count( opStack ) == 6 );
 
@@ -1644,16 +1647,17 @@
                     subr_no = cf2_stack_popInt( opStack );
                     arg_cnt = cf2_stack_popInt( opStack );
 
-                    /*******************************************************/
-                    /*                                                     */
-                    /* remove all operands to callothersubr from the stack */
-                    /*                                                     */
-                    /* for handled othersubrs, where we know the number of */
-                    /* arguments, we increase the stack by the value of    */
-                    /* known_othersubr_result_cnt                          */
-                    /*                                                     */
-                    /* for unhandled othersubrs the following pops adjust  */
-                    /* the stack pointer as necessary                      */
+                    /********************************************************
+                     *
+                     * remove all operands to callothersubr from the stack
+                     *
+                     * for handled othersubrs, where we know the number of
+                     * arguments, we increase the stack by the value of
+                     * known_othersubr_result_cnt
+                     *
+                     * for unhandled othersubrs the following pops adjust
+                     * the stack pointer as necessary
+                     */
 
                     count = cf2_stack_count( opStack );
                     FT_ASSERT( (CF2_UInt)arg_cnt <= count );
@@ -2416,7 +2420,7 @@
           PS_Builder*  builder;
 
 
-          FT_TRACE4(( " hsbw" ));
+          FT_TRACE4(( " hsbw\n" ));
 
           builder = &decoder->builder;
 
@@ -2562,7 +2566,7 @@
       case cf2_cmdHINTMASK:
         /* the final \n in the tracing message gets added in      */
         /* `cf2_hintmask_read' (which also traces the mask bytes) */
-        FT_TRACE4(( op1 == cf2_cmdCNTRMASK ? " cntrmask" : " hintmask" ));
+        FT_TRACE4(( "%s", op1 == cf2_cmdCNTRMASK ? " cntrmask" : " hintmask" ));
 
         /* never add hints after the mask is computed */
         if ( cf2_stack_count( opStack ) > 1    &&
@@ -2828,7 +2832,7 @@
           count = count1 & ~2U;
           idx  += count1 - count;
 
-          FT_TRACE4(( alternate ? " hvcurveto\n" : " vhcurveto\n" ));
+          FT_TRACE4(( "%s\n", alternate ? " hvcurveto" : " vhcurveto" ));
 
           while ( idx < count )
           {
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psintrp.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psintrp.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psintrp.h                                                              */
-/*                                                                         */
-/*    Adobe's CFF Interpreter (specification).                             */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psintrp.h
+ *
+ *   Adobe's CFF Interpreter (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSINTRP_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psobjs.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psobjs.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psobjs.c                                                               */
-/*                                                                         */
-/*    Auxiliary functions for PostScript fonts (body).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psobjs.c
+ *
+ *   Auxiliary functions for PostScript fonts (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -29,14 +29,14 @@
 #include "psauxmod.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_psobjs
+#define FT_COMPONENT  psobjs
 
 
   /*************************************************************************/
@@ -47,26 +47,29 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -144,28 +147,32 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -216,22 +223,23 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
   {
@@ -498,12 +506,12 @@
   }
 
 
-  /***********************************************************************/
-  /*                                                                     */
-  /* All exported parsing routines handle leading whitespace and stop at */
-  /* the first character which isn't part of the just handled token.     */
-  /*                                                                     */
-  /***********************************************************************/
+  /************************************************************************
+   *
+   * 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 )
@@ -1100,18 +1108,22 @@
       {
       case T1_FIELD_TYPE_BOOL:
         val = ps_tobool( &cur, limit );
+        FT_TRACE4(( " %s", val ? "true" : "false" ));
         goto Store_Integer;
 
       case T1_FIELD_TYPE_FIXED:
         val = PS_Conv_ToFixed( &cur, limit, 0 );
+        FT_TRACE4(( " %f", (double)val / 65536 ));
         goto Store_Integer;
 
       case T1_FIELD_TYPE_FIXED_1000:
         val = PS_Conv_ToFixed( &cur, limit, 3 );
+        FT_TRACE4(( " %f", (double)val / 65536 / 1000 ));
         goto Store_Integer;
 
       case T1_FIELD_TYPE_INTEGER:
         val = PS_Conv_ToInt( &cur, limit );
+        FT_TRACE4(( " %ld", val ));
         /* fall through */
 
       Store_Integer:
@@ -1188,6 +1200,13 @@
           FT_MEM_COPY( string, cur, len );
           string[len] = 0;
 
+#ifdef FT_DEBUG_LEVEL_TRACE
+          if ( token.type == T1_TOKEN_TYPE_STRING )
+            FT_TRACE4(( " (%s)", string ));
+          else
+            FT_TRACE4(( " /%s", string ));
+#endif
+
           *(FT_String**)q = string;
         }
         break;
@@ -1213,6 +1232,12 @@
           bbox->yMin = FT_RoundFix( temp[1] );
           bbox->xMax = FT_RoundFix( temp[2] );
           bbox->yMax = FT_RoundFix( temp[3] );
+
+          FT_TRACE4(( " [%d %d %d %d]",
+                      bbox->xMin / 65536,
+                      bbox->yMin / 65536,
+                      bbox->xMax / 65536,
+                      bbox->yMax / 65536 ));
         }
         break;
 
@@ -1251,6 +1276,7 @@
             skip_spaces( &cur, limit );
           }
 
+          FT_TRACE4(( " [" ));
           for ( i = 0; i < max_objects; i++ )
           {
             FT_BBox*  bbox = (FT_BBox*)objects[i];
@@ -1260,7 +1286,14 @@
             bbox->yMin = FT_RoundFix( temp[i +     max_objects] );
             bbox->xMax = FT_RoundFix( temp[i + 2 * max_objects] );
             bbox->yMax = FT_RoundFix( temp[i + 3 * max_objects] );
+
+            FT_TRACE4(( " [%d %d %d %d]",
+                        bbox->xMin / 65536,
+                        bbox->yMin / 65536,
+                        bbox->xMax / 65536,
+                        bbox->yMax / 65536 ));
           }
+          FT_TRACE4(( "]" ));
 
           FT_FREE( temp );
         }
@@ -1333,6 +1366,8 @@
       *(FT_Byte*)( (FT_Byte*)objects[0] + field->count_offset ) =
         (FT_Byte)num_elements;
 
+    FT_TRACE4(( " [" ));
+
     /* we now load each element, adjusting the field.offset on each one */
     token = elements;
     for ( ; num_elements > 0; num_elements--, token++ )
@@ -1351,6 +1386,8 @@
       fieldrec.offset += fieldrec.size;
     }
 
+    FT_TRACE4(( "]" ));
+
 #if 0  /* obsolete -- keep for reference */
     if ( pflags )
       *pflags |= 1L << field->flag_bit;
@@ -1410,6 +1447,8 @@
                                           bytes,
                                           max_bytes );
 
+    parser->cursor = cur;
+
     if ( delimiters )
     {
       if ( cur < parser->limit && *cur != '>' )
@@ -1419,11 +1458,9 @@
         goto Exit;
       }
 
-      cur++;
+      parser->cursor++;
     }
 
-    parser->cursor = cur;
-
   Exit:
     return error;
   }
@@ -1509,26 +1546,31 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -1572,19 +1614,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
   {
@@ -1769,26 +1812,31 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                               */
-  /*                                                                       */
-  /*    hinting :: Whether hinting is active.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   hinting ::
+   *     Whether hinting is active.
+   */
   FT_LOCAL_DEF( void )
   cff_builder_init( CFF_Builder*   builder,
                     TT_Face        face,
@@ -1841,19 +1889,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   */
   FT_LOCAL_DEF( void )
   cff_builder_done( CFF_Builder*  builder )
   {
@@ -1993,6 +2042,14 @@
     first = outline->n_contours <= 1
             ? 0 : outline->contours[outline->n_contours - 2] + 1;
 
+    /* in malformed fonts it can happen that a contour was started */
+    /* but no points were added                                    */
+    if ( outline->n_contours && first == outline->n_points )
+    {
+      outline->n_contours--;
+      return;
+    }
+
     /* We must not include the last point in the path if it */
     /* is located on the first point.                       */
     if ( outline->n_points > 1 )
@@ -2033,26 +2090,31 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_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.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_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 )
   ps_builder_init( PS_Builder*  ps_builder,
                    void*        builder,
@@ -2116,19 +2178,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_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 )
   ps_builder_done( PS_Builder*  builder )
   {
@@ -2336,23 +2399,26 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ps_decoder_init                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Creates a wrapper decoder for use in the combined                  */
-  /*    Type 1 / CFF interpreter.                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    ps_decoder :: A pointer to the decoder to initialize.              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    decoder    :: A pointer to the original decoder.                   */
-  /*                                                                       */
-  /*    is_t1      :: Flag indicating Type 1 or CFF                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ps_decoder_init
+   *
+   * @Description:
+   *   Creates a wrapper decoder for use in the combined
+   *   Type 1 / CFF interpreter.
+   *
+   * @InOut:
+   *   ps_decoder ::
+   *     A pointer to the decoder to initialize.
+   *
+   * @Input:
+   *   decoder ::
+   *     A pointer to the original decoder.
+   *
+   *   is_t1 ::
+   *     Flag indicating Type 1 or CFF
+   */
   FT_LOCAL_DEF( void )
   ps_decoder_init( PS_Decoder*  ps_decoder,
                    void*        decoder,
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psobjs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psobjs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psobjs.h                                                               */
-/*                                                                         */
-/*    Auxiliary functions for PostScript fonts (specification).            */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psobjs.h
+ *
+ *   Auxiliary functions for PostScript fonts (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psread.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psread.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psread.c                                                               */
-/*                                                                         */
-/*    Adobe's code for stream handling (body).                             */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psread.c
+ *
+ *   Adobe's code for stream handling (body).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -105,7 +105,7 @@
   FT_LOCAL_DEF( FT_Bool )
   cf2_buf_isEnd( CF2_Buffer  buf )
   {
-    return (FT_Bool)( buf->ptr >= buf->end );
+    return FT_BOOL( buf->ptr >= buf->end );
   }
 
 
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psread.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psread.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psread.h                                                               */
-/*                                                                         */
-/*    Adobe's code for stream handling (specification).                    */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psread.h
+ *
+ *   Adobe's code for stream handling (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSREAD_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psstack.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psstack.c	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psstack.c                                                              */
-/*                                                                         */
-/*    Adobe's code for emulating a CFF stack (body).                       */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psstack.c
+ *
+ *   Adobe's code for emulating a CFF stack (body).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #include "psft.h"
@@ -258,6 +258,9 @@
       return;
     }
 
+    /* before C99 it is implementation-defined whether    */
+    /* the result of `%' is negative if the first operand */
+    /* is negative                                        */
     if ( shift < 0 )
       shift = -( ( -shift ) % count );
     else
--- a/src/java.desktop/share/native/libfreetype/src/psaux/psstack.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/psstack.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psstack.h                                                              */
-/*                                                                         */
-/*    Adobe's code for emulating a CFF stack (specification).              */
-/*                                                                         */
-/*  Copyright 2007-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psstack.h
+ *
+ *   Adobe's code for emulating a CFF stack (specification).
+ *
+ * Copyright 2007-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSSTACK_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/pstypes.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/pstypes.h	Thu May 09 16:09:39 2019 -0700
@@ -1,39 +1,39 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pstypes.h                                                              */
-/*                                                                         */
-/*    Adobe's code for defining data types (specification only).           */
-/*                                                                         */
-/*  Copyright 2011-2013 Adobe Systems Incorporated.                        */
-/*                                                                         */
-/*  This software, and all works of authorship, whether in source or       */
-/*  object code form as indicated by the copyright notice(s) included      */
-/*  herein (collectively, the "Work") is made available, and may only be   */
-/*  used, modified, and distributed under the FreeType Project License,    */
-/*  LICENSE.TXT.  Additionally, subject to the terms and conditions of the */
-/*  FreeType Project License, each contributor to the Work hereby grants   */
-/*  to any individual or legal entity exercising permissions granted by    */
-/*  the FreeType Project License and this section (hereafter, "You" or     */
-/*  "Your") a perpetual, worldwide, non-exclusive, no-charge,              */
-/*  royalty-free, irrevocable (except as stated in this section) patent    */
-/*  license to make, have made, use, offer to sell, sell, import, and      */
-/*  otherwise transfer the Work, where such license applies only to those  */
-/*  patent claims licensable by such contributor that are necessarily      */
-/*  infringed by their contribution(s) alone or by combination of their    */
-/*  contribution(s) with the Work to which such contribution(s) was        */
-/*  submitted.  If You institute patent litigation against any entity      */
-/*  (including a cross-claim or counterclaim in a lawsuit) alleging that   */
-/*  the Work or a contribution incorporated within the Work constitutes    */
-/*  direct or contributory patent infringement, then any patent licenses   */
-/*  granted to You under this License for that Work shall terminate as of  */
-/*  the date such litigation is filed.                                     */
-/*                                                                         */
-/*  By using, modifying, or distributing the Work you indicate that you    */
-/*  have read and understood the terms and conditions of the               */
-/*  FreeType Project License as well as those provided in this section,    */
-/*  and you accept them fully.                                             */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pstypes.h
+ *
+ *   Adobe's code for defining data types (specification only).
+ *
+ * Copyright 2011-2013 Adobe Systems Incorporated.
+ *
+ * This software, and all works of authorship, whether in source or
+ * object code form as indicated by the copyright notice(s) included
+ * herein (collectively, the "Work") is made available, and may only be
+ * used, modified, and distributed under the FreeType Project License,
+ * LICENSE.TXT.  Additionally, subject to the terms and conditions of the
+ * FreeType Project License, each contributor to the Work hereby grants
+ * to any individual or legal entity exercising permissions granted by
+ * the FreeType Project License and this section (hereafter, "You" or
+ * "Your") a perpetual, worldwide, non-exclusive, no-charge,
+ * royalty-free, irrevocable (except as stated in this section) patent
+ * license to make, have made, use, offer to sell, sell, import, and
+ * otherwise transfer the Work, where such license applies only to those
+ * patent claims licensable by such contributor that are necessarily
+ * infringed by their contribution(s) alone or by combination of their
+ * contribution(s) with the Work to which such contribution(s) was
+ * submitted.  If You institute patent litigation against any entity
+ * (including a cross-claim or counterclaim in a lawsuit) alleging that
+ * the Work or a contribution incorporated within the Work constitutes
+ * direct or contributory patent infringement, then any patent licenses
+ * granted to You under this License for that Work shall terminate as of
+ * the date such litigation is filed.
+ *
+ * By using, modifying, or distributing the Work you indicate that you
+ * have read and understood the terms and conditions of the
+ * FreeType Project License as well as those provided in this section,
+ * and you accept them fully.
+ *
+ */
 
 
 #ifndef PSTYPES_H_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1cmap.c                                                               */
-/*                                                                         */
-/*    Type 1 character map support (body).                                 */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1cmap.c
+ *
+ *   Type 1 character map support (body).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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"
@@ -305,6 +305,9 @@
     FT_UNUSED( pointer );
 
 
+    if ( !psnames->unicodes_init )
+      return FT_THROW( Unimplemented_Feature );
+
     return psnames->unicodes_init( memory,
                                    unicodes,
                                    (FT_UInt)face->type1.num_glyphs,
--- a/src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/t1cmap.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1cmap.h                                                               */
-/*                                                                         */
-/*    Type 1 character map support (specification).                        */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1cmap.h
+ *
+ *   Type 1 character map support (specification).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/psaux/t1decode.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/t1decode.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1decode.c                                                             */
-/*                                                                         */
-/*    PostScript Type 1 decoding routines (body).                          */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1decode.c
+ *
+ *   PostScript Type 1 decoding routines (body).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -31,14 +31,14 @@
 /* ensure proper sign extension */
 #define Fix2Int( f )  ( (FT_Int)(FT_Short)( (f) >> 16 ) )
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  t1decode
 
 
   typedef enum  T1_Operator_
@@ -109,24 +109,26 @@
   };
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1_lookup_glyph_by_stdcharcode_ps                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Looks up a given glyph by its StandardEncoding charcode.  Used to  */
-  /*    implement the SEAC Type 1 operator in the Adobe engine             */
-  /*                                                                       */
-  /* <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.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1_lookup_glyph_by_stdcharcode_ps
+   *
+   * @Description:
+   *   Looks up a given glyph by its StandardEncoding charcode.  Used to
+   *   implement the SEAC Type 1 operator in the Adobe engine
+   *
+   * @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.
+   */
   FT_LOCAL_DEF( FT_Int )
   t1_lookup_glyph_by_stdcharcode_ps( PS_Decoder*  decoder,
                                      FT_Int       charcode )
@@ -159,24 +161,27 @@
 
 
 #ifdef T1_CONFIG_OPTION_OLD_ENGINE
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                */
-  /*                                                                       */
+
+  /**************************************************************************
+   *
+   * @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 )
@@ -217,30 +222,36 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -399,24 +410,27 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -466,9 +480,6 @@
     if ( decoder->buildchar && decoder->len_buildchar > 0 )
       FT_ARRAY_ZERO( decoder->buildchar, decoder->len_buildchar );
 
-    FT_TRACE4(( "\n"
-                "Start charstring\n" ));
-
     zone->base           = charstring_base;
     limit = zone->limit  = charstring_base + charstring_len;
     ip    = zone->cursor = zone->base;
@@ -503,11 +514,11 @@
       }
 #endif
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Decode operator or operand                                        */
-      /*                                                                   */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Decode operator or operand
+       *
+       */
 
       /* first of all, decompress operator or value */
       switch ( *ip++ )
@@ -710,11 +721,11 @@
         large_int = FALSE;
       }
 
-      /*********************************************************************/
-      /*                                                                   */
-      /*  Push value on stack, or process operator                         */
-      /*                                                                   */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Push value on stack, or process operator
+       *
+       */
       if ( op == op_none )
       {
         if ( top - decoder->stack >= T1_MAX_CHARSTRINGS_OPERANDS )
@@ -752,16 +763,17 @@
         subr_no = Fix2Int( top[1] );
         arg_cnt = Fix2Int( top[0] );
 
-        /***********************************************************/
-        /*                                                         */
-        /* remove all operands to callothersubr from the stack     */
-        /*                                                         */
-        /* for handled othersubrs, where we know the number of     */
-        /* arguments, we increase the stack by the value of        */
-        /* known_othersubr_result_cnt                              */
-        /*                                                         */
-        /* for unhandled othersubrs the following pops adjust the  */
-        /* stack pointer as necessary                              */
+        /************************************************************
+         *
+         * remove all operands to callothersubr from the stack
+         *
+         * for handled othersubrs, where we know the number of
+         * arguments, we increase the stack by the value of
+         * known_othersubr_result_cnt
+         *
+         * for unhandled othersubrs the following pops adjust the
+         * stack pointer as necessary
+         */
 
         if ( arg_cnt > top - decoder->stack )
           goto Stack_Underflow;
@@ -1223,7 +1235,10 @@
           /* the glyph's metrics (lsb + advance width), not load the   */
           /* rest of it; so exit immediately                           */
           if ( builder->metrics_only )
+          {
+            FT_TRACE4(( "\n" ));
             return FT_Err_Ok;
+          }
 
           break;
 
@@ -1255,7 +1270,10 @@
           /* the glyph's metrics (lsb + advance width), not load the   */
           /* rest of it; so exit immediately                           */
           if ( builder->metrics_only )
+          {
+            FT_TRACE4(( "\n" ));
             return FT_Err_Ok;
+          }
 
           break;
 
@@ -1638,26 +1656,31 @@
     return FT_THROW( Stack_Underflow );
   }
 
-#else /* T1_CONFIG_OPTION_OLD_ENGINE */
+
+#else /* !T1_CONFIG_OPTION_OLD_ENGINE */
+
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    t1_decoder_parse_metrics                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parses a given Type 1 charstrings program to extract width         */
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   t1_decoder_parse_metrics
+   *
+   * @Description:
+   *   Parses a given Type 1 charstrings program to extract width
+   *
+   * @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_metrics( T1_Decoder  decoder,
                             FT_Byte*    charstring_base,
@@ -1680,9 +1703,6 @@
 
     builder->parse_state = T1_Parse_Start;
 
-    FT_TRACE4(( "\n"
-                "Start charstring: get width\n" ));
-
     zone->base           = charstring_base;
     limit = zone->limit  = charstring_base + charstring_len;
     ip    = zone->cursor = zone->base;
@@ -1703,11 +1723,11 @@
       }
 #endif
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Decode operator or operand                                        */
-      /*                                                                   */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Decode operator or operand
+       *
+       */
 
       /* first of all, decompress operator or value */
       switch ( *ip++ )
@@ -1817,11 +1837,11 @@
         }
       }
 
-      /*********************************************************************/
-      /*                                                                   */
-      /*  Push value on stack, or process operator                         */
-      /*                                                                   */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Push value on stack, or process operator
+       *
+       */
       if ( op == op_none )
       {
         if ( top - decoder->stack >= T1_MAX_CHARSTRINGS_OPERANDS )
@@ -1875,6 +1895,7 @@
           /* we only want to compute the glyph's metrics */
           /* (lsb + advance width), not load the rest of */
           /* it; so exit immediately                     */
+          FT_TRACE4(( "\n" ));
           return FT_Err_Ok;
 
         case op_sbw:
@@ -1893,6 +1914,7 @@
           /* we only want to compute the glyph's metrics */
           /* (lsb + advance width), not load the rest of */
           /* it; so exit immediately                     */
+          FT_TRACE4(( "\n" ));
           return FT_Err_Ok;
 
         default:
@@ -1917,7 +1939,8 @@
   Stack_Underflow:
     return FT_THROW( Stack_Underflow );
   }
-#endif /* T1_CONFIG_OPTION_OLD_ENGINE */
+
+#endif /* !T1_CONFIG_OPTION_OLD_ENGINE */
 
 
   /* initialize T1 decoder */
@@ -1934,7 +1957,7 @@
   {
     FT_ZERO( decoder );
 
-    /* retrieve PSNames interface from list of current modules */
+    /* retrieve `psnames' interface from list of current modules */
     {
       FT_Service_PsCMaps  psnames;
 
--- a/src/java.desktop/share/native/libfreetype/src/psaux/t1decode.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psaux/t1decode.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1decode.h                                                             */
-/*                                                                         */
-/*    PostScript Type 1 decoding routines (specification).                 */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1decode.h
+ *
+ *   PostScript Type 1 decoding routines (specification).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshalgo.c                                                              */
-/*                                                                         */
-/*    PostScript hinting algorithm (body).                                 */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshalgo.c
+ *
+ *   PostScript hinting algorithm (body).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -26,7 +26,7 @@
 
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_pshalgo
+#define FT_COMPONENT  pshalgo
 
 
 #ifdef DEBUG_HINTER
@@ -53,8 +53,8 @@
   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;
+    return ADD_INT( hint1->org_pos, hint1->org_len ) >= hint2->org_pos &&
+           ADD_INT( hint2->org_pos, hint2->org_len ) >= hint1->org_pos;
   }
 
 
@@ -479,7 +479,7 @@
 
       if ( dimension == 1 )
         psh_blues_snap_stem( &globals->blues,
-                             hint->org_pos + hint->org_len,
+                             ADD_INT( hint->org_pos, hint->org_len ),
                              hint->org_pos,
                              &align );
 
@@ -658,8 +658,8 @@
 #if 0  /* not used for now, experimental */
 
  /*
-  *  A variant to perform "light" hinting (i.e. FT_RENDER_MODE_LIGHT)
-  *  of stems
+  * A variant to perform "light" hinting (i.e. FT_RENDER_MODE_LIGHT)
+  * of stems
   */
   static void
   psh_hint_align_light( PSH_Hint     hint,
@@ -703,7 +703,7 @@
 
       if ( dimension == 1 )
         psh_blues_snap_stem( &globals->blues,
-                             hint->org_pos + hint->org_len,
+                             ADD_INT( hint->org_pos, hint->org_len ),
                              hint->org_pos,
                              &align );
 
@@ -1538,8 +1538,8 @@
             PSH_Hint  hint = sort[nn];
 
 
-            if ( org_u >= hint->org_pos                 &&
-                org_u <= hint->org_pos + hint->org_len )
+            if ( org_u >=          hint->org_pos                  &&
+                 org_u <= ADD_INT( hint->org_pos, hint->org_len ) )
             {
               point->hint = hint;
               break;
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshalgo.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshalgo.h                                                              */
-/*                                                                         */
-/*    PostScript hinting algorithm (specification).                        */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshalgo.h
+ *
+ *   PostScript hinting algorithm (specification).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.c	Thu May 09 16:09:39 2019 -0700
@@ -1,25 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshglob.c                                                              */
-/*                                                                         */
-/*    PostScript hinter global hinting management (body).                  */
-/*    Inspired by the new auto-hinter module.                              */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshglob.c
+ *
+ *   PostScript hinter global hinting management (body).
+ *   Inspired by the new auto-hinter module.
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.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_CALC_H
 #include "pshglob.h"
 
 #ifdef DEBUG_HINTER
@@ -568,7 +569,7 @@
 
     for ( ; count > 0; count--, zone++ )
     {
-      delta = stem_top - zone->org_bottom;
+      delta = SUB_LONG( stem_top, zone->org_bottom );
       if ( delta < -blues->blue_fuzz )
         break;
 
@@ -590,7 +591,7 @@
 
     for ( ; count > 0; count--, zone-- )
     {
-      delta = zone->org_top - stem_bot;
+      delta = SUB_LONG( zone->org_top, stem_bot );
       if ( delta < -blues->blue_fuzz )
         break;
 
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshglob.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshglob.h                                                              */
-/*                                                                         */
-/*    PostScript hinter global hinting management.                         */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshglob.h
+ *
+ *   PostScript hinter global hinting management.
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -36,27 +36,27 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* @constant:                                                            */
-  /*    PS_GLOBALS_MAX_BLUE_ZONES                                          */
-  /*                                                                       */
-  /* @description:                                                         */
-  /*    The maximum number of blue zones in a font global hints structure. */
-  /*    See @PS_Globals_BluesRec.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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
 
 
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.c	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,25 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshmod.c                                                               */
-/*                                                                         */
-/*    FreeType PostScript hinter module implementation (body).             */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshmod.c
+ *
+ *   FreeType PostScript hinter module implementation (body).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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"
-#include "pshpic.h"
 
 
   /* the Postscript Hinter module structure */
@@ -111,7 +110,7 @@
     0x10000L,
     0x20000L,
 
-    &PSHINTER_INTERFACE_GET,              /* module-specific interface */
+    &pshinter_interface,        /* module-specific interface */
 
     (FT_Module_Constructor)ps_hinter_init,  /* module_init   */
     (FT_Module_Destructor) ps_hinter_done,  /* module_done   */
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshmod.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshmod.h                                                               */
-/*                                                                         */
-/*    PostScript hinter module interface (specification).                  */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshmod.h
+ *
+ *   PostScript hinter module interface (specification).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshnterr.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshnterr.h	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshnterr.h                                                             */
-/*                                                                         */
-/*    PS Hinter error codes (specification only).                          */
-/*                                                                         */
-/*  Copyright 2003-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshnterr.h
+ *
+ *   PS Hinter error codes (specification only).
+ *
+ * Copyright (C) 2003-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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. */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the PSHinter error enumeration constants.
+   *
+   */
 
 #ifndef PSHNTERR_H_
 #define PSHNTERR_H_
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshpic.c                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for pshinter module. */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "pshpic.h"
-#include "pshnterr.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from pshmod.c */
-  void
-  FT_Init_Class_pshinter_interface( FT_Library           library,
-                                    PSHinter_Interface*  clazz );
-
-  void
-  pshinter_module_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->pshinter )
-    {
-      FT_FREE( pic_container->pshinter );
-      pic_container->pshinter = NULL;
-    }
-  }
-
-
-  FT_Error
-  pshinter_module_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    PSHinterPIC*       container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->pshinter = container;
-
-    /* add call to initialization function when you add new scripts */
-    FT_Init_Class_pshinter_interface(
-      library, &container->pshinter_interface );
-
-    if ( error )
-      pshinter_module_class_pic_free( library );
-
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshpic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshpic.h                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for pshinter module. */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 PSHPIC_H_
-#define PSHPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define PSHINTER_INTERFACE_GET  pshinter_interface
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_INTERNAL_POSTSCRIPT_HINTS_H
-
-FT_BEGIN_HEADER
-
-  typedef struct  PSHinterPIC_
-  {
-    PSHinter_Interface  pshinter_interface;
-
-  } PSHinterPIC;
-
-
-#define GET_PIC( lib )  ( (PSHinterPIC*)( (lib)->pic_container.pshinter ) )
-
-#define PSHINTER_INTERFACE_GET  ( GET_PIC( library )->pshinter_interface )
-
-  /* see pshpic.c for the implementation */
-  void
-  pshinter_module_class_pic_free( FT_Library  library );
-
-  FT_Error
-  pshinter_module_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* PSHPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshrec.c                                                               */
-/*                                                                         */
-/*    FreeType PostScript hints recorder (body).                           */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshrec.c
+ *
+ *   FreeType PostScript hints recorder (body).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -28,7 +28,7 @@
 #include "pshnterr.h"
 
 #undef  FT_COMPONENT
-#define FT_COMPONENT  trace_pshrec
+#define FT_COMPONENT  pshrec
 
 #ifdef DEBUG_HINTER
   PS_Hints  ps_debug_hints         = NULL;
@@ -666,7 +666,7 @@
       if ( len == -21 )
       {
         flags |= PS_HINT_FLAG_BOTTOM;
-        pos   += len;
+        pos    = ADD_INT( pos, len );
       }
       len = 0;
     }
@@ -1187,7 +1187,7 @@
       /* compute integer stem positions in font units */
       for ( n = 0; n < count * 2; n++ )
       {
-        y       += coords[n];
+        y        = ADD_LONG( y, coords[n] );
         stems[n] = FIXED_TO_INT( y );
       }
 
--- a/src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/pshinter/pshrec.h	Thu May 09 16:09:39 2019 -0700
@@ -1,31 +1,31 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pshrec.h                                                               */
-/*                                                                         */
-/*    Postscript (Type1/Type2) hints recorder (specification).             */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pshrec.h
+ *
+ *   Postscript (Type1/Type2) hints recorder (specification).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                                 */
-  /*                                                                        */
-  /**************************************************************************/
+  /***************************************************************************
+   *
+   * 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_
--- a/src/java.desktop/share/native/libfreetype/src/psnames/psmodule.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psnames/psmodule.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psmodule.c                                                             */
-/*                                                                         */
-/*    PSNames module implementation (body).                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psmodule.c
+ *
+ *   psnames module implementation (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -24,16 +24,16 @@
 #include "psmodule.h"
 
   /*
-   *  The file `pstables.h' with its arrays and its function
-   *  `ft_get_adobe_glyph_index' is useful for other projects also (for
-   *  example, `pdfium' is using it).  However, if used as a C++ header,
-   *  including it in two different source files makes it necessary to use
-   *  `extern const' for the declaration of its arrays, otherwise the data
-   *  would be duplicated as mandated by the C++ standard.
+   * The file `pstables.h' with its arrays and its function
+   * `ft_get_adobe_glyph_index' is useful for other projects also (for
+   * example, `pdfium' is using it).  However, if used as a C++ header,
+   * including it in two different source files makes it necessary to use
+   * `extern const' for the declaration of its arrays, otherwise the data
+   * would be duplicated as mandated by the C++ standard.
    *
-   *  For this reason, we use `DEFINE_PS_TABLES' to guard the function
-   *  definitions, and `DEFINE_PS_TABLES_DATA' to provide both proper array
-   *  declarations and definitions.
+   * For this reason, we use `DEFINE_PS_TABLES' to guard the function
+   * definitions, and `DEFINE_PS_TABLES_DATA' to provide both proper array
+   * declarations and definitions.
    */
 #include "pstables.h"
 #define  DEFINE_PS_TABLES
@@ -41,7 +41,6 @@
 #include "pstables.h"
 
 #include "psnamerr.h"
-#include "pspic.h"
 
 
 #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -393,7 +392,9 @@
         /* Reallocate if the number of used entries is much smaller. */
         if ( count < num_glyphs / 2 )
         {
-          (void)FT_RENEW_ARRAY( table->maps, num_glyphs, count );
+          (void)FT_RENEW_ARRAY( table->maps,
+                                num_glyphs + EXTRA_GLYPH_LIST_SIZE,
+                                count );
           error = FT_Err_Ok;
         }
 
@@ -577,28 +578,16 @@
   FT_DEFINE_SERVICEDESCREC1(
     pscmaps_services,
 
-    FT_SERVICE_ID_POSTSCRIPT_CMAPS, &PSCMAPS_INTERFACE_GET )
+    FT_SERVICE_ID_POSTSCRIPT_CMAPS, &pscmaps_interface )
 
 
   static FT_Pointer
   psnames_get_service( FT_Module    module,
                        const char*  service_id )
   {
-    /* PSCMAPS_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    FT_Library  library;
-
+    FT_UNUSED( module );
 
-    if ( !module )
-      return NULL;
-    library = module->library;
-    if ( !library )
-      return NULL;
-#else
-    FT_UNUSED( module );
-#endif
-
-    return ft_service_list_lookup( PSCMAPS_SERVICES_GET, service_id );
+    return ft_service_list_lookup( pscmaps_services, service_id );
   }
 
 #endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
@@ -621,7 +610,7 @@
     0x20000L,   /* driver requires FreeType 2 or above */
 
     PUT_PS_NAMES_SERVICE(
-      (void*)&PSCMAPS_INTERFACE_GET ),   /* module specific interface */
+      (void*)&pscmaps_interface ),   /* module specific interface */
 
     (FT_Module_Constructor)NULL,                                       /* module_init   */
     (FT_Module_Destructor) NULL,                                       /* module_done   */
--- a/src/java.desktop/share/native/libfreetype/src/psnames/psmodule.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psnames/psmodule.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psmodule.h                                                             */
-/*                                                                         */
-/*    High-level PSNames module interface (specification).                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psmodule.h
+ *
+ *   High-level psnames module interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/psnames/psnamerr.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psnames/psnamerr.h	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  psnamerr.h                                                             */
-/*                                                                         */
-/*    PS names module error codes (specification only).                    */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * psnamerr.h
+ *
+ *   PS names module error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the PS names module error enumeration
+   * constants.
+   *
+   */
 
 #ifndef PSNAMERR_H_
 #define PSNAMERR_H_
--- a/src/java.desktop/share/native/libfreetype/src/psnames/pspic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,97 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pspic.c                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for psnames module.  */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "pspic.h"
-#include "psnamerr.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from psmodule.c */
-  FT_Error
-  FT_Create_Class_pscmaps_services( FT_Library           library,
-                                    FT_ServiceDescRec**  output_class );
-  void
-  FT_Destroy_Class_pscmaps_services( FT_Library          library,
-                                     FT_ServiceDescRec*  clazz );
-
-  void
-  FT_Init_Class_pscmaps_interface( FT_Library              library,
-                                   FT_Service_PsCMapsRec*  clazz );
-
-
-  void
-  psnames_module_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->psnames )
-    {
-      PSModulePIC*  container = (PSModulePIC*)pic_container->psnames;
-
-
-      if ( container->pscmaps_services )
-        FT_Destroy_Class_pscmaps_services( library,
-                                           container->pscmaps_services );
-      container->pscmaps_services = NULL;
-      FT_FREE( container );
-      pic_container->psnames = NULL;
-    }
-  }
-
-
-  FT_Error
-  psnames_module_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    PSModulePIC*       container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->psnames = container;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    error = FT_Create_Class_pscmaps_services(
-              library, &container->pscmaps_services );
-    if ( error )
-      goto Exit;
-    FT_Init_Class_pscmaps_interface( library,
-                                     &container->pscmaps_interface );
-
-  Exit:
-    if ( error )
-      psnames_module_class_pic_free( library );
-    return error;
-  }
-
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/psnames/pspic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pspic.h                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for psnames module.  */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 PSPIC_H_
-#define PSPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define PSCMAPS_SERVICES_GET   pscmaps_services
-#define PSCMAPS_INTERFACE_GET  pscmaps_interface
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_SERVICE_POSTSCRIPT_CMAPS_H
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  PSModulePIC_
-  {
-    FT_ServiceDescRec*     pscmaps_services;
-    FT_Service_PsCMapsRec  pscmaps_interface;
-
-  } PSModulePIC;
-
-
-#define GET_PIC( lib )                                     \
-          ( (PSModulePIC*)((lib)->pic_container.psnames) )
-#define PSCMAPS_SERVICES_GET   ( GET_PIC( library )->pscmaps_services )
-#define PSCMAPS_INTERFACE_GET  ( GET_PIC( library )->pscmaps_interface )
-
-
-  /* see pspic.c for the implementation */
-  void
-  psnames_module_class_pic_free( FT_Library  library );
-
-  FT_Error
-  psnames_module_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* PSPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/psnames/pstables.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/psnames/pstables.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pstables.h                                                             */
-/*                                                                         */
-/*    PostScript glyph names.                                              */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pstables.h
+ *
+ *   PostScript glyph names.
+ *
+ * Copyright (C) 2005-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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! */
@@ -609,12 +609,12 @@
 
 
   /*
-   *  This table is a compressed version of the Adobe Glyph List (AGL),
-   *  optimized for efficient searching.  It has been generated by the
-   *  `glnames.py' python script located in the `src/tools' directory.
+   * This table is a compressed version of the Adobe Glyph List (AGL),
+   * optimized for efficient searching.  It has been generated by the
+   * `glnames.py' python script located in the `src/tools' directory.
    *
-   *  The lookup function to get the Unicode value for a given string
-   *  is defined below the table.
+   * The lookup function to get the Unicode value for a given string
+   * is defined below the table.
    */
 
 #ifdef FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
@@ -4137,7 +4137,7 @@
 
 #ifdef  DEFINE_PS_TABLES
   /*
-   *  This function searches the compressed table efficiently.
+   * This function searches the compressed table efficiently.
    */
   static unsigned long
   ft_get_adobe_glyph_index( const char*  name,
--- a/src/java.desktop/share/native/libfreetype/src/raster/ftmisc.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/raster/ftmisc.h	Thu May 09 16:09:39 2019 -0700
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftmisc.h                                                               */
-/*                                                                         */
-/*    Miscellaneous macros for stand-alone rasterizer (specification       */
-/*    only).                                                               */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftmisc.h
+ *
+ *   Miscellaneous macros for stand-alone rasterizer (specification
+ *   only).
+ *
+ * Copyright (C) 2005-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.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 *not* portable!  You have to adapt */
-  /* its definitions to your platform.               */
-  /*                                                 */
-  /***************************************************/
+  /****************************************************
+   *
+   * This file is *not* portable!  You have to adapt
+   * its definitions to your platform.
+   *
+   */
 
 #ifndef FTMISC_H_
 #define FTMISC_H_
--- a/src/java.desktop/share/native/libfreetype/src/raster/ftraster.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/raster/ftraster.c	Thu May 09 16:09:39 2019 -0700
@@ -1,51 +1,51 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftraster.c                                                             */
-/*                                                                         */
-/*    The FreeType glyph rasterizer (body).                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 `ftimage.h' and `ftmisc.h' into the $(incdir)           */
-  /* directory.  Typically, you should do something like                   */
-  /*                                                                       */
-  /* - copy `src/raster/ftraster.c' (this file) to your current directory  */
-  /*                                                                       */
-  /* - copy `include/freetype/ftimage.h' and `src/raster/ftmisc.h' to your */
-  /*   current directory                                                   */
-  /*                                                                       */
-  /* - compile `ftraster' with the STANDALONE_ macro defined, as in        */
-  /*                                                                       */
-  /*     cc -c -DSTANDALONE_ ftraster.c                                    */
-  /*                                                                       */
-  /* The renderer can be initialized with a call to                        */
-  /* `ft_standard_raster.raster_new'; a bitmap can be generated            */
-  /* with a call to `ft_standard_raster.raster_render'.                    */
-  /*                                                                       */
-  /* See the comments and documentation in the file `ftimage.h' for more   */
-  /* details on how the raster works.                                      */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* This is a rewrite of the FreeType 1.x scan-line converter             */
-  /*                                                                       */
-  /*************************************************************************/
+/****************************************************************************
+ *
+ * ftraster.c
+ *
+ *   The FreeType glyph rasterizer (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 `ftimage.h' and `ftmisc.h' into the $(incdir)
+   * directory.  Typically, you should do something like
+   *
+   * - copy `src/raster/ftraster.c' (this file) to your current directory
+   *
+   * - copy `include/freetype/ftimage.h' and `src/raster/ftmisc.h' to your
+   *   current directory
+   *
+   * - compile `ftraster' with the STANDALONE_ macro defined, as in
+   *
+   *     cc -c -DSTANDALONE_ ftraster.c
+   *
+   * The renderer can be initialized with a call to
+   * `ft_standard_raster.raster_new'; a bitmap can be generated
+   * with a call to `ft_standard_raster.raster_render'.
+   *
+   * See the comments and documentation in the file `ftimage.h' for more
+   * details on how the raster works.
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * This is a rewrite of the FreeType 1.x scan-line converter
+   *
+   */
 
 #ifdef STANDALONE_
 
@@ -65,82 +65,81 @@
 #include <ft2build.h>
 #include "ftraster.h"
 #include FT_INTERNAL_CALC_H   /* for FT_MulDiv and FT_MulDiv_No_Round */
-
-#include "rastpic.h"
+#include FT_OUTLINE_H         /* for FT_Outline_Get_CBox              */
 
 #endif /* !STANDALONE_ */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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           */
-  /*                                                                       */
-  /*       o its drop-out mode                                             */
-  /*                                                                       */
-  /*   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 properly.                                     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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
+   *
+   *       o its drop-out mode
+   *
+   *   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 properly.
+   *
+   */
 
 
   /*************************************************************************/
@@ -163,14 +162,14 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  raster
 
 
 #ifdef STANDALONE_
@@ -452,9 +451,9 @@
 #define CEILING( x )  ( ( (x) + ras.precision - 1 ) & -ras.precision )
 #define TRUNC( x )    ( (Long)(x) >> ras.precision_bits )
 #define FRAC( x )     ( (x) & ( ras.precision - 1 ) )
-#define SCALED( x )   ( ( (x) < 0 ? -( -(x) << ras.scale_shift )   \
-                                  :  (  (x) << ras.scale_shift ) ) \
-                        - ras.precision_half )
+
+  /* scale and shift grid to pixel centers */
+#define SCALED( x )   ( (x) * ras.precision_scale - ras.precision_half )
 
 #define IS_BOTTOM_OVERSHOOT( x ) \
           (Bool)( CEILING( x ) - x >= ras.precision_half )
@@ -476,13 +475,10 @@
     Int         precision_bits;     /* precision related variables         */
     Int         precision;
     Int         precision_half;
-    Int         precision_shift;
+    Int         precision_scale;
     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                */
@@ -495,8 +491,7 @@
     TPoint*     arc;                /* current Bezier arc pointer          */
 
     UShort      bWidth;             /* target bitmap width                 */
-    PByte       bTarget;            /* target bitmap buffer                */
-    PByte       gTarget;            /* target pixmap buffer                */
+    PByte       bOrigin;            /* target bitmap bottom-left origin    */
 
     Long        lastX, lastY;
     Long        minY, maxY;
@@ -519,8 +514,6 @@
     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  */
 
     /* dispatch variables */
@@ -572,18 +565,19 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Set_High_Precision                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set precision variables according to param flag.                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    High :: Set to True for high precision (typically for ppem < 24),  */
-  /*            false otherwise.                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Set_High_Precision
+   *
+   * @Description:
+   *   Set precision variables according to param flag.
+   *
+   * @Input:
+   *   High ::
+   *     Set to True for high precision (typically for ppem < 24),
+   *     false otherwise.
+   */
   static void
   Set_High_Precision( RAS_ARGS Int  High )
   {
@@ -625,29 +619,31 @@
     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_half  = ras.precision >> 1;
+    ras.precision_scale = ras.precision >> Pixel_Bits;
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    New_Profile                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Create a new profile in the render pool.                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    aState    :: The state/orientation of the new profile.             */
-  /*                                                                       */
-  /*    overshoot :: Whether the profile's unrounded start position        */
-  /*                 differs by at least a half pixel.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*   SUCCESS on success.  FAILURE in case of overflow or of incoherent   */
-  /*   profile.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   New_Profile
+   *
+   * @Description:
+   *   Create a new profile in the render pool.
+   *
+   * @Input:
+   *   aState ::
+   *     The state/orientation of the new profile.
+   *
+   *   overshoot ::
+   *     Whether the profile's unrounded start position
+   *     differs by at least a half pixel.
+   *
+   * @Return:
+   *  SUCCESS on success.  FAILURE in case of overflow or of incoherent
+   *  profile.
+   */
   static Bool
   New_Profile( RAS_ARGS TStates  aState,
                         Bool     overshoot )
@@ -706,21 +702,22 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    End_Profile                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalize the current profile.                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    overshoot :: Whether the profile's unrounded end position differs  */
-  /*                 by at least a half pixel.                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success.  FAILURE in case of overflow or incoherency.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   End_Profile
+   *
+   * @Description:
+   *   Finalize the current profile.
+   *
+   * @Input:
+   *   overshoot ::
+   *     Whether the profile's unrounded end position differs
+   *     by at least a half pixel.
+   *
+   * @Return:
+   *   SUCCESS on success.  FAILURE in case of overflow or incoherency.
+   */
   static Bool
   End_Profile( RAS_ARGS Bool  overshoot )
   {
@@ -778,21 +775,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Insert_Y_Turn                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Insert 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.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Insert_Y_Turn
+   *
+   * @Description:
+   *   Insert 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 )
   {
@@ -834,17 +831,17 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Finalize_Profile_Table                                             */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Adjust all links in the profiles list.                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    SUCCESS on success.  FAILURE in case of overflow.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Finalize_Profile_Table
+   *
+   * @Description:
+   *   Adjust all links in the profiles list.
+   *
+   * @Return:
+   *   SUCCESS on success.  FAILURE in case of overflow.
+   */
   static Bool
   Finalize_Profile_Table( RAS_ARG )
   {
@@ -894,22 +891,22 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Split_Conic                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Subdivide 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. */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Split_Conic
+   *
+   * @Description:
+   *   Subdivide 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 )
   {
@@ -933,20 +930,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Split_Cubic                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Subdivide 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.                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Split_Cubic
+   *
+   * @Description:
+   *   Subdivide 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 )
   {
@@ -975,31 +972,37 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Line_Up                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the x-coordinates of an ascending line segment and store   */
-  /*    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.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Line_Up
+   *
+   * @Description:
+   *   Compute the x-coordinates of an ascending line segment and store
+   *   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,
@@ -1114,31 +1117,37 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Line_Down                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the x-coordinates of an descending line segment and store  */
-  /*    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.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Line_Down
+   *
+   * @Description:
+   *   Compute the x-coordinates of an descending line segment and store
+   *   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,
@@ -1165,27 +1174,31 @@
   typedef void  (*TSplitter)( TPoint*  base );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Bezier_Up                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the x-coordinates of an ascending Bezier arc and store     */
-  /*    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.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Bezier_Up
+   *
+   * @Description:
+   *   Compute the x-coordinates of an ascending Bezier arc and store
+   *   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,
@@ -1298,27 +1311,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Bezier_Down                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Compute the x-coordinates of an descending Bezier arc and store    */
-  /*    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.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Bezier_Down
+   *
+   * @Description:
+   *   Compute the x-coordinates of an descending Bezier arc and store
+   *   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,
@@ -1347,25 +1364,27 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Line_To                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Inject a new line segment and adjust the 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.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Line_To
+   *
+   * @Description:
+   *   Inject a new line segment and adjust the 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 )
@@ -1441,29 +1460,33 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Conic_To                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Inject a new conic arc and adjust 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.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Conic_To
+   *
+   * @Description:
+   *   Inject a new conic arc and adjust 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,
@@ -1558,33 +1581,39 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Cubic_To                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Inject a new cubic arc and adjust 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.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Cubic_To
+   *
+   * @Description:
+   *   Inject a new cubic arc and adjust 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,
@@ -1705,27 +1734,30 @@
                        } while ( 0 )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Decompose_Curve                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Scan the outline arrays 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.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Decompose_Curve
+   *
+   * @Description:
+   *   Scan the outline arrays 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,
@@ -1934,22 +1966,23 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Convert_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Convert a glyph into a series of segments and arcs and make 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.                                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Convert_Glyph
+   *
+   * @Description:
+   *   Convert a glyph into a series of segments and arcs and make 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 )
   {
@@ -2028,12 +2061,12 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Init_Linked                                                          */
-  /*                                                                       */
-  /*    Initializes an empty linked list.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Init_Linked
+   *
+   *   Initializes an empty linked list.
+   */
   static void
   Init_Linked( TProfileList*  l )
   {
@@ -2041,12 +2074,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  InsNew                                                               */
-  /*                                                                       */
-  /*    Inserts a new profile in a linked list.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * InsNew
+   *
+   *   Inserts a new profile in a linked list.
+   */
   static void
   InsNew( PProfileList  list,
           PProfile      profile )
@@ -2072,12 +2105,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  DelOld                                                               */
-  /*                                                                       */
-  /*    Removes an old profile from a linked list.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DelOld
+   *
+   *   Removes an old profile from a linked list.
+   */
   static void
   DelOld( PProfileList  list,
           PProfile      profile )
@@ -2105,14 +2138,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  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.                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 )
   {
@@ -2163,14 +2196,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Vertical Sweep Procedure Set                                         */
-  /*                                                                       */
-  /*  These four routines are used during the vertical black/white sweep   */
-  /*  phase by the generic Draw_Sweep() function.                          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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,
@@ -2183,8 +2216,6 @@
 
     ras.traceIncr = (Short)-pitch;
     ras.traceOfs  = -*min * pitch;
-    if ( pitch > 0 )
-      ras.traceOfs += (Long)( ras.target.rows - 1 ) * pitch;
   }
 
 
@@ -2215,13 +2246,18 @@
 
     /* Drop-out control */
 
-    e1 = TRUNC( CEILING( x1 ) );
-
+    e1 = CEILING( x1 );
+    e2 = FLOOR( x2 );
+
+    /* take care of the special case where both the left */
+    /* and right contour lie exactly on pixel centers    */
     if ( dropOutControl != 2                             &&
-         x2 - x1 - ras.precision <= ras.precision_jitter )
+         x2 - x1 - ras.precision <= ras.precision_jitter &&
+         e1 != x1 && e2 != x2                            )
       e2 = e1;
-    else
-      e2 = TRUNC( FLOOR( x2 ) );
+
+    e1 = TRUNC( e1 );
+    e2 = TRUNC( e2 );
 
     if ( e2 >= 0 && e1 < ras.bWidth )
     {
@@ -2242,7 +2278,7 @@
       f1 = (Byte)  ( 0xFF >> ( e1 & 7 ) );
       f2 = (Byte) ~( 0x7F >> ( e2 & 7 ) );
 
-      target = ras.bTarget + ras.traceOfs + c1;
+      target = ras.bOrigin + ras.traceOfs + c1;
       c2 -= c1;
 
       if ( c2 > 0 )
@@ -2252,12 +2288,9 @@
         /* 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 )
-        {
+        while ( --c2 > 0 )
           *(++target) = 0xFF;
-          c2--;
-        }
+
         target[1] |= f2;
       }
       else
@@ -2400,7 +2433,7 @@
         f1 = (Short)( e1 &  7 );
 
         if ( e1 >= 0 && e1 < ras.bWidth                      &&
-             ras.bTarget[ras.traceOfs + c1] & ( 0x80 >> f1 ) )
+             ras.bOrigin[ras.traceOfs + c1] & ( 0x80 >> f1 ) )
           goto Exit;
       }
       else
@@ -2416,7 +2449,7 @@
       c1 = (Short)( e1 >> 3 );
       f1 = (Short)( e1 & 7 );
 
-      ras.bTarget[ras.traceOfs + c1] |= (char)( 0x80 >> f1 );
+      ras.bOrigin[ras.traceOfs + c1] |= (char)( 0x80 >> f1 );
     }
 
   Exit:
@@ -2431,14 +2464,14 @@
   }
 
 
-  /***********************************************************************/
-  /*                                                                     */
-  /*  Horizontal Sweep Procedure Set                                     */
-  /*                                                                     */
-  /*  These four routines are used during the horizontal black/white     */
-  /*  sweep phase by the generic Draw_Sweep() function.                  */
-  /*                                                                     */
-  /***********************************************************************/
+  /************************************************************************
+   *
+   * 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,
@@ -2483,19 +2516,14 @@
         {
           Byte   f1;
           PByte  bits;
-          PByte  p;
 
 
           FT_TRACE7(( " -> y=%d (drop-out)", e1 ));
 
-          bits = ras.bTarget + ( y >> 3 );
+          bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
           f1   = (Byte)( 0x80 >> ( y & 7 ) );
-          p    = bits - e1 * ras.target.pitch;
-
-          if ( ras.target.pitch > 0 )
-            p += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
-
-          p[0] |= f1;
+
+          bits[0] |= f1;
         }
       }
 
@@ -2597,13 +2625,9 @@
 
         e1 = TRUNC( e1 );
 
-        bits = ras.bTarget + ( y >> 3 );
+        bits = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
         f1   = (Byte)( 0x80 >> ( y & 7 ) );
 
-        bits -= e1 * ras.target.pitch;
-        if ( ras.target.pitch > 0 )
-          bits += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
-
         if ( e1 >= 0                     &&
              (ULong)e1 < ras.target.rows &&
              *bits & f1                  )
@@ -2619,12 +2643,8 @@
     {
       FT_TRACE7(( " -> y=%d (drop-out)", e1 ));
 
-      bits  = ras.bTarget + ( y >> 3 );
+      bits  = ras.bOrigin + ( y >> 3 ) - e1 * ras.target.pitch;
       f1    = (Byte)( 0x80 >> ( y & 7 ) );
-      bits -= e1 * ras.target.pitch;
-
-      if ( ras.target.pitch > 0 )
-        bits += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
 
       bits[0] |= f1;
     }
@@ -2642,11 +2662,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  Generic Sweep Drawing routine                                        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Generic Sweep Drawing routine
+   *
+   */
 
   static Bool
   Draw_Sweep( RAS_ARG )
@@ -2888,20 +2908,109 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Render_Single_Pass                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Perform one sweep with sub-banding.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    flipped :: If set, flip the direction of the outline.              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Renderer error code.                                               */
-  /*                                                                       */
+#ifdef STANDALONE_
+
+  /**************************************************************************
+   *
+   * The following functions should only compile in stand-alone mode,
+   * i.e., when building this component without the rest of FreeType.
+   *
+   */
+
+  /**************************************************************************
+   *
+   * @Function:
+   *   FT_Outline_Get_CBox
+   *
+   * @Description:
+   *   Return an outline's `control box'.  The control box encloses all
+   *   the outline's points, including Bézier 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
+   *   that contains Bézier 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.
+   *
+   * @Note:
+   *   See @FT_Glyph_Get_CBox for a discussion of tricky fonts.
+   */
+
+  static void
+  FT_Outline_Get_CBox( const FT_Outline*  outline,
+                       FT_BBox           *acbox )
+  {
+    Long  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++ )
+        {
+          Long  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;
+    }
+  }
+
+#endif /* STANDALONE_ */
+
+
+  /**************************************************************************
+   *
+   * @Function:
+   *   Render_Single_Pass
+   *
+   * @Description:
+   *   Perform 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 )
   {
@@ -2963,17 +3072,17 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Render_Glyph                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Render a glyph in a bitmap.  Sub-banding if needed.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Render_Glyph
+   *
+   * @Description:
+   *   Render a glyph in a bitmap.  Sub-banding if needed.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   Render_Glyph( RAS_ARG )
   {
@@ -2982,7 +3091,6 @@
 
     Set_High_Precision( RAS_VARS ras.outline.flags &
                                  FT_OUTLINE_HIGH_PRECISION );
-    ras.scale_shift = ras.precision_shift;
 
     if ( ras.outline.flags & FT_OUTLINE_IGNORE_DROPOUTS )
       ras.dropOutControl = 2;
@@ -3013,7 +3121,10 @@
     ras.band_stack[0].y_max = (Short)( ras.target.rows - 1 );
 
     ras.bWidth  = (UShort)ras.target.width;
-    ras.bTarget = (Byte*)ras.target.buffer;
+    ras.bOrigin = (Byte*)ras.target.buffer;
+
+    if ( ras.target.pitch > 0 )
+      ras.bOrigin += (Long)( ras.target.rows - 1 ) * ras.target.pitch;
 
     if ( ( error = Render_Single_Pass( RAS_VARS 0 ) ) != 0 )
       return error;
@@ -3185,20 +3296,6 @@
     if ( !target_map->buffer )
       return FT_THROW( Invalid );
 
-    /* reject too large outline coordinates */
-    {
-      FT_Vector*  vec   = outline->points;
-      FT_Vector*  limit = vec + outline->n_points;
-
-
-      for ( ; vec < limit; vec++ )
-      {
-        if ( vec->x < -0x1000000L || vec->x > 0x1000000L ||
-             vec->y < -0x1000000L || vec->y > 0x1000000L )
-         return FT_THROW( Invalid );
-      }
-    }
-
     ras.outline = *outline;
     ras.target  = *target_map;
 
--- a/src/java.desktop/share/native/libfreetype/src/raster/ftraster.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/raster/ftraster.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftraster.h                                                             */
-/*                                                                         */
-/*    The FreeType glyph rasterizer (specification).                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftraster.h
+ *
+ *   The FreeType glyph rasterizer (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used
+ * modified and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -28,11 +28,11 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Uncomment the following line if you are using ftraster.c as a         */
-  /* standalone module, fully independent of FreeType.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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;
--- a/src/java.desktop/share/native/libfreetype/src/raster/ftrend1.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/raster/ftrend1.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrend1.c                                                              */
-/*                                                                         */
-/*    The FreeType glyph rasterizer interface (body).                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrend1.c
+ *
+ *   The FreeType glyph rasterizer interface (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -22,7 +22,6 @@
 #include FT_OUTLINE_H
 #include "ftrend1.h"
 #include "ftraster.h"
-#include "rastpic.h"
 
 #include "rasterrs.h"
 
@@ -128,7 +127,11 @@
       slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
     }
 
-    ft_glyphslot_preset_bitmap( slot, mode, origin );
+    if ( ft_glyphslot_preset_bitmap( slot, mode, origin ) )
+    {
+      error = FT_THROW( Raster_Overflow );
+      goto Exit;
+    }
 
     /* allocate new one */
     if ( FT_ALLOC_MULT( bitmap->buffer, bitmap->rows, bitmap->pitch ) )
@@ -197,7 +200,7 @@
     (FT_Renderer_GetCBoxFunc)  ft_raster1_get_cbox,   /* get_glyph_cbox  */
     (FT_Renderer_SetModeFunc)  ft_raster1_set_mode,   /* set_mode        */
 
-    (FT_Raster_Funcs*)&FT_STANDARD_RASTER_GET         /* raster_class    */
+    (FT_Raster_Funcs*)&ft_standard_raster             /* raster_class    */
   )
 
 
--- a/src/java.desktop/share/native/libfreetype/src/raster/ftrend1.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/raster/ftrend1.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftrend1.h                                                              */
-/*                                                                         */
-/*    The FreeType glyph rasterizer interface (specification).             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftrend1.h
+ *
+ *   The FreeType glyph rasterizer interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/raster/rasterrs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/raster/rasterrs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  rasterrs.h                                                             */
-/*                                                                         */
-/*    monochrome renderer error codes (specification only).                */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * rasterrs.h
+ *
+ *   monochrome renderer error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the monochrome renderer error enumeration
+   * constants.
+   *
+   */
 
 #ifndef RASTERRS_H_
 #define RASTERRS_H_
--- a/src/java.desktop/share/native/libfreetype/src/raster/rastpic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,89 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  rastpic.c                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for raster module.   */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "rastpic.h"
-#include "rasterrs.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from ftraster.c */
-  void
-  FT_Init_Class_ft_standard_raster( FT_Raster_Funcs*  funcs );
-
-
-  void
-  ft_raster1_renderer_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->raster )
-    {
-      RasterPIC*  container = (RasterPIC*)pic_container->raster;
-
-
-      if ( --container->ref_count )
-        return;
-      FT_FREE( container );
-      pic_container->raster = NULL;
-    }
-  }
-
-
-  FT_Error
-  ft_raster1_renderer_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    RasterPIC*         container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* XXX: since this function also served the no longer available  */
-    /*      raster5 renderer it uses reference counting, which could */
-    /*      be removed now                                           */
-    if ( pic_container->raster )
-    {
-      ((RasterPIC*)pic_container->raster)->ref_count++;
-      return error;
-    }
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->raster = container;
-
-    container->ref_count = 1;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    FT_Init_Class_ft_standard_raster( &container->ft_standard_raster );
-
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/raster/rastpic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  rastpic.h                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for raster module.   */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 RASTPIC_H_
-#define RASTPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-FT_BEGIN_HEADER
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define FT_STANDARD_RASTER_GET  ft_standard_raster
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-  typedef struct  RasterPIC_
-  {
-    int              ref_count;
-    FT_Raster_Funcs  ft_standard_raster;
-
-  } RasterPIC;
-
-
-#define GET_PIC( lib )                                    \
-          ( (RasterPIC*)( (lib)->pic_container.raster ) )
-#define FT_STANDARD_RASTER_GET  ( GET_PIC( library )->ft_standard_raster )
-
-
-  /* see rastpic.c for the implementation */
-  void
-  ft_raster1_renderer_class_pic_free( FT_Library  library );
-
-  FT_Error
-  ft_raster1_renderer_class_pic_init( FT_Library  library );
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-FT_END_HEADER
-
-#endif /* RASTPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.c	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pngshim.c                                                              */
-/*                                                                         */
-/*    PNG Bitmap glyph support.                                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  Google, Inc.                                                           */
-/*  Written by Stuart Gill and Behdad Esfahbod.                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pngshim.c
+ *
+ *   PNG Bitmap glyph support.
+ *
+ * Copyright (C) 2013-2019 by
+ * Google, Inc.
+ * Written by Stuart Gill and Behdad Esfahbod.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/pngshim.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  pngshim.h                                                              */
-/*                                                                         */
-/*    PNG Bitmap glyph support.                                            */
-/*                                                                         */
-/*  Copyright 2013-2018 by                                                 */
-/*  Google, Inc.                                                           */
-/*  Written by Stuart Gill and Behdad Esfahbod.                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * pngshim.h
+ *
+ *   PNG Bitmap glyph support.
+ *
+ * Copyright (C) 2013-2019 by
+ * Google, Inc.
+ * Written by Stuart Gill and Behdad Esfahbod.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 PNGSHIM_H_
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfdriver.c                                                             */
-/*                                                                         */
-/*    High-level SFNT driver interface (body).                             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfdriver.c
+ *
+ *   High-level SFNT driver interface (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -25,7 +25,6 @@
 #include "sfdriver.h"
 #include "ttload.h"
 #include "sfobjs.h"
-#include "sfntpic.h"
 
 #include "sferrors.h"
 
@@ -33,6 +32,11 @@
 #include "ttsbit.h"
 #endif
 
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+#include "ttcolr.h"
+#include "ttcpal.h"
+#endif
+
 #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 #include "ttpost.h"
 #endif
@@ -57,18 +61,18 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_sfdriver
+#define FT_COMPONENT  sfdriver
 
 
   /*
-   *  SFNT TABLE SERVICE
+   * SFNT TABLE SERVICE
    *
    */
 
@@ -155,7 +159,7 @@
 #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 
   /*
-   *  GLYPH DICT SERVICE
+   * GLYPH DICT SERVICE
    *
    */
 
@@ -222,7 +226,7 @@
 
 
   /*
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -460,14 +464,12 @@
   typedef int (*char_type_func)( int  c );
 
 
-  /* handling of PID/EID 3/0 and 3/1 is the same */
+  /* Handling of PID/EID 3/0 and 3/1 is the same. */
 #define IS_WIN( n )  ( (n)->platformID == 3                             && \
-                       ( (n)->encodingID == 1 || (n)->encodingID == 0 ) && \
-                       (n)->languageID == 0x409                         )
+                       ( (n)->encodingID == 1 || (n)->encodingID == 0 ) )
 
 #define IS_APPLE( n )  ( (n)->platformID == 1 && \
-                         (n)->encodingID == 0 && \
-                         (n)->languageID == 0 )
+                         (n)->encodingID == 0 )
 
   static char*
   get_win_string( FT_Memory       memory,
@@ -491,42 +493,40 @@
 
     if ( FT_STREAM_SEEK( entry->stringOffset ) ||
          FT_FRAME_ENTER( entry->stringLength ) )
-    {
-      FT_FREE( result );
-      entry->stringLength = 0;
-      entry->stringOffset = 0;
-      FT_FREE( entry->string );
-
-      return NULL;
-    }
+      goto get_win_string_error;
 
     r = (FT_String*)result;
     p = (FT_Char*)stream->cursor;
 
     for ( len = entry->stringLength / 2; len > 0; len--, p += 2 )
     {
-      if ( p[0] == 0 )
+      if ( p[0] == 0 && char_type( p[1] ) )
+        *r++ = p[1];
+      else
       {
-        if ( char_type( p[1] ) )
-          *r++ = p[1];
-        else
-        {
-          if ( report_invalid_characters )
-          {
-            FT_TRACE0(( "get_win_string:"
-                        " Character `%c' (0x%X) invalid in PS name string\n",
-                        p[1], p[1] ));
-            /* it's not the job of FreeType to correct PS names... */
-            *r++ = p[1];
-          }
-        }
+        if ( report_invalid_characters )
+          FT_TRACE0(( "get_win_string:"
+                      " Character 0x%X invalid in PS name string\n",
+                      ((unsigned)p[0])*256 + (unsigned)p[1] ));
+        break;
       }
     }
-    *r = '\0';
+    if ( !len )
+      *r = '\0';
 
     FT_FRAME_EXIT();
 
-    return result;
+    if ( !len )
+      return result;
+
+  get_win_string_error:
+    FT_FREE( result );
+
+    entry->stringLength = 0;
+    entry->stringOffset = 0;
+    FT_FREE( entry->string );
+
+    return NULL;
   }
 
 
@@ -552,14 +552,7 @@
 
     if ( FT_STREAM_SEEK( entry->stringOffset ) ||
          FT_FRAME_ENTER( entry->stringLength ) )
-    {
-      FT_FREE( result );
-      entry->stringOffset = 0;
-      entry->stringLength = 0;
-      FT_FREE( entry->string );
-
-      return NULL;
-    }
+      goto get_apple_string_error;
 
     r = (FT_String*)result;
     p = (FT_Char*)stream->cursor;
@@ -571,20 +564,28 @@
       else
       {
         if ( report_invalid_characters )
-        {
           FT_TRACE0(( "get_apple_string:"
                       " Character `%c' (0x%X) invalid in PS name string\n",
                       *p, *p ));
-          /* it's not the job of FreeType to correct PS names... */
-          *r++ = *p;
-        }
+        break;
       }
     }
-    *r = '\0';
+    if ( !len )
+      *r = '\0';
 
     FT_FRAME_EXIT();
 
-    return result;
+    if ( !len )
+      return result;
+
+  get_apple_string_error:
+    FT_FREE( result );
+
+    entry->stringOffset = 0;
+    entry->stringLength = 0;
+    FT_FREE( entry->string );
+
+    return NULL;
   }
 
 
@@ -607,10 +608,10 @@
 
       if ( name->nameID == id && name->stringLength > 0 )
       {
-        if ( IS_WIN( name ) )
+        if ( IS_WIN( name ) && ( name->languageID == 0x409 || *win == -1 ) )
           *win = n;
 
-        if ( IS_APPLE( name ) )
+        if ( IS_APPLE( name ) && ( name->languageID == 0 || *apple == -1 ) )
           *apple = n;
       }
     }
@@ -643,9 +644,9 @@
 
 
   /*
-   *  Find the shortest decimal representation of a 16.16 fixed point
-   *  number.  The function fills `buf' with the result, returning a pointer
-   *  to the position after the representation's last byte.
+   * Find the shortest decimal representation of a 16.16 fixed point
+   * number.  The function fills `buf' with the result, returning a pointer
+   * to the position after the representation's last byte.
    */
 
   static char*
@@ -673,7 +674,7 @@
     if ( fixed < 0 )
     {
       *p++ = '-';
-      fixed = -fixed;
+      fixed = NEG_INT( fixed );
     }
 
     int_part  = ( fixed >> 16 ) & 0xFFFF;
@@ -828,13 +829,20 @@
                                  face->name_table.names + win,
                                  sfnt_is_alphanumeric,
                                  0 );
-      else
+      if ( !result && apple != -1 )
         result = get_apple_string( face->root.memory,
                                    face->name_table.stream,
                                    face->name_table.names + apple,
                                    sfnt_is_alphanumeric,
                                    0 );
 
+      if ( !result )
+      {
+        FT_TRACE0(( "sfnt_get_var_ps_name:"
+                    " No valid PS name prefix for font instances found\n" ));
+        return NULL;
+      }
+
       len = ft_strlen( result );
 
       /* sanitize if necessary; we reserve space for 36 bytes (a 128bit  */
@@ -1052,7 +1060,7 @@
                                face->name_table.names + win,
                                sfnt_is_postscript,
                                1 );
-    else
+    if ( !result && apple != -1 )
       result = get_apple_string( face->root.memory,
                                  face->name_table.stream,
                                  face->name_table.names + apple,
@@ -1073,7 +1081,7 @@
 
 
   /*
-   *  TT CMAP INFO
+   * TT CMAP INFO
    */
   FT_DEFINE_SERVICE_TTCMAPSREC(
     tt_service_get_cmap_info,
@@ -1132,41 +1140,41 @@
 
 
   /*
-   *  SERVICE LIST
+   * SERVICE LIST
    */
 
 #if defined TT_CONFIG_OPTION_POSTSCRIPT_NAMES && defined TT_CONFIG_OPTION_BDF
   FT_DEFINE_SERVICEDESCREC5(
     sfnt_services,
 
-    FT_SERVICE_ID_SFNT_TABLE,           &SFNT_SERVICE_SFNT_TABLE_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &SFNT_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_GLYPH_DICT,           &SFNT_SERVICE_GLYPH_DICT_GET,
-    FT_SERVICE_ID_BDF,                  &SFNT_SERVICE_BDF_GET,
-    FT_SERVICE_ID_TT_CMAP,              &TT_SERVICE_CMAP_INFO_GET )
+    FT_SERVICE_ID_SFNT_TABLE,           &sfnt_service_sfnt_table,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name,
+    FT_SERVICE_ID_GLYPH_DICT,           &sfnt_service_glyph_dict,
+    FT_SERVICE_ID_BDF,                  &sfnt_service_bdf,
+    FT_SERVICE_ID_TT_CMAP,              &tt_service_get_cmap_info )
 #elif defined TT_CONFIG_OPTION_POSTSCRIPT_NAMES
   FT_DEFINE_SERVICEDESCREC4(
     sfnt_services,
 
-    FT_SERVICE_ID_SFNT_TABLE,           &SFNT_SERVICE_SFNT_TABLE_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &SFNT_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_GLYPH_DICT,           &SFNT_SERVICE_GLYPH_DICT_GET,
-    FT_SERVICE_ID_TT_CMAP,              &TT_SERVICE_CMAP_INFO_GET )
+    FT_SERVICE_ID_SFNT_TABLE,           &sfnt_service_sfnt_table,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name,
+    FT_SERVICE_ID_GLYPH_DICT,           &sfnt_service_glyph_dict,
+    FT_SERVICE_ID_TT_CMAP,              &tt_service_get_cmap_info )
 #elif defined TT_CONFIG_OPTION_BDF
   FT_DEFINE_SERVICEDESCREC4(
     sfnt_services,
 
-    FT_SERVICE_ID_SFNT_TABLE,           &SFNT_SERVICE_SFNT_TABLE_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &SFNT_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_BDF,                  &SFNT_SERVICE_BDF_GET,
-    FT_SERVICE_ID_TT_CMAP,              &TT_SERVICE_CMAP_INFO_GET )
+    FT_SERVICE_ID_SFNT_TABLE,           &sfnt_service_sfnt_table,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name,
+    FT_SERVICE_ID_BDF,                  &sfnt_service_bdf,
+    FT_SERVICE_ID_TT_CMAP,              &tt_service_get_cmap_info )
 #else
   FT_DEFINE_SERVICEDESCREC3(
     sfnt_services,
 
-    FT_SERVICE_ID_SFNT_TABLE,           &SFNT_SERVICE_SFNT_TABLE_GET,
-    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &SFNT_SERVICE_PS_NAME_GET,
-    FT_SERVICE_ID_TT_CMAP,              &TT_SERVICE_CMAP_INFO_GET )
+    FT_SERVICE_ID_SFNT_TABLE,           &sfnt_service_sfnt_table,
+    FT_SERVICE_ID_POSTSCRIPT_FONT_NAME, &sfnt_service_ps_name,
+    FT_SERVICE_ID_TT_CMAP,              &tt_service_get_cmap_info )
 #endif
 
 
@@ -1174,21 +1182,9 @@
   sfnt_get_interface( FT_Module    module,
                       const char*  module_interface )
   {
-    /* SFNT_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
-    FT_Library  library;
-
+    FT_UNUSED( module );
 
-    if ( !module )
-      return NULL;
-    library = module->library;
-    if ( !library )
-      return NULL;
-#else
-    FT_UNUSED( module );
-#endif
-
-    return ft_service_list_lookup( SFNT_SERVICES_GET, module_interface );
+    return ft_service_list_lookup( sfnt_services, module_interface );
   }
 
 
@@ -1198,6 +1194,12 @@
 #define PUT_EMBEDDED_BITMAPS( a )  NULL
 #endif
 
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+#define PUT_COLOR_LAYERS( a )  a
+#else
+#define PUT_COLOR_LAYERS( a )  NULL
+#endif
+
 #ifdef TT_CONFIG_OPTION_POSTSCRIPT_NAMES
 #define PUT_PS_NAMES( a )  a
 #else
@@ -1256,9 +1258,24 @@
                             /* TT_Free_Table_Func      free_eblc       */
 
     PUT_EMBEDDED_BITMAPS( tt_face_set_sbit_strike     ),
-                            /* TT_Set_SBit_Strike_Func set_sbit_strike */
+                   /* TT_Set_SBit_Strike_Func      set_sbit_strike     */
     PUT_EMBEDDED_BITMAPS( tt_face_load_strike_metrics ),
-                    /* TT_Load_Strike_Metrics_Func load_strike_metrics */
+                   /* TT_Load_Strike_Metrics_Func  load_strike_metrics */
+
+    PUT_COLOR_LAYERS( tt_face_load_cpal ),
+                            /* TT_Load_Table_Func      load_cpal       */
+    PUT_COLOR_LAYERS( tt_face_load_colr ),
+                            /* TT_Load_Table_Func      load_colr       */
+    PUT_COLOR_LAYERS( tt_face_free_cpal ),
+                            /* TT_Free_Table_Func      free_cpal       */
+    PUT_COLOR_LAYERS( tt_face_free_colr ),
+                            /* TT_Free_Table_Func      free_colr       */
+    PUT_COLOR_LAYERS( tt_face_palette_set ),
+                            /* TT_Set_Palette_Func     set_palette     */
+    PUT_COLOR_LAYERS( tt_face_get_colr_layer ),
+                            /* TT_Get_Colr_Layer_Func  get_colr_layer  */
+    PUT_COLOR_LAYERS( tt_face_colr_blend_layer ),
+                            /* TT_Blend_Colr_Func      colr_blend      */
 
     tt_face_get_metrics,    /* TT_Get_Metrics_Func     get_metrics     */
 
@@ -1277,7 +1294,7 @@
     0x10000L,   /* driver version 1.0                     */
     0x20000L,   /* driver requires FreeType 2.0 or higher */
 
-    (const void*)&SFNT_INTERFACE_GET,  /* module specific interface */
+    (const void*)&sfnt_interface,  /* module specific interface */
 
     (FT_Module_Constructor)NULL,               /* module_init   */
     (FT_Module_Destructor) NULL,               /* module_done   */
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/sfdriver.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfdriver.h                                                             */
-/*                                                                         */
-/*    High-level SFNT driver interface (specification).                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfdriver.h
+ *
+ *   High-level SFNT driver interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,10 +26,8 @@
 
 FT_BEGIN_HEADER
 
-
   FT_DECLARE_MODULE( sfnt_module_class )
 
-
 FT_END_HEADER
 
 #endif /* SFDRIVER_H_ */
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/sferrors.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/sferrors.h	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sferrors.h                                                             */
-/*                                                                         */
-/*    SFNT error codes (specification only).                               */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sferrors.h
+ *
+ *   SFNT error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the SFNT error enumeration constants.
+   *
+   */
 
 #ifndef SFERRORS_H_
 #define SFERRORS_H_
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfntpic.c                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for sfnt module.     */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "sfntpic.h"
-#include "sferrors.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from sfdriver.c */
-  FT_Error
-  FT_Create_Class_sfnt_services( FT_Library           library,
-                                 FT_ServiceDescRec**  output_class );
-  void
-  FT_Destroy_Class_sfnt_services( FT_Library          library,
-                                  FT_ServiceDescRec*  clazz );
-  void
-  FT_Init_Class_sfnt_service_bdf( FT_Service_BDFRec*  clazz );
-  void
-  FT_Init_Class_sfnt_interface( FT_Library       library,
-                                SFNT_Interface*  clazz );
-  void
-  FT_Init_Class_sfnt_service_glyph_dict(
-    FT_Library                library,
-    FT_Service_GlyphDictRec*  clazz );
-  void
-  FT_Init_Class_sfnt_service_ps_name(
-    FT_Library                 library,
-    FT_Service_PsFontNameRec*  clazz );
-  void
-  FT_Init_Class_tt_service_get_cmap_info(
-    FT_Library              library,
-    FT_Service_TTCMapsRec*  clazz );
-  void
-  FT_Init_Class_sfnt_service_sfnt_table(
-    FT_Service_SFNT_TableRec*  clazz );
-
-
-  /* forward declaration of PIC init functions from ttcmap.c */
-  FT_Error
-  FT_Create_Class_tt_cmap_classes( FT_Library       library,
-                                   TT_CMap_Class**  output_class );
-  void
-  FT_Destroy_Class_tt_cmap_classes( FT_Library      library,
-                                    TT_CMap_Class*  clazz );
-
-
-  void
-  sfnt_module_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->sfnt )
-    {
-      sfntModulePIC*  container = (sfntModulePIC*)pic_container->sfnt;
-
-
-      if ( container->sfnt_services )
-        FT_Destroy_Class_sfnt_services( library,
-                                        container->sfnt_services );
-      container->sfnt_services = NULL;
-
-      if ( container->tt_cmap_classes )
-        FT_Destroy_Class_tt_cmap_classes( library,
-                                          container->tt_cmap_classes );
-      container->tt_cmap_classes = NULL;
-
-      FT_FREE( container );
-      pic_container->sfnt = NULL;
-    }
-  }
-
-
-  FT_Error
-  sfnt_module_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    sfntModulePIC*     container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->sfnt = container;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    error = FT_Create_Class_sfnt_services( library,
-                                           &container->sfnt_services );
-    if ( error )
-      goto Exit;
-
-    error = FT_Create_Class_tt_cmap_classes( library,
-                                             &container->tt_cmap_classes );
-    if ( error )
-      goto Exit;
-
-    FT_Init_Class_sfnt_service_glyph_dict(
-      library, &container->sfnt_service_glyph_dict );
-    FT_Init_Class_sfnt_service_ps_name(
-      library, &container->sfnt_service_ps_name );
-    FT_Init_Class_tt_service_get_cmap_info(
-      library, &container->tt_service_get_cmap_info );
-    FT_Init_Class_sfnt_service_sfnt_table(
-      &container->sfnt_service_sfnt_table );
-#ifdef TT_CONFIG_OPTION_BDF
-    FT_Init_Class_sfnt_service_bdf( &container->sfnt_service_bdf );
-#endif
-    FT_Init_Class_sfnt_interface( library, &container->sfnt_interface );
-
-  Exit:
-    if ( error )
-      sfnt_module_class_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/sfntpic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,112 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfntpic.h                                                              */
-/*                                                                         */
-/*    The FreeType position independent code services for sfnt module.     */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 SFNTPIC_H_
-#define SFNTPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define SFNT_SERVICES_GET            sfnt_services
-#define SFNT_SERVICE_GLYPH_DICT_GET  sfnt_service_glyph_dict
-#define SFNT_SERVICE_PS_NAME_GET     sfnt_service_ps_name
-#define TT_SERVICE_CMAP_INFO_GET     tt_service_get_cmap_info
-#define TT_CMAP_CLASSES_GET          tt_cmap_classes
-#define SFNT_SERVICE_SFNT_TABLE_GET  sfnt_service_sfnt_table
-#define SFNT_SERVICE_BDF_GET         sfnt_service_bdf
-#define SFNT_INTERFACE_GET           sfnt_interface
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-  /* some include files required for members of sfntModulePIC */
-#include FT_SERVICE_GLYPH_DICT_H
-#include FT_SERVICE_POSTSCRIPT_NAME_H
-#include FT_SERVICE_SFNT_H
-#include FT_SERVICE_TT_CMAP_H
-
-#ifdef TT_CONFIG_OPTION_BDF
-#include "ttbdf.h"
-#include FT_SERVICE_BDF_H
-#endif
-
-#include FT_INTERNAL_DEBUG_H
-#include FT_INTERNAL_STREAM_H
-#include FT_INTERNAL_SFNT_H
-#include "ttcmap.h"
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  sfntModulePIC_
-  {
-    FT_ServiceDescRec*        sfnt_services;
-    FT_Service_GlyphDictRec   sfnt_service_glyph_dict;
-    FT_Service_PsFontNameRec  sfnt_service_ps_name;
-    FT_Service_TTCMapsRec     tt_service_get_cmap_info;
-    TT_CMap_Class*            tt_cmap_classes;
-    FT_Service_SFNT_TableRec  sfnt_service_sfnt_table;
-#ifdef TT_CONFIG_OPTION_BDF
-    FT_Service_BDFRec         sfnt_service_bdf;
-#endif
-    SFNT_Interface            sfnt_interface;
-
-  } sfntModulePIC;
-
-
-#define GET_PIC( lib )                                      \
-          ( (sfntModulePIC*)( (lib)->pic_container.sfnt ) )
-
-#define SFNT_SERVICES_GET                       \
-          ( GET_PIC( library )->sfnt_services )
-#define SFNT_SERVICE_GLYPH_DICT_GET                       \
-          ( GET_PIC( library )->sfnt_service_glyph_dict )
-#define SFNT_SERVICE_PS_NAME_GET                       \
-          ( GET_PIC( library )->sfnt_service_ps_name )
-#define TT_SERVICE_CMAP_INFO_GET                           \
-          ( GET_PIC( library )->tt_service_get_cmap_info )
-#define TT_CMAP_CLASSES_GET                       \
-          ( GET_PIC( library )->tt_cmap_classes )
-#define SFNT_SERVICE_SFNT_TABLE_GET                       \
-          ( GET_PIC( library )->sfnt_service_sfnt_table )
-#define SFNT_SERVICE_BDF_GET                       \
-          ( GET_PIC( library )->sfnt_service_bdf )
-#define SFNT_INTERFACE_GET                       \
-          ( GET_PIC( library )->sfnt_interface )
-
-
-  /* see sfntpic.c for the implementation */
-  void
-  sfnt_module_class_pic_free( FT_Library  library );
-
-  FT_Error
-  sfnt_module_class_pic_init( FT_Library  library );
-
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-  /* */
-
-#endif /* SFNTPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfobjs.c                                                               */
-/*                                                                         */
-/*    SFNT object management (base).                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfobjs.c
+ *
+ *   SFNT object management (base).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -41,14 +41,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  sfobjs
 
 
 
@@ -918,7 +918,9 @@
     /* Stream may have changed in sfnt_open_font. */
     stream = face->root.stream;
 
-    FT_TRACE2(( "sfnt_init_face: %08p, %d\n", face, face_instance_index ));
+    FT_TRACE2(( "sfnt_init_face: %08p (index %d)\n",
+                face,
+                face_instance_index ));
 
     face_index = FT_ABS( face_instance_index ) & 0xFFFF;
 
@@ -1001,15 +1003,15 @@
         face->variation_support |= TT_FACE_FLAG_VAR_FVAR;
 
       /*
-       *  As documented in the OpenType specification, an entry for the
-       *  default instance may be omitted in the named instance table.  In
-       *  particular this means that even if there is no named instance
-       *  table in the font we actually do have a named instance, namely the
-       *  default instance.
+       * As documented in the OpenType specification, an entry for the
+       * default instance may be omitted in the named instance table.  In
+       * particular this means that even if there is no named instance
+       * table in the font we actually do have a named instance, namely the
+       * default instance.
        *
-       *  For consistency, we always want the default instance in our list
-       *  of named instances.  If it is missing, we try to synthesize it
-       *  later on.  Here, we have to adjust `num_instances' accordingly.
+       * For consistency, we always want the default instance in our list
+       * of named instances.  If it is missing, we try to synthesize it
+       * later on.  Here, we have to adjust `num_instances' accordingly.
        */
 
       if ( ( face->variation_support & TT_FACE_FLAG_VAR_FVAR ) &&
@@ -1341,6 +1343,13 @@
     if ( sfnt->load_eblc )
       LOAD_( eblc );
 
+    /* colored glyph support */
+    if ( sfnt->load_cpal )
+    {
+      LOAD_( cpal );
+      LOAD_( colr );
+    }
+
     /* consider the pclt, kerning, and gasp tables as optional */
     LOAD_( pclt );
     LOAD_( gasp );
@@ -1389,12 +1398,13 @@
       FT_Long  flags = root->face_flags;
 
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Compute face flags.                                               */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Compute face flags.
+       */
       if ( face->sbit_table_type == TT_SBIT_TABLE_TYPE_CBLC ||
-           face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX )
+           face->sbit_table_type == TT_SBIT_TABLE_TYPE_SBIX ||
+           face->colr                                       )
         flags |= FT_FACE_FLAG_COLOR;      /* color glyphs */
 
       if ( has_outline == TRUE )
@@ -1438,10 +1448,10 @@
 
       root->face_flags = flags;
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Compute style flags.                                              */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Compute style flags.
+       */
 
       flags = 0;
       if ( has_outline == TRUE && face->os2.version != 0xFFFFU )
@@ -1471,14 +1481,14 @@
 
       root->style_flags |= flags;
 
-      /*********************************************************************/
-      /*                                                                   */
-      /* Polish the charmaps.                                              */
-      /*                                                                   */
-      /*   Try to set the charmap encoding according to the platform &     */
-      /*   encoding ID of each charmap.  Emulate Unicode charmap if one    */
-      /*   is missing.                                                     */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Polish the charmaps.
+       *
+       *   Try to set the charmap encoding according to the platform &
+       *   encoding ID of each charmap.  Emulate Unicode charmap if one
+       *   is missing.
+       */
 
       tt_face_build_cmaps( face );  /* ignore errors */
 
@@ -1521,7 +1531,8 @@
           error = FT_CMap_New( (FT_CMap_Class)&tt_cmap_unicode_class_rec,
                                NULL, &cmaprec, NULL );
           if ( error                                      &&
-               FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
+               FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) &&
+               FT_ERR_NEQ( error, Unimplemented_Feature ) )
             goto Exit;
           error = FT_Err_Ok;
 
@@ -1533,9 +1544,9 @@
 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
 
       /*
-       *  Now allocate the root array of FT_Bitmap_Size records and
-       *  populate them.  Unfortunately, it isn't possible to indicate bit
-       *  depths in the FT_Bitmap_Size record.  This is a design error.
+       * Now allocate the root array of FT_Bitmap_Size records and
+       * populate them.  Unfortunately, it isn't possible to indicate bit
+       * depths in the FT_Bitmap_Size record.  This is a design error.
        */
       {
         FT_UInt  count;
@@ -1615,10 +1626,10 @@
         root->face_flags |= FT_FACE_FLAG_SCALABLE;
 
 
-      /*********************************************************************/
-      /*                                                                   */
-      /*  Set up metrics.                                                  */
-      /*                                                                   */
+      /**********************************************************************
+       *
+       * Set up metrics.
+       */
       if ( FT_IS_SCALABLE( root ) )
       {
         /* XXX What about if outline header is missing */
@@ -1630,59 +1641,73 @@
         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, certain 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! */
-        /*                                                                */
+        /*
+         * Computing the ascender/descender/height is tricky.
+         *
+         * The OpenType specification v1.8.3 says:
+         *
+         *   [OS/2's] sTypoAscender, sTypoDescender and sTypoLineGap fields
+         *   are intended to allow applications to lay out documents in a
+         *   typographically-correct and portable fashion.
+         *
+         * This is somewhat at odds with the decades of backwards
+         * compatibility, operating systems and applications doing whatever
+         * they want, not to mention broken fonts.
+         *
+         * Not all fonts have an OS/2 table; in this case, we take the values
+         * in the horizontal header, although there is nothing stopping the
+         * values from being unreliable. Even with a OS/2 table, certain fonts
+         * set the sTypoAscender, sTypoDescender and sTypoLineGap fields to 0
+         * and instead correctly set usWinAscent and usWinDescent.
+         *
+         * As an example, Arial Narrow is shipped as four files ARIALN.TTF,
+         * ARIALNI.TTF, ARIALNB.TTF and ARIALNBI.TTF. Strangely, all fonts have
+         * the same values in their sTypo* fields, except ARIALNB.ttf which
+         * sets them to 0. All of them have different usWinAscent/Descent
+         * values. The OS/2 table therefore cannot be trusted for computing the
+         * text height reliably.
+         *
+         * As a compromise, do the following:
+         *
+         * 1. If the OS/2 table exists and the fsSelection bit 7 is set
+         *    (USE_TYPO_METRICS), trust the font and use the sTypo* metrics.
+         * 2. Otherwise, use the `hhea' table's metrics.
+         * 3. If they are zero and the OS/2 table exists,
+         *    1. use the OS/2 table's sTypo* metrics if they are non-zero.
+         *    2. Otherwise, use the OS/2 table's usWin* metrics.
+         */
 
-        /* The ascender and descender are taken from the `hhea' table. */
-        /* If zero, they are taken from the `OS/2' table.              */
-
-        root->ascender  = face->horizontal.Ascender;
-        root->descender = face->horizontal.Descender;
+        if ( face->os2.version != 0xFFFFU && face->os2.fsSelection & 128 )
+        {
+          root->ascender  = face->os2.sTypoAscender;
+          root->descender = face->os2.sTypoDescender;
+          root->height    = root->ascender - root->descender +
+                            face->os2.sTypoLineGap;
+        }
+        else
+        {
+          root->ascender  = face->horizontal.Ascender;
+          root->descender = face->horizontal.Descender;
+          root->height    = root->ascender - root->descender +
+                            face->horizontal.Line_Gap;
 
-        root->height = root->ascender - root->descender +
-                       face->horizontal.Line_Gap;
-
-        if ( !( root->ascender || root->descender ) )
-        {
-          if ( face->os2.version != 0xFFFFU )
+          if ( !( root->ascender || root->descender ) )
           {
-            if ( face->os2.sTypoAscender || face->os2.sTypoDescender )
+            if ( face->os2.version != 0xFFFFU )
             {
-              root->ascender  = face->os2.sTypoAscender;
-              root->descender = face->os2.sTypoDescender;
-
-              root->height = root->ascender - root->descender +
-                             face->os2.sTypoLineGap;
-            }
-            else
-            {
-              root->ascender  =  (FT_Short)face->os2.usWinAscent;
-              root->descender = -(FT_Short)face->os2.usWinDescent;
-
-              root->height = root->ascender - root->descender;
+              if ( face->os2.sTypoAscender || face->os2.sTypoDescender )
+              {
+                root->ascender  = face->os2.sTypoAscender;
+                root->descender = face->os2.sTypoDescender;
+                root->height    = root->ascender - root->descender +
+                                  face->os2.sTypoLineGap;
+              }
+              else
+              {
+                root->ascender  =  (FT_Short)face->os2.usWinAscent;
+                root->descender = -(FT_Short)face->os2.usWinDescent;
+                root->height    =  root->ascender - root->descender;
+              }
             }
           }
         }
@@ -1737,6 +1762,13 @@
       /* destroy the embedded bitmaps table if it is loaded */
       if ( sfnt->free_eblc )
         sfnt->free_eblc( face );
+
+      /* destroy color table data if it is loaded */
+      if ( sfnt->free_cpal )
+      {
+        sfnt->free_cpal( face );
+        sfnt->free_colr( face );
+      }
     }
 
 #ifdef TT_CONFIG_OPTION_BDF
@@ -1792,11 +1824,18 @@
     FT_FREE( face->sbit_strike_map );
     face->root.num_fixed_sizes = 0;
 
+    FT_FREE( face->postscript_name );
+
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
-    FT_FREE( face->postscript_name );
     FT_FREE( face->var_postscript_prefix );
 #endif
 
+    /* freeing glyph color palette data */
+    FT_FREE( face->palette_data.palette_name_ids );
+    FT_FREE( face->palette_data.palette_flags );
+    FT_FREE( face->palette_data.palette_entry_name_ids );
+    FT_FREE( face->palette );
+
     face->sfnt = NULL;
   }
 
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/sfobjs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  sfobjs.h                                                               */
-/*                                                                         */
-/*    SFNT object management (specification).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * sfobjs.h
+ *
+ *   SFNT object management (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttcmap.c                                                               */
-/*                                                                         */
-/*    TrueType character mapping table (cmap) support (body).              */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttcmap.c
+ *
+ *   TrueType character mapping table (cmap) support (body).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -27,17 +27,16 @@
 #include "ttload.h"
 #include "ttcmap.h"
 #include "ttpost.h"
-#include "sfntpic.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.                                            */
-  /*                                                                       */
+
+
+  /**************************************************************************
+   *
+   * 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 FT_COMPONENT  ttcmap
 
 
 #define TT_PEEK_SHORT   FT_PEEK_SHORT
@@ -77,19 +76,19 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
 
@@ -238,57 +237,57 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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 is 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).                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 is 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
 
@@ -626,68 +625,68 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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 overlap, and the last segment should always contain the value     */
-  /* 0xFFFF for `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 a lot of fonts contain an invalid last segment,    */
-  /* where `start' and `end' are correctly set to 0xFFFF but both `delta'  */
-  /* and `offset' are incorrect (e.g., `opens___.ttf' which comes with     */
-  /* OpenOffice.org).  We need special code to deal with them correctly.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 overlap, and the last segment should always contain the value
+   * 0xFFFF for `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 a lot of fonts contain an invalid last segment,
+   * where `start' and `end' are correctly set to 0xFFFF but both `delta'
+   * and `offset' are incorrect (e.g., `opens___.ttf' which comes with
+   * OpenOffice.org).  We need special code to deal with them correctly.
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_4
 
@@ -1573,23 +1572,23 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET          TYPE             DESCRIPTION            */
-  /*                                                                       */
-  /*   format       0              USHORT           must be 6              */
-  /*   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.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET          TYPE             DESCRIPTION
+   *
+   *   format       0              USHORT           must be 6
+   *   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
 
@@ -1768,26 +1767,26 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET         TYPE        DESCRIPTION                  */
-  /*                                                                       */
-  /*   format      0              USHORT      must be 8                    */
-  /*   reserved    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 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET         TYPE        DESCRIPTION
+   *
+   *   format      0              USHORT      must be 8
+   *   reserved    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
 
@@ -2037,22 +2036,22 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
 
@@ -2209,26 +2208,26 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
 
@@ -2565,26 +2564,26 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME        OFFSET     TYPE       DESCRIPTION                       */
-  /*                                                                       */
-  /*   format      0          USHORT     must be 13                        */
-  /*   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                     */
-  /*   glyphId     8          ULONG      glyph ID for the whole group      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME        OFFSET     TYPE       DESCRIPTION
+   *
+   *   format      0          USHORT     must be 13
+   *   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
+   *   glyphId     8          ULONG      glyph ID for the whole group
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_13
 
@@ -2891,58 +2890,59 @@
   /*************************************************************************/
   /*************************************************************************/
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TABLE OVERVIEW                                                        */
-  /* --------------                                                        */
-  /*                                                                       */
-  /*   NAME         OFFSET  TYPE    DESCRIPTION                            */
-  /*                                                                       */
-  /*   format         0     USHORT  must be 14                             */
-  /*   length         2     ULONG   table length in bytes                  */
-  /*   numSelector    6     ULONG   number of variation sel. records       */
-  /*                                                                       */
-  /* Followed by numSelector records, each of which looks like             */
-  /*                                                                       */
-  /*   varSelector    0     UINT24  Unicode codepoint of sel.              */
-  /*   defaultOff     3     ULONG   offset to a default UVS table          */
-  /*                                describing any variants to be found in */
-  /*                                the normal Unicode subtable.           */
-  /*   nonDefOff      7     ULONG   offset to a non-default UVS table      */
-  /*                                describing any variants not in the     */
-  /*                                standard cmap, with GIDs here          */
-  /* (either offset may be 0 NULL)                                         */
-  /*                                                                       */
-  /* Selectors are sorted by code point.                                   */
-  /*                                                                       */
-  /* A default Unicode Variation Selector (UVS) subtable is just a list of */
-  /* ranges of code points which are to be found in the standard cmap.  No */
-  /* glyph IDs (GIDs) here.                                                */
-  /*                                                                       */
-  /*   numRanges      0     ULONG   number of ranges following             */
-  /*                                                                       */
-  /* A range looks like                                                    */
-  /*                                                                       */
-  /*   uniStart       0     UINT24  code point of the first character in   */
-  /*                                this range                             */
-  /*   additionalCnt  3     UBYTE   count of additional characters in this */
-  /*                                range (zero means a range of a single  */
-  /*                                character)                             */
-  /*                                                                       */
-  /* Ranges are sorted by `uniStart'.                                      */
-  /*                                                                       */
-  /* A non-default Unicode Variation Selector (UVS) subtable is a list of  */
-  /* mappings from codepoint to GID.                                       */
-  /*                                                                       */
-  /*   numMappings    0     ULONG   number of mappings                     */
-  /*                                                                       */
-  /* A range looks like                                                    */
-  /*                                                                       */
-  /*   uniStart       0     UINT24  code point of the first character in   */
-  /*                                this range                             */
-  /*   GID            3     USHORT  and its GID                            */
-  /*                                                                       */
-  /* Ranges are sorted by `uniStart'.                                      */
+  /**************************************************************************
+   *
+   * TABLE OVERVIEW
+   * --------------
+   *
+   *   NAME         OFFSET  TYPE    DESCRIPTION
+   *
+   *   format         0     USHORT  must be 14
+   *   length         2     ULONG   table length in bytes
+   *   numSelector    6     ULONG   number of variation sel. records
+   *
+   * Followed by numSelector records, each of which looks like
+   *
+   *   varSelector    0     UINT24  Unicode codepoint of sel.
+   *   defaultOff     3     ULONG   offset to a default UVS table
+   *                                describing any variants to be found in
+   *                                the normal Unicode subtable.
+   *   nonDefOff      7     ULONG   offset to a non-default UVS table
+   *                                describing any variants not in the
+   *                                standard cmap, with GIDs here
+   * (either offset may be 0 NULL)
+   *
+   * Selectors are sorted by code point.
+   *
+   * A default Unicode Variation Selector (UVS) subtable is just a list of
+   * ranges of code points which are to be found in the standard cmap.  No
+   * glyph IDs (GIDs) here.
+   *
+   *   numRanges      0     ULONG   number of ranges following
+   *
+   * A range looks like
+   *
+   *   uniStart       0     UINT24  code point of the first character in
+   *                                this range
+   *   additionalCnt  3     UBYTE   count of additional characters in this
+   *                                range (zero means a range of a single
+   *                                character)
+   *
+   * Ranges are sorted by `uniStart'.
+   *
+   * A non-default Unicode Variation Selector (UVS) subtable is a list of
+   * mappings from codepoint to GID.
+   *
+   *   numMappings    0     ULONG   number of mappings
+   *
+   * A range looks like
+   *
+   *   uniStart       0     UINT24  code point of the first character in
+   *                                this range
+   *   GID            3     USHORT  and its GID
+   *
+   * Ranges are sorted by `uniStart'.
+   */
 
 #ifdef TT_CONFIG_CMAP_FORMAT_14
 
@@ -3681,6 +3681,9 @@
     FT_UNUSED( pointer );
 
 
+    if ( !psnames->unicodes_init )
+      return FT_THROW( Unimplemented_Feature );
+
     return psnames->unicodes_init( memory,
                                    unicodes,
                                    face->root.num_glyphs,
@@ -3749,7 +3752,6 @@
 
 #endif /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
 
-#ifndef FT_CONFIG_OPTION_PIC
 
   static const TT_CMap_Class  tt_cmap_classes[] =
   {
@@ -3758,61 +3760,6 @@
     NULL,
   };
 
-#else /*FT_CONFIG_OPTION_PIC*/
-
-  void
-  FT_Destroy_Class_tt_cmap_classes( FT_Library      library,
-                                    TT_CMap_Class*  clazz )
-  {
-    FT_Memory  memory = library->memory;
-
-
-    if ( clazz )
-      FT_FREE( clazz );
-  }
-
-
-  FT_Error
-  FT_Create_Class_tt_cmap_classes( FT_Library       library,
-                                   TT_CMap_Class**  output_class )
-  {
-    TT_CMap_Class*     clazz  = NULL;
-    TT_CMap_ClassRec*  recs;
-    FT_Error           error;
-    FT_Memory          memory = library->memory;
-
-    int  i = 0;
-
-
-#define TTCMAPCITEM( a ) i++;
-#include "ttcmapc.h"
-
-    /* allocate enough space for both the pointers */
-    /* plus terminator and the class instances     */
-    if ( FT_ALLOC( clazz, sizeof ( *clazz ) * ( i + 1 ) +
-                          sizeof ( TT_CMap_ClassRec ) * i ) )
-      return error;
-
-    /* the location of the class instances follows the array of pointers */
-    recs = (TT_CMap_ClassRec*)( (char*)clazz +
-                                sizeof ( *clazz ) * ( i + 1 ) );
-    i    = 0;
-
-#undef TTCMAPCITEM
-#define  TTCMAPCITEM( a )             \
-    FT_Init_Class_ ## a( &recs[i] );  \
-    clazz[i] = &recs[i];              \
-    i++;
-#include "ttcmapc.h"
-
-    clazz[i] = NULL;
-
-    *output_class = clazz;
-    return FT_Err_Ok;
-  }
-
-#endif /*FT_CONFIG_OPTION_PIC*/
-
 
   /* parse the `cmap' table and build the corresponding TT_CMap objects */
   /* in the current face                                                */
@@ -3859,7 +3806,7 @@
       {
         FT_Byte* volatile              cmap   = table + offset;
         volatile FT_UInt               format = TT_PEEK_USHORT( cmap );
-        const TT_CMap_Class* volatile  pclazz = TT_CMAP_CLASSES_GET;
+        const TT_CMap_Class* volatile  pclazz = tt_cmap_classes;
         TT_CMap_Class volatile         clazz;
 
 
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttcmap.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttcmap.h                                                               */
-/*                                                                         */
-/*    TrueType character mapping table (cmap) support (specification).     */
-/*                                                                         */
-/*  Copyright 2002-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttcmap.h
+ *
+ *   TrueType character mapping table (cmap) support (specification).
+ *
+ * Copyright (C) 2002-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 TTCMAP_H_
@@ -56,8 +56,6 @@
   } TT_CMap_ClassRec;
 
 
-#ifndef FT_CONFIG_OPTION_PIC
-
 #define FT_DEFINE_TT_CMAP( class_,             \
                            size_,              \
                            init_,              \
@@ -92,42 +90,6 @@
     get_cmap_info_                             \
   };
 
-#else /* FT_CONFIG_OPTION_PIC */
-
-#define FT_DEFINE_TT_CMAP( class_,                      \
-                           size_,                       \
-                           init_,                       \
-                           done_,                       \
-                           char_index_,                 \
-                           char_next_,                  \
-                           char_var_index_,             \
-                           char_var_default_,           \
-                           variant_list_,               \
-                           charvariant_list_,           \
-                           variantchar_list_,           \
-                           format_,                     \
-                           validate_,                   \
-                           get_cmap_info_ )             \
-  void                                                  \
-  FT_Init_Class_ ## class_( TT_CMap_ClassRec*  clazz )  \
-  {                                                     \
-    clazz->clazz.size             = size_;              \
-    clazz->clazz.init             = init_;              \
-    clazz->clazz.done             = done_;              \
-    clazz->clazz.char_index       = char_index_;        \
-    clazz->clazz.char_next        = char_next_;         \
-    clazz->clazz.char_var_index   = char_var_index_;    \
-    clazz->clazz.char_var_default = char_var_default_;  \
-    clazz->clazz.variant_list     = variant_list_;      \
-    clazz->clazz.charvariant_list = charvariant_list_;  \
-    clazz->clazz.variantchar_list = variantchar_list_;  \
-    clazz->format                 = format_;            \
-    clazz->validate               = validate_;          \
-    clazz->get_cmap_info          = get_cmap_info_;     \
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
 
   typedef struct  TT_ValidatorRec_
   {
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttcmapc.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttcmapc.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttcmapc.h                                                              */
-/*                                                                         */
-/*    TT CMAP classes definitions (specification only).                    */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttcmapc.h
+ *
+ *   TT CMAP classes definitions (specification only).
+ *
+ * Copyright (C) 2009-2019 by
+ * Oran Agra and Mickey Gabel.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 TT_CONFIG_CMAP_FORMAT_0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.c	Thu May 09 16:09:39 2019 -0700
@@ -0,0 +1,451 @@
+/****************************************************************************
+ *
+ * ttcolr.c
+ *
+ *   TrueType and OpenType colored glyph layer support (body).
+ *
+ * Copyright (C) 2018-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Originally written by Shao Yu Zhang <shaozhang@fb.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.
+ *
+ */
+
+
+  /**************************************************************************
+   *
+   * `COLR' table specification:
+   *
+   *   https://www.microsoft.com/typography/otspec/colr.htm
+   *
+   */
+
+
+#include <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_STREAM_H
+#include FT_TRUETYPE_TAGS_H
+#include FT_COLOR_H
+
+
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+
+#include "ttcolr.h"
+
+
+  /* NOTE: These are the table sizes calculated through the specs. */
+#define BASE_GLYPH_SIZE            6
+#define LAYER_SIZE                 4
+#define COLR_HEADER_SIZE          14
+
+
+  typedef struct BaseGlyphRecord_
+  {
+    FT_UShort  gid;
+    FT_UShort  first_layer_index;
+    FT_UShort  num_layers;
+
+  } BaseGlyphRecord;
+
+
+  typedef struct Colr_
+  {
+    FT_UShort  version;
+    FT_UShort  num_base_glyphs;
+    FT_UShort  num_layers;
+
+    FT_Byte*  base_glyphs;
+    FT_Byte*  layers;
+
+    /* The memory which backs up the `COLR' table. */
+    void*     table;
+    FT_ULong  table_size;
+
+  } Colr;
+
+
+  /**************************************************************************
+   *
+   * 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  ttcolr
+
+
+  FT_LOCAL_DEF( FT_Error )
+  tt_face_load_colr( TT_Face    face,
+                     FT_Stream  stream )
+  {
+    FT_Error   error;
+    FT_Memory  memory = face->root.memory;
+
+    FT_Byte*  table = NULL;
+    FT_Byte*  p     = NULL;
+
+    Colr*  colr = NULL;
+
+    FT_ULong  base_glyph_offset, layer_offset;
+    FT_ULong  table_size;
+
+
+    /* `COLR' always needs `CPAL' */
+    if ( !face->cpal )
+      return FT_THROW( Invalid_File_Format );
+
+    error = face->goto_table( face, TTAG_COLR, stream, &table_size );
+    if ( error )
+      goto NoColr;
+
+    if ( table_size < COLR_HEADER_SIZE )
+      goto InvalidTable;
+
+    if ( FT_FRAME_EXTRACT( table_size, table ) )
+      goto NoColr;
+
+    p = table;
+
+    if ( FT_NEW( colr ) )
+      goto NoColr;
+
+    colr->version = FT_NEXT_USHORT( p );
+    if ( colr->version != 0 )
+      goto InvalidTable;
+
+    colr->num_base_glyphs = FT_NEXT_USHORT( p );
+    base_glyph_offset     = FT_NEXT_ULONG( p );
+
+    if ( base_glyph_offset >= table_size )
+      goto InvalidTable;
+    if ( colr->num_base_glyphs * BASE_GLYPH_SIZE >
+           table_size - base_glyph_offset )
+      goto InvalidTable;
+
+    layer_offset     = FT_NEXT_ULONG( p );
+    colr->num_layers = FT_NEXT_USHORT( p );
+
+    if ( layer_offset >= table_size )
+      goto InvalidTable;
+    if ( colr->num_layers * LAYER_SIZE > table_size - layer_offset )
+      goto InvalidTable;
+
+    colr->base_glyphs = (FT_Byte*)( table + base_glyph_offset );
+    colr->layers      = (FT_Byte*)( table + layer_offset      );
+    colr->table       = table;
+    colr->table_size  = table_size;
+
+    face->colr = colr;
+
+    return FT_Err_Ok;
+
+  InvalidTable:
+    error = FT_THROW( Invalid_Table );
+
+  NoColr:
+    FT_FRAME_RELEASE( table );
+    FT_FREE( colr );
+
+    return error;
+  }
+
+
+  FT_LOCAL_DEF( void )
+  tt_face_free_colr( TT_Face  face )
+  {
+    FT_Stream  stream = face->root.stream;
+    FT_Memory  memory = face->root.memory;
+
+    Colr*  colr = (Colr*)face->colr;
+
+
+    if ( colr )
+    {
+      FT_FRAME_RELEASE( colr->table );
+      FT_FREE( colr );
+    }
+  }
+
+
+  static FT_Bool
+  find_base_glyph_record( FT_Byte*          base_glyph_begin,
+                          FT_Int            num_base_glyph,
+                          FT_UInt           glyph_id,
+                          BaseGlyphRecord*  record )
+  {
+    FT_Int  min = 0;
+    FT_Int  max = num_base_glyph - 1;
+
+
+    while ( min <= max )
+    {
+      FT_Int    mid = min + ( max - min ) / 2;
+      FT_Byte*  p   = base_glyph_begin + mid * BASE_GLYPH_SIZE;
+
+      FT_UShort  gid = FT_NEXT_USHORT( p );
+
+
+      if ( gid < glyph_id )
+        min = mid + 1;
+      else if (gid > glyph_id )
+        max = mid - 1;
+      else
+      {
+        record->gid               = gid;
+        record->first_layer_index = FT_NEXT_USHORT( p );
+        record->num_layers        = FT_NEXT_USHORT( p );
+
+        return 1;
+      }
+    }
+
+    return 0;
+  }
+
+
+  FT_LOCAL_DEF( FT_Bool )
+  tt_face_get_colr_layer( TT_Face            face,
+                          FT_UInt            base_glyph,
+                          FT_UInt           *aglyph_index,
+                          FT_UInt           *acolor_index,
+                          FT_LayerIterator*  iterator )
+  {
+    Colr*            colr = (Colr*)face->colr;
+    BaseGlyphRecord  glyph_record;
+
+
+    if ( !colr )
+      return 0;
+
+    if ( !iterator->p )
+    {
+      FT_ULong  offset;
+
+
+      /* first call to function */
+      iterator->layer = 0;
+
+      if ( !find_base_glyph_record( colr->base_glyphs,
+                                    colr->num_base_glyphs,
+                                    base_glyph,
+                                    &glyph_record ) )
+        return 0;
+
+      if ( glyph_record.num_layers )
+        iterator->num_layers = glyph_record.num_layers;
+      else
+        return 0;
+
+      offset = LAYER_SIZE * glyph_record.first_layer_index;
+      if ( offset + LAYER_SIZE * glyph_record.num_layers > colr->table_size )
+        return 0;
+
+      iterator->p = colr->layers + offset;
+    }
+
+    if ( iterator->layer >= iterator->num_layers )
+      return 0;
+
+    *aglyph_index = FT_NEXT_USHORT( iterator->p );
+    *acolor_index = FT_NEXT_USHORT( iterator->p );
+
+    if ( *aglyph_index >= (FT_UInt)( FT_FACE( face )->num_glyphs )   ||
+         ( *acolor_index != 0xFFFF                                 &&
+           *acolor_index >= face->palette_data.num_palette_entries ) )
+      return 0;
+
+    iterator->layer++;
+
+    return 1;
+  }
+
+
+  FT_LOCAL_DEF( FT_Error )
+  tt_face_colr_blend_layer( TT_Face       face,
+                            FT_UInt       color_index,
+                            FT_GlyphSlot  dstSlot,
+                            FT_GlyphSlot  srcSlot )
+  {
+    FT_Error  error;
+
+    FT_UInt  x, y;
+    FT_Byte  b, g, r, alpha;
+
+    FT_ULong  size;
+    FT_Byte*  src;
+    FT_Byte*  dst;
+
+
+    if ( !dstSlot->bitmap.buffer )
+    {
+      /* Initialize destination of color bitmap */
+      /* with the size of first component.      */
+      dstSlot->bitmap_left = srcSlot->bitmap_left;
+      dstSlot->bitmap_top  = srcSlot->bitmap_top;
+
+      dstSlot->bitmap.width      = srcSlot->bitmap.width;
+      dstSlot->bitmap.rows       = srcSlot->bitmap.rows;
+      dstSlot->bitmap.pixel_mode = FT_PIXEL_MODE_BGRA;
+      dstSlot->bitmap.pitch      = (int)dstSlot->bitmap.width * 4;
+      dstSlot->bitmap.num_grays  = 256;
+
+      size = dstSlot->bitmap.rows * (unsigned int)dstSlot->bitmap.pitch;
+
+      error = ft_glyphslot_alloc_bitmap( dstSlot, size );
+      if ( error )
+        return error;
+
+      FT_MEM_ZERO( dstSlot->bitmap.buffer, size );
+    }
+    else
+    {
+      /* Resize destination if needed such that new component fits. */
+      FT_Int  x_min, x_max, y_min, y_max;
+
+
+      x_min = FT_MIN( dstSlot->bitmap_left, srcSlot->bitmap_left );
+      x_max = FT_MAX( dstSlot->bitmap_left + (FT_Int)dstSlot->bitmap.width,
+                      srcSlot->bitmap_left + (FT_Int)srcSlot->bitmap.width );
+
+      y_min = FT_MIN( dstSlot->bitmap_top - (FT_Int)dstSlot->bitmap.rows,
+                      srcSlot->bitmap_top - (FT_Int)srcSlot->bitmap.rows );
+      y_max = FT_MAX( dstSlot->bitmap_top, srcSlot->bitmap_top );
+
+      if ( x_min != dstSlot->bitmap_left                                 ||
+           x_max != dstSlot->bitmap_left + (FT_Int)dstSlot->bitmap.width ||
+           y_min != dstSlot->bitmap_top - (FT_Int)dstSlot->bitmap.rows   ||
+           y_max != dstSlot->bitmap_top                                  )
+      {
+        FT_Memory  memory = face->root.memory;
+
+        FT_UInt  width = (FT_UInt)( x_max - x_min );
+        FT_UInt  rows  = (FT_UInt)( y_max - y_min );
+        FT_UInt  pitch = width * 4;
+
+        FT_Byte*  buf = NULL;
+        FT_Byte*  p;
+        FT_Byte*  q;
+
+
+        size  = rows * pitch;
+        if ( FT_ALLOC( buf, size ) )
+          return error;
+
+        p = dstSlot->bitmap.buffer;
+        q = buf +
+            (int)pitch * ( y_max - dstSlot->bitmap_top ) +
+            4 * ( dstSlot->bitmap_left - x_min );
+
+        for ( y = 0; y < dstSlot->bitmap.rows; y++ )
+        {
+          FT_MEM_COPY( q, p, dstSlot->bitmap.width * 4 );
+
+          p += dstSlot->bitmap.pitch;
+          q += pitch;
+        }
+
+        ft_glyphslot_set_bitmap( dstSlot, buf );
+
+        dstSlot->bitmap_top  = y_max;
+        dstSlot->bitmap_left = x_min;
+
+        dstSlot->bitmap.width = width;
+        dstSlot->bitmap.rows  = rows;
+        dstSlot->bitmap.pitch = (int)pitch;
+
+        dstSlot->internal->flags |= FT_GLYPH_OWN_BITMAP;
+        dstSlot->format           = FT_GLYPH_FORMAT_BITMAP;
+      }
+    }
+
+    if ( color_index == 0xFFFF )
+    {
+      if ( face->have_foreground_color )
+      {
+        b     = face->foreground_color.blue;
+        g     = face->foreground_color.green;
+        r     = face->foreground_color.red;
+        alpha = face->foreground_color.alpha;
+      }
+      else
+      {
+        if ( face->palette_data.palette_flags                          &&
+             ( face->palette_data.palette_flags[face->palette_index] &
+                 FT_PALETTE_FOR_DARK_BACKGROUND                      ) )
+        {
+          /* white opaque */
+          b     = 0xFF;
+          g     = 0xFF;
+          r     = 0xFF;
+          alpha = 0xFF;
+        }
+        else
+        {
+          /* black opaque */
+          b     = 0x00;
+          g     = 0x00;
+          r     = 0x00;
+          alpha = 0xFF;
+        }
+      }
+    }
+    else
+    {
+      b     = face->palette[color_index].blue;
+      g     = face->palette[color_index].green;
+      r     = face->palette[color_index].red;
+      alpha = face->palette[color_index].alpha;
+    }
+
+    /* XXX Convert if srcSlot.bitmap is not grey? */
+    src = srcSlot->bitmap.buffer;
+    dst = dstSlot->bitmap.buffer +
+          dstSlot->bitmap.pitch * ( dstSlot->bitmap_top - srcSlot->bitmap_top ) +
+          4 * ( srcSlot->bitmap_left - dstSlot->bitmap_left );
+
+    for ( y = 0; y < srcSlot->bitmap.rows; y++ )
+    {
+      for ( x = 0; x < srcSlot->bitmap.width; x++ )
+      {
+        int  aa = src[x];
+        int  fa = alpha * aa / 255;
+
+        int  fb = b * fa / 255;
+        int  fg = g * fa / 255;
+        int  fr = r * fa / 255;
+
+        int  ba2 = 255 - fa;
+
+        int  bb = dst[4 * x + 0];
+        int  bg = dst[4 * x + 1];
+        int  br = dst[4 * x + 2];
+        int  ba = dst[4 * x + 3];
+
+
+        dst[4 * x + 0] = (FT_Byte)( bb * ba2 / 255 + fb );
+        dst[4 * x + 1] = (FT_Byte)( bg * ba2 / 255 + fg );
+        dst[4 * x + 2] = (FT_Byte)( br * ba2 / 255 + fr );
+        dst[4 * x + 3] = (FT_Byte)( ba * ba2 / 255 + fa );
+      }
+
+      src += srcSlot->bitmap.pitch;
+      dst += dstSlot->bitmap.pitch;
+    }
+
+    return FT_Err_Ok;
+  }
+
+#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+  /* ANSI C doesn't like empty source files */
+  typedef int  _tt_colr_dummy;
+
+#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+/* EOF */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttcolr.h	Thu May 09 16:09:39 2019 -0700
@@ -0,0 +1,58 @@
+/****************************************************************************
+ *
+ * ttcolr.h
+ *
+ *   TrueType and OpenType colored glyph layer support (specification).
+ *
+ * Copyright (C) 2018-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Originally written by Shao Yu Zhang <shaozhang@fb.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 __TTCOLR_H__
+#define __TTCOLR_H__
+
+
+#include <ft2build.h>
+#include "ttload.h"
+
+
+FT_BEGIN_HEADER
+
+
+  FT_LOCAL( FT_Error )
+  tt_face_load_colr( TT_Face    face,
+                     FT_Stream  stream );
+
+  FT_LOCAL( void )
+  tt_face_free_colr( TT_Face  face );
+
+  FT_LOCAL( FT_Bool )
+  tt_face_get_colr_layer( TT_Face            face,
+                          FT_UInt            base_glyph,
+                          FT_UInt           *aglyph_index,
+                          FT_UInt           *acolor_index,
+                          FT_LayerIterator*  iterator );
+
+  FT_LOCAL( FT_Error )
+  tt_face_colr_blend_layer( TT_Face       face,
+                            FT_UInt       color_index,
+                            FT_GlyphSlot  dstSlot,
+                            FT_GlyphSlot  srcSlot );
+
+
+FT_END_HEADER
+
+
+#endif /* __TTCOLR_H__ */
+
+/* END */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.c	Thu May 09 16:09:39 2019 -0700
@@ -0,0 +1,311 @@
+/****************************************************************************
+ *
+ * ttcpal.c
+ *
+ *   TrueType and OpenType color palette support (body).
+ *
+ * Copyright (C) 2018-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Originally written by Shao Yu Zhang <shaozhang@fb.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.
+ *
+ */
+
+
+  /**************************************************************************
+   *
+   * `CPAL' table specification:
+   *
+   *   https://www.microsoft.com/typography/otspec/cpal.htm
+   *
+   */
+
+
+#include <ft2build.h>
+#include FT_INTERNAL_DEBUG_H
+#include FT_INTERNAL_STREAM_H
+#include FT_TRUETYPE_TAGS_H
+#include FT_COLOR_H
+
+
+#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
+
+#include "ttcpal.h"
+
+
+  /* NOTE: These are the table sizes calculated through the specs. */
+#define CPAL_V0_HEADER_BASE_SIZE  12
+#define COLOR_SIZE                 4
+
+
+  /* all data from `CPAL' not covered in FT_Palette_Data */
+  typedef struct Cpal_
+  {
+    FT_UShort  version;        /* Table version number (0 or 1 supported). */
+    FT_UShort  num_colors;               /* Total number of color records, */
+                                         /* combined for all palettes.     */
+    FT_Byte*  colors;                              /* RGBA array of colors */
+    FT_Byte*  color_indices; /* Index of each palette's first color record */
+                             /* in the combined color record array.        */
+
+    /* The memory which backs up the `CPAL' table. */
+    void*     table;
+    FT_ULong  table_size;
+
+  } Cpal;
+
+
+  /**************************************************************************
+   *
+   * 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  ttcpal
+
+
+  FT_LOCAL_DEF( FT_Error )
+  tt_face_load_cpal( TT_Face    face,
+                     FT_Stream  stream )
+  {
+    FT_Error   error;
+    FT_Memory  memory = face->root.memory;
+
+    FT_Byte*  table = NULL;
+    FT_Byte*  p     = NULL;
+
+    Cpal*  cpal = NULL;
+
+    FT_ULong  colors_offset;
+    FT_ULong  table_size;
+
+
+    error = face->goto_table( face, TTAG_CPAL, stream, &table_size );
+    if ( error )
+      goto NoCpal;
+
+    if ( table_size < CPAL_V0_HEADER_BASE_SIZE )
+      goto InvalidTable;
+
+    if ( FT_FRAME_EXTRACT( table_size, table ) )
+      goto NoCpal;
+
+    p = table;
+
+    if ( FT_NEW( cpal ) )
+      goto NoCpal;
+
+    cpal->version = FT_NEXT_USHORT( p );
+    if ( cpal->version > 1 )
+      goto InvalidTable;
+
+    face->palette_data.num_palette_entries = FT_NEXT_USHORT( p );
+    face->palette_data.num_palettes        = FT_NEXT_USHORT( p );
+
+    cpal->num_colors = FT_NEXT_USHORT( p );
+    colors_offset    = FT_NEXT_ULONG( p );
+
+    if ( CPAL_V0_HEADER_BASE_SIZE             +
+         face->palette_data.num_palettes * 2U > table_size )
+      goto InvalidTable;
+
+    if ( colors_offset >= table_size )
+      goto InvalidTable;
+    if ( cpal->num_colors * COLOR_SIZE > table_size - colors_offset )
+      goto InvalidTable;
+
+    if ( face->palette_data.num_palette_entries > cpal->num_colors )
+      goto InvalidTable;
+
+    cpal->color_indices = p;
+    cpal->colors        = (FT_Byte*)( table + colors_offset );
+
+    if ( cpal->version == 1 )
+    {
+      FT_ULong    type_offset, label_offset, entry_label_offset;
+      FT_UShort*  array = NULL;
+      FT_UShort*  limit;
+      FT_UShort*  q;
+
+
+      if ( CPAL_V0_HEADER_BASE_SIZE             +
+           face->palette_data.num_palettes * 2U +
+           3U * 4                               > table_size )
+        goto InvalidTable;
+
+      p += face->palette_data.num_palettes * 2;
+
+      type_offset        = FT_NEXT_ULONG( p );
+      label_offset       = FT_NEXT_ULONG( p );
+      entry_label_offset = FT_NEXT_ULONG( p );
+
+      if ( type_offset )
+      {
+        if ( type_offset >= table_size )
+          goto InvalidTable;
+        if ( face->palette_data.num_palettes * 2 >
+               table_size - type_offset )
+          goto InvalidTable;
+
+        if ( FT_QNEW_ARRAY( array, face->palette_data.num_palettes ) )
+          goto NoCpal;
+
+        p     = table + type_offset;
+        q     = array;
+        limit = q + face->palette_data.num_palettes;
+
+        while ( q < limit )
+          *q++ = FT_NEXT_USHORT( p );
+
+        face->palette_data.palette_flags = array;
+      }
+
+      if ( label_offset )
+      {
+        if ( label_offset >= table_size )
+          goto InvalidTable;
+        if ( face->palette_data.num_palettes * 2 >
+               table_size - label_offset )
+          goto InvalidTable;
+
+        if ( FT_QNEW_ARRAY( array, face->palette_data.num_palettes ) )
+          goto NoCpal;
+
+        p     = table + label_offset;
+        q     = array;
+        limit = q + face->palette_data.num_palettes;
+
+        while ( q < limit )
+          *q++ = FT_NEXT_USHORT( p );
+
+        face->palette_data.palette_name_ids = array;
+      }
+
+      if ( entry_label_offset )
+      {
+        if ( entry_label_offset >= table_size )
+          goto InvalidTable;
+        if ( face->palette_data.num_palette_entries * 2 >
+               table_size - entry_label_offset )
+          goto InvalidTable;
+
+        if ( FT_QNEW_ARRAY( array, face->palette_data.num_palette_entries ) )
+          goto NoCpal;
+
+        p     = table + entry_label_offset;
+        q     = array;
+        limit = q + face->palette_data.num_palette_entries;
+
+        while ( q < limit )
+          *q++ = FT_NEXT_USHORT( p );
+
+        face->palette_data.palette_entry_name_ids = array;
+      }
+    }
+
+    cpal->table      = table;
+    cpal->table_size = table_size;
+
+    face->cpal = cpal;
+
+    /* set up default palette */
+    if ( FT_NEW_ARRAY( face->palette,
+                       face->palette_data.num_palette_entries ) )
+      goto NoCpal;
+
+    if ( tt_face_palette_set( face, 0 ) )
+      goto InvalidTable;
+
+    return FT_Err_Ok;
+
+  InvalidTable:
+    error = FT_THROW( Invalid_Table );
+
+  NoCpal:
+    FT_FRAME_RELEASE( table );
+    FT_FREE( cpal );
+
+    face->cpal = NULL;
+
+    /* arrays in `face->palette_data' and `face->palette' */
+    /* are freed in `sfnt_done_face'                      */
+
+    return error;
+  }
+
+
+  FT_LOCAL_DEF( void )
+  tt_face_free_cpal( TT_Face  face )
+  {
+    FT_Stream  stream = face->root.stream;
+    FT_Memory  memory = face->root.memory;
+
+    Cpal*  cpal = (Cpal*)face->cpal;
+
+
+    if ( cpal )
+    {
+      FT_FRAME_RELEASE( cpal->table );
+      FT_FREE( cpal );
+    }
+  }
+
+
+  FT_LOCAL_DEF( FT_Error )
+  tt_face_palette_set( TT_Face  face,
+                       FT_UInt  palette_index )
+  {
+    Cpal*  cpal = (Cpal*)face->cpal;
+
+    FT_Byte*   offset;
+    FT_Byte*   p;
+
+    FT_Color*  q;
+    FT_Color*  limit;
+
+    FT_UShort  color_index;
+
+
+    if ( !cpal || palette_index >= face->palette_data.num_palettes )
+      return FT_THROW( Invalid_Argument );
+
+    offset      = cpal->color_indices + 2 * palette_index;
+    color_index = FT_PEEK_USHORT( offset );
+
+    if ( color_index + face->palette_data.num_palette_entries >
+           cpal->num_colors )
+      return FT_THROW( Invalid_Table );
+
+    p     = cpal->colors + COLOR_SIZE * color_index;
+    q     = face->palette;
+    limit = q + face->palette_data.num_palette_entries;
+
+    while ( q < limit )
+    {
+      q->blue  = FT_NEXT_BYTE( p );
+      q->green = FT_NEXT_BYTE( p );
+      q->red   = FT_NEXT_BYTE( p );
+      q->alpha = FT_NEXT_BYTE( p );
+
+      q++;
+    }
+
+    return FT_Err_Ok;
+  }
+
+
+#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+  /* ANSI C doesn't like empty source files */
+  typedef int  _tt_cpal_dummy;
+
+#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
+
+/* EOF */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttcpal.h	Thu May 09 16:09:39 2019 -0700
@@ -0,0 +1,49 @@
+/****************************************************************************
+ *
+ * ttcpal.h
+ *
+ *   TrueType and OpenType color palette support (specification).
+ *
+ * Copyright (C) 2018-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Originally written by Shao Yu Zhang <shaozhang@fb.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 __TTCPAL_H__
+#define __TTCPAL_H__
+
+
+#include <ft2build.h>
+#include "ttload.h"
+
+
+FT_BEGIN_HEADER
+
+
+  FT_LOCAL( FT_Error )
+  tt_face_load_cpal( TT_Face    face,
+                     FT_Stream  stream );
+
+  FT_LOCAL( void )
+  tt_face_free_cpal( TT_Face  face );
+
+  FT_LOCAL( FT_Error )
+  tt_face_palette_set( TT_Face  face,
+                       FT_UInt  palette_index );
+
+
+FT_END_HEADER
+
+
+#endif /* __TTCPAL_H__ */
+
+/* END */
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.c	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttkern.c                                                               */
-/*                                                                         */
-/*    Load the basic TrueType kerning table.  This doesn't handle          */
-/*    kerning data within the GPOS table at the moment.                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttkern.c
+ *
+ *   Load the basic TrueType kerning table.  This doesn't handle
+ *   kerning data within the GPOS table at the moment.
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -26,14 +26,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_ttkern
+#define FT_COMPONENT  ttkern
 
 
 #undef  TT_KERN_INDEX
@@ -127,8 +127,8 @@
       avail |= mask;
 
       /*
-       *  Now check whether the pairs in this table are ordered.
-       *  We then can use binary search.
+       * Now check whether the pairs in this table are ordered.
+       * We then can use binary search.
        */
       if ( num_pairs > 0 )
       {
@@ -283,8 +283,8 @@
         break;
 
        /*
-        *  We don't support format 2 because we haven't seen a single font
-        *  using it in real life...
+        * We don't support format 2 because we haven't seen a single font
+        * using it in real life...
         */
 
       default:
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttkern.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttkern.h                                                               */
-/*                                                                         */
-/*    Load the basic TrueType kerning table.  This doesn't handle          */
-/*    kerning data within the GPOS table at the moment.                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttkern.h
+ *
+ *   Load the basic TrueType kerning table.  This doesn't handle
+ *   kerning data within the GPOS table at the moment.
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 TTKERN_H_
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttload.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttload.c	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttload.c                                                               */
-/*                                                                         */
-/*    Load the basic TrueType tables, i.e., tables that can be either in   */
-/*    TTF or OTF fonts (body).                                             */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttload.c
+ *
+ *   Load the basic TrueType tables, i.e., tables that can be either in
+ *   TTF or OTF fonts (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -26,32 +26,34 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  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.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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  )
@@ -101,27 +103,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -309,28 +315,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_font_dir                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the header of a SFNT font file.                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the target face object.                  */
-  /*                                                                       */
-  /*    stream     :: The input stream.                                    */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    sfnt       :: The SFNT header.                                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The stream cursor must be at the beginning of the font directory.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_font_dir
+   *
+   * @Description:
+   *   Loads the header of a SFNT font file.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   *
+   *   stream ::
+   *     The input stream.
+   *
+   * @Output:
+   *   sfnt ::
+   *     The SFNT header.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   *
+   * @Note:
+   *   The stream cursor must be at the beginning of the font directory.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_font_dir( TT_Face    face,
                          FT_Stream  stream )
@@ -496,46 +505,51 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -586,22 +600,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -622,10 +638,10 @@
         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_ULONG ( Created[0] ),
+        FT_FRAME_ULONG ( Created[1] ),
+        FT_FRAME_ULONG ( Modified[0] ),
+        FT_FRAME_ULONG ( Modified[1] ),
         FT_FRAME_SHORT ( xMin ),
         FT_FRAME_SHORT ( yMin ),
         FT_FRAME_SHORT ( xMax ),
@@ -676,22 +692,24 @@
 #endif /* TT_CONFIG_OPTION_EMBEDDED_BITMAPS */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_maxp                                                  */
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_maxp
+   *
+   * @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_maxp( TT_Face    face,
                      FT_Stream  stream )
@@ -784,22 +802,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_name                                                  */
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_name
+   *
+   * @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_name( TT_Face    face,
                      FT_Stream  stream )
@@ -981,17 +1001,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_free_name                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Frees the name records.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A handle to the target face object.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_free_name
+   *
+   * @Description:
+   *   Frees the name records.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the target face object.
+   */
   FT_LOCAL_DEF( void )
   tt_face_free_name( TT_Face  face )
   {
@@ -1030,23 +1051,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_cmap                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads the cmap directory in a face object.  The cmaps themselves   */
-  /*    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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_cmap
+   *
+   * @Description:
+   *   Loads the cmap directory in a face object.  The cmaps themselves
+   *   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,
@@ -1068,22 +1091,24 @@
 
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
@@ -1228,22 +1253,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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_post( TT_Face    face,
                      FT_Stream  stream )
@@ -1288,22 +1315,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
@@ -1349,22 +1378,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttload.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttload.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttload.h                                                               */
-/*                                                                         */
-/*    Load the basic TrueType tables, i.e., tables that can be either in   */
-/*    TTF or OTF fonts (specification).                                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttload.h
+ *
+ *   Load the basic TrueType tables, i.e., tables that can be either in
+ *   TTF or OTF fonts (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttmtx.c                                                                */
-/*                                                                         */
-/*    Load the metrics tables common to TTF and OTF fonts (body).          */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttmtx.c
+ *
+ *   Load the metrics tables common to TTF and OTF fonts (body).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -38,34 +38,37 @@
   /*            both the horizontal and vertical headers.               */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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_ttmtx
+#define FT_COMPONENT  ttmtx
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_hmtx                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the `hmtx' or `vmtx' 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 `vmtx'.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_hmtx
+   *
+   * @Description:
+   *   Load the `hmtx' or `vmtx' 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 `vmtx'.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_hmtx( TT_Face    face,
                      FT_Stream  stream,
@@ -102,24 +105,27 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_hhea                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the `hhea' or 'vhea' 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 `vhea'.                  */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_hhea
+   *
+   * @Description:
+   *   Load the `hhea' or 'vhea' 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 `vhea'.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_face_load_hhea( TT_Face    face,
                      FT_Stream  stream,
@@ -190,30 +196,35 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_get_metrics                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return the horizontal or vertical metrics in font units for a      */
-  /*    given glyph.  The values are the left side bearing (top side       */
-  /*    bearing for vertical metrics) and advance width (advance height    */
-  /*    for vertical metrics).                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face     :: A pointer to the TrueType face structure.              */
-  /*                                                                       */
-  /*    vertical :: If set to TRUE, get vertical metrics.                  */
-  /*                                                                       */
-  /*    gindex   :: The glyph index.                                       */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    abearing :: The bearing, either left side or top side.             */
-  /*                                                                       */
-  /*    aadvance :: The advance width or advance height, depending on      */
-  /*                the `vertical' flag.                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_get_metrics
+   *
+   * @Description:
+   *   Return the horizontal or vertical metrics in font units for a
+   *   given glyph.  The values are the left side bearing (top side
+   *   bearing for vertical metrics) and advance width (advance height
+   *   for vertical metrics).
+   *
+   * @Input:
+   *   face ::
+   *     A pointer to the TrueType face structure.
+   *
+   *   vertical ::
+   *     If set to TRUE, get vertical metrics.
+   *
+   *   gindex ::
+   *     The glyph index.
+   *
+   * @Output:
+   *   abearing ::
+   *     The bearing, either left side or top side.
+   *
+   *   aadvance ::
+   *     The advance width or advance height, depending on
+   *     the `vertical' flag.
+   */
   FT_LOCAL_DEF( void )
   tt_face_get_metrics( TT_Face     face,
                        FT_Bool     vertical,
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttmtx.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttmtx.h                                                                */
-/*                                                                         */
-/*    Load the metrics tables common to TTF and OTF fonts (specification). */
-/*                                                                         */
-/*  Copyright 2006-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttmtx.h
+ *
+ *   Load the metrics tables common to TTF and OTF fonts (specification).
+ *
+ * Copyright (C) 2006-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 TTMTX_H_
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.c	Thu May 09 16:09:39 2019 -0700
@@ -1,28 +1,28 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpost.c                                                               */
-/*                                                                         */
-/*    PostScript name table processing for TrueType and OpenType fonts     */
-/*    (body).                                                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttpost.c
+ *
+ *   PostScript name table processing for TrueType and OpenType fonts
+ *   (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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>
@@ -38,17 +38,17 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  ttpost
 
 
-  /* If this configuration macro is defined, we rely on the `PSNames' */
+  /* If this configuration macro is defined, we rely on the `psnames' */
   /* module to grab the glyph names.                                  */
 
 #ifdef FT_CONFIG_OPTION_POSTSCRIPT_NAMES
@@ -62,9 +62,9 @@
 #else /* FT_CONFIG_OPTION_POSTSCRIPT_NAMES */
 
 
-   /* Otherwise, we ignore the `PSNames' module, and provide our own  */
+   /* 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.            */
+   /* FreeType without the Type 1 driver & psnames module.            */
 
 #define MAC_NAME( x )  (FT_String*)tt_post_default_names[x]
 
@@ -459,28 +459,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_get_ps_name                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the PostScript glyph name of a glyph.                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the parent face.                             */
-  /*                                                                       */
-  /*    idx    :: The glyph index.                                         */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    PSname :: The address of a string pointer.  Undefined 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_get_ps_name
+   *
+   * @Description:
+   *   Get the PostScript glyph name of a glyph.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the parent face.
+   *
+   *   idx ::
+   *     The glyph index.
+   *
+   * @InOut:
+   *   PSname ::
+   *     The address of a string pointer.  Undefined 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,
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttpost.h	Thu May 09 16:09:39 2019 -0700
@@ -1,20 +1,20 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpost.h                                                               */
-/*                                                                         */
-/*    PostScript name table processing for TrueType and OpenType fonts     */
-/*    (specification).                                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttpost.h
+ *
+ *   PostScript name table processing for TrueType and OpenType fonts
+ *   (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.c	Thu May 09 16:09:39 2019 -0700
@@ -1,22 +1,22 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttsbit.c                                                               */
-/*                                                                         */
-/*    TrueType and OpenType embedded bitmap support (body).                */
-/*                                                                         */
-/*  Copyright 2005-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  Copyright 2013 by Google, Inc.                                         */
-/*  Google Author(s): Behdad Esfahbod.                                     */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttsbit.c
+ *
+ *   TrueType and OpenType embedded bitmap support (body).
+ *
+ * Copyright (C) 2005-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * Copyright 2013 by Google, Inc.
+ * Google Author(s): Behdad Esfahbod.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -36,14 +36,14 @@
 #include "pngshim.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  ttsbit
 
 
   FT_LOCAL_DEF( FT_Error )
@@ -129,8 +129,8 @@
         }
 
         /*
-         *  Count the number of strikes available in the table.  We are a bit
-         *  paranoid there and don't trust the data.
+         * Count the number of strikes available in the table.  We are a bit
+         * paranoid there and don't trust the data.
          */
         count = (FT_UInt)num_strikes;
         if ( 8 + 48UL * count > table_size )
@@ -182,8 +182,8 @@
                       " expect bad rendering results\n" ));
 
         /*
-         *  Count the number of strikes available in the table.  We are a bit
-         *  paranoid there and don't trust the data.
+         * Count the number of strikes available in the table.  We are a bit
+         * paranoid there and don't trust the data.
          */
         count = (FT_UInt)num_strikes;
         if ( 8 + 4UL * count > table_size )
@@ -1014,8 +1014,8 @@
     for ( nn = 0; nn < num_components; nn++ )
     {
       FT_UInt  gindex = FT_NEXT_USHORT( p );
-      FT_Byte  dx     = FT_NEXT_BYTE( p );
-      FT_Byte  dy     = FT_NEXT_BYTE( p );
+      FT_Char  dx     = FT_NEXT_CHAR( p );
+      FT_Char  dy     = FT_NEXT_CHAR( p );
 
 
       /* NB: a recursive call */
--- a/src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/sfnt/ttsbit.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttsbit.h                                                               */
-/*                                                                         */
-/*    TrueType and OpenType embedded bitmap support (specification).       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttsbit.h
+ *
+ *   TrueType and OpenType embedded bitmap support (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.c	Thu May 09 16:09:39 2019 -0700
@@ -1,94 +1,94 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgrays.c                                                              */
-/*                                                                         */
-/*    A new `perfect' anti-aliasing renderer (body).                       */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgrays.c
+ *
+ *   A new `perfect' anti-aliasing renderer (body).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 -DSTANDALONE_ 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 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 -DSTANDALONE_ 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.                                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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 https://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.
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 FT_COMPONENT  smooth
 
 
 #ifdef STANDALONE_
@@ -112,9 +112,9 @@
 
 
   /*
-   *  Approximate sqrt(x*x+y*y) using the `alpha max plus beta min'
-   *  algorithm.  We use alpha = 1, beta = 3/8, giving us results with a
-   *  largest error less than 7% compared to the exact value.
+   * Approximate sqrt(x*x+y*y) using the `alpha max plus beta min'
+   * algorithm.  We use alpha = 1, beta = 3/8, giving us results with a
+   * largest error less than 7% compared to the exact value.
    */
 #define FT_HYPOT( x, y )                 \
           ( x = FT_ABS( x ),             \
@@ -222,10 +222,10 @@
 #endif
 
 #define FT_THROW( e )                               \
-          ( FT_Throw( FT_ERR_CAT( ErrRaster, e ),   \
+          ( FT_Throw( FT_ERR_CAT( ErrRaster_, e ),  \
                       __LINE__,                     \
                       __FILE__ )                  | \
-            FT_ERR_CAT( ErrRaster, e )            )
+            FT_ERR_CAT( ErrRaster_, e )           )
 
 #else /* !FT_DEBUG_LEVEL_TRACE */
 
@@ -279,8 +279,6 @@
 
 #include "ftsmerrs.h"
 
-#include "ftspic.h"
-
 #define Smooth_Err_Invalid_Mode     Smooth_Err_Cannot_Render_Glyph
 #define Smooth_Err_Memory_Overflow  Smooth_Err_Out_Of_Memory
 #define ErrRaster_Memory_Overflow   Smooth_Err_Out_Of_Memory
@@ -395,10 +393,10 @@
     ( sizeof( long ) * FT_CHAR_BIT - PIXEL_BITS ) )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*   TYPE DEFINITIONS                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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   */
@@ -516,10 +514,10 @@
 #endif /* FT_DEBUG_LEVEL_TRACE */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Record the current cell in the table.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Record the current cell in the table.
+   */
   static void
   gray_record_cell( RAS_ARG )
   {
@@ -561,10 +559,10 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Set the current cell to a new position.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Set the current cell to a new position.
+   */
   static void
   gray_set_cell( RAS_ARG_ TCoord  ex,
                           TCoord  ey )
@@ -598,10 +596,10 @@
 
 #ifndef FT_LONG64
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Render a scanline as one or more cells.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Render a scanline as one or more cells.
+   */
   static void
   gray_render_scanline( RAS_ARG_ TCoord  ey,
                                  TPos    x1,
@@ -696,10 +694,10 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Render a given line as a series of scanlines.                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Render a given line as a series of scanlines.
+   */
   static void
   gray_render_line( RAS_ARG_ TPos  to_x,
                              TPos  to_y )
@@ -837,10 +835,10 @@
 
 #else
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Render a straight line across multiple cells in any direction.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Render a straight line across multiple cells in any direction.
+   */
   static void
   gray_render_line( RAS_ARG_ TPos  to_x,
                              TPos  to_y )
@@ -1330,40 +1328,43 @@
 
 #ifdef STANDALONE_
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  The following functions should only compile in stand-alone mode,     */
-  /*  i.e., when building this component without the rest of FreeType.     */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * The following functions should only compile in stand-alone mode,
+   * i.e., when building this component without the rest of FreeType.
+   *
+   */
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Decompose                                               */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Walk over an outline's structure to decompose it into individual   */
-  /*    segments and Bézier 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>                                                              */
-  /*    Error code.  0 means success.                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   FT_Outline_Decompose
+   *
+   * @Description:
+   *   Walk over an outline's structure to decompose it into individual
+   *   segments and Bézier 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:
+   *   Error code.  0 means success.
+   */
   static int
   FT_Outline_Decompose( const FT_Outline*        outline,
                         const FT_Outline_Funcs*  func_interface,
@@ -1610,81 +1611,6 @@
     return FT_THROW( Invalid_Outline );
   }
 
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Outline_Get_CBox                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Return an outline's `control box'.  The control box encloses all   */
-  /*    the outline's points, including Bézier 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  */
-  /*    that contains Bézier 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.                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See @FT_Glyph_Get_CBox for a discussion of tricky fonts.           */
-  /*                                                                       */
-
-  static void
-  FT_Outline_Get_CBox( const FT_Outline*  outline,
-                       FT_BBox           *acbox )
-  {
-    TPos  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++ )
-        {
-          TPos  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;
-    }
-  }
-
 #endif /* STANDALONE_ */
 
 
@@ -1702,19 +1628,20 @@
 
 
   static int
-  gray_convert_glyph_inner( RAS_ARG )
+  gray_convert_glyph_inner( RAS_ARG,
+                            int  continued )
   {
-
     volatile int  error = 0;
 
-#ifdef FT_CONFIG_OPTION_PIC
-      FT_Outline_Funcs func_interface;
-      Init_Class_func_interface(&func_interface);
-#endif
 
     if ( ft_setjmp( ras.jump_buffer ) == 0 )
     {
+      if ( continued )
+        FT_Trace_Disable();
       error = FT_Outline_Decompose( &ras.outline, &func_interface, &ras );
+      if ( continued )
+        FT_Trace_Enable();
+
       if ( !ras.invalid )
         gray_record_cell( RAS_VAR );
 
@@ -1741,8 +1668,6 @@
   {
     const TCoord  yMin = ras.min_ey;
     const TCoord  yMax = ras.max_ey;
-    const TCoord  xMin = ras.min_ex;
-    const TCoord  xMax = ras.max_ex;
 
     TCell    buffer[FT_MAX_GRAY_POOL];
     size_t   height = (size_t)( yMax - yMin );
@@ -1751,6 +1676,8 @@
     TCoord   bands[32];  /* enough to accommodate bisections */
     TCoord*  band;
 
+    int  continued = 0;
+
 
     /* set up vertical bands */
     if ( height > n )
@@ -1774,8 +1701,8 @@
       ras.max_ey = FT_MIN( y, yMax );
 
       band    = bands;
-      band[1] = xMin;
-      band[0] = xMax;
+      band[1] = ras.min_ey;
+      band[0] = ras.max_ey;
 
       do
       {
@@ -1787,10 +1714,11 @@
 
         ras.num_cells = 0;
         ras.invalid   = 1;
-        ras.min_ex    = band[1];
-        ras.max_ex    = band[0];
+        ras.min_ey    = band[1];
+        ras.max_ey    = band[0];
 
-        error = gray_convert_glyph_inner( RAS_VAR );
+        error     = gray_convert_glyph_inner( RAS_VAR, continued );
+        continued = 1;
 
         if ( !error )
         {
@@ -1827,7 +1755,7 @@
   {
     const FT_Outline*  outline    = (const FT_Outline*)params->source;
     const FT_Bitmap*   target_map = params->target;
-    FT_BBox            cbox, clip;
+    FT_BBox            clip;
 
 #ifndef FT_STATIC_RASTER
     gray_TWorker  worker[1];
@@ -1890,21 +1818,11 @@
       ras.render_span_data = NULL;
     }
 
-    FT_Outline_Get_CBox( outline, &cbox );
-
-    /* reject too large outline coordinates */
-    if ( cbox.xMin < -0x1000000L || cbox.xMax > 0x1000000L ||
-         cbox.yMin < -0x1000000L || cbox.yMax > 0x1000000L )
-      return FT_THROW( Invalid_Outline );
-
-    /* truncate the bounding box to integer pixels */
-    cbox.xMin = cbox.xMin >> 6;
-    cbox.yMin = cbox.yMin >> 6;
-    cbox.xMax = ( cbox.xMax + 63 ) >> 6;
-    cbox.yMax = ( cbox.yMax + 63 ) >> 6;
-
     /* compute clipping box */
-    if ( !( params->flags & FT_RASTER_FLAG_DIRECT ) )
+    if ( params->flags & FT_RASTER_FLAG_DIRECT &&
+         params->flags & FT_RASTER_FLAG_CLIP   )
+      clip = params->clip_box;
+    else
     {
       /* compute clip box from target pixmap */
       clip.xMin = 0;
@@ -1912,21 +1830,12 @@
       clip.xMax = (FT_Pos)target_map->width;
       clip.yMax = (FT_Pos)target_map->rows;
     }
-    else if ( params->flags & FT_RASTER_FLAG_CLIP )
-      clip = params->clip_box;
-    else
-    {
-      clip.xMin = -32768L;
-      clip.yMin = -32768L;
-      clip.xMax =  32767L;
-      clip.yMax =  32767L;
-    }
 
     /* clip to target bitmap, exit if nothing to do */
-    ras.min_ex = FT_MAX( cbox.xMin, clip.xMin );
-    ras.min_ey = FT_MAX( cbox.yMin, clip.yMin );
-    ras.max_ex = FT_MIN( cbox.xMax, clip.xMax );
-    ras.max_ey = FT_MIN( cbox.yMax, clip.yMax );
+    ras.min_ex = clip.xMin;
+    ras.min_ey = clip.yMin;
+    ras.max_ex = clip.xMax;
+    ras.max_ey = clip.yMax;
 
     if ( ras.max_ex <= ras.min_ex || ras.max_ey <= ras.min_ey )
       return 0;
--- a/src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/smooth/ftgrays.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftgrays.h                                                              */
-/*                                                                         */
-/*    FreeType smooth renderer declaration                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftgrays.h
+ *
+ *   FreeType smooth renderer declaration
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -28,19 +28,18 @@
 #include "ftimage.h"
 #else
 #include <ft2build.h>
-#include FT_CONFIG_CONFIG_H /* for FT_CONFIG_OPTION_PIC */
 #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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
--- a/src/java.desktop/share/native/libfreetype/src/smooth/ftsmerrs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/smooth/ftsmerrs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsmerrs.h                                                             */
-/*                                                                         */
-/*    smooth renderer error codes (specification only).                    */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsmerrs.h
+ *
+ *   smooth renderer error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the smooth renderer error enumeration
+   * constants.
+   *
+   */
 
 #ifndef FTSMERRS_H_
 #define FTSMERRS_H_
--- a/src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsmooth.c                                                             */
-/*                                                                         */
-/*    Anti-aliasing renderer interface (body).                             */
-/*                                                                         */
-/*  Copyright 2000-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsmooth.c
+ *
+ *   Anti-aliasing renderer interface (body).
+ *
+ * Copyright (C) 2000-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -22,7 +22,6 @@
 #include FT_OUTLINE_H
 #include "ftsmooth.h"
 #include "ftgrays.h"
-#include "ftspic.h"
 
 #include "ftsmerrs.h"
 
@@ -31,6 +30,26 @@
   static FT_Error
   ft_smooth_init( FT_Renderer  render )
   {
+
+#ifndef FT_CONFIG_OPTION_SUBPIXEL_RENDERING
+
+    FT_Vector*  sub = render->root.library->lcd_geometry;
+
+
+    /* set up default subpixel geometry for striped RGB panels. */
+    sub[0].x = -21;
+    sub[0].y = 0;
+    sub[1].x = 0;
+    sub[1].y = 0;
+    sub[2].x = 21;
+    sub[2].y = 0;
+
+#elif 0   /* or else, once ClearType patents expire */
+
+    FT_Library_SetLcdFilter( render->root.library, FT_LCD_FILTER_DEFAULT );
+
+#endif
+
     render->clazz->raster_class->raster_reset( render->raster, NULL, 0 );
 
     return 0;
@@ -130,7 +149,11 @@
       slot->internal->flags &= ~FT_GLYPH_OWN_BITMAP;
     }
 
-    ft_glyphslot_preset_bitmap( slot, mode, origin );
+    if ( ft_glyphslot_preset_bitmap( slot, mode, origin ) )
+    {
+      error = FT_THROW( Raster_Overflow );
+      goto Exit;
+    }
 
     /* allocate new one */
     if ( FT_ALLOC_MULT( bitmap->buffer, bitmap->rows, bitmap->pitch ) )
@@ -235,33 +258,40 @@
       unsigned int  width  = bitmap->width;
       int           pitch  = bitmap->pitch;
 
+      FT_Vector*  sub = slot->library->lcd_geometry;
 
-      /* Render 3 separate monochrome bitmaps, shifting the outline  */
-      /* by 1/3 pixel.                                               */
+
+      /* Render 3 separate monochrome bitmaps, shifting the outline.  */
       width /= 3;
 
-      bitmap->buffer += width;
-
+      FT_Outline_Translate( outline,
+                            -sub[0].x,
+                            -sub[0].y );
       error = render->raster_render( render->raster, &params );
       if ( error )
         goto Exit;
 
-      FT_Outline_Translate( outline, -21, 0 );
-      x_shift        -= 21;
       bitmap->buffer += width;
-
+      FT_Outline_Translate( outline,
+                            sub[0].x - sub[1].x,
+                            sub[0].y - sub[1].y );
       error = render->raster_render( render->raster, &params );
+      bitmap->buffer -= width;
       if ( error )
         goto Exit;
 
-      FT_Outline_Translate( outline,  42, 0 );
-      x_shift        += 42;
+      bitmap->buffer += 2 * width;
+      FT_Outline_Translate( outline,
+                            sub[1].x - sub[2].x,
+                            sub[1].y - sub[2].y );
+      error = render->raster_render( render->raster, &params );
       bitmap->buffer -= 2 * width;
-
-      error = render->raster_render( render->raster, &params );
       if ( error )
         goto Exit;
 
+      x_shift -= sub[2].x;
+      y_shift -= sub[2].y;
+
       /* XXX: Rearrange the bytes according to FT_PIXEL_MODE_LCD.    */
       /* XXX: It is more efficient to render every third byte above. */
 
@@ -286,34 +316,43 @@
     {
       int  pitch  = bitmap->pitch;
 
+      FT_Vector*  sub = slot->library->lcd_geometry;
 
-      /* Render 3 separate monochrome bitmaps, shifting the outline  */
-      /* by 1/3 pixel. Triple the pitch to render on each third row. */
+
+      /* Render 3 separate monochrome bitmaps, shifting the outline. */
+      /* Notice that the subpixel geometry vectors are rotated.      */
+      /* Triple the pitch to render on each third row.               */
       bitmap->pitch *= 3;
       bitmap->rows  /= 3;
 
-      bitmap->buffer += pitch;
-
+      FT_Outline_Translate( outline,
+                            -sub[0].y,
+                            sub[0].x );
       error = render->raster_render( render->raster, &params );
       if ( error )
         goto Exit;
 
-      FT_Outline_Translate( outline, 0,  21 );
-      y_shift        += 21;
       bitmap->buffer += pitch;
-
+      FT_Outline_Translate( outline,
+                            sub[0].y - sub[1].y,
+                            sub[1].x - sub[0].x );
       error = render->raster_render( render->raster, &params );
+      bitmap->buffer -= pitch;
       if ( error )
         goto Exit;
 
-      FT_Outline_Translate( outline, 0, -42 );
-      y_shift        -= 42;
+      bitmap->buffer += 2 * pitch;
+      FT_Outline_Translate( outline,
+                            sub[1].y - sub[2].y,
+                            sub[2].x - sub[1].x );
+      error = render->raster_render( render->raster, &params );
       bitmap->buffer -= 2 * pitch;
-
-      error = render->raster_render( render->raster, &params );
       if ( error )
         goto Exit;
 
+      x_shift -= sub[2].y;
+      y_shift += sub[2].x;
+
       bitmap->pitch /= 3;
       bitmap->rows  *= 3;
     }
@@ -403,7 +442,7 @@
     (FT_Renderer_GetCBoxFunc)  ft_smooth_get_cbox,   /* get_glyph_cbox  */
     (FT_Renderer_SetModeFunc)  ft_smooth_set_mode,   /* set_mode        */
 
-    (FT_Raster_Funcs*)&FT_GRAYS_RASTER_GET           /* raster_class    */
+    (FT_Raster_Funcs*)&ft_grays_raster               /* raster_class    */
   )
 
 
@@ -430,7 +469,7 @@
     (FT_Renderer_GetCBoxFunc)  ft_smooth_get_cbox,    /* get_glyph_cbox  */
     (FT_Renderer_SetModeFunc)  ft_smooth_set_mode,    /* set_mode        */
 
-    (FT_Raster_Funcs*)&FT_GRAYS_RASTER_GET            /* raster_class    */
+    (FT_Raster_Funcs*)&ft_grays_raster                /* raster_class    */
   )
 
 
@@ -457,7 +496,7 @@
     (FT_Renderer_GetCBoxFunc)  ft_smooth_get_cbox,      /* get_glyph_cbox  */
     (FT_Renderer_SetModeFunc)  ft_smooth_set_mode,      /* set_mode        */
 
-    (FT_Raster_Funcs*)&FT_GRAYS_RASTER_GET              /* raster_class    */
+    (FT_Raster_Funcs*)&ft_grays_raster                  /* raster_class    */
   )
 
 
--- a/src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/smooth/ftsmooth.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsmooth.h                                                             */
-/*                                                                         */
-/*    Anti-aliasing renderer interface (specification).                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ftsmooth.h
+ *
+ *   Anti-aliasing renderer interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/smooth/ftspic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftspic.c                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for smooth module.   */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "ftspic.h"
-#include "ftsmerrs.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from ftgrays.c */
-  void
-  FT_Init_Class_ft_grays_raster( FT_Raster_Funcs*  funcs );
-
-
-  void
-  ft_smooth_renderer_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->smooth )
-    {
-      SmoothPIC*  container = (SmoothPIC*)pic_container->smooth;
-
-
-      if ( --container->ref_count )
-        return;
-
-      FT_FREE( container );
-      pic_container->smooth = NULL;
-    }
-  }
-
-
-  FT_Error
-  ft_smooth_renderer_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    SmoothPIC*         container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* since this function also serve smooth_lcd and smooth_lcdv renderers,
-       it implements reference counting */
-    if ( pic_container->smooth )
-    {
-      ((SmoothPIC*)pic_container->smooth)->ref_count++;
-      return error;
-    }
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->smooth = container;
-
-    container->ref_count = 1;
-
-    /* initialize pointer table -                       */
-    /* this is how the module usually expects this data */
-    FT_Init_Class_ft_grays_raster( &container->ft_grays_raster );
-
-    return error;
-  }
-
-
-  /* re-route these init and free functions to the above functions */
-  FT_Error
-  ft_smooth_lcd_renderer_class_pic_init( FT_Library  library )
-  {
-    return ft_smooth_renderer_class_pic_init( library );
-  }
-
-
-  void
-  ft_smooth_lcd_renderer_class_pic_free( FT_Library  library )
-  {
-    ft_smooth_renderer_class_pic_free( library );
-  }
-
-
-  FT_Error
-  ft_smooth_lcdv_renderer_class_pic_init( FT_Library  library )
-  {
-    return ft_smooth_renderer_class_pic_init( library );
-  }
-
-
-  void
-  ft_smooth_lcdv_renderer_class_pic_free( FT_Library  library )
-  {
-    ft_smooth_renderer_class_pic_free( library );
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/smooth/ftspic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,75 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftspic.h                                                               */
-/*                                                                         */
-/*    The FreeType position independent code services for smooth module.   */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 FTSPIC_H_
-#define FTSPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-FT_BEGIN_HEADER
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define FT_GRAYS_RASTER_GET  ft_grays_raster
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-  typedef struct  SmoothPIC_
-  {
-    int              ref_count;
-    FT_Raster_Funcs  ft_grays_raster;
-
-  } SmoothPIC;
-
-
-#define GET_PIC( lib ) \
-          ( (SmoothPIC*)( (lib)->pic_container.smooth ) )
-#define FT_GRAYS_RASTER_GET  ( GET_PIC( library )->ft_grays_raster )
-
-
-  /* see ftspic.c for the implementation */
-  void
-  ft_smooth_renderer_class_pic_free( FT_Library  library );
-
-  void
-  ft_smooth_lcd_renderer_class_pic_free( FT_Library  library );
-
-  void
-  ft_smooth_lcdv_renderer_class_pic_free( FT_Library  library );
-
-  FT_Error
-  ft_smooth_renderer_class_pic_init( FT_Library  library );
-
-  FT_Error
-  ft_smooth_lcd_renderer_class_pic_init( FT_Library  library );
-
-  FT_Error
-  ft_smooth_lcdv_renderer_class_pic_init( FT_Library  library );
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-FT_END_HEADER
-
-#endif /* FTSPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttdriver.c                                                             */
-/*                                                                         */
-/*    TrueType font driver implementation (body).                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttdriver.c
+ *
+ *   TrueType font driver implementation (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -43,20 +43,19 @@
 
 #include "tterrors.h"
 
-#include "ttpic.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  ttdriver
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
   static FT_Error
@@ -164,38 +163,42 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_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
   tt_get_kerning( FT_Face     ttface,          /* TT_Face */
                   FT_UInt     left_glyph,
@@ -384,32 +387,36 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_glyph_load                                                      */
-  /*                                                                       */
-  /* <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_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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_glyph_load
+   *
+   * @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_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.
+   */
   static FT_Error
   tt_glyph_load( FT_GlyphSlot  ttslot,      /* TT_GlyphSlot */
                  FT_Size       ttsize,      /* TT_Size      */
@@ -464,7 +471,7 @@
                       ? &ttsize->metrics
                       : &size->hinted_metrics;
 
-    /* now load the glyph outline if necessary */
+    /* now fill in the glyph slot with outline/bitmap/layered */
     error = TT_Load_Glyph( size, slot, glyph_index, load_flags );
 
     /* force drop-out mode to 2 - irrelevant now */
@@ -491,17 +498,19 @@
   FT_DEFINE_SERVICE_MULTIMASTERSREC(
     tt_service_gx_multi_masters,
 
-    (FT_Get_MM_Func)        NULL,                   /* get_mm         */
-    (FT_Set_MM_Design_Func) NULL,                   /* set_mm_design  */
-    (FT_Set_MM_Blend_Func)  TT_Set_MM_Blend,        /* set_mm_blend   */
-    (FT_Get_MM_Blend_Func)  TT_Get_MM_Blend,        /* get_mm_blend   */
-    (FT_Get_MM_Var_Func)    TT_Get_MM_Var,          /* get_mm_var     */
-    (FT_Set_Var_Design_Func)TT_Set_Var_Design,      /* set_var_design */
-    (FT_Get_Var_Design_Func)TT_Get_Var_Design,      /* get_var_design */
-    (FT_Set_Instance_Func)  TT_Set_Named_Instance,  /* set_instance   */
+    (FT_Get_MM_Func)             NULL,                  /* get_mm              */
+    (FT_Set_MM_Design_Func)      NULL,                  /* set_mm_design       */
+    (FT_Set_MM_Blend_Func)       TT_Set_MM_Blend,       /* set_mm_blend        */
+    (FT_Get_MM_Blend_Func)       TT_Get_MM_Blend,       /* get_mm_blend        */
+    (FT_Get_MM_Var_Func)         TT_Get_MM_Var,         /* get_mm_var          */
+    (FT_Set_Var_Design_Func)     TT_Set_Var_Design,     /* set_var_design      */
+    (FT_Get_Var_Design_Func)     TT_Get_Var_Design,     /* get_var_design      */
+    (FT_Set_Instance_Func)       TT_Set_Named_Instance, /* set_instance        */
+    (FT_Set_MM_WeightVector_Func)NULL,                  /* set_mm_weightvector */
+    (FT_Get_MM_WeightVector_Func)NULL,                  /* get_mm_weightvector */
 
-    (FT_Get_Var_Blend_Func) tt_get_var_blend,       /* get_var_blend  */
-    (FT_Done_Blend_Func)    tt_done_blend           /* done_blend     */
+    (FT_Get_Var_Blend_Func)      tt_get_var_blend,      /* get_var_blend       */
+    (FT_Done_Blend_Func)         tt_done_blend          /* done_blend          */
   )
 
   FT_DEFINE_SERVICE_METRICSVARIATIONSREC(
@@ -548,19 +557,19 @@
     tt_services,
 
     FT_SERVICE_ID_FONT_FORMAT,        FT_FONT_FORMAT_TRUETYPE,
-    FT_SERVICE_ID_MULTI_MASTERS,      &TT_SERVICE_GX_MULTI_MASTERS_GET,
-    FT_SERVICE_ID_METRICS_VARIATIONS, &TT_SERVICE_METRICS_VARIATIONS_GET,
+    FT_SERVICE_ID_MULTI_MASTERS,      &tt_service_gx_multi_masters,
+    FT_SERVICE_ID_METRICS_VARIATIONS, &tt_service_metrics_variations,
     FT_SERVICE_ID_TRUETYPE_ENGINE,    &tt_service_truetype_engine,
-    FT_SERVICE_ID_TT_GLYF,            &TT_SERVICE_TRUETYPE_GLYF_GET,
-    FT_SERVICE_ID_PROPERTIES,         &TT_SERVICE_PROPERTIES_GET )
+    FT_SERVICE_ID_TT_GLYF,            &tt_service_truetype_glyf,
+    FT_SERVICE_ID_PROPERTIES,         &tt_service_properties )
 #else
   FT_DEFINE_SERVICEDESCREC4(
     tt_services,
 
     FT_SERVICE_ID_FONT_FORMAT,     FT_FONT_FORMAT_TRUETYPE,
     FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine,
-    FT_SERVICE_ID_TT_GLYF,         &TT_SERVICE_TRUETYPE_GLYF_GET,
-    FT_SERVICE_ID_PROPERTIES,      &TT_SERVICE_PROPERTIES_GET )
+    FT_SERVICE_ID_TT_GLYF,         &tt_service_truetype_glyf,
+    FT_SERVICE_ID_PROPERTIES,      &tt_service_properties )
 #endif
 
 
@@ -574,26 +583,15 @@
     SFNT_Service         sfnt;
 
 
-    /* TT_SERVICES_GET dereferences `library' in PIC mode */
-#ifdef FT_CONFIG_OPTION_PIC
+    result = ft_service_list_lookup( tt_services, tt_interface );
+    if ( result )
+      return result;
+
     if ( !driver )
       return NULL;
     library = driver->library;
     if ( !library )
       return NULL;
-#endif
-
-    result = ft_service_list_lookup( TT_SERVICES_GET, tt_interface );
-    if ( result )
-      return result;
-
-#ifndef FT_CONFIG_OPTION_PIC
-    if ( !driver )
-      return NULL;
-    library = driver->library;
-    if ( !library )
-      return NULL;
-#endif
 
     /* only return the default interface from the SFNT module */
     sfntd = FT_Get_Module( library, "sfnt" );
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttdriver.h                                                             */
-/*                                                                         */
-/*    High-level TrueType driver interface (specification).                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttdriver.h
+ *
+ *   High-level TrueType driver interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,10 +26,8 @@
 
 FT_BEGIN_HEADER
 
-
   FT_DECLARE_DRIVER( tt_driver_class )
 
-
 FT_END_HEADER
 
 #endif /* TTDRIVER_H_ */
--- a/src/java.desktop/share/native/libfreetype/src/truetype/tterrors.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/tterrors.h	Thu May 09 16:09:39 2019 -0700
@@ -1,27 +1,27 @@
-/***************************************************************************/
-/*                                                                         */
-/*  tterrors.h                                                             */
-/*                                                                         */
-/*    TrueType error codes (specification only).                           */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * tterrors.h
+ *
+ *   TrueType error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the TrueType error enumeration
+   * constants.
+   *
+   */
 
 #ifndef TTERRORS_H_
 #define TTERRORS_H_
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttgload.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttgload.c                                                              */
-/*                                                                         */
-/*    TrueType Glyph Loader (body).                                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttgload.c
+ *
+ *   TrueType Glyph Loader (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -38,20 +38,35 @@
 #include "ttsubpix.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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 glyph flags.                                                */
-  /*                                                                       */
+#define FT_COMPONENT  ttgload
+
+
+  /**************************************************************************
+   *
+   * Simple glyph flags.
+   */
+#define ON_CURVE_POINT  0x01  /* same value as FT_CURVE_TAG_ON            */
+#define X_SHORT_VECTOR  0x02
+#define Y_SHORT_VECTOR  0x04
+#define REPEAT_FLAG     0x08
+#define X_POSITIVE      0x10  /* two meanings depending on X_SHORT_VECTOR */
+#define SAME_X          0x10
+#define Y_POSITIVE      0x20  /* two meanings depending on Y_SHORT_VECTOR */
+#define SAME_Y          0x20
+#define OVERLAP_SIMPLE  0x40  /* we ignore this value                     */
+
+
+  /**************************************************************************
+   *
+   * Composite glyph flags.
+   */
 #define ARGS_ARE_WORDS             0x0001
 #define ARGS_ARE_XY_VALUES         0x0002
 #define ROUND_XY_TO_GRID           0x0004
@@ -62,15 +77,15 @@
 #define WE_HAVE_A_2X2              0x0080
 #define WE_HAVE_INSTR              0x0100
 #define USE_MY_METRICS             0x0200
-#define OVERLAP_COMPOUND           0x0400
+#define OVERLAP_COMPOUND           0x0400  /* we ignore this value */
 #define SCALED_COMPONENT_OFFSET    0x0800
 #define UNSCALED_COMPONENT_OFFSET  0x1000
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Return the horizontal metrics in font units for a given glyph.        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Return the horizontal metrics in font units for a given glyph.
+   */
   FT_LOCAL_DEF( void )
   TT_Get_HMetrics( TT_Face     face,
                    FT_UInt     idx,
@@ -84,11 +99,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Return the vertical metrics in font units for a given glyph.          */
-  /* See function `tt_loader_set_pp' below for explanations.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Return the vertical metrics in font units for a given glyph.
+   * See function `tt_loader_set_pp' below for explanations.
+   */
   FT_LOCAL_DEF( void )
   TT_Get_VMetrics( TT_Face     face,
                    FT_UInt     idx,
@@ -250,13 +265,13 @@
 #endif /* FT_CONFIG_OPTION_INCREMENTAL */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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,
@@ -267,12 +282,9 @@
     FT_Error   error;
     FT_Stream  stream = loader->stream;
 
-    /* for non-debug mode */
     FT_UNUSED( glyph_index );
 
 
-    FT_TRACE4(( "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;
@@ -337,7 +349,7 @@
     FT_Byte         *flag, *flag_limit;
     FT_Byte         c, count;
     FT_Vector       *vec, *vec_limit;
-    FT_Pos          x;
+    FT_Pos          x, y;
     FT_Short        *cont, *cont_limit, prev_cont;
     FT_Int          xy_size = 0;
 
@@ -382,6 +394,8 @@
         goto Invalid_Outline;
     }
 
+    FT_TRACE5(( "  # of points: %d\n", n_points ));
+
     /* note that we will add four phantom points later */
     error = FT_GLYPHLOADER_CHECK_POINTS( gloader, n_points + 4, 0 );
     if ( error )
@@ -452,7 +466,7 @@
         goto Invalid_Outline;
 
       *flag++ = c = FT_NEXT_BYTE( p );
-      if ( c & 8 )
+      if ( c & REPEAT_FLAG )
       {
         if ( p + 1 > limit )
           goto Invalid_Outline;
@@ -478,31 +492,29 @@
 
     for ( ; vec < vec_limit; vec++, flag++ )
     {
-      FT_Pos   y = 0;
-      FT_Byte  f = *flag;
-
-
-      if ( f & 2 )
+      FT_Pos   delta = 0;
+      FT_Byte  f     = *flag;
+
+
+      if ( f & X_SHORT_VECTOR )
       {
         if ( p + 1 > limit )
           goto Invalid_Outline;
 
-        y = (FT_Pos)FT_NEXT_BYTE( p );
-        if ( ( f & 16 ) == 0 )
-          y = -y;
+        delta = (FT_Pos)FT_NEXT_BYTE( p );
+        if ( !( f & X_POSITIVE ) )
+          delta = -delta;
       }
-      else if ( ( f & 16 ) == 0 )
+      else if ( !( f & SAME_X ) )
       {
         if ( p + 2 > limit )
           goto Invalid_Outline;
 
-        y = (FT_Pos)FT_NEXT_SHORT( p );
+        delta = (FT_Pos)FT_NEXT_SHORT( p );
       }
 
-      x     += y;
+      x     += delta;
       vec->x = x;
-      /* the cast is for stupid compilers */
-      *flag  = (FT_Byte)( f & ~( 2 | 16 ) );
     }
 
     /* reading the Y coordinates */
@@ -510,35 +522,36 @@
     vec       = gloader->current.outline.points;
     vec_limit = vec + n_points;
     flag      = (FT_Byte*)outline->tags;
-    x         = 0;
+    y         = 0;
 
     for ( ; vec < vec_limit; vec++, flag++ )
     {
-      FT_Pos   y = 0;
-      FT_Byte  f = *flag;
-
-
-      if ( f & 4 )
+      FT_Pos   delta = 0;
+      FT_Byte  f     = *flag;
+
+
+      if ( f & Y_SHORT_VECTOR )
       {
         if ( p + 1 > limit )
           goto Invalid_Outline;
 
-        y = (FT_Pos)FT_NEXT_BYTE( p );
-        if ( ( f & 32 ) == 0 )
-          y = -y;
+        delta = (FT_Pos)FT_NEXT_BYTE( p );
+        if ( !( f & Y_POSITIVE ) )
+          delta = -delta;
       }
-      else if ( ( f & 32 ) == 0 )
+      else if ( !( f & SAME_Y ) )
       {
         if ( p + 2 > limit )
           goto Invalid_Outline;
 
-        y = (FT_Pos)FT_NEXT_SHORT( p );
+        delta = (FT_Pos)FT_NEXT_SHORT( p );
       }
 
-      x     += y;
-      vec->y = x;
+      y     += delta;
+      vec->y = y;
+
       /* the cast is for stupid compilers */
-      *flag  = (FT_Byte)( f & FT_CURVE_TAG_ON );
+      *flag  = (FT_Byte)( f & ON_CURVE_POINT );
     }
 
     outline->n_points   = (FT_Short)n_points;
@@ -559,9 +572,10 @@
   TT_Load_Composite_Glyph( TT_Loader  loader )
   {
     FT_Error        error;
-    FT_Byte*        p       = loader->cursor;
-    FT_Byte*        limit   = loader->limit;
-    FT_GlyphLoader  gloader = loader->gloader;
+    FT_Byte*        p          = loader->cursor;
+    FT_Byte*        limit      = loader->limit;
+    FT_GlyphLoader  gloader    = loader->gloader;
+    FT_Long         num_glyphs = loader->face->root.num_glyphs;
     FT_SubGlyph     subglyph;
     FT_UInt         num_subglyphs;
 
@@ -590,6 +604,11 @@
       subglyph->flags = FT_NEXT_USHORT( p );
       subglyph->index = FT_NEXT_USHORT( p );
 
+      /* we reject composites that have components */
+      /* with invalid glyph indices                */
+      if ( subglyph->index >= num_glyphs )
+        goto Invalid_Composite;
+
       /* check space */
       count = 2;
       if ( subglyph->flags & ARGS_ARE_WORDS )
@@ -768,15 +787,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Hint_Glyph                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Hint the glyph using the zone prepared by the caller.  Note that   */
-  /*    the zone is supposed to include four phantom points.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Hint_Glyph
+   *
+   * @Description:
+   *   Hint the glyph using the zone prepared by the caller.  Note that
+   *   the zone is supposed to include four phantom points.
+   */
   static FT_Error
   TT_Hint_Glyph( TT_Loader  loader,
                  FT_Bool    is_composite )
@@ -797,15 +816,9 @@
 
 
 #ifdef TT_USE_BYTECODE_INTERPRETER
-    if ( loader->glyph->control_len > 0xFFFFL )
-    {
-      FT_TRACE1(( "TT_Hint_Glyph: too long instructions" ));
-      FT_TRACE1(( " (0x%lx byte) is truncated\n",
-                  loader->glyph->control_len ));
-    }
     n_ins = loader->glyph->control_len;
 
-    /* save original point position in org */
+    /* save original point positions in `org' array */
     if ( n_ins > 0 )
       FT_ARRAY_COPY( zone->org, zone->cur, zone->n_points );
 
@@ -896,16 +909,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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  loader )
   {
@@ -1071,15 +1084,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Process_Composite_Component                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Once a composite component has been loaded, it needs to be         */
-  /*    processed.  Usually, this means transforming and translating.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Process_Composite_Component
+   *
+   * @Description:
+   *   Once a composite component has been loaded, it needs to be
+   *   processed.  Usually, this means transforming and translating.
+   */
   static FT_Error
   TT_Process_Composite_Component( TT_Loader    loader,
                                   FT_SubGlyph  subglyph,
@@ -1153,10 +1166,10 @@
 
 #if 0
 
-        /*******************************************************************/
-        /*                                                                 */
-        /* This algorithm is what Apple documents.  But it doesn't work.   */
-        /*                                                                 */
+        /********************************************************************
+         *
+         * 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
@@ -1178,10 +1191,10 @@
 
 #else /* 1 */
 
-        /*******************************************************************/
-        /*                                                                 */
-        /* This algorithm is a guess and works much better than the above. */
-        /*                                                                 */
+        /********************************************************************
+         *
+         * This algorithm is a guess and works much better than the above.
+         */
         FT_Fixed  mac_xscale = FT_Hypot( subglyph->transform.xx,
                                          subglyph->transform.xy );
         FT_Fixed  mac_yscale = FT_Hypot( subglyph->transform.yy,
@@ -1239,16 +1252,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Process_Composite_Glyph                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This is slightly different from TT_Process_Simple_Glyph, in that   */
-  /*    its sole purpose is to hint the glyph.  Thus this function is      */
-  /*    only available when bytecode interpreter is enabled.               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Process_Composite_Glyph
+   *
+   * @Description:
+   *   This is slightly different from TT_Process_Simple_Glyph, in that
+   *   its sole purpose is to hint the glyph.  Thus this function is
+   *   only available when bytecode interpreter is enabled.
+   */
   static FT_Error
   TT_Process_Composite_Glyph( TT_Loader  loader,
                               FT_UInt    start_point,
@@ -1460,7 +1473,7 @@
     }
 #endif
 
-    use_aw_2 = (FT_Bool)( subpixel_hinting && grayscale );
+    use_aw_2 = FT_BOOL( subpixel_hinting && grayscale );
 
     loader->pp1.x = loader->bbox.xMin - loader->left_bearing;
     loader->pp1.y = 0;
@@ -1497,27 +1510,28 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    load_truetype_glyph                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Loads a given truetype glyph.  Handles composites and uses a       */
-  /*    TT_Loader object.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
                        FT_Bool    header_only )
   {
-    FT_Error        error        = FT_Err_Ok;
+    FT_Error        error   = FT_Err_Ok;
     FT_Fixed        x_scale, y_scale;
     FT_ULong        offset;
-    TT_Face         face         = loader->face;
-    FT_GlyphLoader  gloader      = loader->gloader;
-    FT_Bool         opened_frame = 0;
+    TT_Face         face    = loader->face;
+    FT_GlyphLoader  gloader = loader->gloader;
+
+    FT_Bool  opened_frame = 0;
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
     FT_StreamRec    inc_stream;
@@ -1550,16 +1564,16 @@
 
     loader->glyph_index = glyph_index;
 
-    if ( ( loader->load_flags & FT_LOAD_NO_SCALE ) == 0 )
+    if ( loader->load_flags & FT_LOAD_NO_SCALE )
+    {
+      x_scale = 0x10000L;
+      y_scale = 0x10000L;
+    }
+    else
     {
       x_scale = loader->size->metrics->x_scale;
       y_scale = loader->size->metrics->y_scale;
     }
-    else
-    {
-      x_scale = 0x10000L;
-      y_scale = 0x10000L;
-    }
 
     /* Set `offset' to the start of the glyph relative to the start of */
     /* the `glyf' table, and `byte_len' to the length of the glyph in  */
@@ -1617,38 +1631,36 @@
       if ( error )
         goto Exit;
 
-      opened_frame = 1;
-
       /* read glyph header first */
       error = face->read_glyph_header( loader );
+
+      face->forget_glyph_frame( loader );
+
       if ( error )
         goto Exit;
-
-      /* the metrics must be computed after loading the glyph header */
-      /* since we need the glyph's `yMax' value in case the vertical */
-      /* metrics must be emulated                                    */
-      error = tt_get_metrics( loader, glyph_index );
-      if ( error )
-        goto Exit;
-
-      if ( header_only )
-        goto Exit;
     }
 
+    /* a space glyph */
     if ( loader->byte_len == 0 || loader->n_contours == 0 )
     {
       loader->bbox.xMin = 0;
       loader->bbox.xMax = 0;
       loader->bbox.yMin = 0;
       loader->bbox.yMax = 0;
-
-      error = tt_get_metrics( loader, glyph_index );
-      if ( error )
-        goto Exit;
-
-      if ( header_only )
-        goto Exit;
-
+    }
+
+    /* the metrics must be computed after loading the glyph header */
+    /* since we need the glyph's `yMax' value in case the vertical */
+    /* metrics must be emulated                                    */
+    error = tt_get_metrics( loader, glyph_index );
+    if ( error )
+      goto Exit;
+
+    if ( header_only )
+      goto Exit;
+
+    if ( loader->byte_len == 0 || loader->n_contours == 0 )
+    {
       /* must initialize points before (possibly) overriding */
       /* glyph metrics from the incremental interface        */
       tt_loader_set_pp( loader );
@@ -1704,7 +1716,6 @@
         loader->pp4.x = points[3].x;
         loader->pp4.y = points[3].y;
 
-
         /* recalculate linear horizontal and vertical advances */
         /* if we don't have HVAR and VVAR, respectively        */
         if ( !( loader->face->variation_support & TT_FACE_FLAG_VAR_HADVANCE ) )
@@ -1745,6 +1756,16 @@
     /***********************************************************************/
     /***********************************************************************/
 
+    /* we now open a frame again, right after the glyph header */
+    /* (which consists of 10 bytes)                            */
+    error = face->access_glyph_frame( loader, glyph_index,
+                                      face->glyf_offset + offset + 10,
+                                      (FT_UInt)loader->byte_len - 10 );
+    if ( error )
+      goto Exit;
+
+    opened_frame = 1;
+
     /* if it is a simple glyph, load it */
 
     if ( loader->n_contours > 0 )
@@ -1790,7 +1811,6 @@
        * pointers with a width of at least 32 bits.
        */
 
-
       /* clear the nodes filled by sibling chains */
       node = ft_list_get_node_at( &loader->composites, recurse_count );
       for ( node2 = node; node2; node2 = node2->next )
@@ -2002,7 +2022,7 @@
           FT_Int  linear_vadvance;
 
 
-          /* Each time we call load_truetype_glyph in this loop, the   */
+          /* 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.                                */
@@ -2045,12 +2065,14 @@
           if ( num_points == num_base_points )
             continue;
 
-          /* gloader->base.outline consists of three parts:               */
-          /* 0 -(1)-> start_point -(2)-> num_base_points -(3)-> n_points. */
-          /*                                                              */
-          /* (1): exists from the beginning                               */
-          /* (2): components that have been loaded so far                 */
-          /* (3): the newly loaded component                              */
+          /* gloader->base.outline consists of three parts:           */
+          /*                                                          */
+          /* 0 ----> start_point ----> num_base_points ----> n_points */
+          /*    (1)               (2)                   (3)           */
+          /*                                                          */
+          /* (1) points that exist from the beginning                 */
+          /* (2) component points that have been loaded so far        */
+          /* (3) points of the newly loaded component                 */
           error = TT_Process_Composite_Component( loader,
                                                   subglyph,
                                                   start_point,
@@ -2132,7 +2154,7 @@
 
     glyph->metrics.horiBearingX = bbox.xMin;
     glyph->metrics.horiBearingY = bbox.yMax;
-    glyph->metrics.horiAdvance  = loader->pp2.x - loader->pp1.x;
+    glyph->metrics.horiAdvance  = SUB_LONG(loader->pp2.x, loader->pp1.x);
 
     /* Adjust advance width to the value contained in the hdmx table   */
     /* unless FT_LOAD_COMPUTE_METRICS is set or backward compatibility */
@@ -2276,13 +2298,13 @@
       /* XXX: for now, we have no better algorithm for the lsb, but it */
       /*      should work fine.                                        */
       /*                                                               */
-      glyph->metrics.vertBearingX = glyph->metrics.horiBearingX -
-                                      glyph->metrics.horiAdvance / 2;
+      glyph->metrics.vertBearingX = SUB_LONG( glyph->metrics.horiBearingX,
+                                              glyph->metrics.horiAdvance / 2 );
       glyph->metrics.vertBearingY = top;
       glyph->metrics.vertAdvance  = advance;
     }
 
-    return 0;
+    return FT_Err_Ok;
   }
 
 
@@ -2656,33 +2678,37 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttgload.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttgload.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttgload.h                                                              */
-/*                                                                         */
-/*    TrueType Glyph Loader (specification).                               */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttgload.h
+ *
+ *   TrueType Glyph Loader (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.c	Thu May 09 16:09:39 2019 -0700
@@ -1,42 +1,42 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttgxvar.c                                                              */
-/*                                                                         */
-/*    TrueType GX Font Variation loader                                    */
-/*                                                                         */
-/*  Copyright 2004-2018 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      */
-  /*                                                                       */
-  /*   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6[fgca]var.html */
-  /*                                                                       */
-  /* 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.                                       */
-  /*                                                                       */
-  /*************************************************************************/
+/****************************************************************************
+ *
+ * ttgxvar.c
+ *
+ *   TrueType GX Font Variation loader
+ *
+ * Copyright (C) 2004-2019 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
+   *
+   *   https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6[fgca]var.html
+   *
+   * 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>
@@ -67,14 +67,23 @@
                         : (stream)->limit
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /* some macros we need */
+#define FT_fdot14ToFixed( x )                \
+        ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
+#define FT_intToFixed( i )                    \
+        ( (FT_Fixed)( (FT_ULong)(i) << 16 ) )
+#define FT_fixedToInt( x )                                   \
+        ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
+
+
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  ttgxvar
 
 
   /*************************************************************************/
@@ -86,12 +95,12 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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.
+   */
 
   /* ensure that value `0' has the same width as a pointer */
 #define ALL_POINTS  (FT_UShort*)~(FT_PtrDist)0
@@ -101,29 +110,32 @@
 #define GX_PT_POINT_RUN_COUNT_MASK  0x7FU
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                      */
-  /*                                                                       */
-  /*    size      :: The size of the table holding the data.               */
-  /*                                                                       */
-  /* <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.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   size ::
+   *     The size of the table holding the data.
+   *
+   * @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_ULong   size,
@@ -211,34 +223,41 @@
 #define GX_DT_DELTA_RUN_COUNT_MASK  0x3FU
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                      */
-  /*                                                                       */
-  /*    size      :: The size of the table holding the data.               */
-  /*                                                                       */
-  /*    delta_cnt :: The number of deltas 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*
+  /**************************************************************************
+   *
+   * @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.
+   *
+   *   size ::
+   *     The size of the table holding the data.
+   *
+   *   delta_cnt ::
+   *     The number of deltas to be read.
+   *
+   * @Return:
+   *   An array of FT_Fixed 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.)
+   *
+   *   We use FT_Fixed to avoid accumulation errors while summing up all
+   *   deltas (the rounding to integer values happens as the very last
+   *   step).
+   */
+  static FT_Fixed*
   ft_var_readpackeddeltas( FT_Stream  stream,
                            FT_ULong   size,
                            FT_UInt    delta_cnt )
   {
-    FT_Short  *deltas = NULL;
+    FT_Fixed  *deltas = NULL;
     FT_UInt    runcnt, cnt;
     FT_UInt    i, j;
     FT_Memory  memory = stream->memory;
@@ -272,13 +291,13 @@
       {
         /* `runcnt' shorts from the stack */
         for ( j = 0; j <= cnt && i < delta_cnt; j++ )
-          deltas[i++] = FT_GET_SHORT();
+          deltas[i++] = FT_intToFixed( FT_GET_SHORT() );
       }
       else
       {
         /* `runcnt' signed bytes from the stack */
         for ( j = 0; j <= cnt && i < delta_cnt; j++ )
-          deltas[i++] = FT_GET_CHAR();
+          deltas[i++] = FT_intToFixed( FT_GET_CHAR() );
       }
 
       if ( j <= cnt )
@@ -293,18 +312,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 )
   {
@@ -394,17 +414,6 @@
   }
 
 
-  /* some macros we need */
-#define FT_FIXED_ONE  ( (FT_Fixed)0x10000 )
-
-#define FT_fdot14ToFixed( x )                \
-        ( (FT_Fixed)( (FT_ULong)(x) << 2 ) )
-#define FT_intToFixed( i )                    \
-        ( (FT_Fixed)( (FT_ULong)(i) << 16 ) )
-#define FT_fixedToInt( x )                                   \
-        ( (FT_Short)( ( (FT_UInt32)(x) + 0x8000U ) >> 16 ) )
-
-
   static FT_Error
   ft_var_load_item_variation_store( TT_Face          face,
                                     FT_ULong         offset,
@@ -702,29 +711,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_load_hvvar                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    If `vertical' is zero, parse the `HVAR' table and set              */
-  /*    `blend->hvar_loaded' to TRUE.  On success, `blend->hvar_checked'   */
-  /*    is set to TRUE.                                                    */
-  /*                                                                       */
-  /*    If `vertical' is not zero, parse the `VVAR' table and set          */
-  /*    `blend->vvar_loaded' to TRUE.  On success, `blend->vvar_checked'   */
-  /*    is set to TRUE.                                                    */
-  /*                                                                       */
-  /*    Some memory may remain allocated on error; it is always freed in   */
-  /*    `tt_done_blend', however.                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: The font face.                                             */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_load_hvvar
+   *
+   * @Description:
+   *   If `vertical' is zero, parse the `HVAR' table and set
+   *   `blend->hvar_loaded' to TRUE.  On success, `blend->hvar_checked'
+   *   is set to TRUE.
+   *
+   *   If `vertical' is not zero, parse the `VVAR' table and set
+   *   `blend->vvar_loaded' to TRUE.  On success, `blend->vvar_checked'
+   *   is set to TRUE.
+   *
+   *   Some memory may remain allocated on error; it is always freed in
+   *   `tt_done_blend', however.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   static FT_Error
   ft_var_load_hvvar( TT_Face  face,
                      FT_Bool  vertical )
@@ -872,7 +882,7 @@
     /* outer loop steps through master designs to be blended */
     for ( master = 0; master < varData->regionIdxCount; master++ )
     {
-      FT_Fixed  scalar      = FT_FIXED_ONE;
+      FT_Fixed  scalar      = 0x10000L;
       FT_UInt   regionIndex = varData->regionIndices[master];
 
       GX_AxisCoords  axis = itemStore->varRegionList[regionIndex].axisList;
@@ -881,47 +891,43 @@
       /* inner loop steps through axes in this region */
       for ( j = 0; j < itemStore->axisCount; j++, axis++ )
       {
-        FT_Fixed  axisScalar;
-
-
         /* compute the scalar contribution of this axis; */
         /* ignore invalid ranges                         */
         if ( axis->startCoord > axis->peakCoord ||
              axis->peakCoord > axis->endCoord   )
-          axisScalar = FT_FIXED_ONE;
+          continue;
 
         else if ( axis->startCoord < 0 &&
                   axis->endCoord > 0   &&
                   axis->peakCoord != 0 )
-          axisScalar = FT_FIXED_ONE;
+          continue;
 
         /* peak of 0 means ignore this axis */
         else if ( axis->peakCoord == 0 )
-          axisScalar = FT_FIXED_ONE;
+          continue;
+
+        else if ( face->blend->normalizedcoords[j] == axis->peakCoord )
+          continue;
 
         /* ignore this region if coords are out of range */
-        else if ( face->blend->normalizedcoords[j] < axis->startCoord ||
-                  face->blend->normalizedcoords[j] > axis->endCoord   )
-          axisScalar = 0;
-
-        /* calculate a proportional factor */
-        else
+        else if ( face->blend->normalizedcoords[j] <= axis->startCoord ||
+                  face->blend->normalizedcoords[j] >= axis->endCoord   )
         {
-          if ( face->blend->normalizedcoords[j] == axis->peakCoord )
-            axisScalar = FT_FIXED_ONE;
-          else if ( face->blend->normalizedcoords[j] < axis->peakCoord )
-            axisScalar =
-              FT_DivFix( face->blend->normalizedcoords[j] - axis->startCoord,
-                         axis->peakCoord - axis->startCoord );
-          else
-            axisScalar =
-              FT_DivFix( axis->endCoord - face->blend->normalizedcoords[j],
-                         axis->endCoord - axis->peakCoord );
+          scalar = 0;
+          break;
         }
 
-        /* take product of all the axis scalars */
-        scalar = FT_MulFix( scalar, axisScalar );
-
+        /* cumulative product of all the axis scalars */
+        else if ( face->blend->normalizedcoords[j] < axis->peakCoord )
+          scalar =
+            FT_MulDiv( scalar,
+                       face->blend->normalizedcoords[j] - axis->startCoord,
+                       axis->peakCoord - axis->startCoord );
+        else
+          scalar =
+            FT_MulDiv( scalar,
+                       axis->endCoord - face->blend->normalizedcoords[j],
+                       axis->endCoord - axis->peakCoord );
       } /* per-axis loop */
 
       /* get the scaled delta for this region */
@@ -937,25 +943,29 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_hvadvance_adjust                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply `HVAR' advance width or `VVAR' advance height adjustment of  */
-  /*    a given glyph.                                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    gindex   :: The glyph index.                                       */
-  /*                                                                       */
-  /*    vertical :: If set, handle `VVAR' table.                           */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face     :: The font face.                                         */
-  /*                                                                       */
-  /*    adelta   :: Points to width or height value that gets modified.    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_hvadvance_adjust
+   *
+   * @Description:
+   *   Apply `HVAR' advance width or `VVAR' advance height adjustment of
+   *   a given glyph.
+   *
+   * @Input:
+   *   gindex ::
+   *     The glyph index.
+   *
+   *   vertical ::
+   *     If set, handle `VVAR' table.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   *
+   *   adelta ::
+   *     Points to width or height value that gets modified.
+   */
   static FT_Error
   tt_hvadvance_adjust( TT_Face  face,
                        FT_UInt  gindex,
@@ -1151,20 +1161,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_load_mvar                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parse the `MVAR' table.                                            */
-  /*                                                                       */
-  /*    Some memory may remain allocated on error; it is always freed in   */
-  /*    `tt_done_blend', however.                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: The font face.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_load_mvar
+   *
+   * @Description:
+   *   Parse the `MVAR' table.
+   *
+   *   Some memory may remain allocated on error; it is always freed in
+   *   `tt_done_blend', however.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   */
   static void
   ft_var_load_mvar( TT_Face  face )
   {
@@ -1297,22 +1308,26 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_apply_mvar                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply `MVAR' table adjustments.                                    */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face :: The font face.                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_apply_mvar
+   *
+   * @Description:
+   *   Apply `MVAR' table adjustments.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   */
   FT_LOCAL_DEF( void )
   tt_apply_mvar( TT_Face  face )
   {
     GX_Blend  blend = face->blend;
     GX_Value  value, limit;
+    FT_Short  mvar_hasc_delta = 0;
+    FT_Short  mvar_hdsc_delta = 0;
+    FT_Short  mvar_hlgp_delta = 0;
 
 
     if ( !( face->variation_support & TT_FACE_FLAG_VAR_MVAR ) )
@@ -1347,6 +1362,14 @@
         /* since we handle both signed and unsigned values as FT_Short, */
         /* ensure proper overflow arithmetic                            */
         *p = (FT_Short)( value->unmodified + (FT_Short)delta );
+
+        /* Treat hasc, hdsc and hlgp specially, see below. */
+        if ( value->tag == MVAR_TAG_HASC )
+          mvar_hasc_delta = (FT_Short)delta;
+        else if ( value->tag == MVAR_TAG_HDSC )
+          mvar_hdsc_delta = (FT_Short)delta;
+        else if ( value->tag == MVAR_TAG_HLGP )
+          mvar_hlgp_delta = (FT_Short)delta;
       }
     }
 
@@ -1354,25 +1377,40 @@
     {
       FT_Face  root = &face->root;
 
-
-      if ( face->os2.version != 0xFFFFU )
-      {
-        if ( face->os2.sTypoAscender || face->os2.sTypoDescender )
-        {
-          root->ascender  = face->os2.sTypoAscender;
-          root->descender = face->os2.sTypoDescender;
-
-          root->height = root->ascender - root->descender +
-                         face->os2.sTypoLineGap;
-        }
-        else
-        {
-          root->ascender  =  (FT_Short)face->os2.usWinAscent;
-          root->descender = -(FT_Short)face->os2.usWinDescent;
-
-          root->height = root->ascender - root->descender;
-        }
-      }
+      /*
+       * Apply the deltas of hasc, hdsc and hlgp to the FT_Face's ascender,
+       * descender and height attributes, no matter how they were originally
+       * computed.
+       *
+       * (Code that ignores those and accesses the font's metrics values
+       * directly is already served by the delta application code above.)
+       *
+       * The MVAR table supports variations for both typo and win metrics.
+       * According to Behdad Esfahbod, the thinking of the working group was
+       * that no one uses win metrics anymore for setting line metrics (the
+       * specification even calls these metrics "horizontal clipping
+       * ascent/descent", probably for their role on the Windows platform in
+       * computing clipping boxes), and new fonts should use typo metrics, so
+       * typo deltas should be applied to whatever sfnt_load_face decided the
+       * line metrics should be.
+       *
+       * Before, the following led to different line metrics between default
+       * outline and instances, visible when e.g. the default outlines were
+       * used as the regular face and instances for everything else:
+       *
+       * 1. sfnt_load_face applied the hhea metrics by default.
+       * 2. This code later applied the typo metrics by default, regardless of
+       *    whether they were actually changed or the font had the OS/2 table's
+       *    fsSelection's bit 7 (USE_TYPO_METRICS) set.
+       */
+      FT_Short  current_line_gap = root->height - root->ascender +
+                                   root->descender;
+
+
+      root->ascender  = root->ascender + mvar_hasc_delta;
+      root->descender = root->descender + mvar_hdsc_delta;
+      root->height    = root->ascender - root->descender +
+                        current_line_gap + mvar_hlgp_delta;
 
       root->underline_position  = face->postscript.underlinePosition -
                                   face->postscript.underlineThickness / 2;
@@ -1400,21 +1438,22 @@
   } GX_GVar_Head;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    ft_var_load_gvar                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Parse 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   ft_var_load_gvar
+   *
+   * @Description:
+   *   Parse 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 )
   {
@@ -1512,28 +1551,55 @@
 
     if ( gvar_head.flags & 1 )
     {
+      FT_ULong  limit = gvar_start + table_len;
+
+
       /* 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_ULONG();
-
-      FT_FRAME_EXIT();
+        /* use `>', not `>=' */
+        if ( blend->glyphoffsets[i] > limit )
+        {
+          FT_TRACE2(( "ft_var_load_gvar:"
+                      " invalid glyph variation data offset for index %d\n",
+                      i ));
+          error = FT_THROW( Invalid_Table );
+          break;
+        }
+      }
     }
     else
     {
+      FT_ULong  limit = gvar_start + table_len;
+
+
       /* 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();
+        /* use `>', not `>=' */
+        if ( blend->glyphoffsets[i] > limit )
+        {
+          FT_TRACE2(( "ft_var_load_gvar:"
+                      " invalid glyph variation data offset for index %d\n",
+                      i ));
+          error = FT_THROW( Invalid_Table );
+          break;
+        }
+      }
     }
 
+    FT_FRAME_EXIT();
+    if ( error )
+      goto Exit;
+
     if ( blend->tuplecount != 0 )
     {
       if ( FT_NEW_ARRAY( blend->tuplecoords,
@@ -1567,33 +1633,38 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -1607,13 +1678,8 @@
 
     for ( i = 0; i < blend->num_axis; i++ )
     {
-      FT_TRACE6(( "    axis coordinate %d (%.5f):\n",
+      FT_TRACE6(( "    axis %d coordinate %.5f:\n",
                   i, blend->normalizedcoords[i] / 65536.0 ));
-      if ( !( tupleIndex & GX_TI_INTERMEDIATE_TUPLE ) )
-        FT_TRACE6(( "      intermediate coordinates %d (%.5f, %.5f):\n",
-                    i,
-                    im_start_coords[i] / 65536.0,
-                    im_end_coords[i] / 65536.0 ));
 
       /* It's not clear why (for intermediate tuples) we don't need     */
       /* to check against start/end -- the documentation says we don't. */
@@ -1622,7 +1688,7 @@
 
       if ( tuple_coords[i] == 0 )
       {
-        FT_TRACE6(( "      tuple coordinate is zero, ignored\n", i ));
+        FT_TRACE6(( "      tuple coordinate is zero, ignore\n", i ));
         continue;
       }
 
@@ -1635,7 +1701,7 @@
 
       if ( blend->normalizedcoords[i] == tuple_coords[i] )
       {
-        FT_TRACE6(( "      tuple coordinate value %.5f fits perfectly\n",
+        FT_TRACE6(( "      tuple coordinate %.5f fits perfectly\n",
                     tuple_coords[i] / 65536.0 ));
         /* `apply' does not change */
         continue;
@@ -1648,13 +1714,13 @@
         if ( blend->normalizedcoords[i] < FT_MIN( 0, tuple_coords[i] ) ||
              blend->normalizedcoords[i] > FT_MAX( 0, tuple_coords[i] ) )
         {
-          FT_TRACE6(( "      tuple coordinate value %.5f is exceeded, stop\n",
+          FT_TRACE6(( "      tuple coordinate %.5f is exceeded, stop\n",
                       tuple_coords[i] / 65536.0 ));
           apply = 0;
           break;
         }
 
-        FT_TRACE6(( "      tuple coordinate value %.5f fits\n",
+        FT_TRACE6(( "      tuple coordinate %.5f fits\n",
                     tuple_coords[i] / 65536.0 ));
         apply = FT_MulDiv( apply,
                            blend->normalizedcoords[i],
@@ -1664,10 +1730,10 @@
       {
         /* intermediate tuple */
 
-        if ( blend->normalizedcoords[i] < im_start_coords[i] ||
-             blend->normalizedcoords[i] > im_end_coords[i]   )
+        if ( blend->normalizedcoords[i] <= im_start_coords[i] ||
+             blend->normalizedcoords[i] >= im_end_coords[i]   )
         {
-          FT_TRACE6(( "      intermediate tuple range [%.5f;%.5f] is exceeded,"
+          FT_TRACE6(( "      intermediate tuple range ]%.5f;%.5f[ is exceeded,"
                       " stop\n",
                       im_start_coords[i] / 65536.0,
                       im_end_coords[i] / 65536.0 ));
@@ -1675,25 +1741,17 @@
           break;
         }
 
-        else if ( blend->normalizedcoords[i] < tuple_coords[i] )
-        {
-          FT_TRACE6(( "      intermediate tuple range [%.5f;%.5f] fits\n",
-                      im_start_coords[i] / 65536.0,
-                      im_end_coords[i] / 65536.0 ));
+        FT_TRACE6(( "      intermediate tuple range ]%.5f;%.5f[ fits\n",
+                    im_start_coords[i] / 65536.0,
+                    im_end_coords[i] / 65536.0 ));
+        if ( blend->normalizedcoords[i] < tuple_coords[i] )
           apply = FT_MulDiv( apply,
                              blend->normalizedcoords[i] - im_start_coords[i],
                              tuple_coords[i] - im_start_coords[i] );
-        }
-
         else
-        {
-          FT_TRACE6(( "      intermediate tuple range [%.5f;%.5f] fits\n",
-                      im_start_coords[i] / 65536.0,
-                      im_end_coords[i] / 65536.0 ));
           apply = FT_MulDiv( apply,
                              im_end_coords[i] - blend->normalizedcoords[i],
                              im_end_coords[i] - tuple_coords[i] );
-        }
       }
     }
 
@@ -1756,11 +1814,11 @@
       }
 
       if ( coord < a->def )
-        normalized[i] = -FT_DivFix( coord - a->def,
-                                    a->minimum - a->def );
+        normalized[i] = -FT_DivFix( SUB_LONG( coord, a->def ),
+                                    SUB_LONG( a->minimum, a->def ) );
       else if ( coord > a->def )
-        normalized[i] = FT_DivFix( coord - a->def,
-                                   a->maximum - a->def );
+        normalized[i] = FT_DivFix( SUB_LONG( coord, a->def ),
+                                   SUB_LONG( a->maximum, a->def ) );
       else
         normalized[i] = 0;
     }
@@ -1910,27 +1968,29 @@
   } GX_FVar_Axis;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Get_MM_Var                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Check that the font's `fvar' table is valid, parse it, and return  */
-  /*    those data.  It also loads (and parses) the `MVAR' table, if       */
-  /*    possible.                                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: The font face.                                           */
-  /*              TT_Get_MM_Var initializes the blend structure.           */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    master :: The `fvar' data (must be freed by caller).  Can be NULL, */
-  /*              which makes this function simply load MM support.        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Get_MM_Var
+   *
+   * @Description:
+   *   Check that the font's `fvar' table is valid, parse it, and return
+   *   those data.  It also loads (and parses) the `MVAR' table, if
+   *   possible.
+   *
+   * @InOut:
+   *   face ::
+   *     The font face.
+   *     TT_Get_MM_Var initializes the blend structure.
+   *
+   * @Output:
+   *   master ::
+   *     The `fvar' data (must be freed by caller).  Can be NULL,
+   *     which makes this function simply load MM support.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Get_MM_Var( TT_Face      face,
                  FT_MM_Var*  *master )
@@ -2507,11 +2567,14 @@
 
       if ( FT_IS_NAMED_INSTANCE( FT_FACE( face ) ) )
       {
-        FT_UInt  idx = (FT_UInt)face->root.face_index >> 16;
+        FT_UInt  instance_index = (FT_UInt)face->root.face_index >> 16;
 
 
         c = blend->normalizedcoords + i;
-        n = blend->normalized_stylecoords + idx * mmvar->num_axis + i;
+        n = blend->normalized_stylecoords            +
+            ( instance_index - 1 ) * mmvar->num_axis +
+            i;
+
         for ( j = i; j < mmvar->num_axis; j++, n++, c++ )
           if ( *c != *n )
             have_diff = 1;
@@ -2526,7 +2589,11 @@
 
       /* return value -1 indicates `no change' */
       if ( !have_diff )
+      {
+        face->doblend = TRUE;
+
         return -1;
+      }
 
       for ( ; i < mmvar->num_axis; i++ )
       {
@@ -2590,31 +2657,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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 :: The number of available coordinates.  If it is       */
-  /*                  larger than the number of axes, ignore the excess    */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use the default value (0) for the remaining axes.    */
-  /*                                                                       */
-  /*    coords     :: An array of `num_coords', each between [-1,1].       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 ::
+   *     The number of available coordinates.  If it is
+   *     larger than the number of axes, ignore the excess
+   *     values.  If it is smaller than the number of axes,
+   *     use the default value (0) for the remaining axes.
+   *
+   *   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,
@@ -2636,29 +2706,32 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Get_MM_Blend                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the blend (normalized) coordinates for this instance of the    */
-  /*    font.                                                              */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face       :: The font.                                            */
-  /*                  Initialize the blend structure with `gvar' data.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    num_coords :: The number of available coordinates.  If it is       */
-  /*                  larger than the number of axes, set the excess       */
-  /*                  values to 0.                                         */
-  /*                                                                       */
-  /*    coords     :: An array of `num_coords', each between [-1,1].       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Get_MM_Blend
+   *
+   * @Description:
+   *   Get the blend (normalized) coordinates for this instance of the
+   *   font.
+   *
+   * @InOut:
+   *   face ::
+   *     The font.
+   *     Initialize the blend structure with `gvar' data.
+   *
+   * @Input:
+   *   num_coords ::
+   *     The number of available coordinates.  If it is
+   *     larger than the number of axes, set the excess
+   *     values to 0.
+   *
+   *   coords ::
+   *     An array of `num_coords', each between [-1,1].
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Get_MM_Blend( TT_Face    face,
                    FT_UInt    num_coords,
@@ -2712,31 +2785,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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 :: The number of available coordinates.  If it is       */
-  /*                  larger than the number of axes, ignore the excess    */
-  /*                  values.  If it is smaller than the number of axes,   */
-  /*                  use the default values for the remaining axes.       */
-  /*                                                                       */
-  /*    coords     :: A coordinate array with `num_coords' elements.       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 ::
+   *     The number of available coordinates.  If it is
+   *     larger than the number of axes, ignore the excess
+   *     values.  If it is smaller than the number of axes,
+   *     use the default values for the remaining axes.
+   *
+   *   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,
@@ -2854,28 +2930,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Get_Var_Design                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Get the design coordinates of the currently selected interpolated  */
-  /*    font.                                                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face       :: A handle to the source face.                         */
-  /*                                                                       */
-  /*    num_coords :: The number of design coordinates to retrieve.  If it */
-  /*                  is larger than the number of axes, set the excess    */
-  /*                  values to~0.                                         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    coords     :: The design coordinates array.                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Get_Var_Design
+   *
+   * @Description:
+   *   Get the design coordinates of the currently selected interpolated
+   *   font.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   num_coords ::
+   *     The number of design coordinates to retrieve.  If it
+   *     is larger than the number of axes, set the excess
+   *     values to~0.
+   *
+   * @Output:
+   *   coords ::
+   *     The design coordinates array.
+   *
+   * @Return:
+   *   FreeType error code.  0~means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Get_Var_Design( TT_Face    face,
                      FT_UInt    num_coords,
@@ -2929,24 +3008,26 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Set_Named_Instance                                              */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Set the given named instance, also resetting any further           */
-  /*    variation.                                                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face           :: A handle to the source face.                     */
-  /*                                                                       */
-  /*    instance_index :: The instance index, starting with value 1.       */
-  /*                      Value 0 indicates to not use an instance.        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0~means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Set_Named_Instance
+   *
+   * @Description:
+   *   Set the given named instance, also resetting any further
+   *   variation.
+   *
+   * @Input:
+   *   face ::
+   *     A handle to the source face.
+   *
+   *   instance_index ::
+   *     The instance index, starting with value 1.
+   *     Value 0 indicates to not use an instance.
+   *
+   * @Return:
+   *   FreeType error code.  0~means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Set_Named_Instance( TT_Face  face,
                          FT_UInt  instance_index )
@@ -3022,48 +3103,60 @@
   /*************************************************************************/
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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, spoint_count = 0;
+    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_UInt  spoint_count = 0;
+
     FT_UShort*  sharedpoints = NULL;
     FT_UShort*  localpoints  = NULL;
     FT_UShort*  points;
-    FT_Short*   deltas;
+
+    FT_Fixed*  deltas     = NULL;
+    FT_Fixed*  cvt_deltas = NULL;
 
 
     FT_TRACE2(( "CVAR " ));
@@ -3146,11 +3239,14 @@
     }
 
     FT_TRACE5(( "cvar: there %s %d tuple%s:\n",
-                ( tupleCount & 0xFFF ) == 1 ? "is" : "are",
-                tupleCount & 0xFFF,
-                ( tupleCount & 0xFFF ) == 1 ? "" : "s" ));
-
-    for ( i = 0; i < ( tupleCount & 0xFFF ); i++ )
+                ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) == 1 ? "is" : "are",
+                tupleCount & GX_TC_TUPLE_COUNT_MASK,
+                ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) == 1 ? "" : "s" ));
+
+    if ( FT_NEW_ARRAY( cvt_deltas, face->cvt_size ) )
+      goto FExit;
+
+    for ( i = 0; i < ( tupleCount & GX_TC_TUPLE_COUNT_MASK ); i++ )
     {
       FT_UInt   tupleDataSize;
       FT_UInt   tupleIndex;
@@ -3174,13 +3270,25 @@
                     " invalid tuple index\n" ));
 
         error = FT_THROW( Invalid_Table );
-        goto Exit;
+        goto FExit;
       }
       else
+      {
+        if ( !blend->tuplecoords )
+        {
+          FT_TRACE2(( "tt_face_vary_cvt:"
+                      " no valid tuple coordinates available\n" ));
+
+          error = FT_THROW( Invalid_Table );
+          goto FExit;
+        }
+
         FT_MEM_COPY(
           tuple_coords,
-          &blend->tuplecoords[( tupleIndex & 0xFFF ) * blend->num_axis],
+          blend->tuplecoords +
+            ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) * blend->num_axis,
           blend->num_axis * sizeof ( FT_Fixed ) );
+      }
 
       if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE )
       {
@@ -3241,17 +3349,21 @@
         /* this means that there are deltas for every entry in cvt */
         for ( j = 0; j < face->cvt_size; j++ )
         {
-          FT_Long  orig_cvt = face->cvt[j];
-
-
-          face->cvt[j] = (FT_Short)( orig_cvt +
-                                     FT_MulFix( deltas[j], apply ) );
+          FT_Fixed  old_cvt_delta;
+
+
+          old_cvt_delta = cvt_deltas[j];
+          cvt_deltas[j] = old_cvt_delta + FT_MulFix( deltas[j], apply );
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-          if ( orig_cvt != face->cvt[j] )
+          if ( old_cvt_delta != cvt_deltas[j] )
           {
-            FT_TRACE7(( "      %d: %d -> %d\n",
-                        j, orig_cvt, face->cvt[j] ));
+            FT_TRACE7(( "      %d: %f -> %f\n",
+                        j,
+                        ( FT_intToFixed( face->cvt[j] ) +
+                          old_cvt_delta ) / 65536.0,
+                        ( FT_intToFixed( face->cvt[j] ) +
+                          cvt_deltas[j] ) / 65536.0 ));
             count++;
           }
 #endif
@@ -3274,23 +3386,26 @@
 
         for ( j = 0; j < point_count; j++ )
         {
-          int      pindex;
-          FT_Long  orig_cvt;
+          int       pindex;
+          FT_Fixed  old_cvt_delta;
 
 
           pindex = points[j];
           if ( (FT_ULong)pindex >= face->cvt_size )
             continue;
 
-          orig_cvt          = face->cvt[pindex];
-          face->cvt[pindex] = (FT_Short)( orig_cvt +
-                                          FT_MulFix( deltas[j], apply ) );
+          old_cvt_delta      = cvt_deltas[pindex];
+          cvt_deltas[pindex] = old_cvt_delta + FT_MulFix( deltas[j], apply );
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-          if ( orig_cvt != face->cvt[pindex] )
+          if ( old_cvt_delta != cvt_deltas[pindex] )
           {
-            FT_TRACE7(( "      %d: %d -> %d\n",
-                        pindex, orig_cvt, face->cvt[pindex] ));
+            FT_TRACE7(( "      %d: %f -> %f\n",
+                        pindex,
+                        ( FT_intToFixed( face->cvt[pindex] ) +
+                          old_cvt_delta ) / 65536.0,
+                        ( FT_intToFixed( face->cvt[pindex] ) +
+                          cvt_deltas[pindex] ) / 65536.0 ));
             count++;
           }
 #endif
@@ -3313,6 +3428,9 @@
 
     FT_TRACE5(( "\n" ));
 
+    for ( i = 0; i < face->cvt_size; i++ )
+      face->cvt[i] += FT_fixedToInt( cvt_deltas[i] );
+
   FExit:
     FT_FRAME_EXIT();
 
@@ -3322,6 +3440,7 @@
     FT_FREE( tuple_coords );
     FT_FREE( im_start_coords );
     FT_FREE( im_end_coords );
+    FT_FREE( cvt_deltas );
 
     return error;
   }
@@ -3367,9 +3486,8 @@
   /* between `p1' and `p2', using `ref1' and `ref2' as the reference */
   /* point indices.                                                  */
 
-  /* modeled after `af_iup_interp', `_iup_worker_interpolate', and */
-  /* `Ins_IUP'                                                     */
-
+  /* modeled after `af_iup_interp', `_iup_worker_interpolate', and   */
+  /* `Ins_IUP' with spec differences in handling ill-defined cases.  */
   static void
   tt_delta_interpolate( int         p1,
                         int         p2,
@@ -3528,56 +3646,72 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Vary_Apply_Glyph_Deltas                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Apply the appropriate deltas to 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.                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    outline     :: The outline to change.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Vary_Apply_Glyph_Deltas
+   *
+   * @Description:
+   *   Apply the appropriate deltas to 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.
+   *
+   * @InOut:
+   *   outline ::
+   *     The outline to change.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Vary_Apply_Glyph_Deltas( TT_Face      face,
                               FT_UInt      glyph_index,
                               FT_Outline*  outline,
                               FT_UInt      n_points )
   {
-    FT_Stream   stream = face->root.stream;
-    FT_Memory   memory = stream->memory;
-    GX_Blend    blend  = face->blend;
-
-    FT_Vector*  points_org = NULL;
-    FT_Vector*  points_out = NULL;
+    FT_Error   error;
+    FT_Stream  stream = face->root.stream;
+    FT_Memory  memory = stream->memory;
+
+    FT_Vector*  points_org = NULL;  /* coordinates in 16.16 format */
+    FT_Vector*  points_out = NULL;  /* coordinates in 16.16 format */
     FT_Bool*    has_delta  = NULL;
 
-    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_ULong  glyph_start;
+
+    FT_UInt   tupleCount;
+    FT_ULong  offsetToData;
+    FT_ULong  dataSize;
+
+    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_UInt  spoint_count = 0;
+
     FT_UShort*  sharedpoints = NULL;
     FT_UShort*  localpoints  = NULL;
     FT_UShort*  points;
-    FT_Short    *deltas_x, *deltas_y;
+
+    FT_Fixed*  deltas_x       = NULL;
+    FT_Fixed*  deltas_y       = NULL;
+    FT_Fixed*  point_deltas_x = NULL;
+    FT_Fixed*  point_deltas_y = NULL;
 
 
     if ( !face->doblend || !blend )
@@ -3597,9 +3731,11 @@
          FT_NEW_ARRAY( has_delta, n_points )  )
       goto Fail1;
 
-    if ( FT_STREAM_SEEK( blend->glyphoffsets[glyph_index] )   ||
-         FT_FRAME_ENTER( blend->glyphoffsets[glyph_index + 1] -
-                           blend->glyphoffsets[glyph_index] ) )
+    dataSize = blend->glyphoffsets[glyph_index + 1] -
+                 blend->glyphoffsets[glyph_index];
+
+    if ( FT_STREAM_SEEK( blend->glyphoffsets[glyph_index] ) ||
+         FT_FRAME_ENTER( dataSize )                         )
       goto Fail1;
 
     glyph_start = FT_Stream_FTell( stream );
@@ -3615,8 +3751,8 @@
     offsetToData = FT_GET_USHORT();
 
     /* rough sanity test */
-    if ( offsetToData + ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) * 4 >
-           blend->gvar_size )
+    if ( offsetToData > dataSize                                ||
+         ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) * 4 > dataSize )
     {
       FT_TRACE2(( "TT_Vary_Apply_Glyph_Deltas:"
                   " invalid glyph variation array header\n" ));
@@ -3646,8 +3782,15 @@
                 tupleCount & GX_TC_TUPLE_COUNT_MASK,
                 ( tupleCount & GX_TC_TUPLE_COUNT_MASK ) == 1 ? "" : "s" ));
 
+    if ( FT_NEW_ARRAY( point_deltas_x, n_points ) ||
+         FT_NEW_ARRAY( point_deltas_y, n_points ) )
+      goto Fail3;
+
     for ( j = 0; j < n_points; j++ )
-      points_org[j] = outline->points[j];
+    {
+      points_org[j].x = FT_intToFixed( outline->points[j].x );
+      points_org[j].y = FT_intToFixed( outline->points[j].y );
+    }
 
     for ( i = 0; i < ( tupleCount & GX_TC_TUPLE_COUNT_MASK ); i++ )
     {
@@ -3673,12 +3816,13 @@
                     " invalid tuple index\n" ));
 
         error = FT_THROW( Invalid_Table );
-        goto Fail2;
+        goto Fail3;
       }
       else
         FT_MEM_COPY(
           tuple_coords,
-          &blend->tuplecoords[( tupleIndex & 0xFFF ) * blend->num_axis],
+          blend->tuplecoords +
+            ( tupleIndex & GX_TI_TUPLE_INDEX_MASK ) * blend->num_axis,
           blend->num_axis * sizeof ( FT_Fixed ) );
 
       if ( tupleIndex & GX_TI_INTERMEDIATE_TUPLE )
@@ -3742,14 +3886,17 @@
         /* this means that there are deltas for every point in the glyph */
         for ( j = 0; j < n_points; j++ )
         {
-          FT_Pos  delta_x = FT_MulFix( deltas_x[j], apply );
-          FT_Pos  delta_y = FT_MulFix( deltas_y[j], apply );
+          FT_Fixed  old_point_delta_x = point_deltas_x[j];
+          FT_Fixed  old_point_delta_y = point_deltas_y[j];
+
+          FT_Fixed  point_delta_x = FT_MulFix( deltas_x[j], apply );
+          FT_Fixed  point_delta_y = FT_MulFix( deltas_y[j], apply );
 
 
           if ( j < n_points - 4 )
           {
-            outline->points[j].x += delta_x;
-            outline->points[j].y += delta_y;
+            point_deltas_x[j] = old_point_delta_x + point_delta_x;
+            point_deltas_y[j] = old_point_delta_y + point_delta_y;
           }
           else
           {
@@ -3759,33 +3906,37 @@
             if ( j == ( n_points - 4 )        &&
                  !( face->variation_support &
                     TT_FACE_FLAG_VAR_LSB    ) )
-              outline->points[j].x += delta_x;
+              point_deltas_x[j] = old_point_delta_x + point_delta_x;
 
             else if ( j == ( n_points - 3 )          &&
                       !( face->variation_support   &
                          TT_FACE_FLAG_VAR_HADVANCE ) )
-              outline->points[j].x += delta_x;
+              point_deltas_x[j] = old_point_delta_x + point_delta_x;
 
             else if ( j == ( n_points - 2 )        &&
                       !( face->variation_support &
                          TT_FACE_FLAG_VAR_TSB    ) )
-              outline->points[j].y += delta_y;
+              point_deltas_y[j] = old_point_delta_y + point_delta_y;
 
             else if ( j == ( n_points - 1 )          &&
                       !( face->variation_support   &
                          TT_FACE_FLAG_VAR_VADVANCE ) )
-              outline->points[j].y += delta_y;
+              point_deltas_y[j] = old_point_delta_y + point_delta_y;
           }
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-          if ( delta_x || delta_y )
+          if ( point_delta_x || point_delta_y )
           {
-            FT_TRACE7(( "      %d: (%d, %d) -> (%d, %d)\n",
+            FT_TRACE7(( "      %d: (%f, %f) -> (%f, %f)\n",
                         j,
-                        outline->points[j].x - delta_x,
-                        outline->points[j].y - delta_y,
-                        outline->points[j].x,
-                        outline->points[j].y ));
+                        ( FT_intToFixed( outline->points[j].x ) +
+                          old_point_delta_x ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].y ) +
+                          old_point_delta_y ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].x ) +
+                          point_deltas_x[j] ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].y ) +
+                          point_deltas_y[j] ) / 65536.0 ));
             count++;
           }
 #endif
@@ -3837,14 +3988,17 @@
 
         for ( j = 0; j < n_points; j++ )
         {
-          FT_Pos  delta_x = points_out[j].x - points_org[j].x;
-          FT_Pos  delta_y = points_out[j].y - points_org[j].y;
+          FT_Fixed  old_point_delta_x = point_deltas_x[j];
+          FT_Fixed  old_point_delta_y = point_deltas_y[j];
+
+          FT_Pos  point_delta_x = points_out[j].x - points_org[j].x;
+          FT_Pos  point_delta_y = points_out[j].y - points_org[j].y;
 
 
           if ( j < n_points - 4 )
           {
-            outline->points[j].x += delta_x;
-            outline->points[j].y += delta_y;
+            point_deltas_x[j] = old_point_delta_x + point_delta_x;
+            point_deltas_y[j] = old_point_delta_y + point_delta_y;
           }
           else
           {
@@ -3854,33 +4008,37 @@
             if ( j == ( n_points - 4 )        &&
                  !( face->variation_support &
                     TT_FACE_FLAG_VAR_LSB    ) )
-              outline->points[j].x += delta_x;
+              point_deltas_x[j] = old_point_delta_x + point_delta_x;
 
             else if ( j == ( n_points - 3 )          &&
                       !( face->variation_support   &
                          TT_FACE_FLAG_VAR_HADVANCE ) )
-              outline->points[j].x += delta_x;
+              point_deltas_x[j] = old_point_delta_x + point_delta_x;
 
             else if ( j == ( n_points - 2 )        &&
                       !( face->variation_support &
                          TT_FACE_FLAG_VAR_TSB    ) )
-              outline->points[j].y += delta_y;
+              point_deltas_y[j] = old_point_delta_y + point_delta_y;
 
             else if ( j == ( n_points - 1 )          &&
                       !( face->variation_support   &
                          TT_FACE_FLAG_VAR_VADVANCE ) )
-              outline->points[j].y += delta_y;
+              point_deltas_y[j] = old_point_delta_y + point_delta_y;
           }
 
 #ifdef FT_DEBUG_LEVEL_TRACE
-          if ( delta_x || delta_y )
+          if ( point_delta_x || point_delta_y )
           {
-            FT_TRACE7(( "      %d: (%d, %d) -> (%d, %d)\n",
+            FT_TRACE7(( "      %d: (%f, %f) -> (%f, %f)\n",
                         j,
-                        outline->points[j].x - delta_x,
-                        outline->points[j].y - delta_y,
-                        outline->points[j].x,
-                        outline->points[j].y ));
+                        ( FT_intToFixed( outline->points[j].x ) +
+                          old_point_delta_x ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].y ) +
+                          old_point_delta_y ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].x ) +
+                          point_deltas_x[j] ) / 65536.0,
+                        ( FT_intToFixed( outline->points[j].y ) +
+                          point_deltas_y[j] ) / 65536.0 ));
             count++;
           }
 #endif
@@ -3904,6 +4062,16 @@
 
     FT_TRACE5(( "\n" ));
 
+    for ( i = 0; i < n_points; i++ )
+    {
+      outline->points[i].x += FT_fixedToInt( point_deltas_x[i] );
+      outline->points[i].y += FT_fixedToInt( point_deltas_y[i] );
+    }
+
+  Fail3:
+    FT_FREE( point_deltas_x );
+    FT_FREE( point_deltas_y );
+
   Fail2:
     if ( sharedpoints != ALL_POINTS )
       FT_FREE( sharedpoints );
@@ -3922,16 +4090,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_get_var_blend                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    An extended internal version of `TT_Get_MM_Blend' that returns     */
-  /*    pointers instead of copying data, without any initialization of    */
-  /*    the MM machinery in case it isn't loaded yet.                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_get_var_blend
+   *
+   * @Description:
+   *   An extended internal version of `TT_Get_MM_Blend' that returns
+   *   pointers instead of copying data, without any initialization of
+   *   the MM machinery in case it isn't loaded yet.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_get_var_blend( TT_Face      face,
                     FT_UInt     *num_coords,
@@ -3993,14 +4161,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_done_blend                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Free the blend internal data structure.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_done_blend
+   *
+   * @Description:
+   *   Free the blend internal data structure.
+   */
   FT_LOCAL_DEF( void )
   tt_done_blend( TT_Face  face )
   {
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttgxvar.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttgxvar.h                                                              */
-/*                                                                         */
-/*    TrueType GX Font Variation loader (specification)                    */
-/*                                                                         */
-/*  Copyright 2004-2018 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.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttgxvar.h
+ *
+ *   TrueType GX Font Variation loader (specification)
+ *
+ * Copyright (C) 2004-2019 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_
@@ -29,15 +29,15 @@
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_AVarCorrespondenceRec                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A data structure representing `shortFracCorrespondence' in `avar'  */
-  /*    table according to the specifications from Apple.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -46,15 +46,15 @@
   } GX_AVarCorrespondenceRec_, *GX_AVarCorrespondence;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_AVarRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Data from the segment field of `avar' table.                       */
-  /*    There is one of these for each axis.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
@@ -114,14 +114,14 @@
   } GX_DeltaSetIdxMapRec, *GX_DeltaSetIdxMap;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_HVVarTableRec                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Data from either the `HVAR' or `VVAR' table.                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   GX_HVVarTableRec
+   *
+   * @Description:
+   *   Data from either the `HVAR' or `VVAR' table.
+   */
   typedef struct  GX_HVVarTableRec_
   {
     GX_ItemVarStoreRec    itemStore;        /* Item Variation Store  */
@@ -191,14 +191,14 @@
   } GX_ValueRec, *GX_Value;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_MVarTableRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Data from the `MVAR' table.                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   GX_MVarTableRec
+   *
+   * @Description:
+   *   Data from the `MVAR' table.
+   */
   typedef struct  GX_MVarTableRec_
   {
     FT_UShort  valueCount;
@@ -209,95 +209,95 @@
   } GX_MVarTableRec, *GX_MVarTable;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    GX_BlendRec                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Data for interpolating a font from a distortable font specified    */
-  /*    by the GX *var tables ([fgcahvm]var).                              */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    num_axis ::                                                        */
-  /*      The number of axes along which interpolation may happen.         */
-  /*                                                                       */
-  /*    coords ::                                                          */
-  /*      An array of design coordinates (in user space) indicating the    */
-  /*      contribution along each axis to the final interpolated font.     */
-  /*      `normalizedcoords' holds the same values.                        */
-  /*                                                                       */
-  /*    normalizedcoords ::                                                */
-  /*      An array of normalized values (between [-1,1]) indicating the    */
-  /*      contribution along each axis to the final interpolated font.     */
-  /*      `coords' holds the same values.                                  */
-  /*                                                                       */
-  /*    mmvar ::                                                           */
-  /*      Data from the `fvar' table.                                      */
-  /*                                                                       */
-  /*    mmvar_len ::                                                       */
-  /*      The length of the `mmvar' structure.                             */
-  /*                                                                       */
-  /*    normalized_stylecoords ::                                          */
-  /*      A two-dimensional array that holds the named instance data from  */
-  /*      `mmvar' as normalized values.                                    */
-  /*                                                                       */
-  /*    avar_loaded ::                                                     */
-  /*      A Boolean; if set, FreeType tried to load (and parse) the `avar' */
-  /*      table.                                                           */
-  /*                                                                       */
-  /*    avar_segment ::                                                    */
-  /*      Data from the `avar' table.                                      */
-  /*                                                                       */
-  /*    hvar_loaded ::                                                     */
-  /*      A Boolean; if set, FreeType tried to load (and parse) the `hvar' */
-  /*      table.                                                           */
-  /*                                                                       */
-  /*    hvar_checked ::                                                    */
-  /*      A Boolean; if set, FreeType successfully loaded and parsed the   */
-  /*      `hvar' table.                                                    */
-  /*                                                                       */
-  /*    hvar_error ::                                                      */
-  /*      If loading and parsing of the `hvar' table failed, this field    */
-  /*      holds the corresponding error code.                              */
-  /*                                                                       */
-  /*    hvar_table ::                                                      */
-  /*      Data from the `hvar' table.                                      */
-  /*                                                                       */
-  /*    vvar_loaded ::                                                     */
-  /*      A Boolean; if set, FreeType tried to load (and parse) the `vvar' */
-  /*      table.                                                           */
-  /*                                                                       */
-  /*    vvar_checked ::                                                    */
-  /*      A Boolean; if set, FreeType successfully loaded and parsed the   */
-  /*      `vvar' table.                                                    */
-  /*                                                                       */
-  /*    vvar_error ::                                                      */
-  /*      If loading and parsing of the `vvar' table failed, this field    */
-  /*      holds the corresponding error code.                              */
-  /*                                                                       */
-  /*    vvar_table ::                                                      */
-  /*      Data from the `vvar' table.                                      */
-  /*                                                                       */
-  /*    mvar_table ::                                                      */
-  /*      Data from the `mvar' table.                                      */
-  /*                                                                       */
-  /*    tuplecount ::                                                      */
-  /*      The number of shared tuples in the `gvar' table.                 */
-  /*                                                                       */
-  /*    tuplecoords ::                                                     */
-  /*      A two-dimensional array that holds the shared tuple coordinates  */
-  /*      in the `gvar' table.                                             */
-  /*                                                                       */
-  /*    gv_glyphcnt ::                                                     */
-  /*      The number of glyphs handled in the `gvar' table.                */
-  /*                                                                       */
-  /*    glyphoffsets ::                                                    */
-  /*      Offsets into the glyph variation data array.                     */
-  /*                                                                       */
-  /*    gvar_size ::                                                       */
-  /*      The size of the `gvar' table.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   GX_BlendRec
+   *
+   * @Description:
+   *   Data for interpolating a font from a distortable font specified
+   *   by the GX *var tables ([fgcahvm]var).
+   *
+   * @Fields:
+   *   num_axis ::
+   *     The number of axes along which interpolation may happen.
+   *
+   *   coords ::
+   *     An array of design coordinates (in user space) indicating the
+   *     contribution along each axis to the final interpolated font.
+   *     `normalizedcoords' holds the same values.
+   *
+   *   normalizedcoords ::
+   *     An array of normalized values (between [-1,1]) indicating the
+   *     contribution along each axis to the final interpolated font.
+   *     `coords' holds the same values.
+   *
+   *   mmvar ::
+   *     Data from the `fvar' table.
+   *
+   *   mmvar_len ::
+   *     The length of the `mmvar' structure.
+   *
+   *   normalized_stylecoords ::
+   *     A two-dimensional array that holds the named instance data from
+   *     `mmvar' as normalized values.
+   *
+   *   avar_loaded ::
+   *     A Boolean; if set, FreeType tried to load (and parse) the `avar'
+   *     table.
+   *
+   *   avar_segment ::
+   *     Data from the `avar' table.
+   *
+   *   hvar_loaded ::
+   *     A Boolean; if set, FreeType tried to load (and parse) the `hvar'
+   *     table.
+   *
+   *   hvar_checked ::
+   *     A Boolean; if set, FreeType successfully loaded and parsed the
+   *     `hvar' table.
+   *
+   *   hvar_error ::
+   *     If loading and parsing of the `hvar' table failed, this field
+   *     holds the corresponding error code.
+   *
+   *   hvar_table ::
+   *     Data from the `hvar' table.
+   *
+   *   vvar_loaded ::
+   *     A Boolean; if set, FreeType tried to load (and parse) the `vvar'
+   *     table.
+   *
+   *   vvar_checked ::
+   *     A Boolean; if set, FreeType successfully loaded and parsed the
+   *     `vvar' table.
+   *
+   *   vvar_error ::
+   *     If loading and parsing of the `vvar' table failed, this field
+   *     holds the corresponding error code.
+   *
+   *   vvar_table ::
+   *     Data from the `vvar' table.
+   *
+   *   mvar_table ::
+   *     Data from the `mvar' table.
+   *
+   *   tuplecount ::
+   *     The number of shared tuples in the `gvar' table.
+   *
+   *   tuplecoords ::
+   *     A two-dimensional array that holds the shared tuple coordinates
+   *     in the `gvar' table.
+   *
+   *   gv_glyphcnt ::
+   *     The number of glyphs handled in the `gvar' table.
+   *
+   *   glyphoffsets ::
+   *     Offsets into the glyph variation data array.
+   *
+   *   gvar_size ::
+   *     The size of the `gvar' table.
+   */
   typedef struct  GX_BlendRec_
   {
     FT_UInt         num_axis;
@@ -336,14 +336,14 @@
   } GX_BlendRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <enum>                                                                */
-  /*    GX_TupleCountFlags                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Flags used within the `TupleCount' field of the `gvar' table.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -353,15 +353,15 @@
   } GX_TupleCountFlags;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <enum>                                                                */
-  /*    GX_TupleIndexFlags                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Flags used within the `TupleIndex' field of the `gvar' and `cvar'  */
-  /*    tables.                                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttinterp.c                                                             */
-/*                                                                         */
-/*    TrueType bytecode interpreter (body).                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttinterp.c
+ *
+ *   TrueType bytecode interpreter (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.TXT.  By continuing to use, modify, or distribute
+ * this file you indicate that you have read the license and
+ * understand and accept it fully.
+ *
+ */
 
 
 /* Greg Hitchcock from Microsoft has helped a lot in resolving unclear */
@@ -39,14 +39,14 @@
 #ifdef TT_USE_BYTECODE_INTERPRETER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  ttinterp
 
 
 #define NO_SUBPIXEL_HINTING                                                  \
@@ -82,10 +82,10 @@
           exc->func_dualproj( exc, (v)->x, (v)->y )
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Two simple bounds-checking macros.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Two simple bounds-checking macros.
+   */
 #define BOUNDS( x, n )   ( (FT_UInt)(x)  >= (FT_UInt)(n)  )
 #define BOUNDSL( x, n )  ( (FT_ULong)(x) >= (FT_ULong)(n) )
 
@@ -97,30 +97,33 @@
 #define FAILURE  1
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                        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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   *                       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.
+   */
   FT_LOCAL_DEF( void )
   TT_Goto_CodeRange( TT_ExecContext  exec,
                      FT_Int          range,
@@ -148,24 +151,28 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   */
   FT_LOCAL_DEF( void )
   TT_Set_CodeRange( TT_ExecContext  exec,
                     FT_Int          range,
@@ -179,20 +186,22 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Clear_CodeRange                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Clears a code range.                                               */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    range :: The code range index.                                     */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    exec  :: The target execution context.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Clear_CodeRange
+   *
+   * @Description:
+   *   Clears a code range.
+   *
+   * @Input:
+   *   range ::
+   *     The code range index.
+   *
+   * @InOut:
+   *   exec ::
+   *     The target execution context.
+   */
   FT_LOCAL_DEF( void )
   TT_Clear_CodeRange( TT_ExecContext  exec,
                       FT_Int          range )
@@ -204,29 +213,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                   EXECUTION CONTEXT ROUTINES                          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    TT_Done_Context                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroys a given context.                                          */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    exec   :: A handle to the target execution context.                */
-  /*                                                                       */
-  /*    memory :: A handle to the parent memory object.                    */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only the glyph loader and debugger should call this function.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   *                  EXECUTION CONTEXT ROUTINES
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Done_Context
+   *
+   * @Description:
+   *   Destroys a given context.
+   *
+   * @Input:
+   *   exec ::
+   *     A handle to the target execution context.
+   *
+   *   memory ::
+   *     A handle to the parent memory object.
+   *
+   * @Note:
+   *   Only the glyph loader and debugger should call this function.
+   */
   FT_LOCAL_DEF( void )
   TT_Done_Context( TT_ExecContext  exec )
   {
@@ -257,23 +268,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Init_Context                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initializes a context object.                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    memory :: A handle to the parent memory object.                    */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    exec   :: A handle to the target execution context.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Init_Context
+   *
+   * @Description:
+   *   Initializes a context object.
+   *
+   * @Input:
+   *   memory ::
+   *     A handle to the parent memory 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,
                 FT_Memory       memory )
@@ -313,30 +326,35 @@
  }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   */
   FT_LOCAL_DEF( FT_Error )
   Update_Max( FT_Memory  memory,
               FT_ULong*  size,
@@ -359,28 +377,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
@@ -467,23 +488,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                        */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    Only the glyph loader and debugger should call this function.      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   * @Note:
+   *   Only the glyph loader and debugger should call this function.
+   */
   FT_LOCAL_DEF( void )
   TT_Save_Context( TT_ExecContext  exec,
                    TT_Size         size )
@@ -505,27 +528,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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>                                                              */
-  /*    TrueType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   TT_Run_Context
+   *
+   * @Description:
+   *   Executes one or more instructions in the execution context.
+   *
+   * @Input:
+   *   exec ::
+   *     A handle to the target execution context.
+   *
+   * @Return:
+   *   TrueType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   TT_Run_Context( TT_ExecContext  exec )
   {
@@ -609,22 +626,22 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
-  /* Opcodes which have a varying number of parameters in the data stream  */
-  /* (NPUSHB, NPUSHW) are handled specially; they have a negative value in */
-  /* the `opcode_length' table, and the value in `Pop_Push_Count' is set   */
-  /* to zero.                                                              */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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.
+   *
+   * Opcodes which have a varying number of parameters in the data stream
+   * (NPUSHB, NPUSHW) are handled specially; they have a negative value in
+   * the `opcode_length' table, and the value in `Pop_Push_Count' is set
+   * to zero.
+   *
+   */
 
 
 #undef  PACK
@@ -1129,73 +1146,73 @@
     "8 PushW[6]",
     "8 PushW[7]",
 
-    "8 MDRP[00]",
-    "8 MDRP[01]",
-    "8 MDRP[02]",
-    "8 MDRP[03]",
-    "8 MDRP[04]",
-    "8 MDRP[05]",
-    "8 MDRP[06]",
-    "8 MDRP[07]",
-    "8 MDRP[08]",
-    "8 MDRP[09]",
-    "8 MDRP[10]",
-    "8 MDRP[11]",
-    "8 MDRP[12]",
-    "8 MDRP[13]",
-    "8 MDRP[14]",
-    "8 MDRP[15]",
-
-    "8 MDRP[16]",
-    "8 MDRP[17]",
-    "8 MDRP[18]",
-    "8 MDRP[19]",
-    "8 MDRP[20]",
-    "8 MDRP[21]",
-    "8 MDRP[22]",
-    "8 MDRP[23]",
-    "8 MDRP[24]",
-    "8 MDRP[25]",
-    "8 MDRP[26]",
-    "8 MDRP[27]",
-    "8 MDRP[28]",
-    "8 MDRP[29]",
-    "8 MDRP[30]",
-    "8 MDRP[31]",
-
-    "8 MIRP[00]",
-    "8 MIRP[01]",
-    "8 MIRP[02]",
-    "8 MIRP[03]",
-    "8 MIRP[04]",
-    "8 MIRP[05]",
-    "8 MIRP[06]",
-    "8 MIRP[07]",
-    "8 MIRP[08]",
-    "8 MIRP[09]",
-    "8 MIRP[10]",
-    "8 MIRP[11]",
-    "8 MIRP[12]",
-    "8 MIRP[13]",
-    "8 MIRP[14]",
-    "8 MIRP[15]",
-
-    "8 MIRP[16]",
-    "8 MIRP[17]",
-    "8 MIRP[18]",
-    "8 MIRP[19]",
-    "8 MIRP[20]",
-    "8 MIRP[21]",
-    "8 MIRP[22]",
-    "8 MIRP[23]",
-    "8 MIRP[24]",
-    "8 MIRP[25]",
-    "8 MIRP[26]",
-    "8 MIRP[27]",
-    "8 MIRP[28]",
-    "8 MIRP[29]",
-    "8 MIRP[30]",
-    "8 MIRP[31]"
+    "7 MDRP[G]",
+    "7 MDRP[B]",
+    "7 MDRP[W]",
+    "7 MDRP[?]",
+    "8 MDRP[rG]",
+    "8 MDRP[rB]",
+    "8 MDRP[rW]",
+    "8 MDRP[r?]",
+    "8 MDRP[mG]",
+    "8 MDRP[mB]",
+    "8 MDRP[mW]",
+    "8 MDRP[m?]",
+    "9 MDRP[mrG]",
+    "9 MDRP[mrB]",
+    "9 MDRP[mrW]",
+    "9 MDRP[mr?]",
+
+    "8 MDRP[pG]",
+    "8 MDRP[pB]",
+    "8 MDRP[pW]",
+    "8 MDRP[p?]",
+    "9 MDRP[prG]",
+    "9 MDRP[prB]",
+    "9 MDRP[prW]",
+    "9 MDRP[pr?]",
+    "9 MDRP[pmG]",
+    "9 MDRP[pmB]",
+    "9 MDRP[pmW]",
+    "9 MDRP[pm?]",
+    "A MDRP[pmrG]",
+    "A MDRP[pmrB]",
+    "A MDRP[pmrW]",
+    "A MDRP[pmr?]",
+
+    "7 MIRP[G]",
+    "7 MIRP[B]",
+    "7 MIRP[W]",
+    "7 MIRP[?]",
+    "8 MIRP[rG]",
+    "8 MIRP[rB]",
+    "8 MIRP[rW]",
+    "8 MIRP[r?]",
+    "8 MIRP[mG]",
+    "8 MIRP[mB]",
+    "8 MIRP[mW]",
+    "8 MIRP[m?]",
+    "9 MIRP[mrG]",
+    "9 MIRP[mrB]",
+    "9 MIRP[mrW]",
+    "9 MIRP[mr?]",
+
+    "8 MIRP[pG]",
+    "8 MIRP[pB]",
+    "8 MIRP[pW]",
+    "8 MIRP[p?]",
+    "9 MIRP[prG]",
+    "9 MIRP[prB]",
+    "9 MIRP[prW]",
+    "9 MIRP[pr?]",
+    "9 MIRP[pmG]",
+    "9 MIRP[pmB]",
+    "9 MIRP[pmW]",
+    "9 MIRP[pm?]",
+    "A MIRP[pmrG]",
+    "A MIRP[pmrB]",
+    "A MIRP[pmrW]",
+    "A MIRP[pmr?]"
   };
 
 #endif /* FT_DEBUG_LEVEL_TRACE */
@@ -1448,18 +1465,18 @@
 #endif /* TT_DotFix14 */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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 .                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc )
   {
@@ -1501,11 +1518,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Functions related to the control value table (CVT).                   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Functions related to the control value table (CVT).
+   *
+   */
 
 
   FT_CALLBACK_DEF( FT_F26Dot6 )
@@ -1547,7 +1564,7 @@
             FT_ULong        idx,
             FT_F26Dot6      value )
   {
-    exc->cvt[idx] += value;
+    exc->cvt[idx] = ADD_LONG( exc->cvt[idx], value );
   }
 
 
@@ -1556,25 +1573,26 @@
                       FT_ULong        idx,
                       FT_F26Dot6      value )
   {
-    exc->cvt[idx] += FT_DivFix( value, Current_Ratio( exc ) );
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                     */
-  /*                                                                       */
+    exc->cvt[idx] = ADD_LONG( exc->cvt[idx],
+                              FT_DivFix( value, Current_Ratio( exc ) ) );
+  }
+
+
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc )
   {
@@ -1585,22 +1603,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                       FT_Int          aRange,
@@ -1642,27 +1662,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                               */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    See `ttinterp.h' for details on backward compatibility mode.       */
-  /*    `Touches' the point.                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *
+   * @Note:
+   *   See `ttinterp.h' for details on backward compatibility mode.
+   *   `Touches' the point.
+   */
   static void
   Direct_Move( TT_ExecContext  exc,
                TT_GlyphZone    zone,
@@ -1728,23 +1751,26 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                     TT_GlyphZone    zone,
@@ -1772,15 +1798,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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. */
-  /*   See `ttinterp.h' for details on backward compatibility mode.        */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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.
+   *   See `ttinterp.h' for details on backward compatibility mode.
+   *
+   */
 
 
   static void
@@ -1827,14 +1853,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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. */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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
@@ -1861,28 +1887,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
               FT_F26Dot6      distance,
@@ -1909,22 +1937,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                  FT_F26Dot6      distance,
@@ -1953,22 +1983,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                       FT_F26Dot6      distance,
@@ -1999,22 +2031,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                       FT_F26Dot6      distance,
@@ -2042,22 +2076,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                     FT_F26Dot6      distance,
@@ -2086,22 +2122,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                         FT_F26Dot6      distance,
@@ -2130,28 +2168,30 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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 little 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.                                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 little 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( TT_ExecContext  exc,
                FT_F26Dot6      distance,
@@ -2183,26 +2223,28 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                   FT_F26Dot6      distance,
@@ -2234,17 +2276,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Compute_Round                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Sets the rounding mode.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    round_mode :: The rounding mode to be used.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Compute_Round
+   *
+   * @Description:
+   *   Sets the rounding mode.
+   *
+   * @Input:
+   *   round_mode ::
+   *     The rounding mode to be used.
+   */
   static void
   Compute_Round( TT_ExecContext  exc,
                  FT_Byte         round_mode )
@@ -2286,19 +2329,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    SetSuperRound                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Sets Super Round parameters.                                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    GridPeriod :: The grid period.                                     */
-  /*                                                                       */
-  /*    selector   :: The SROUND opcode.                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   SetSuperRound
+   *
+   * @Description:
+   *   Sets Super Round parameters.
+   *
+   * @Input:
+   *   GridPeriod ::
+   *     The grid period.
+   *
+   *   selector ::
+   *     The SROUND opcode.
+   */
   static void
   SetSuperRound( TT_ExecContext  exc,
                  FT_F2Dot14      GridPeriod,
@@ -2355,22 +2400,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
            FT_Pos          dx,
@@ -2382,22 +2429,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
                 FT_Pos          dx,
@@ -2409,22 +2458,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
              FT_Pos          dx,
@@ -2437,22 +2488,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( TT_ExecContext  exc,
              FT_Pos          dx,
@@ -2465,15 +2518,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Compute_Funcs                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Computes the projection and movement function pointers according   */
-  /*    to the current graphics state.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   Compute_Funcs
+   *
+   * @Description:
+   *   Computes the projection and movement function pointers according
+   *   to the current graphics state.
+   */
   static void
   Compute_Funcs( TT_ExecContext  exc )
   {
@@ -2528,28 +2581,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( FT_F26Dot6      Vx,
              FT_F26Dot6      Vy,
@@ -2577,11 +2633,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Here we start with the implementation of the various opcodes.         */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Here we start with the implementation of the various opcodes.
+   *
+   */
 
 
 #define ARRAY_BOUND_ERROR                         \
@@ -2592,12 +2648,12 @@
     } while (0)
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MPPEM[]:      Measure Pixel Per EM                                    */
-  /* Opcode range: 0x4B                                                    */
-  /* Stack:        --> Euint16                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MPPEM[]:      Measure Pixel Per EM
+   * Opcode range: 0x4B
+   * Stack:        --> Euint16
+   */
   static void
   Ins_MPPEM( TT_ExecContext  exc,
              FT_Long*        args )
@@ -2606,12 +2662,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MPS[]:        Measure Point Size                                      */
-  /* Opcode range: 0x4C                                                    */
-  /* Stack:        --> Euint16                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MPS[]:        Measure Point Size
+   * Opcode range: 0x4C
+   * Stack:        --> Euint16
+   */
   static void
   Ins_MPS( TT_ExecContext  exc,
            FT_Long*        args )
@@ -2633,12 +2689,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DUP[]:        DUPlicate the stack's top element                       */
-  /* Opcode range: 0x20                                                    */
-  /* Stack:        StkElt --> StkElt StkElt                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DUP[]:        DUPlicate the stack's top element
+   * Opcode range: 0x20
+   * Stack:        StkElt --> StkElt StkElt
+   */
   static void
   Ins_DUP( FT_Long*  args )
   {
@@ -2646,12 +2702,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* POP[]:        POP the stack's top element                             */
-  /* Opcode range: 0x21                                                    */
-  /* Stack:        StkElt -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * POP[]:        POP the stack's top element
+   * Opcode range: 0x21
+   * Stack:        StkElt -->
+   */
   static void
   Ins_POP( void )
   {
@@ -2659,12 +2715,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CLEAR[]:      CLEAR the entire stack                                  */
-  /* Opcode range: 0x22                                                    */
-  /* Stack:        StkElt... -->                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CLEAR[]:      CLEAR the entire stack
+   * Opcode range: 0x22
+   * Stack:        StkElt... -->
+   */
   static void
   Ins_CLEAR( TT_ExecContext  exc )
   {
@@ -2672,12 +2728,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SWAP[]:       SWAP the stack's top two elements                       */
-  /* Opcode range: 0x23                                                    */
-  /* Stack:        2 * StkElt --> 2 * StkElt                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SWAP[]:       SWAP the stack's top two elements
+   * Opcode range: 0x23
+   * Stack:        2 * StkElt --> 2 * StkElt
+   */
   static void
   Ins_SWAP( FT_Long*  args )
   {
@@ -2690,12 +2746,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DEPTH[]:      return the stack DEPTH                                  */
-  /* Opcode range: 0x24                                                    */
-  /* Stack:        --> uint32                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DEPTH[]:      return the stack DEPTH
+   * Opcode range: 0x24
+   * Stack:        --> uint32
+   */
   static void
   Ins_DEPTH( TT_ExecContext  exc,
              FT_Long*        args )
@@ -2704,12 +2760,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* LT[]:         Less Than                                               */
-  /* Opcode range: 0x50                                                    */
-  /* Stack:        int32? int32? --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * LT[]:         Less Than
+   * Opcode range: 0x50
+   * Stack:        int32? int32? --> bool
+   */
   static void
   Ins_LT( FT_Long*  args )
   {
@@ -2717,12 +2773,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* LTEQ[]:       Less Than or EQual                                      */
-  /* Opcode range: 0x51                                                    */
-  /* Stack:        int32? int32? --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * LTEQ[]:       Less Than or EQual
+   * Opcode range: 0x51
+   * Stack:        int32? int32? --> bool
+   */
   static void
   Ins_LTEQ( FT_Long*  args )
   {
@@ -2730,12 +2786,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GT[]:         Greater Than                                            */
-  /* Opcode range: 0x52                                                    */
-  /* Stack:        int32? int32? --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GT[]:         Greater Than
+   * Opcode range: 0x52
+   * Stack:        int32? int32? --> bool
+   */
   static void
   Ins_GT( FT_Long*  args )
   {
@@ -2743,12 +2799,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GTEQ[]:       Greater Than or EQual                                   */
-  /* Opcode range: 0x53                                                    */
-  /* Stack:        int32? int32? --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GTEQ[]:       Greater Than or EQual
+   * Opcode range: 0x53
+   * Stack:        int32? int32? --> bool
+   */
   static void
   Ins_GTEQ( FT_Long*  args )
   {
@@ -2756,12 +2812,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* EQ[]:         EQual                                                   */
-  /* Opcode range: 0x54                                                    */
-  /* Stack:        StkElt StkElt --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * EQ[]:         EQual
+   * Opcode range: 0x54
+   * Stack:        StkElt StkElt --> bool
+   */
   static void
   Ins_EQ( FT_Long*  args )
   {
@@ -2769,12 +2825,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NEQ[]:        Not EQual                                               */
-  /* Opcode range: 0x55                                                    */
-  /* Stack:        StkElt StkElt --> bool                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NEQ[]:        Not EQual
+   * Opcode range: 0x55
+   * Stack:        StkElt StkElt --> bool
+   */
   static void
   Ins_NEQ( FT_Long*  args )
   {
@@ -2782,12 +2838,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ODD[]:        Is ODD                                                  */
-  /* Opcode range: 0x56                                                    */
-  /* Stack:        f26.6 --> bool                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ODD[]:        Is ODD
+   * Opcode range: 0x56
+   * Stack:        f26.6 --> bool
+   */
   static void
   Ins_ODD( TT_ExecContext  exc,
            FT_Long*        args )
@@ -2796,12 +2852,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* EVEN[]:       Is EVEN                                                 */
-  /* Opcode range: 0x57                                                    */
-  /* Stack:        f26.6 --> bool                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * EVEN[]:       Is EVEN
+   * Opcode range: 0x57
+   * Stack:        f26.6 --> bool
+   */
   static void
   Ins_EVEN( TT_ExecContext  exc,
             FT_Long*        args )
@@ -2810,12 +2866,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* AND[]:        logical AND                                             */
-  /* Opcode range: 0x5A                                                    */
-  /* Stack:        uint32 uint32 --> uint32                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * AND[]:        logical AND
+   * Opcode range: 0x5A
+   * Stack:        uint32 uint32 --> uint32
+   */
   static void
   Ins_AND( FT_Long*  args )
   {
@@ -2823,12 +2879,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* OR[]:         logical OR                                              */
-  /* Opcode range: 0x5B                                                    */
-  /* Stack:        uint32 uint32 --> uint32                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * OR[]:         logical OR
+   * Opcode range: 0x5B
+   * Stack:        uint32 uint32 --> uint32
+   */
   static void
   Ins_OR( FT_Long*  args )
   {
@@ -2836,12 +2892,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NOT[]:        logical NOT                                             */
-  /* Opcode range: 0x5C                                                    */
-  /* Stack:        StkElt --> uint32                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NOT[]:        logical NOT
+   * Opcode range: 0x5C
+   * Stack:        StkElt --> uint32
+   */
   static void
   Ins_NOT( FT_Long*  args )
   {
@@ -2849,12 +2905,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ADD[]:        ADD                                                     */
-  /* Opcode range: 0x60                                                    */
-  /* Stack:        f26.6 f26.6 --> f26.6                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ADD[]:        ADD
+   * Opcode range: 0x60
+   * Stack:        f26.6 f26.6 --> f26.6
+   */
   static void
   Ins_ADD( FT_Long*  args )
   {
@@ -2862,12 +2918,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SUB[]:        SUBtract                                                */
-  /* Opcode range: 0x61                                                    */
-  /* Stack:        f26.6 f26.6 --> f26.6                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SUB[]:        SUBtract
+   * Opcode range: 0x61
+   * Stack:        f26.6 f26.6 --> f26.6
+   */
   static void
   Ins_SUB( FT_Long*  args )
   {
@@ -2875,12 +2931,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DIV[]:        DIVide                                                  */
-  /* Opcode range: 0x62                                                    */
-  /* Stack:        f26.6 f26.6 --> f26.6                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DIV[]:        DIVide
+   * Opcode range: 0x62
+   * Stack:        f26.6 f26.6 --> f26.6
+   */
   static void
   Ins_DIV( TT_ExecContext  exc,
            FT_Long*        args )
@@ -2892,12 +2948,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MUL[]:        MULtiply                                                */
-  /* Opcode range: 0x63                                                    */
-  /* Stack:        f26.6 f26.6 --> f26.6                                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MUL[]:        MULtiply
+   * Opcode range: 0x63
+   * Stack:        f26.6 f26.6 --> f26.6
+   */
   static void
   Ins_MUL( FT_Long*  args )
   {
@@ -2905,12 +2961,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ABS[]:        ABSolute value                                          */
-  /* Opcode range: 0x64                                                    */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ABS[]:        ABSolute value
+   * Opcode range: 0x64
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_ABS( FT_Long*  args )
   {
@@ -2919,12 +2975,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NEG[]:        NEGate                                                  */
-  /* Opcode range: 0x65                                                    */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NEG[]:        NEGate
+   * Opcode range: 0x65
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_NEG( FT_Long*  args )
   {
@@ -2932,12 +2988,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLOOR[]:      FLOOR                                                   */
-  /* Opcode range: 0x66                                                    */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLOOR[]:      FLOOR
+   * Opcode range: 0x66
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_FLOOR( FT_Long*  args )
   {
@@ -2945,12 +3001,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CEILING[]:    CEILING                                                 */
-  /* Opcode range: 0x67                                                    */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CEILING[]:    CEILING
+   * Opcode range: 0x67
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_CEILING( FT_Long*  args )
   {
@@ -2958,12 +3014,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RS[]:         Read Store                                              */
-  /* Opcode range: 0x43                                                    */
-  /* Stack:        uint32 --> uint32                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RS[]:         Read Store
+   * Opcode range: 0x43
+   * Stack:        uint32 --> uint32
+   */
   static void
   Ins_RS( TT_ExecContext  exc,
           FT_Long*        args )
@@ -3004,12 +3060,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* WS[]:         Write Store                                             */
-  /* Opcode range: 0x42                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * WS[]:         Write Store
+   * Opcode range: 0x42
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_WS( TT_ExecContext  exc,
           FT_Long*        args )
@@ -3027,12 +3083,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* WCVTP[]:      Write CVT in Pixel units                                */
-  /* Opcode range: 0x44                                                    */
-  /* Stack:        f26.6 uint32 -->                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * WCVTP[]:      Write CVT in Pixel units
+   * Opcode range: 0x44
+   * Stack:        f26.6 uint32 -->
+   */
   static void
   Ins_WCVTP( TT_ExecContext  exc,
              FT_Long*        args )
@@ -3050,12 +3106,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* WCVTF[]:      Write CVT in Funits                                     */
-  /* Opcode range: 0x70                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * WCVTF[]:      Write CVT in Funits
+   * Opcode range: 0x70
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_WCVTF( TT_ExecContext  exc,
              FT_Long*        args )
@@ -3073,12 +3129,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RCVT[]:       Read CVT                                                */
-  /* Opcode range: 0x45                                                    */
-  /* Stack:        uint32 --> f26.6                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RCVT[]:       Read CVT
+   * Opcode range: 0x45
+   * Stack:        uint32 --> f26.6
+   */
   static void
   Ins_RCVT( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3098,12 +3154,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* AA[]:         Adjust Angle                                            */
-  /* Opcode range: 0x7F                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * AA[]:         Adjust Angle
+   * Opcode range: 0x7F
+   * Stack:        uint32 -->
+   */
   static void
   Ins_AA( void )
   {
@@ -3111,14 +3167,14 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DEBUG[]:      DEBUG.  Unsupported.                                    */
-  /* Opcode range: 0x4F                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
-  /* Note: The original instruction pops a value from the stack.           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DEBUG[]:      DEBUG.  Unsupported.
+   * Opcode range: 0x4F
+   * Stack:        uint32 -->
+   *
+   * Note: The original instruction pops a value from the stack.
+   */
   static void
   Ins_DEBUG( TT_ExecContext  exc )
   {
@@ -3126,12 +3182,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ROUND[ab]:    ROUND value                                             */
-  /* Opcode range: 0x68-0x6B                                               */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ROUND[ab]:    ROUND value
+   * Opcode range: 0x68-0x6B
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_ROUND( TT_ExecContext  exc,
              FT_Long*        args )
@@ -3143,12 +3199,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NROUND[ab]:   No ROUNDing of value                                    */
-  /* Opcode range: 0x6C-0x6F                                               */
-  /* Stack:        f26.6 --> f26.6                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NROUND[ab]:   No ROUNDing of value
+   * Opcode range: 0x6C-0x6F
+   * Stack:        f26.6 --> f26.6
+   */
   static void
   Ins_NROUND( TT_ExecContext  exc,
               FT_Long*        args )
@@ -3160,12 +3216,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MAX[]:        MAXimum                                                 */
-  /* Opcode range: 0x8B                                                    */
-  /* Stack:        int32? int32? --> int32                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MAX[]:        MAXimum
+   * Opcode range: 0x8B
+   * Stack:        int32? int32? --> int32
+   */
   static void
   Ins_MAX( FT_Long*  args )
   {
@@ -3174,12 +3230,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MIN[]:        MINimum                                                 */
-  /* Opcode range: 0x8C                                                    */
-  /* Stack:        int32? int32? --> int32                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MIN[]:        MINimum
+   * Opcode range: 0x8C
+   * Stack:        int32? int32? --> int32
+   */
   static void
   Ins_MIN( FT_Long*  args )
   {
@@ -3188,12 +3244,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MINDEX[]:     Move INDEXed element                                    */
-  /* Opcode range: 0x26                                                    */
-  /* Stack:        int32? --> StkElt                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MINDEX[]:     Move INDEXed element
+   * Opcode range: 0x26
+   * Stack:        int32? --> StkElt
+   */
   static void
   Ins_MINDEX( TT_ExecContext  exc,
               FT_Long*        args )
@@ -3221,12 +3277,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CINDEX[]:     Copy INDEXed element                                    */
-  /* Opcode range: 0x25                                                    */
-  /* Stack:        int32 --> StkElt                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CINDEX[]:     Copy INDEXed element
+   * Opcode range: 0x25
+   * Stack:        int32 --> StkElt
+   */
   static void
   Ins_CINDEX( TT_ExecContext  exc,
               FT_Long*        args )
@@ -3247,12 +3303,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ROLL[]:       ROLL top three elements                                 */
-  /* Opcode range: 0x8A                                                    */
-  /* Stack:        3 * StkElt --> 3 * StkElt                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ROLL[]:       ROLL top three elements
+   * Opcode range: 0x8A
+   * Stack:        3 * StkElt --> 3 * StkElt
+   */
   static void
   Ins_ROLL( FT_Long*  args )
   {
@@ -3269,19 +3325,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MANAGING THE FLOW OF CONTROL                                          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* SLOOP[]:      Set LOOP variable                                       */
-  /* Opcode range: 0x17                                                    */
-  /* Stack:        int32? -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MANAGING THE FLOW OF CONTROL
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * SLOOP[]:      Set LOOP variable
+   * Opcode range: 0x17
+   * Stack:        int32? -->
+   */
   static void
   Ins_SLOOP( TT_ExecContext  exc,
              FT_Long*        args )
@@ -3323,12 +3379,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* IF[]:         IF test                                                 */
-  /* Opcode range: 0x58                                                    */
-  /* Stack:        StkElt -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * IF[]:         IF test
+   * Opcode range: 0x58
+   * Stack:        StkElt -->
+   */
   static void
   Ins_IF( TT_ExecContext  exc,
           FT_Long*        args )
@@ -3367,12 +3423,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ELSE[]:       ELSE                                                    */
-  /* Opcode range: 0x1B                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ELSE[]:       ELSE
+   * Opcode range: 0x1B
+   * Stack:        -->
+   */
   static void
   Ins_ELSE( TT_ExecContext  exc )
   {
@@ -3400,12 +3456,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* EIF[]:        End IF                                                  */
-  /* Opcode range: 0x59                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * EIF[]:        End IF
+   * Opcode range: 0x59
+   * Stack:        -->
+   */
   static void
   Ins_EIF( void )
   {
@@ -3413,12 +3469,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* JMPR[]:       JuMP Relative                                           */
-  /* Opcode range: 0x1C                                                    */
-  /* Stack:        int32 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * JMPR[]:       JuMP Relative
+   * Opcode range: 0x1C
+   * Stack:        int32 -->
+   */
   static void
   Ins_JMPR( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3448,12 +3504,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* JROT[]:       Jump Relative On True                                   */
-  /* Opcode range: 0x78                                                    */
-  /* Stack:        StkElt int32 -->                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * JROT[]:       Jump Relative On True
+   * Opcode range: 0x78
+   * Stack:        StkElt int32 -->
+   */
   static void
   Ins_JROT( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3463,12 +3519,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* JROF[]:       Jump Relative On False                                  */
-  /* Opcode range: 0x79                                                    */
-  /* Stack:        StkElt int32 -->                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * JROF[]:       Jump Relative On False
+   * Opcode range: 0x79
+   * Stack:        StkElt int32 -->
+   */
   static void
   Ins_JROF( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3478,19 +3534,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DEFINING AND USING FUNCTIONS AND INSTRUCTIONS                         */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* FDEF[]:       Function DEFinition                                     */
-  /* Opcode range: 0x2C                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DEFINING AND USING FUNCTIONS AND INSTRUCTIONS
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * FDEF[]:       Function DEFinition
+   * Opcode range: 0x2C
+   * Stack:        uint32 -->
+   */
   static void
   Ins_FDEF( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3788,12 +3844,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ENDF[]:       END Function definition                                 */
-  /* Opcode range: 0x2D                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ENDF[]:       END Function definition
+   * Opcode range: 0x2D
+   * Stack:        -->
+   */
   static void
   Ins_ENDF( TT_ExecContext  exc )
   {
@@ -3837,12 +3893,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* CALL[]:       CALL function                                           */
-  /* Opcode range: 0x2B                                                    */
-  /* Stack:        uint32? -->                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * CALL[]:       CALL function
+   * Opcode range: 0x2B
+   * Stack:        uint32? -->
+   */
   static void
   Ins_CALL( TT_ExecContext  exc,
             FT_Long*        args )
@@ -3926,12 +3982,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* LOOPCALL[]:   LOOP and CALL function                                  */
-  /* Opcode range: 0x2A                                                    */
-  /* Stack:        uint32? Eint16? -->                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * LOOPCALL[]:   LOOP and CALL function
+   * Opcode range: 0x2A
+   * Stack:        uint32? Eint16? -->
+   */
   static void
   Ins_LOOPCALL( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -4019,12 +4075,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* IDEF[]:       Instruction DEFinition                                  */
-  /* Opcode range: 0x89                                                    */
-  /* Stack:        Eint8 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * IDEF[]:       Instruction DEFinition
+   * Opcode range: 0x89
+   * Stack:        Eint8 -->
+   */
   static void
   Ins_IDEF( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4094,19 +4150,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PUSHING DATA ONTO THE INTERPRETER STACK                               */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* NPUSHB[]:     PUSH N Bytes                                            */
-  /* Opcode range: 0x40                                                    */
-  /* Stack:        --> uint32...                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * PUSHING DATA ONTO THE INTERPRETER STACK
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * NPUSHB[]:     PUSH N Bytes
+   * Opcode range: 0x40
+   * Stack:        --> uint32...
+   */
   static void
   Ins_NPUSHB( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4129,12 +4185,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* NPUSHW[]:     PUSH N Words                                            */
-  /* Opcode range: 0x41                                                    */
-  /* Stack:        --> int32...                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * NPUSHW[]:     PUSH N Words
+   * Opcode range: 0x41
+   * Stack:        --> int32...
+   */
   static void
   Ins_NPUSHW( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4160,12 +4216,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PUSHB[abc]:   PUSH Bytes                                              */
-  /* Opcode range: 0xB0-0xB7                                               */
-  /* Stack:        --> uint32...                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * PUSHB[abc]:   PUSH Bytes
+   * Opcode range: 0xB0-0xB7
+   * Stack:        --> uint32...
+   */
   static void
   Ins_PUSHB( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4186,12 +4242,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* PUSHW[abc]:   PUSH Words                                              */
-  /* Opcode range: 0xB8-0xBF                                               */
-  /* Stack:        --> int32...                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * PUSHW[abc]:   PUSH Words
+   * Opcode range: 0xB8-0xBF
+   * Stack:        --> int32...
+   */
   static void
   Ins_PUSHW( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4216,11 +4272,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MANAGING THE GRAPHICS STATE                                           */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * MANAGING THE GRAPHICS STATE
+   *
+   */
 
 
   static FT_Bool
@@ -4274,20 +4330,20 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SVTCA[a]:     Set (F and P) Vectors to Coordinate Axis                */
-  /* Opcode range: 0x00-0x01                                               */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
-  /* SPvTCA[a]:    Set PVector to Coordinate Axis                          */
-  /* Opcode range: 0x02-0x03                                               */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
-  /* SFvTCA[a]:    Set FVector to Coordinate Axis                          */
-  /* Opcode range: 0x04-0x05                                               */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SVTCA[a]:     Set (F and P) Vectors to Coordinate Axis
+   * Opcode range: 0x00-0x01
+   * Stack:        -->
+   *
+   * SPvTCA[a]:    Set PVector to Coordinate Axis
+   * Opcode range: 0x02-0x03
+   * Stack:        -->
+   *
+   * SFvTCA[a]:    Set FVector to Coordinate Axis
+   * Opcode range: 0x04-0x05
+   * Stack:        -->
+   */
   static void
   Ins_SxyTCA( TT_ExecContext  exc )
   {
@@ -4318,12 +4374,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SPvTL[a]:     Set PVector To Line                                     */
-  /* Opcode range: 0x06-0x07                                               */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SPvTL[a]:     Set PVector To Line
+   * Opcode range: 0x06-0x07
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_SPVTL( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4339,12 +4395,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SFvTL[a]:     Set FVector To Line                                     */
-  /* Opcode range: 0x08-0x09                                               */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SFvTL[a]:     Set FVector To Line
+   * Opcode range: 0x08-0x09
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_SFVTL( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4359,12 +4415,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SFvTPv[]:     Set FVector To PVector                                  */
-  /* Opcode range: 0x0E                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SFvTPv[]:     Set FVector To PVector
+   * Opcode range: 0x0E
+   * Stack:        -->
+   */
   static void
   Ins_SFVTPV( TT_ExecContext  exc )
   {
@@ -4373,12 +4429,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SPvFS[]:      Set PVector From Stack                                  */
-  /* Opcode range: 0x0A                                                    */
-  /* Stack:        f2.14 f2.14 -->                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SPvFS[]:      Set PVector From Stack
+   * Opcode range: 0x0A
+   * Stack:        f2.14 f2.14 -->
+   */
   static void
   Ins_SPVFS( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4400,12 +4456,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SFvFS[]:      Set FVector From Stack                                  */
-  /* Opcode range: 0x0B                                                    */
-  /* Stack:        f2.14 f2.14 -->                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SFvFS[]:      Set FVector From Stack
+   * Opcode range: 0x0B
+   * Stack:        f2.14 f2.14 -->
+   */
   static void
   Ins_SFVFS( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4425,12 +4481,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GPv[]:        Get Projection Vector                                   */
-  /* Opcode range: 0x0C                                                    */
-  /* Stack:        ef2.14 --> ef2.14                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GPv[]:        Get Projection Vector
+   * Opcode range: 0x0C
+   * Stack:        ef2.14 --> ef2.14
+   */
   static void
   Ins_GPV( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4440,12 +4496,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GFv[]:        Get Freedom Vector                                      */
-  /* Opcode range: 0x0D                                                    */
-  /* Stack:        ef2.14 --> ef2.14                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GFv[]:        Get Freedom Vector
+   * Opcode range: 0x0D
+   * Stack:        ef2.14 --> ef2.14
+   */
   static void
   Ins_GFV( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4455,12 +4511,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SRP0[]:       Set Reference Point 0                                   */
-  /* Opcode range: 0x10                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SRP0[]:       Set Reference Point 0
+   * Opcode range: 0x10
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SRP0( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4469,12 +4525,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SRP1[]:       Set Reference Point 1                                   */
-  /* Opcode range: 0x11                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SRP1[]:       Set Reference Point 1
+   * Opcode range: 0x11
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SRP1( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4483,12 +4539,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SRP2[]:       Set Reference Point 2                                   */
-  /* Opcode range: 0x12                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SRP2[]:       Set Reference Point 2
+   * Opcode range: 0x12
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SRP2( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4497,12 +4553,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SMD[]:        Set Minimum Distance                                    */
-  /* Opcode range: 0x1A                                                    */
-  /* Stack:        f26.6 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SMD[]:        Set Minimum Distance
+   * Opcode range: 0x1A
+   * Stack:        f26.6 -->
+   */
   static void
   Ins_SMD( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4511,12 +4567,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SCVTCI[]:     Set Control Value Table Cut In                          */
-  /* Opcode range: 0x1D                                                    */
-  /* Stack:        f26.6 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SCVTCI[]:     Set Control Value Table Cut In
+   * Opcode range: 0x1D
+   * Stack:        f26.6 -->
+   */
   static void
   Ins_SCVTCI( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4525,12 +4581,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SSWCI[]:      Set Single Width Cut In                                 */
-  /* Opcode range: 0x1E                                                    */
-  /* Stack:        f26.6 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SSWCI[]:      Set Single Width Cut In
+   * Opcode range: 0x1E
+   * Stack:        f26.6 -->
+   */
   static void
   Ins_SSWCI( TT_ExecContext  exc,
              FT_Long*        args )
@@ -4539,12 +4595,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SSW[]:        Set Single Width                                        */
-  /* Opcode range: 0x1F                                                    */
-  /* Stack:        int32? -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SSW[]:        Set Single Width
+   * Opcode range: 0x1F
+   * Stack:        int32? -->
+   */
   static void
   Ins_SSW( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4554,12 +4610,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPON[]:     Set auto-FLIP to ON                                     */
-  /* Opcode range: 0x4D                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPON[]:     Set auto-FLIP to ON
+   * Opcode range: 0x4D
+   * Stack:        -->
+   */
   static void
   Ins_FLIPON( TT_ExecContext  exc )
   {
@@ -4567,12 +4623,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPOFF[]:    Set auto-FLIP to OFF                                    */
-  /* Opcode range: 0x4E                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPOFF[]:    Set auto-FLIP to OFF
+   * Opcode range: 0x4E
+   * Stack:        -->
+   */
   static void
   Ins_FLIPOFF( TT_ExecContext  exc )
   {
@@ -4580,12 +4636,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SANGW[]:      Set ANGle Weight                                        */
-  /* Opcode range: 0x7E                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SANGW[]:      Set ANGle Weight
+   * Opcode range: 0x7E
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SANGW( void )
   {
@@ -4593,12 +4649,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SDB[]:        Set Delta Base                                          */
-  /* Opcode range: 0x5E                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SDB[]:        Set Delta Base
+   * Opcode range: 0x5E
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SDB( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4607,12 +4663,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SDS[]:        Set Delta Shift                                         */
-  /* Opcode range: 0x5F                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SDS[]:        Set Delta Shift
+   * Opcode range: 0x5F
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SDS( TT_ExecContext  exc,
            FT_Long*        args )
@@ -4624,12 +4680,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RTHG[]:       Round To Half Grid                                      */
-  /* Opcode range: 0x19                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RTHG[]:       Round To Half Grid
+   * Opcode range: 0x19
+   * Stack:        -->
+   */
   static void
   Ins_RTHG( TT_ExecContext  exc )
   {
@@ -4638,12 +4694,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RTG[]:        Round To Grid                                           */
-  /* Opcode range: 0x18                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RTG[]:        Round To Grid
+   * Opcode range: 0x18
+   * Stack:        -->
+   */
   static void
   Ins_RTG( TT_ExecContext  exc )
   {
@@ -4652,11 +4708,11 @@
   }
 
 
-  /*************************************************************************/
-  /* RTDG[]:       Round To Double Grid                                    */
-  /* Opcode range: 0x3D                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   * RTDG[]:       Round To Double Grid
+   * Opcode range: 0x3D
+   * Stack:        -->
+   */
   static void
   Ins_RTDG( TT_ExecContext  exc )
   {
@@ -4665,11 +4721,11 @@
   }
 
 
-  /*************************************************************************/
-  /* RUTG[]:       Round Up To Grid                                        */
-  /* Opcode range: 0x7C                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   * RUTG[]:       Round Up To Grid
+   * Opcode range: 0x7C
+   * Stack:        -->
+   */
   static void
   Ins_RUTG( TT_ExecContext  exc )
   {
@@ -4678,12 +4734,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* RDTG[]:       Round Down To Grid                                      */
-  /* Opcode range: 0x7D                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * RDTG[]:       Round Down To Grid
+   * Opcode range: 0x7D
+   * Stack:        -->
+   */
   static void
   Ins_RDTG( TT_ExecContext  exc )
   {
@@ -4692,12 +4748,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ROFF[]:       Round OFF                                               */
-  /* Opcode range: 0x7A                                                    */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ROFF[]:       Round OFF
+   * Opcode range: 0x7A
+   * Stack:        -->
+   */
   static void
   Ins_ROFF( TT_ExecContext  exc )
   {
@@ -4706,12 +4762,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SROUND[]:     Super ROUND                                             */
-  /* Opcode range: 0x76                                                    */
-  /* Stack:        Eint8 -->                                               */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SROUND[]:     Super ROUND
+   * Opcode range: 0x76
+   * Stack:        Eint8 -->
+   */
   static void
   Ins_SROUND( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4723,12 +4779,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* S45ROUND[]:   Super ROUND 45 degrees                                  */
-  /* Opcode range: 0x77                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * S45ROUND[]:   Super ROUND 45 degrees
+   * Opcode range: 0x77
+   * Stack:        uint32 -->
+   */
   static void
   Ins_S45ROUND( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -4740,15 +4796,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GC[a]:        Get Coordinate projected onto                           */
-  /* Opcode range: 0x46-0x47                                               */
-  /* Stack:        uint32 --> f26.6                                        */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: Measures from the original glyph must be taken     */
-  /*      along the dual projection vector!                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GC[a]:        Get Coordinate projected onto
+   * Opcode range: 0x46-0x47
+   * Stack:        uint32 --> f26.6
+   *
+   * XXX: UNDOCUMENTED: Measures from the original glyph must be taken
+   *      along the dual projection vector!
+   */
   static void
   Ins_GC( TT_ExecContext  exc,
           FT_Long*        args )
@@ -4777,16 +4833,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SCFS[]:       Set Coordinate From Stack                               */
-  /* Opcode range: 0x48                                                    */
-  /* Stack:        f26.6 uint32 -->                                        */
-  /*                                                                       */
-  /* Formula:                                                              */
-  /*                                                                       */
-  /*   OA := OA + ( value - OA.p )/( f.p ) * f                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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( TT_ExecContext  exc,
             FT_Long*        args )
@@ -4815,21 +4871,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MD[a]:        Measure Distance                                        */
-  /* Opcode range: 0x49-0x4A                                               */
-  /* Stack:        uint32 uint32 --> f26.6                                 */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: Measure taken in the original glyph must be along  */
-  /*                    the dual projection vector.                        */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: Flag attributes are inverted!                      */
-  /*                      0 => measure distance in original outline        */
-  /*                      1 => measure distance in grid-fitted outline     */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: `zp0 - zp1', and not `zp2 - zp1!                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MD[a]:        Measure Distance
+   * Opcode range: 0x49-0x4A
+   * Stack:        uint32 uint32 --> f26.6
+   *
+   * XXX: UNDOCUMENTED: Measure taken in the original glyph must be along
+   *                    the dual projection vector.
+   *
+   * XXX: UNDOCUMENTED: Flag attributes are inverted!
+   *                      0 => measure distance in original outline
+   *                      1 => measure distance in grid-fitted outline
+   *
+   * XXX: UNDOCUMENTED: `zp0 - zp1', and not `zp2 - zp1!
+   */
   static void
   Ins_MD( TT_ExecContext  exc,
           FT_Long*        args )
@@ -4902,12 +4958,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SDPvTL[a]:    Set Dual PVector to Line                                */
-  /* Opcode range: 0x86-0x87                                               */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SDPvTL[a]:    Set Dual PVector to Line
+   * Opcode range: 0x86-0x87
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_SDPVTL( TT_ExecContext  exc,
               FT_Long*        args )
@@ -4985,12 +5041,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SZP0[]:       Set Zone Pointer 0                                      */
-  /* Opcode range: 0x13                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SZP0[]:       Set Zone Pointer 0
+   * Opcode range: 0x13
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SZP0( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5015,12 +5071,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SZP1[]:       Set Zone Pointer 1                                      */
-  /* Opcode range: 0x14                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SZP1[]:       Set Zone Pointer 1
+   * Opcode range: 0x14
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SZP1( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5045,12 +5101,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SZP2[]:       Set Zone Pointer 2                                      */
-  /* Opcode range: 0x15                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SZP2[]:       Set Zone Pointer 2
+   * Opcode range: 0x15
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SZP2( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5075,12 +5131,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SZPS[]:       Set Zone PointerS                                       */
-  /* Opcode range: 0x16                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SZPS[]:       Set Zone PointerS
+   * Opcode range: 0x16
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SZPS( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5110,12 +5166,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* INSTCTRL[]:   INSTruction ConTRoL                                     */
-  /* Opcode range: 0x8E                                                    */
-  /* Stack:        int32 int32 -->                                         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * INSTCTRL[]:   INSTruction ConTRoL
+   * Opcode range: 0x8E
+   * Stack:        int32 int32 -->
+   */
   static void
   Ins_INSTCTRL( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -5172,12 +5228,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SCANCTRL[]:   SCAN ConTRoL                                            */
-  /* Opcode range: 0x85                                                    */
-  /* Stack:        uint32? -->                                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SCANCTRL[]:   SCAN ConTRoL
+   * Opcode range: 0x85
+   * Stack:        uint32? -->
+   */
   static void
   Ins_SCANCTRL( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -5219,12 +5275,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SCANTYPE[]:   SCAN TYPE                                               */
-  /* Opcode range: 0x8D                                                    */
-  /* Stack:        uint16 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SCANTYPE[]:   SCAN TYPE
+   * Opcode range: 0x8D
+   * Stack:        uint16 -->
+   */
   static void
   Ins_SCANTYPE( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -5234,19 +5290,19 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MANAGING OUTLINES                                                     */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPPT[]:     FLIP PoinT                                              */
-  /* Opcode range: 0x80                                                    */
-  /* Stack:        uint32... -->                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MANAGING OUTLINES
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * FLIPPT[]:     FLIP PoinT
+   * Opcode range: 0x80
+   * Stack:        uint32... -->
+   */
   static void
   Ins_FLIPPT( TT_ExecContext  exc )
   {
@@ -5295,12 +5351,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPRGON[]:   FLIP RanGe ON                                           */
-  /* Opcode range: 0x81                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPRGON[]:   FLIP RanGe ON
+   * Opcode range: 0x81
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_FLIPRGON( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -5333,12 +5389,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* FLIPRGOFF:    FLIP RanGe OFF                                          */
-  /* Opcode range: 0x82                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * FLIPRGOFF:    FLIP RanGe OFF
+   * Opcode range: 0x82
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_FLIPRGOFF( TT_ExecContext  exc,
                  FT_Long*        args )
@@ -5450,12 +5506,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SHP[a]:       SHift Point by the last point                           */
-  /* Opcode range: 0x32-0x33                                               */
-  /* Stack:        uint32... -->                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SHP[a]:       SHift Point by the last point
+   * Opcode range: 0x32-0x33
+   * Stack:        uint32... -->
+   */
   static void
   Ins_SHP( TT_ExecContext  exc )
   {
@@ -5507,16 +5563,16 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SHC[a]:       SHift Contour                                           */
-  /* Opcode range: 0x34-35                                                 */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
-  /* UNDOCUMENTED: According to Greg Hitchcock, there is one (virtual)     */
-  /*               contour in the twilight zone, namely contour number     */
-  /*               zero which includes all points of it.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SHC[a]:       SHift Contour
+   * Opcode range: 0x34-35
+   * Stack:        uint32 -->
+   *
+   * UNDOCUMENTED: According to Greg Hitchcock, there is one (virtual)
+   *               contour in the twilight zone, namely contour number
+   *               zero which includes all points of it.
+   */
   static void
   Ins_SHC( TT_ExecContext  exc,
            FT_Long*        args )
@@ -5563,12 +5619,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SHZ[a]:       SHift Zone                                              */
-  /* Opcode range: 0x36-37                                                 */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SHZ[a]:       SHift Zone
+   * Opcode range: 0x36-37
+   * Stack:        uint32 -->
+   */
   static void
   Ins_SHZ( TT_ExecContext  exc,
            FT_Long*        args )
@@ -5611,12 +5667,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* SHPIX[]:      SHift points by a PIXel amount                          */
-  /* Opcode range: 0x38                                                    */
-  /* Stack:        f26.6 uint32... -->                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * SHPIX[]:      SHift points by a PIXel amount
+   * Opcode range: 0x38
+   * Stack:        f26.6 uint32... -->
+   */
   static void
   Ins_SHPIX( TT_ExecContext  exc,
              FT_Long*        args )
@@ -5771,12 +5827,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MSIRP[a]:     Move Stack Indirect Relative Position                   */
-  /* Opcode range: 0x3A-0x3B                                               */
-  /* Stack:        f26.6 uint32 -->                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MSIRP[a]:     Move Stack Indirect Relative Position
+   * Opcode range: 0x3A-0x3B
+   * Stack:        f26.6 uint32 -->
+   */
   static void
   Ins_MSIRP( TT_ExecContext  exc,
              FT_Long*        args )
@@ -5846,12 +5902,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MDAP[a]:      Move Direct Absolute Point                              */
-  /* Opcode range: 0x2E-0x2F                                               */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MDAP[a]:      Move Direct Absolute Point
+   * Opcode range: 0x2E-0x2F
+   * Stack:        uint32 -->
+   */
   static void
   Ins_MDAP( TT_ExecContext  exc,
             FT_Long*        args )
@@ -5900,12 +5956,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MIAP[a]:      Move Indirect Absolute Point                            */
-  /* Opcode range: 0x3E-0x3F                                               */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MIAP[a]:      Move Indirect Absolute Point
+   * Opcode range: 0x3E-0x3F
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_MIAP( TT_ExecContext  exc,
             FT_Long*        args )
@@ -6020,12 +6076,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MDRP[abcde]:  Move Direct Relative Point                              */
-  /* Opcode range: 0xC0-0xDF                                               */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MDRP[abcde]:  Move Direct Relative Point
+   * Opcode range: 0xC0-0xDF
+   * Stack:        uint32 -->
+   */
   static void
   Ins_MDRP( TT_ExecContext  exc,
             FT_Long*        args )
@@ -6164,12 +6220,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MIRP[abcde]:  Move Indirect Relative Point                            */
-  /* Opcode range: 0xE0-0xFF                                               */
-  /* Stack:        int32? uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MIRP[abcde]:  Move Indirect Relative Point
+   * Opcode range: 0xE0-0xFF
+   * Stack:        int32? uint32 -->
+   */
   static void
   Ins_MIRP( TT_ExecContext  exc,
             FT_Long*        args )
@@ -6189,6 +6245,8 @@
     FT_Bool     reverse_move = FALSE;
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
+    FT_F26Dot6  delta;
+
 
     minimum_distance    = exc->GS.minimum_distance;
     control_value_cutin = exc->GS.control_value_cutin;
@@ -6221,8 +6279,11 @@
 
     /* single width test */
 
-    if ( FT_ABS( cvt_dist - exc->GS.single_width_value ) <
-         exc->GS.single_width_cutin )
+    delta = SUB_LONG( cvt_dist, exc->GS.single_width_value );
+    if ( delta < 0 )
+      delta = NEG_LONG( delta );
+
+    if ( delta < exc->GS.single_width_cutin )
     {
       if ( cvt_dist >= 0 )
         cvt_dist =  exc->GS.single_width_value;
@@ -6251,7 +6312,7 @@
     if ( exc->GS.auto_flip )
     {
       if ( ( org_dist ^ cvt_dist ) < 0 )
-        cvt_dist = -cvt_dist;
+        cvt_dist = NEG_LONG( cvt_dist );
     }
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
@@ -6276,9 +6337,6 @@
 
       if ( exc->GS.gep0 == exc->GS.gep1 )
       {
-        FT_F26Dot6  delta;
-
-
         /* XXX: According to Greg Hitchcock, the following wording is */
         /*      the right one:                                        */
         /*                                                            */
@@ -6313,9 +6371,6 @@
            exc->ignore_x_mode           &&
            exc->GS.gep0 == exc->GS.gep1 )
       {
-        FT_F26Dot6  delta;
-
-
         delta = SUB_LONG( cvt_dist, org_dist );
         if ( delta < 0 )
           delta = NEG_LONG( delta );
@@ -6412,12 +6467,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ALIGNRP[]:    ALIGN Relative Point                                    */
-  /* Opcode range: 0x3C                                                    */
-  /* Stack:        uint32 uint32... -->                                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ALIGNRP[]:    ALIGN Relative Point
+   * Opcode range: 0x3C
+   * Stack:        uint32 uint32... -->
+   */
   static void
   Ins_ALIGNRP( TT_ExecContext  exc )
   {
@@ -6475,12 +6530,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ISECT[]:      moves point to InterSECTion                             */
-  /* Opcode range: 0x0F                                                    */
-  /* Stack:        5 * uint32 -->                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ISECT[]:      moves point to InterSECTion
+   * Opcode range: 0x0F
+   * Stack:        5 * uint32 -->
+   */
   static void
   Ins_ISECT( TT_ExecContext  exc,
              FT_Long*        args )
@@ -6571,12 +6626,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ALIGNPTS[]:   ALIGN PoinTS                                            */
-  /* Opcode range: 0x27                                                    */
-  /* Stack:        uint32 uint32 -->                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ALIGNPTS[]:   ALIGN PoinTS
+   * Opcode range: 0x27
+   * Stack:        uint32 uint32 -->
+   */
   static void
   Ins_ALIGNPTS( TT_ExecContext  exc,
                 FT_Long*        args )
@@ -6603,12 +6658,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* IP[]:         Interpolate Point                                       */
-  /* Opcode range: 0x39                                                    */
-  /* Stack:        uint32... -->                                           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * IP[]:         Interpolate Point
+   * Opcode range: 0x39
+   * Stack:        uint32... -->
+   */
 
   /* SOMETIMES, DUMBER CODE IS BETTER CODE */
 
@@ -6763,12 +6818,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* UTP[a]:       UnTouch Point                                           */
-  /* Opcode range: 0x29                                                    */
-  /* Stack:        uint32 -->                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * UTP[a]:       UnTouch Point
+   * Opcode range: 0x29
+   * Stack:        uint32 -->
+   */
   static void
   Ins_UTP( TT_ExecContext  exc,
            FT_Long*        args )
@@ -6932,12 +6987,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* IUP[a]:       Interpolate Untouched Points                            */
-  /* Opcode range: 0x30-0x31                                               */
-  /* Stack:        -->                                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * IUP[a]:       Interpolate Untouched Points
+   * Opcode range: 0x30-0x31
+   * Stack:        -->
+   */
   static void
   Ins_IUP( TT_ExecContext  exc )
   {
@@ -7060,12 +7115,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DELTAPn[]:    DELTA exceptions P1, P2, P3                             */
-  /* Opcode range: 0x5D,0x71,0x72                                          */
-  /* Stack:        uint32 (2 * uint32)... -->                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DELTAPn[]:    DELTA exceptions P1, P2, P3
+   * Opcode range: 0x5D,0x71,0x72
+   * Stack:        uint32 (2 * uint32)... -->
+   */
   static void
   Ins_DELTAP( TT_ExecContext  exc,
               FT_Long*        args )
@@ -7142,12 +7197,12 @@
           if ( SUBPIXEL_HINTING_INFINALITY )
           {
             /*
-             *  Allow delta move if
+             * Allow delta move if
              *
-             *  - not using ignore_x_mode rendering,
-             *  - glyph is specifically set to allow it, or
-             *  - glyph is composite and freedom vector is not in subpixel
-             *    direction.
+             * - not using ignore_x_mode rendering,
+             * - glyph is specifically set to allow it, or
+             * - glyph is composite and freedom vector is not in subpixel
+             *   direction.
              */
             if ( !exc->ignore_x_mode                                   ||
                  ( exc->sph_tweak_flags & SPH_TWEAK_ALWAYS_DO_DELTAP ) ||
@@ -7227,12 +7282,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* DELTACn[]:    DELTA exceptions C1, C2, C3                             */
-  /* Opcode range: 0x73,0x74,0x75                                          */
-  /* Stack:        uint32 (2 * uint32)... -->                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * DELTACn[]:    DELTA exceptions C1, C2, C3
+   * Opcode range: 0x73,0x74,0x75
+   * Stack:        uint32 (2 * uint32)... -->
+   */
   static void
   Ins_DELTAC( TT_ExecContext  exc,
               FT_Long*        args )
@@ -7305,27 +7360,27 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* MISC. INSTRUCTIONS                                                    */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GETINFO[]:    GET INFOrmation                                         */
-  /* Opcode range: 0x88                                                    */
-  /* Stack:        uint32 --> uint32                                       */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED: Selector bits higher than 9 are currently (May     */
-  /*      2015) not documented in the OpenType specification.              */
-  /*                                                                       */
-  /*      Selector bit 11 is incorrectly described as bit 8, while the     */
-  /*      real meaning of bit 8 (vertical LCD subpixels) stays             */
-  /*      undocumented.  The same mistake can be found in Greg Hitchcock's */
-  /*      whitepaper.                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * MISC. INSTRUCTIONS
+   *
+   */
+
+
+  /**************************************************************************
+   *
+   * GETINFO[]:    GET INFOrmation
+   * Opcode range: 0x88
+   * Stack:        uint32 --> uint32
+   *
+   * XXX: UNDOCUMENTED: Selector bits higher than 9 are currently (May
+   *      2015) not documented in the OpenType specification.
+   *
+   *      Selector bit 11 is incorrectly described as bit 8, while the
+   *      real meaning of bit 8 (vertical LCD subpixels) stays
+   *      undocumented.  The same mistake can be found in Greg Hitchcock's
+   *      whitepaper.
+   */
   static void
   Ins_GETINFO( TT_ExecContext  exc,
                FT_Long*        args )
@@ -7337,11 +7392,11 @@
     K = 0;
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
-    /********************************/
-    /* RASTERIZER VERSION           */
-    /* Selector Bit:  0             */
-    /* Return Bit(s): 0-7           */
-    /*                              */
+    /*********************************
+     * RASTERIZER VERSION
+     * Selector Bit:  0
+     * Return Bit(s): 0-7
+     */
     if ( SUBPIXEL_HINTING_INFINALITY &&
          ( args[0] & 1 ) != 0        &&
          exc->subpixel_hinting       )
@@ -7362,39 +7417,40 @@
       if ( ( args[0] & 1 ) != 0 )
         K = driver->interpreter_version;
 
-    /********************************/
-    /* GLYPH ROTATED                */
-    /* Selector Bit:  1             */
-    /* Return Bit(s): 8             */
-    /*                              */
+    /*********************************
+     * GLYPH ROTATED
+     * Selector Bit:  1
+     * Return Bit(s): 8
+     */
     if ( ( args[0] & 2 ) != 0 && exc->tt_metrics.rotated )
       K |= 1 << 8;
 
-    /********************************/
-    /* GLYPH STRETCHED              */
-    /* Selector Bit:  2             */
-    /* Return Bit(s): 9             */
-    /*                              */
+    /*********************************
+     * GLYPH STRETCHED
+     * Selector Bit:  2
+     * Return Bit(s): 9
+     */
     if ( ( args[0] & 4 ) != 0 && exc->tt_metrics.stretched )
       K |= 1 << 9;
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
-    /********************************/
-    /* VARIATION GLYPH              */
-    /* Selector Bit:  3             */
-    /* Return Bit(s): 10            */
-    /*                              */
-    /* XXX: UNDOCUMENTED!           */
+    /*********************************
+     * VARIATION GLYPH
+     * Selector Bit:  3
+     * Return Bit(s): 10
+     *
+     * XXX: UNDOCUMENTED!
+     */
     if ( (args[0] & 8 ) != 0 && exc->face->blend )
       K |= 1 << 10;
 #endif
 
-    /********************************/
-    /* BI-LEVEL HINTING AND         */
-    /* GRAYSCALE RENDERING          */
-    /* Selector Bit:  5             */
-    /* Return Bit(s): 12            */
-    /*                              */
+    /*********************************
+     * BI-LEVEL HINTING AND
+     * GRAYSCALE RENDERING
+     * Selector Bit:  5
+     * Return Bit(s): 12
+     */
     if ( ( args[0] & 32 ) != 0 && exc->grayscale )
       K |= 1 << 12;
 
@@ -7405,50 +7461,54 @@
     /* Bold Italic'. */
     if ( SUBPIXEL_HINTING_MINIMAL && exc->subpixel_hinting_lean )
     {
-      /********************************/
-      /* HINTING FOR SUBPIXEL         */
-      /* Selector Bit:  6             */
-      /* Return Bit(s): 13            */
-      /*                              */
-      /* v40 does subpixel hinting by default. */
+      /*********************************
+       * HINTING FOR SUBPIXEL
+       * Selector Bit:  6
+       * Return Bit(s): 13
+       *
+       * v40 does subpixel hinting by default.
+       */
       if ( ( args[0] & 64 ) != 0 )
         K |= 1 << 13;
 
-      /********************************/
-      /* VERTICAL LCD SUBPIXELS?      */
-      /* Selector Bit:  8             */
-      /* Return Bit(s): 15            */
-      /*                              */
+      /*********************************
+       * VERTICAL LCD SUBPIXELS?
+       * Selector Bit:  8
+       * Return Bit(s): 15
+       */
       if ( ( args[0] & 256 ) != 0 && exc->vertical_lcd_lean )
         K |= 1 << 15;
 
-      /********************************/
-      /* SUBPIXEL POSITIONED?         */
-      /* Selector Bit:  10            */
-      /* Return Bit(s): 17            */
-      /*                              */
-      /* XXX: FreeType supports it, dependent on what client does? */
+      /*********************************
+       * SUBPIXEL POSITIONED?
+       * Selector Bit:  10
+       * Return Bit(s): 17
+       *
+       * XXX: FreeType supports it, dependent on what client does?
+       */
       if ( ( args[0] & 1024 ) != 0 )
         K |= 1 << 17;
 
-      /********************************/
-      /* SYMMETRICAL SMOOTHING        */
-      /* Selector Bit:  11            */
-      /* Return Bit(s): 18            */
-      /*                              */
-      /* The only smoothing method FreeType supports unless someone sets */
-      /* FT_LOAD_TARGET_MONO.                                            */
+      /*********************************
+       * SYMMETRICAL SMOOTHING
+       * Selector Bit:  11
+       * Return Bit(s): 18
+       *
+       * The only smoothing method FreeType supports unless someone sets
+       * FT_LOAD_TARGET_MONO.
+       */
       if ( ( args[0] & 2048 ) != 0 && exc->subpixel_hinting_lean )
         K |= 1 << 18;
 
-      /********************************/
-      /* CLEARTYPE HINTING AND        */
-      /* GRAYSCALE RENDERING          */
-      /* Selector Bit:  12            */
-      /* Return Bit(s): 19            */
-      /*                              */
-      /* Grayscale rendering is what FreeType does anyway unless someone */
-      /* sets FT_LOAD_TARGET_MONO or FT_LOAD_TARGET_LCD(_V)              */
+      /*********************************
+       * CLEARTYPE HINTING AND
+       * GRAYSCALE RENDERING
+       * Selector Bit:  12
+       * Return Bit(s): 19
+       *
+       * Grayscale rendering is what FreeType does anyway unless someone
+       * sets FT_LOAD_TARGET_MONO or FT_LOAD_TARGET_LCD(_V)
+       */
       if ( ( args[0] & 4096 ) != 0 && exc->grayscale_cleartype )
         K |= 1 << 19;
     }
@@ -7462,67 +7522,73 @@
 
       if ( exc->rasterizer_version >= 37 )
       {
-        /********************************/
-        /* HINTING FOR SUBPIXEL         */
-        /* Selector Bit:  6             */
-        /* Return Bit(s): 13            */
-        /*                              */
+        /*********************************
+         * HINTING FOR SUBPIXEL
+         * Selector Bit:  6
+         * Return Bit(s): 13
+         */
         if ( ( args[0] & 64 ) != 0 && exc->subpixel_hinting )
           K |= 1 << 13;
 
-        /********************************/
-        /* COMPATIBLE WIDTHS ENABLED    */
-        /* Selector Bit:  7             */
-        /* Return Bit(s): 14            */
-        /*                              */
-        /* Functionality still needs to be added */
+        /*********************************
+         * COMPATIBLE WIDTHS ENABLED
+         * Selector Bit:  7
+         * Return Bit(s): 14
+         *
+         * Functionality still needs to be added
+         */
         if ( ( args[0] & 128 ) != 0 && exc->compatible_widths )
           K |= 1 << 14;
 
-        /********************************/
-        /* VERTICAL LCD SUBPIXELS?      */
-        /* Selector Bit:  8             */
-        /* Return Bit(s): 15            */
-        /*                              */
-        /* Functionality still needs to be added */
+        /*********************************
+         * VERTICAL LCD SUBPIXELS?
+         * Selector Bit:  8
+         * Return Bit(s): 15
+         *
+         * Functionality still needs to be added
+         */
         if ( ( args[0] & 256 ) != 0 && exc->vertical_lcd )
           K |= 1 << 15;
 
-        /********************************/
-        /* HINTING FOR BGR?             */
-        /* Selector Bit:  9             */
-        /* Return Bit(s): 16            */
-        /*                              */
-        /* Functionality still needs to be added */
+        /*********************************
+         * HINTING FOR BGR?
+         * Selector Bit:  9
+         * Return Bit(s): 16
+         *
+         * Functionality still needs to be added
+         */
         if ( ( args[0] & 512 ) != 0 && exc->bgr )
           K |= 1 << 16;
 
         if ( exc->rasterizer_version >= 38 )
         {
-          /********************************/
-          /* SUBPIXEL POSITIONED?         */
-          /* Selector Bit:  10            */
-          /* Return Bit(s): 17            */
-          /*                              */
-          /* Functionality still needs to be added */
+          /*********************************
+           * SUBPIXEL POSITIONED?
+           * Selector Bit:  10
+           * Return Bit(s): 17
+           *
+           * Functionality still needs to be added
+           */
           if ( ( args[0] & 1024 ) != 0 && exc->subpixel_positioned )
             K |= 1 << 17;
 
-          /********************************/
-          /* SYMMETRICAL SMOOTHING        */
-          /* Selector Bit:  11            */
-          /* Return Bit(s): 18            */
-          /*                              */
-          /* Functionality still needs to be added */
+          /*********************************
+           * SYMMETRICAL SMOOTHING
+           * Selector Bit:  11
+           * Return Bit(s): 18
+           *
+           * Functionality still needs to be added
+           */
           if ( ( args[0] & 2048 ) != 0 && exc->symmetrical_smoothing )
             K |= 1 << 18;
 
-          /********************************/
-          /* GRAY CLEARTYPE               */
-          /* Selector Bit:  12            */
-          /* Return Bit(s): 19            */
-          /*                              */
-          /* Functionality still needs to be added */
+          /*********************************
+           * GRAY CLEARTYPE
+           * Selector Bit:  12
+           * Return Bit(s): 19
+           *
+           * Functionality still needs to be added
+           */
           if ( ( args[0] & 4096 ) != 0 && exc->gray_cleartype )
             K |= 1 << 19;
         }
@@ -7537,16 +7603,16 @@
 
 #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GETVARIATION[]: get normalized variation (blend) coordinates          */
-  /* Opcode range: 0x91                                                    */
-  /* Stack:        --> f2.14...                                            */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED!  There is no official documentation from Apple for */
-  /*      this bytecode instruction.  Active only if a font has GX         */
-  /*      variation axes.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GETVARIATION[]: get normalized variation (blend) coordinates
+   * Opcode range: 0x91
+   * Stack:        --> f2.14...
+   *
+   * XXX: UNDOCUMENTED!  There is no official documentation from Apple for
+   *      this bytecode instruction.  Active only if a font has GX
+   *      variation axes.
+   */
   static void
   Ins_GETVARIATION( TT_ExecContext  exc,
                     FT_Long*        args )
@@ -7576,15 +7642,15 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* GETDATA[]:    no idea what this is good for                           */
-  /* Opcode range: 0x92                                                    */
-  /* Stack:        --> 17                                                  */
-  /*                                                                       */
-  /* XXX: UNDOCUMENTED!  There is no documentation from Apple for this     */
-  /*      very weird bytecode instruction.                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * GETDATA[]:    no idea what this is good for
+   * Opcode range: 0x92
+   * Stack:        --> 17
+   *
+   * XXX: UNDOCUMENTED!  There is no documentation from Apple for this
+   *      very weird bytecode instruction.
+   */
   static void
   Ins_GETDATA( FT_Long*  args )
   {
@@ -7632,34 +7698,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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 with TRUE, test IP < CodeSize to know whether 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.                                  */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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 with TRUE, test IP < CodeSize to know whether 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.
+   *
+   */
 
 
   /* documentation is in ttinterp.h */
@@ -7691,16 +7757,16 @@
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_MINIMAL
     /*
-     *  Toggle backward compatibility according to what font wants, except
-     *  when
+     * Toggle backward compatibility according to what font wants, except
+     * when
      *
-     *  1) we have a `tricky' font that heavily relies on the interpreter to
-     *     render glyphs correctly, for example DFKai-SB, or
-     *  2) FT_RENDER_MODE_MONO (i.e, monochome rendering) is requested.
+     * 1) we have a `tricky' font that heavily relies on the interpreter to
+     *    render glyphs correctly, for example DFKai-SB, or
+     * 2) FT_RENDER_MODE_MONO (i.e, monochome rendering) is requested.
      *
-     *  In those cases, backward compatibility needs to be turned off to get
-     *  correct rendering.  The rendering is then completely up to the
-     *  font's programming.
+     * In those cases, backward compatibility needs to be turned off to get
+     * correct rendering.  The rendering is then completely up to the
+     * font's programming.
      *
      */
     if ( SUBPIXEL_HINTING_MINIMAL          &&
@@ -7801,7 +7867,7 @@
         /* and the first few stack elements also             */
         FT_TRACE6(( "  " ));
         FT_TRACE7(( "%06d ", exc->IP ));
-        FT_TRACE6(( opcode_name[exc->opcode] + 2 ));
+        FT_TRACE6(( "%s", opcode_name[exc->opcode] + 2 ));
         FT_TRACE7(( "%*s", *opcode_name[exc->opcode] == 'A'
                               ? 2
                               : 12 - ( *opcode_name[exc->opcode] - '0' ),
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttinterp.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttinterp.h                                                             */
-/*                                                                         */
-/*    TrueType bytecode interpreter (specification).                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttinterp.h
+ *
+ *   TrueType bytecode interpreter (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,10 +26,10 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Rounding mode constants.                                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Rounding mode constants.
+   */
 #define TT_Round_Off             5
 #define TT_Round_To_Half_Grid    0
 #define TT_Round_To_Grid         1
@@ -40,13 +40,13 @@
 #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).                                                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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
@@ -84,10 +84,10 @@
                       FT_F26Dot6      value );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* This structure defines a call record, used to manage function calls.  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * This structure defines a call record, used to manage function calls.
+   */
   typedef struct  TT_CallRec_
   {
     FT_Int   Caller_Range;
@@ -101,11 +101,11 @@
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* These structures define rules used to tweak subpixel hinting for      */
-  /* various fonts.  "", 0, "", NULL value indicates to match any value.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * These structures define rules used to tweak subpixel hinting for
+   * various fonts.  "", 0, "", NULL value indicates to match any value.
+   */
 
 #define SPH_MAX_NAME_SIZE      32
 #define SPH_MAX_CLASS_MEMBERS  100
@@ -141,11 +141,11 @@
 #endif /* TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* The main structure for the interpreter which collects all necessary   */
-  /* variables and states.                                                 */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * The main structure for the interpreter which collects all necessary
+   * variables and states.
+   */
   typedef struct  TT_ExecContextRec_
   {
     TT_Face            face;
@@ -352,7 +352,7 @@
      *     https://www.microsoft.com/typography/cleartype/truetypecleartype.aspx
      *
      * [3] Beat Stamm describes it in more detail:
-     *     http://www.beatstamm.com/typography/RTRCh4.htm#Sec12
+     *     http://rastertragedy.com/RTRCh4.htm#Sec12.
      *
      * [4] The list of `native ClearType' fonts is small at the time of this
      *     writing; I found the following on a Windows 10 Update 1511
@@ -464,26 +464,27 @@
 #endif /* TT_USE_BYTECODE_INTERPRETER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.      */
-  /*    (And right now only the glyph loader uses it.)                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.
+   *   (And right now only the glyph loader uses it.)
+   */
   FT_EXPORT( TT_ExecContext )
   TT_New_Context( TT_Driver  driver );
 
@@ -506,27 +507,28 @@
 #endif /* TT_USE_BYTECODE_INTERPRETER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 );
 
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttobjs.c                                                               */
-/*                                                                         */
-/*    Objects manager (body).                                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttobjs.c
+ *
+ *   Objects manager (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -36,36 +36,37 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  ttobjs
 
 
 #ifdef TT_USE_BYTECODE_INTERPRETER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                       GLYPH ZONE FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                      GLYPH ZONE FUNCTIONS
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_glyphzone_done                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Deallocate a glyph zone.                                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    zone :: A pointer to the target glyph zone.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_glyphzone_done
+   *
+   * @Description:
+   *   Deallocate a glyph zone.
+   *
+   * @Input:
+   *   zone ::
+   *     A pointer to the target glyph zone.
+   */
   FT_LOCAL_DEF( void )
   tt_glyphzone_done( TT_GlyphZone  zone )
   {
@@ -87,27 +88,31 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_glyphzone_new                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Allocate 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_glyphzone_new
+   *
+   * @Description:
+   *   Allocate 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,
@@ -566,32 +571,37 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_init                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a given TrueType face object.                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream     :: The source font stream.                              */
-  /*                                                                       */
-  /*    face_index :: The index of the TrueType font, if we are opening a  */
-  /*                  collection, in bits 0-15.  The numbered instance     */
-  /*                  index~+~1 of a GX (sub)font, if applicable, in bits  */
-  /*                  16-30.                                               */
-  /*                                                                       */
-  /*    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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_init
+   *
+   * @Description:
+   *   Initialize a given TrueType face object.
+   *
+   * @Input:
+   *   stream ::
+   *     The source font stream.
+   *
+   *   face_index ::
+   *     The index of the TrueType font, if we are opening a
+   *     collection, in bits 0-15.  The numbered instance
+   *     index~+~1 of a GX (sub)font, if applicable, in bits
+   *     16-30.
+   *
+   *   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 */
@@ -743,17 +753,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_done                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalize a given face object.                                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A pointer to the face object to destroy.                   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_done
+   *
+   * @Description:
+   *   Finalize 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 */
   {
@@ -799,30 +810,32 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                           SIZE  FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                          SIZE  FUNCTIONS
+   *
+   */
 
 #ifdef TT_USE_BYTECODE_INTERPRETER
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_run_fpgm                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Run the font program.                                              */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size     :: A handle to the size object.                           */
-  /*                                                                       */
-  /*    pedantic :: Set if bytecode execution should be pedantic.          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_run_fpgm
+   *
+   * @Description:
+   *   Run the font program.
+   *
+   * @Input:
+   *   size ::
+   *     A handle to the size object.
+   *
+   *   pedantic ::
+   *     Set if bytecode execution should be pedantic.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_size_run_fpgm( TT_Size  size,
                     FT_Bool  pedantic )
@@ -899,22 +912,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_run_prep                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Run the control value program.                                     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size     :: A handle to the size object.                           */
-  /*                                                                       */
-  /*    pedantic :: Set if bytecode execution should be pedantic.          */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_run_prep
+   *
+   * @Description:
+   *   Run the control value program.
+   *
+   * @Input:
+   *   size ::
+   *     A handle to the size object.
+   *
+   *   pedantic ::
+   *     Set if bytecode execution should be pedantic.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_size_run_prep( TT_Size  size,
                     FT_Bool  pedantic )
@@ -1159,10 +1174,16 @@
       TT_Face  face = (TT_Face)size->root.face;
 
 
-      /* Scale the cvt values to the new ppem.          */
-      /* We use by default the y ppem to scale the CVT. */
+      /* Scale the cvt values to the new ppem.            */
+      /* By default, we use the y ppem value for scaling. */
+      FT_TRACE6(( "CVT values:\n" ));
       for ( i = 0; i < size->cvt_size; i++ )
+      {
         size->cvt[i] = FT_MulFix( face->cvt[i], size->ttmetrics.scale );
+        FT_TRACE6(( "  %3d: %d (%f)\n",
+                    i, face->cvt[i], size->cvt[i] / 64.0 ));
+      }
+      FT_TRACE6(( "\n" ));
 
       /* all twilight points are originally zero */
       for ( i = 0; i < (FT_UInt)size->twilight.n_points; i++ )
@@ -1191,20 +1212,21 @@
 #endif /* TT_USE_BYTECODE_INTERPRETER */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_init                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a new TrueType size object.                             */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    size :: A handle to the size object.                               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_init
+   *
+   * @Description:
+   *   Initialize 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 */
   {
@@ -1224,17 +1246,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_done                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The TrueType size object finalizer.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size :: A handle to the target size object.                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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 */
   {
@@ -1249,22 +1272,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_size_reset                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reset a TrueType size when resolutions and character dimensions    */
-  /*    have been changed.                                                 */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    size        :: A handle to the target size object.                 */
-  /*                                                                       */
-  /*    only_height :: Only recompute ascender, descender, and height;     */
-  /*                   this flag is used for variation fonts where         */
-  /*                   `tt_size_reset' is used as an iterator function.    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_size_reset
+   *
+   * @Description:
+   *   Reset a TrueType size when resolutions and character dimensions
+   *   have been changed.
+   *
+   * @Input:
+   *   size ::
+   *     A handle to the target size object.
+   *
+   *   only_height ::
+   *     Only recompute ascender, descender, and height;
+   *     this flag is used for variation fonts where
+   *     `tt_size_reset' is used as an iterator function.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_size_reset( TT_Size  size,
                  FT_Bool  only_height )
@@ -1358,20 +1383,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_driver_init                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a given TrueType driver object.                         */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target driver object.                    */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_driver_init
+   *
+   * @Description:
+   *   Initialize 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  ttdriver )     /* TT_Driver */
   {
@@ -1398,17 +1424,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_driver_done                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalize a given TrueType driver.                                  */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target TrueType driver.                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_driver_done
+   *
+   * @Description:
+   *   Finalize 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 */
   {
@@ -1416,20 +1443,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_slot_init                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Initialize a new slot object.                                      */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    slot :: A handle to the slot object.                               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_slot_init
+   *
+   * @Description:
+   *   Initialize a new slot object.
+   *
+   * @InOut:
+   *   slot ::
+   *     A handle to the slot object.
+   *
+   * @Return:
+   *   FreeType error code.  0 means success.
+   */
   FT_LOCAL_DEF( FT_Error )
   tt_slot_init( FT_GlyphSlot  slot )
   {
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttobjs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttobjs.h                                                               */
-/*                                                                         */
-/*    Objects manager (specification).                                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttobjs.h
+ *
+ *   Objects manager (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -28,40 +28,40 @@
 FT_BEGIN_HEADER
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    TT_Driver                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a TrueType driver object.                              */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   TT_Driver
+   *
+   * @Description:
+   *   A handle to a TrueType driver object.
+   */
   typedef struct TT_DriverRec_*  TT_Driver;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.   */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Struct:
+   *   TT_GraphicsState
+   *
+   * @Description:
+   *   The TrueType graphics state used during bytecode interpretation.
+   */
   typedef struct  TT_GraphicsState_
   {
     FT_UShort      rp0;
@@ -113,25 +113,25 @@
 
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*  EXECUTION SUBTABLES                                                  */
-  /*                                                                       */
-  /*  These sub-tables relate to instruction execution.                    */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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,
@@ -152,10 +152,10 @@
   typedef TT_CodeRange  TT_CodeRangeTable[TT_MAX_CODE_RANGES];
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Defines a function/instruction definition record.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Defines a function/instruction definition record.
+   */
   typedef struct  TT_DefRecord_
   {
     FT_Int    range;          /* in which code range is it located?     */
@@ -169,10 +169,10 @@
   } TT_DefRecord, *TT_DefArray;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Subglyph transformation record.                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Subglyph transformation record.
+   */
   typedef struct  TT_Transform_
   {
     FT_Fixed    xx, xy;     /* transformation matrix coefficients */
@@ -182,72 +182,72 @@
   } TT_Transform;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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 TT_Size_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                                                      */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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 TT_Size_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.                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Metrics used by the TrueType size and context objects.
+   */
   typedef struct  TT_Size_Metrics_
   {
     /* for non-square pixels */
@@ -268,10 +268,10 @@
   } TT_Size_Metrics;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TrueType size class.                                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TrueType size class.
+   */
   typedef struct  TT_SizeRec_
   {
     FT_SizeRec         root;
@@ -324,10 +324,10 @@
   } TT_SizeRec;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* TrueType driver class.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * TrueType driver class.
+   */
   typedef struct  TT_DriverRec_
   {
     FT_DriverRec  root;
@@ -348,10 +348,10 @@
   /* will always use the TT driver to create them.                         */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Face functions                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Face functions
+   */
   FT_LOCAL( FT_Error )
   tt_face_init( FT_Stream      stream,
                 FT_Face        ttface,      /* TT_Face */
@@ -363,10 +363,10 @@
   tt_face_done( FT_Face  ttface );          /* TT_Face */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Size functions                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Size functions
+   */
   FT_LOCAL( FT_Error )
   tt_size_init( FT_Size  ttsize );          /* TT_Size */
 
@@ -394,10 +394,10 @@
                  FT_Bool  only_height );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Driver functions                                                      */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Driver functions
+   */
   FT_LOCAL( FT_Error )
   tt_driver_init( FT_Module  ttdriver );    /* TT_Driver */
 
@@ -405,10 +405,10 @@
   tt_driver_done( FT_Module  ttdriver );    /* TT_Driver */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Slot functions                                                        */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Slot functions
+   */
   FT_LOCAL( FT_Error )
   tt_slot_init( FT_GlyphSlot  slot );
 
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttpic.c	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpic.c                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for truetype module. */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 "ttpic.h"
-#include "tterrors.h"
-
-
-#ifdef FT_CONFIG_OPTION_PIC
-
-  /* forward declaration of PIC init functions from ttdriver.c */
-  FT_Error
-  FT_Create_Class_tt_services( FT_Library           library,
-                               FT_ServiceDescRec**  output_class );
-  void
-  FT_Destroy_Class_tt_services( FT_Library          library,
-                                FT_ServiceDescRec*  clazz );
-  void
-  FT_Init_Class_tt_service_gx_multi_masters(
-    FT_Service_MultiMastersRec*  sv_mm );
-  void
-  FT_Init_Class_tt_service_truetype_glyf(
-    FT_Service_TTGlyfRec*  sv_ttglyf );
-
-
-  void
-  tt_driver_class_pic_free( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Memory          memory        = library->memory;
-
-
-    if ( pic_container->truetype )
-    {
-      TTModulePIC*  container = (TTModulePIC*)pic_container->truetype;
-
-
-      if ( container->tt_services )
-        FT_Destroy_Class_tt_services( library, container->tt_services );
-      container->tt_services = NULL;
-      FT_FREE( container );
-      pic_container->truetype = NULL;
-    }
-  }
-
-
-  FT_Error
-  tt_driver_class_pic_init( FT_Library  library )
-  {
-    FT_PIC_Container*  pic_container = &library->pic_container;
-    FT_Error           error         = FT_Err_Ok;
-    TTModulePIC*       container     = NULL;
-    FT_Memory          memory        = library->memory;
-
-
-    /* allocate pointer, clear and set global container pointer */
-    if ( FT_ALLOC( container, sizeof ( *container ) ) )
-      return error;
-    FT_MEM_SET( container, 0, sizeof ( *container ) );
-    pic_container->truetype = container;
-
-    /* initialize pointer table - this is how the module usually */
-    /* expects this data                                         */
-    error = FT_Create_Class_tt_services( library,
-                                         &container->tt_services );
-    if ( error )
-      goto Exit;
-#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
-    FT_Init_Class_tt_service_gx_multi_masters(
-      &container->tt_service_gx_multi_masters );
-#endif
-    FT_Init_Class_tt_service_truetype_glyf(
-      &container->tt_service_truetype_glyf );
-
-  Exit:
-    if ( error )
-      tt_driver_class_pic_free( library );
-    return error;
-  }
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttpic.h	Wed May 08 22:59:20 2019 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,88 +0,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpic.h                                                                */
-/*                                                                         */
-/*    The FreeType position independent code services for truetype module. */
-/*                                                                         */
-/*  Copyright 2009-2018 by                                                 */
-/*  Oran Agra and Mickey Gabel.                                            */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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 TTPIC_H_
-#define TTPIC_H_
-
-
-#include FT_INTERNAL_PIC_H
-
-
-#ifndef FT_CONFIG_OPTION_PIC
-
-#define TT_SERVICES_GET                    tt_services
-#define TT_SERVICE_GX_MULTI_MASTERS_GET    tt_service_gx_multi_masters
-#define TT_SERVICE_METRICS_VARIATIONS_GET  tt_service_metrics_variations
-#define TT_SERVICE_TRUETYPE_GLYF_GET       tt_service_truetype_glyf
-#define TT_SERVICE_PROPERTIES_GET          tt_service_properties
-
-#else /* FT_CONFIG_OPTION_PIC */
-
-#include FT_MULTIPLE_MASTERS_H
-#include FT_SERVICE_MULTIPLE_MASTERS_H
-#include FT_SERVICE_METRICS_VARIATIONS_H
-#include FT_SERVICE_TRUETYPE_GLYF_H
-#include FT_SERVICE_PROPERTIES_H
-
-
-FT_BEGIN_HEADER
-
-  typedef struct  TTModulePIC_
-  {
-    FT_ServiceDescRec*               tt_services;
-#ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT
-    FT_Service_MultiMastersRec       tt_service_gx_multi_masters;
-    FT_Service_MetricsVariationsRec  tt_service_metrics_variations;
-#endif
-    FT_Service_TTGlyfRec             tt_service_truetype_glyf;
-    FT_Service_PropertiesRec         tt_service_properties;
-
-  } TTModulePIC;
-
-
-#define GET_PIC( lib )                                      \
-          ( (TTModulePIC*)((lib)->pic_container.truetype) )
-#define TT_SERVICES_GET                       \
-          ( GET_PIC( library )->tt_services )
-#define TT_SERVICE_METRICS_VARIATIONS_GET                       \
-          ( GET_PIC( library )->tt_service_metrics_variations )
-#define TT_SERVICE_GX_MULTI_MASTERS_GET                       \
-          ( GET_PIC( library )->tt_service_gx_multi_masters )
-#define TT_SERVICE_TRUETYPE_GLYF_GET                       \
-          ( GET_PIC( library )->tt_service_truetype_glyf )
-#define TT_SERVICE_PROPERTIES_GET                       \
-          ( GET_PIC( library )->tt_service_properties )
-
-
-  /* see ttpic.c for the implementation */
-  void
-  tt_driver_class_pic_free( FT_Library  library );
-
-  FT_Error
-  tt_driver_class_pic_init( FT_Library  library );
-
-FT_END_HEADER
-
-#endif /* FT_CONFIG_OPTION_PIC */
-
- /* */
-
-#endif /* TTPIC_H_ */
-
-
-/* END */
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttpload.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpload.c                                                              */
-/*                                                                         */
-/*    TrueType-specific tables loader (body).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttpload.c
+ *
+ *   TrueType-specific tables loader (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -31,33 +31,35 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  ttpload
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_loca                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the locations table.                                          */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: The input stream.                                        */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_loca
+   *
+   * @Description:
+   *   Load 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 )
@@ -297,23 +299,25 @@
 
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_cvt                                                   */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_cvt
+   *
+   * @Description:
+   *   Load 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 )
@@ -378,23 +382,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_fpgm                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the font 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_fpgm
+   *
+   * @Description:
+   *   Load the font 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 )
@@ -440,23 +446,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_prep                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load 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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_prep
+   *
+   * @Description:
+   *   Load 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_prep( TT_Face    face,
                      FT_Stream  stream )
@@ -501,22 +509,24 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    tt_face_load_hdmx                                                  */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Load the `hdmx' table into the face object.                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face   :: A handle to the target face object.                      */
-  /*                                                                       */
-  /*    stream :: A handle to the input stream.                            */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Function:
+   *   tt_face_load_hdmx
+   *
+   * @Description:
+   *   Load the `hdmx' table into the face object.
+   *
+   * @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,
@@ -610,11 +620,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Return the advance width table for a given pixel size if it is found  */
-  /* in the font's `hdmx' table (if any).                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Return the advance width table for a given pixel size if it is found
+   * in the font's `hdmx' table (if any).
+   */
   FT_LOCAL_DEF( FT_Byte* )
   tt_face_get_device_metrics( TT_Face  face,
                               FT_UInt  ppem,
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttpload.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttpload.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttpload.h                                                              */
-/*                                                                         */
-/*    TrueType-specific tables loader (specification).                     */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttpload.h
+ *
+ *   TrueType-specific tables loader (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttsubpix.c                                                             */
-/*                                                                         */
-/*    TrueType Subpixel Hinting.                                           */
-/*                                                                         */
-/*  Copyright 2010-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttsubpix.c
+ *
+ *   TrueType Subpixel Hinting.
+ *
+ * Copyright (C) 2010-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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
@@ -30,35 +30,35 @@
 #if defined( TT_USE_BYTECODE_INTERPRETER )            && \
     defined( TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY )
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* These rules affect how the TT Interpreter does hinting, with the      */
-  /* goal of doing subpixel hinting by (in general) ignoring x moves.      */
-  /* Some of these rules are fixes that go above and beyond the            */
-  /* stated techniques in the MS whitepaper on Cleartype, due to           */
-  /* artifacts in many glyphs.  So, these rules make some glyphs render    */
-  /* better than they do in the MS rasterizer.                             */
-  /*                                                                       */
-  /* "" string or 0 int/char indicates to apply to all glyphs.             */
-  /* "-" used as dummy placeholders, but any non-matching string works.    */
-  /*                                                                       */
-  /* Some of this could arguably be implemented in fontconfig, however:    */
-  /*                                                                       */
-  /*  - Fontconfig can't set things on a glyph-by-glyph basis.             */
-  /*  - The tweaks that happen here are very low-level, from an average    */
-  /*    user's point of view and are best implemented in the hinter.       */
-  /*                                                                       */
-  /* The goal is to make the subpixel hinting techniques as generalized    */
-  /* as possible across all fonts to prevent the need for extra rules such */
-  /* as these.                                                             */
-  /*                                                                       */
-  /* The rule structure is designed so that entirely new rules can easily  */
-  /* be added when a new compatibility feature is discovered.              */
-  /*                                                                       */
-  /* The rule structures could also use some enhancement to handle ranges. */
-  /*                                                                       */
-  /*     ****************** WORK IN PROGRESS *******************           */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * These rules affect how the TT Interpreter does hinting, with the
+   * goal of doing subpixel hinting by (in general) ignoring x moves.
+   * Some of these rules are fixes that go above and beyond the
+   * stated techniques in the MS whitepaper on Cleartype, due to
+   * artifacts in many glyphs.  So, these rules make some glyphs render
+   * better than they do in the MS rasterizer.
+   *
+   * "" string or 0 int/char indicates to apply to all glyphs.
+   * "-" used as dummy placeholders, but any non-matching string works.
+   *
+   * Some of this could arguably be implemented in fontconfig, however:
+   *
+   * - Fontconfig can't set things on a glyph-by-glyph basis.
+   * - The tweaks that happen here are very low-level, from an average
+   *   user's point of view and are best implemented in the hinter.
+   *
+   * The goal is to make the subpixel hinting techniques as generalized
+   * as possible across all fonts to prevent the need for extra rules such
+   * as these.
+   *
+   * The rule structure is designed so that entirely new rules can easily
+   * be added when a new compatibility feature is discovered.
+   *
+   * The rule structures could also use some enhancement to handle ranges.
+   *
+   *     ****************** WORK IN PROGRESS *******************
+   */
 
   /* These are `classes' of fonts that can be grouped together and used in */
   /* rules below.  A blank entry "" is required at the end of these!       */
--- a/src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/truetype/ttsubpix.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ttsubpix.h                                                             */
-/*                                                                         */
-/*    TrueType Subpixel Hinting.                                           */
-/*                                                                         */
-/*  Copyright 2010-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * ttsubpix.h
+ *
+ *   TrueType Subpixel Hinting.
+ *
+ * Copyright (C) 2010-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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 TTSUBPIX_H_
@@ -29,11 +29,11 @@
 
 #ifdef TT_SUPPORT_SUBPIXEL_HINTING_INFINALITY
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* ID flags to identify special functions at FDEF and runtime.           */
-  /*                                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * ID flags to identify special functions at FDEF and runtime.
+   *
+   */
 #define SPH_FDEF_INLINE_DELTA_1       0x0000001
 #define SPH_FDEF_INLINE_DELTA_2       0x0000002
 #define SPH_FDEF_DIAGONAL_STROKE      0x0000004
@@ -45,11 +45,11 @@
 #define SPH_FDEF_TYPEMAN_DIAGENDCTRL  0x0000100
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Tweak flags that are set for each glyph by the below rules.           */
-  /*                                                                       */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Tweak flags that are set for each glyph by the below rules.
+   *
+   */
 #define SPH_TWEAK_ALLOW_X_DMOVE                   0x0000001UL
 #define SPH_TWEAK_ALWAYS_DO_DELTAP                0x0000002UL
 #define SPH_TWEAK_ALWAYS_SKIP_DELTAP              0x0000004UL
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1afm.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1afm.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1afm.c                                                                */
-/*                                                                         */
-/*    AFM support for Type 1 fonts (body).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1afm.c
+ *
+ *   AFM support for Type 1 fonts (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -26,14 +26,14 @@
 
 #ifndef T1_CONFIG_OPTION_NO_AFM
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* 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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  t1afm
 
 
   FT_LOCAL_DEF( void )
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1afm.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1afm.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1afm.h                                                                */
-/*                                                                         */
-/*    AFM support for Type 1 fonts (specification).                        */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1afm.h
+ *
+ *   AFM support for Type 1 fonts (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1driver.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1driver.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1driver.c                                                             */
-/*                                                                         */
-/*    Type 1 driver interface (body).                                      */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1driver.c
+ *
+ *   Type 1 driver interface (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -43,19 +43,19 @@
 #include FT_SERVICE_KERNING_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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  t1driver
 
- /*
-  *  GLYPH DICT SERVICE
-  *
-  */
+  /*
+   * GLYPH DICT SERVICE
+   *
+   */
 
   static FT_Error
   t1_get_glyph_name( T1_Face     face,
@@ -97,7 +97,7 @@
 
 
   /*
-   *  POSTSCRIPT NAME SERVICE
+   * POSTSCRIPT NAME SERVICE
    *
    */
 
@@ -115,30 +115,32 @@
 
 
   /*
-   *  MULTIPLE MASTERS SERVICE
+   * 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,   /* get_mm         */
-    (FT_Set_MM_Design_Func) T1_Set_MM_Design,      /* set_mm_design  */
-    (FT_Set_MM_Blend_Func)  T1_Set_MM_Blend,       /* set_mm_blend   */
-    (FT_Get_MM_Blend_Func)  T1_Get_MM_Blend,       /* get_mm_blend   */
-    (FT_Get_MM_Var_Func)    T1_Get_MM_Var,         /* get_mm_var     */
-    (FT_Set_Var_Design_Func)T1_Set_Var_Design,     /* set_var_design */
-    (FT_Get_Var_Design_Func)T1_Get_Var_Design,     /* get_var_design */
-    (FT_Set_Instance_Func)  T1_Reset_MM_Blend,     /* set_instance   */
+    (FT_Get_MM_Func)             T1_Get_Multi_Master,    /* get_mm              */
+    (FT_Set_MM_Design_Func)      T1_Set_MM_Design,       /* set_mm_design       */
+    (FT_Set_MM_Blend_Func)       T1_Set_MM_Blend,        /* set_mm_blend        */
+    (FT_Get_MM_Blend_Func)       T1_Get_MM_Blend,        /* get_mm_blend        */
+    (FT_Get_MM_Var_Func)         T1_Get_MM_Var,          /* get_mm_var          */
+    (FT_Set_Var_Design_Func)     T1_Set_Var_Design,      /* set_var_design      */
+    (FT_Get_Var_Design_Func)     T1_Get_Var_Design,      /* get_var_design      */
+    (FT_Set_Instance_Func)       T1_Reset_MM_Blend,      /* set_instance        */
+    (FT_Set_MM_WeightVector_Func)T1_Set_MM_WeightVector, /* set_mm_weightvector */
+    (FT_Get_MM_WeightVector_Func)T1_Get_MM_WeightVector, /* get_mm_weightvector */
 
-    (FT_Get_Var_Blend_Func) NULL,                  /* get_var_blend  */
-    (FT_Done_Blend_Func)    T1_Done_Blend          /* done_blend     */
+    (FT_Get_Var_Blend_Func)      NULL,                   /* get_var_blend       */
+    (FT_Done_Blend_Func)         T1_Done_Blend           /* done_blend          */
   };
 #endif
 
 
   /*
-   *  POSTSCRIPT INFO SERVICE
+   * POSTSCRIPT INFO SERVICE
    *
    */
 
@@ -270,9 +272,12 @@
       break;
 
     case PS_DICT_FONT_NAME:
-      retval = ft_strlen( type1->font_name ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_name ), retval );
+      if ( type1->font_name )
+      {
+        retval = ft_strlen( type1->font_name ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_name ), retval );
+      }
       break;
 
     case PS_DICT_UNIQUE_ID:
@@ -362,7 +367,7 @@
             ok = 1;
         }
 
-        if ( ok )
+        if ( ok && type1->subrs )
         {
           retval = type1->subrs_len[idx] + 1;
           if ( value && value_len >= retval )
@@ -559,33 +564,49 @@
       break;
 
     case PS_DICT_VERSION:
-      retval = ft_strlen( type1->font_info.version ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.version ), retval );
+      if ( type1->font_info.version )
+      {
+        retval = ft_strlen( type1->font_info.version ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.version ), retval );
+      }
       break;
 
     case PS_DICT_NOTICE:
-      retval = ft_strlen( type1->font_info.notice ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.notice ), retval );
+      if ( type1->font_info.notice )
+      {
+        retval = ft_strlen( type1->font_info.notice ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.notice ), retval );
+      }
       break;
 
     case PS_DICT_FULL_NAME:
-      retval = ft_strlen( type1->font_info.full_name ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.full_name ), retval );
+      if ( type1->font_info.full_name )
+      {
+        retval = ft_strlen( type1->font_info.full_name ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.full_name ), retval );
+      }
       break;
 
     case PS_DICT_FAMILY_NAME:
-      retval = ft_strlen( type1->font_info.family_name ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.family_name ), retval );
+      if ( type1->font_info.family_name )
+      {
+        retval = ft_strlen( type1->font_info.family_name ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.family_name ),
+                     retval );
+      }
       break;
 
     case PS_DICT_WEIGHT:
-      retval = ft_strlen( type1->font_info.weight ) + 1;
-      if ( value && value_len >= retval )
-        ft_memcpy( value, (void *)( type1->font_info.weight ), retval );
+      if ( type1->font_info.weight )
+      {
+        retval = ft_strlen( type1->font_info.weight ) + 1;
+        if ( value && value_len >= retval )
+          ft_memcpy( value, (void *)( type1->font_info.weight ), retval );
+      }
       break;
 
     case PS_DICT_ITALIC_ANGLE:
@@ -618,7 +639,7 @@
 
 
   /*
-   *  PROPERTY SERVICE
+   * PROPERTY SERVICE
    *
    */
 
@@ -630,7 +651,7 @@
 
 
   /*
-   *  SERVICE LIST
+   * SERVICE LIST
    *
    */
 
@@ -665,38 +686,42 @@
 
 #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.             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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     t1face,        /* T1_Face */
                FT_UInt     left_glyph,
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1driver.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1driver.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1driver.h                                                             */
-/*                                                                         */
-/*    High-level Type 1 driver interface (specification).                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1driver.h
+ *
+ *   High-level Type 1 driver interface (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -26,14 +26,8 @@
 
 FT_BEGIN_HEADER
 
-#ifdef FT_CONFIG_OPTION_PIC
-#error "this module does not support PIC yet"
-#endif
-
-
   FT_EXPORT_VAR( const FT_Driver_ClassRec )  t1_driver_class;
 
-
 FT_END_HEADER
 
 #endif /* T1DRIVER_H_ */
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1errors.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1errors.h	Thu May 09 16:09:39 2019 -0700
@@ -1,26 +1,26 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1errors.h                                                             */
-/*                                                                         */
-/*    Type 1 error codes (specification only).                             */
-/*                                                                         */
-/*  Copyright 2001-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1errors.h
+ *
+ *   Type 1 error codes (specification only).
+ *
+ * Copyright (C) 2001-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.   */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * This file is used to define the Type 1 error enumeration constants.
+   *
+   */
 
 #ifndef T1ERRORS_H_
 #define T1ERRORS_H_
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1gload.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1gload.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1gload.c                                                              */
-/*                                                                         */
-/*    Type 1 Glyph Loader (body).                                          */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1gload.c
+ *
+ *   Type 1 Glyph Loader (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -29,14 +29,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  t1gload
 
 
   static FT_Error
@@ -62,6 +62,7 @@
     PS_Driver  driver = (PS_Driver)FT_FACE_DRIVER( face );
 #endif
 
+
     decoder->font_matrix = type1->font_matrix;
     decoder->font_offset = type1->font_offset;
 
@@ -249,6 +250,8 @@
 
     *max_advance = 0;
 
+    FT_TRACE6(( "T1_Compute_Max_Advance:\n" ));
+
     /* for each glyph, parse the glyph charstring and extract */
     /* the advance width                                      */
     for ( glyph_index = 0; glyph_index < type1->num_glyphs; glyph_index++ )
@@ -261,6 +264,9 @@
       /* ignore the error if one occurred - skip to next glyph */
     }
 
+    FT_TRACE6(( "T1_Compute_Max_Advance: max advance: %f\n",
+                *max_advance / 65536.0 ));
+
     psaux->t1_decoder_funcs->done( &decoder );
 
     return FT_Err_Ok;
@@ -282,11 +288,18 @@
     FT_Error       error;
 
 
+    FT_TRACE5(( "T1_Get_Advances:\n" ));
+
     if ( load_flags & FT_LOAD_VERTICAL_LAYOUT )
     {
       for ( nn = 0; nn < count; nn++ )
+      {
         advances[nn] = 0;
 
+        FT_TRACE5(( "  idx %d: advance height 0 font units\n",
+                    first + nn ));
+      }
+
       return FT_Err_Ok;
     }
 
@@ -320,6 +333,11 @@
         advances[nn] = FIXED_TO_INT( decoder.builder.advance.x );
       else
         advances[nn] = 0;
+
+      FT_TRACE5(( "  idx %d: advance width %d font unit%s\n",
+                  first + nn,
+                  advances[nn],
+                  advances[nn] == 1 ? "" : "s" ));
     }
 
     return FT_Err_Ok;
@@ -384,9 +402,9 @@
     t1glyph->outline.n_points   = 0;
     t1glyph->outline.n_contours = 0;
 
-    hinting = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE   ) == 0 &&
-                       ( load_flags & FT_LOAD_NO_HINTING ) == 0 );
-    scaled  = FT_BOOL( ( load_flags & FT_LOAD_NO_SCALE   ) == 0 );
+    hinting = FT_BOOL( !( load_flags & FT_LOAD_NO_SCALE   ) &&
+                       !( load_flags & FT_LOAD_NO_HINTING ) );
+    scaled  = FT_BOOL( !( load_flags & FT_LOAD_NO_SCALE   ) );
 
     glyph->hint     = hinting;
     glyph->scaled   = scaled;
@@ -398,7 +416,7 @@
                                  t1glyph,
                                  (FT_Byte**)type1->glyph_names,
                                  face->blend,
-                                 FT_BOOL( hinting ),
+                                 hinting,
                                  FT_LOAD_TARGET_MODE( load_flags ),
                                  T1_Parse_Glyph );
     if ( error )
@@ -406,8 +424,7 @@
 
     must_finish_decoder = TRUE;
 
-    decoder.builder.no_recurse = FT_BOOL(
-                                   ( load_flags & FT_LOAD_NO_RECURSE ) != 0 );
+    decoder.builder.no_recurse = FT_BOOL( load_flags & FT_LOAD_NO_RECURSE );
 
     decoder.num_subrs     = type1->num_subrs;
     decoder.subrs         = type1->subrs;
@@ -528,7 +545,7 @@
 
 
           /* First of all, scale the points, if we are not hinting */
-          if ( !hinting || ! decoder.builder.hints_funcs )
+          if ( !hinting || !decoder.builder.hints_funcs )
             for ( n = cur->n_points; n > 0; n--, vec++ )
             {
               vec->x = FT_MulFix( vec->x, x_scale );
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1gload.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1gload.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1gload.h                                                              */
-/*                                                                         */
-/*    Type 1 Glyph Loader (specification).                                 */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1gload.h
+ *
+ *   Type 1 Glyph Loader (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1load.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1load.c	Thu May 09 16:09:39 2019 -0700
@@ -1,63 +1,63 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1load.c                                                               */
-/*                                                                         */
-/*    Type 1 font loader (body).                                           */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.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'.                            */
-  /*                                                                       */
-  /*************************************************************************/
+/****************************************************************************
+ *
+ * t1load.c
+ *
+ *   Type 1 font loader (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -73,20 +73,20 @@
 
 
 #ifdef FT_CONFIG_OPTION_INCREMENTAL
-#define IS_INCREMENTAL  (FT_Bool)( face->root.internal->incremental_interface != 0 )
+#define IS_INCREMENTAL  FT_BOOL( face->root.internal->incremental_interface )
 #else
 #define IS_INCREMENTAL  0
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  t1load
 
 
 #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
@@ -222,11 +222,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Given a normalized (blend) coordinate, figure out the design          */
-  /* coordinate appropriate for that value.                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Given a normalized (blend) coordinate, figure out the design
+   * coordinate appropriate for that value.
+   */
   static FT_Fixed
   mm_axis_unmap( PS_DesignMap  axismap,
                  FT_Fixed      ncv )
@@ -251,11 +251,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Given a vector of weights, one for each design, figure out the        */
-  /* normalized axis coordinates which gave rise to those weights.         */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * Given a vector of weights, one for each design, figure out the
+   * normalized axis coordinates which gave rise to those weights.
+   */
   static void
   mm_weights_unmap( FT_Fixed*  weights,
                     FT_Fixed*  axiscoords,
@@ -293,11 +293,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Just a wrapper around T1_Get_Multi_Master to support the different    */
-  /*  arguments needed by the GX var distortable fonts.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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 )
@@ -348,16 +348,13 @@
         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] );
-    }
+    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;
 
@@ -387,24 +384,31 @@
     for ( n = 0; n < blend->num_designs; n++ )
     {
       FT_Fixed  result = 0x10000L;  /* 1.0 fixed */
+      FT_Fixed  factor;
 
 
       for ( m = 0; m < blend->num_axis; m++ )
       {
-        FT_Fixed  factor;
-
-
-        /* get current blend axis position;                  */
         /* use a default value if we don't have a coordinate */
-        factor = m < num_coords ? coords[m] : 0x8000;
-        if ( factor < 0 )
-          factor = 0;
-        if ( factor > 0x10000L )
-          factor = 0x10000L;
-
+        if ( m >= num_coords )
+        {
+          result >>= 1;
+          continue;
+        }
+
+        /* get current blend axis position */
+        factor = coords[m];
         if ( ( n & ( 1 << m ) ) == 0 )
           factor = 0x10000L - factor;
 
+        if ( factor <= 0 )
+        {
+          result = 0;
+          break;
+        }
+        else if ( factor >= 0x10000L )
+          continue;
+
         result = FT_MulFix( result, factor );
       }
 
@@ -477,6 +481,75 @@
 
 
   FT_LOCAL_DEF( FT_Error )
+  T1_Set_MM_WeightVector( T1_Face    face,
+                          FT_UInt    len,
+                          FT_Fixed*  weightvector )
+  {
+    PS_Blend  blend = face->blend;
+    FT_UInt   i, n;
+
+
+    if ( !blend )
+     return FT_THROW( Invalid_Argument );
+
+    if ( !len && !weightvector )
+    {
+      for ( i = 0; i < blend->num_designs; i++ )
+        blend->weight_vector[i] = blend->default_weight_vector[i];
+    }
+    else
+    {
+      if ( !weightvector )
+        return FT_THROW( Invalid_Argument );
+
+      n = len < blend->num_designs ? len : blend->num_designs;
+
+      for ( i = 0; i < n; i++ )
+        blend->weight_vector[i] = weightvector[i];
+
+      for ( ; i < blend->num_designs; i++ )
+        blend->weight_vector[i] = (FT_Fixed)0;
+
+      if ( len )
+        face->root.face_flags |= FT_FACE_FLAG_VARIATION;
+      else
+        face->root.face_flags &= ~FT_FACE_FLAG_VARIATION;
+    }
+
+    return FT_Err_Ok;
+  }
+
+
+  FT_LOCAL_DEF( FT_Error )
+  T1_Get_MM_WeightVector( T1_Face    face,
+                          FT_UInt*   len,
+                          FT_Fixed*  weightvector )
+  {
+    PS_Blend  blend = face->blend;
+    FT_UInt   i;
+
+
+    if ( !blend )
+      return FT_THROW( Invalid_Argument );
+
+    if ( *len < blend->num_designs )
+    {
+      *len = blend->num_designs;
+      return FT_THROW( Invalid_Argument );
+    }
+
+    for ( i = 0; i < blend->num_designs; i++ )
+      weightvector[i] = blend->weight_vector[i];
+    for ( ; i < *len; i++ )
+      weightvector[i] = (FT_Fixed)0;
+
+    *len = blend->num_designs;
+
+    return FT_Err_Ok;
+  }
+
+
+  FT_LOCAL_DEF( FT_Error )
   T1_Set_MM_Design( T1_Face   face,
                     FT_UInt   num_coords,
                     FT_Long*  coords )
@@ -573,11 +646,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Just a wrapper around T1_Set_MM_Design to support the different       */
-  /* arguments needed by the GX var distortable fonts.                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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,
@@ -719,6 +792,8 @@
     if ( error )
       goto Exit;
 
+    FT_TRACE4(( " [" ));
+
     blend  = face->blend;
     memory = face->root.memory;
 
@@ -741,11 +816,13 @@
         goto Exit;
       }
 
+      FT_TRACE4(( " /%.*s", len, token->start ));
+
       name = (FT_Byte*)blend->axis_names[n];
       if ( name )
       {
         FT_TRACE0(( "parse_blend_axis_types:"
-                    " overwriting axis name `%s' with `%*.s'\n",
+                    " overwriting axis name `%s' with `%.*s'\n",
                     name, len, token->start ));
         FT_FREE( name );
       }
@@ -758,6 +835,8 @@
       name[len] = '\0';
     }
 
+    FT_TRACE4(( "]\n" ));
+
   Exit:
     loader->parser.root.error = error;
   }
@@ -802,6 +881,8 @@
       blend    = face->blend;
       num_axis = 0;  /* make compiler happy */
 
+      FT_TRACE4(( " [" ));
+
       for ( n = 0; n < num_designs; n++ )
       {
         T1_TokenRec  axis_tokens[T1_MAX_MM_AXIS];
@@ -842,6 +923,7 @@
         }
 
         /* now read each axis token into the design position */
+        FT_TRACE4(( " [" )) ;
         for ( axis = 0; axis < n_axis; axis++ )
         {
           T1_Token  token2 = axis_tokens + axis;
@@ -850,9 +932,13 @@
           parser->root.cursor = token2->start;
           parser->root.limit  = token2->limit;
           blend->design_pos[n][axis] = T1_ToFixed( parser, 0 );
+          FT_TRACE4(( " %f", (double)blend->design_pos[n][axis] / 65536 ));
         }
+        FT_TRACE4(( "]" )) ;
       }
 
+      FT_TRACE4(( "]\n" ));
+
       loader->parser.root.cursor = old_cursor;
       loader->parser.root.limit  = old_limit;
     }
@@ -899,6 +985,8 @@
       goto Exit;
     blend = face->blend;
 
+    FT_TRACE4(( " [" ));
+
     /* now read each axis design map */
     for ( n = 0; n < num_axis; n++ )
     {
@@ -915,6 +1003,8 @@
       T1_ToTokenArray( parser, point_tokens,
                        T1_MAX_MM_MAP_POINTS, &num_points );
 
+      FT_TRACE4(( " [" ));
+
       if ( num_points <= 0 || num_points > T1_MAX_MM_MAP_POINTS )
       {
         FT_ERROR(( "parse_blend_design_map: incorrect table\n" ));
@@ -948,9 +1038,17 @@
 
         map->design_points[p] = T1_ToInt( parser );
         map->blend_points [p] = T1_ToFixed( parser, 0 );
+
+        FT_TRACE4(( " [%d %f]",
+                    map->design_points[p],
+                    (double)map->blend_points[p] / 65536 ));
       }
+
+      FT_TRACE4(( "]" ));
     }
 
+    FT_TRACE4(( "]\n" ));
+
     parser->root.cursor = old_cursor;
     parser->root.limit  = old_limit;
 
@@ -1010,6 +1108,8 @@
     old_cursor = parser->root.cursor;
     old_limit  = parser->root.limit;
 
+    FT_TRACE4(( "[" ));
+
     for ( n = 0; n < num_designs; n++ )
     {
       token = design_tokens + n;
@@ -1018,8 +1118,12 @@
 
       blend->default_weight_vector[n] =
       blend->weight_vector[n]         = T1_ToFixed( parser, 0 );
+
+      FT_TRACE4(( " %f", (double)blend->weight_vector[n] / 65536 ));
     }
 
+    FT_TRACE4(( "]\n" ));
+
     parser->root.cursor = old_cursor;
     parser->root.limit  = old_limit;
 
@@ -1036,6 +1140,20 @@
   {
     face->len_buildchar = (FT_UInt)T1_ToFixedArray( &loader->parser,
                                                     0, NULL, 0 );
+
+#ifdef FT_DEBUG_LEVEL_TRACE
+    {
+      FT_UInt  i;
+
+
+      FT_TRACE4(( " [" ));
+      for ( i = 0; i < face->len_buildchar; i++ )
+        FT_TRACE4(( " 0" ));
+
+      FT_TRACE4(( "]\n" ));
+    }
+#endif
+
     return;
   }
 
@@ -1071,6 +1189,8 @@
     /* if the keyword has a dedicated callback, call it */
     if ( field->type == T1_FIELD_TYPE_CALLBACK )
     {
+      FT_TRACE4(( "  %s", field->ident ));
+
       field->reader( (FT_Face)face, loader );
       error = loader->parser.root.error;
       goto Exit;
@@ -1148,6 +1268,8 @@
       max_objects  = 0;
     }
 
+    FT_TRACE4(( "  %s", field->ident ));
+
     if ( *objects )
     {
       if ( field->type == T1_FIELD_TYPE_INTEGER_ARRAY ||
@@ -1167,6 +1289,8 @@
       error = FT_Err_Ok;
     }
 
+    FT_TRACE4(( "\n" ));
+
   Exit:
     return error;
   }
@@ -1179,6 +1303,8 @@
     FT_UNUSED( face );
 
     loader->keywords_encountered |= T1_PRIVATE;
+
+    FT_TRACE4(( "\n" ));
   }
 
 
@@ -1258,6 +1384,14 @@
       return;
     }
 
+    FT_TRACE4(( " [%f %f %f %f %f %f]\n",
+                (double)temp[0] / 65536 / 1000,
+                (double)temp[1] / 65536 / 1000,
+                (double)temp[2] / 65536 / 1000,
+                (double)temp[3] / 65536 / 1000,
+                (double)temp[4] / 65536 / 1000,
+                (double)temp[5] / 65536 / 1000 ));
+
     temp_scale = FT_ABS( temp[3] );
 
     if ( temp_scale == 0 )
@@ -1280,12 +1414,18 @@
       temp[5] = FT_DivFix( temp[5], temp_scale );
       temp[3] = temp[3] < 0 ? -0x10000L : 0x10000L;
     }
-
     matrix->xx = temp[0];
     matrix->yx = temp[1];
     matrix->xy = temp[2];
     matrix->yy = temp[3];
 
+    if ( !FT_Matrix_Check( matrix ) )
+    {
+      FT_ERROR(( "t1_parse_font_matrix: invalid font matrix\n" ));
+      parser->root.error = FT_THROW( Invalid_File_Format );
+      return;
+    }
+
     /* note that the offsets must be expressed in integer font units */
     offset->x = temp[4] >> 16;
     offset->y = temp[5] >> 16;
@@ -1494,6 +1634,15 @@
         T1_Skip_Spaces( parser );
       }
 
+#ifdef FT_DEBUG_LEVEL_TRACE
+      FT_TRACE4(( " [" ));
+
+      /* XXX show encoding vector */
+      FT_TRACE4(( "..." ));
+
+      FT_TRACE4(( "]\n" ));
+#endif
+
       face->type1.encoding_type = T1_ENCODING_TYPE_ARRAY;
       parser->root.cursor       = cur;
     }
@@ -1504,18 +1653,30 @@
     {
       if ( cur + 17 < limit                                            &&
            ft_strncmp( (const char*)cur, "StandardEncoding", 16 ) == 0 )
+      {
         face->type1.encoding_type = T1_ENCODING_TYPE_STANDARD;
+        FT_TRACE4(( " StandardEncoding\n" ));
+      }
 
       else if ( cur + 15 < limit                                          &&
                 ft_strncmp( (const char*)cur, "ExpertEncoding", 14 ) == 0 )
+      {
         face->type1.encoding_type = T1_ENCODING_TYPE_EXPERT;
+        FT_TRACE4(( " ExpertEncoding\n" ));
+      }
 
       else if ( cur + 18 < limit                                             &&
                 ft_strncmp( (const char*)cur, "ISOLatin1Encoding", 17 ) == 0 )
+      {
         face->type1.encoding_type = T1_ENCODING_TYPE_ISOLATIN1;
+        FT_TRACE4(( " ISOLatin1Encoding\n" ));
+      }
 
       else
+      {
         parser->root.error = FT_ERR( Ignore );
+        FT_TRACE4(( "<unknown>\n" ));
+      }
     }
   }
 
@@ -1696,6 +1857,15 @@
     if ( !loader->num_subrs )
       loader->num_subrs = num_subrs;
 
+#ifdef FT_DEBUG_LEVEL_TRACE
+      FT_TRACE4(( " <" ));
+
+      /* XXX show subrs? */
+      FT_TRACE4(( "%d elements", num_subrs ));
+
+      FT_TRACE4(( ">\n" ));
+#endif
+
     return;
 
   Fail:
@@ -2017,6 +2187,15 @@
       loader->num_glyphs += 1;
     }
 
+#ifdef FT_DEBUG_LEVEL_TRACE
+      FT_TRACE4(( " <" ));
+
+      /* XXX show charstrings? */
+      FT_TRACE4(( "%d elements", loader->num_glyphs ));
+
+      FT_TRACE4(( ">\n" ));
+#endif
+
     return;
 
   Fail:
@@ -2024,12 +2203,12 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define the token field static variables.  This is a set of            */
-  /* T1_FieldRec variables.                                                */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * Define the token field static variables.  This is a set of
+   * T1_FieldRec variables.
+   *
+   */
 
 
   static
@@ -2216,6 +2395,7 @@
                     ? T1_FIELD_DICT_PRIVATE
                     : T1_FIELD_DICT_FONTDICT;
 
+
               if ( !( dict & keyword->dict ) )
               {
                 FT_TRACE1(( "parse_dict: found `%s' but ignoring it"
@@ -2330,6 +2510,7 @@
     if ( error )
       goto Exit;
 
+    FT_TRACE4(( " top dictionary:\n" ));
     error = parse_dict( face, &loader,
                         parser->base_dict, parser->base_len );
     if ( error )
@@ -2339,6 +2520,7 @@
     if ( error )
       goto Exit;
 
+    FT_TRACE4(( " private dictionary:\n" ));
     error = parse_dict( face, &loader,
                         parser->private_dict, parser->private_len );
     if ( error )
@@ -2349,6 +2531,16 @@
 
 #ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
 
+    /* we don't support Multiple Master fonts with intermediate designs; */
+    /* this implies that `num_designs' must be equal to `2^^num_axis'    */
+    if ( face->blend                                                 &&
+         face->blend->num_designs != ( 1U << face->blend->num_axis ) )
+    {
+      FT_ERROR(( "T1_Open_Face:"
+                 " number-of-designs != 2 ^^ number-of-axes\n" ));
+      T1_Done_Blend( face );
+    }
+
     if ( face->blend                                                     &&
          face->blend->num_default_design_vector != 0                     &&
          face->blend->num_default_design_vector != face->blend->num_axis )
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1load.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1load.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1load.h                                                               */
-/*                                                                         */
-/*    Type 1 font loader (specification).                                  */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1load.h
+ *
+ *   Type 1 font loader (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -106,6 +106,16 @@
   FT_LOCAL( void )
   T1_Done_Blend( T1_Face  face );
 
+  FT_LOCAL( FT_Error )
+  T1_Set_MM_WeightVector( T1_Face    face,
+                          FT_UInt    len,
+                          FT_Fixed*  weightvector );
+
+  FT_LOCAL( FT_Error )
+  T1_Get_MM_WeightVector( T1_Face    face,
+                          FT_UInt*   len,
+                          FT_Fixed*  weightvector );
+
 #endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */
 
 
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1objs.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1objs.c	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1objs.c                                                               */
-/*                                                                         */
-/*    Type 1 objects manager (body).                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1objs.c
+ *
+ *   Type 1 objects manager (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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>
@@ -36,21 +36,21 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  t1objs
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SIZE FUNCTIONS                             */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SIZE FUNCTIONS
+   *
+   */
 
 
   static PSH_Globals_Funcs
@@ -133,11 +133,11 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            SLOT  FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           SLOT  FUNCTIONS
+   *
+   */
 
   FT_LOCAL_DEF( void )
   T1_GlyphSlot_Done( FT_GlyphSlot  slot )
@@ -177,24 +177,25 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /*                            FACE  FUNCTIONS                            */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                           FACE  FUNCTIONS
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    T1_Face_Done                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The face object destructor.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    face :: A typeless pointer to the face object to destroy.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( FT_Face  t1face )         /* T1_Face */
   {
@@ -274,29 +275,34 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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,
                 FT_Face        t1face,          /* T1_Face */
@@ -341,6 +347,10 @@
     if ( error )
       goto Exit;
 
+    FT_TRACE2(( "T1_Face_Init: %08p (index %d)\n",
+                face,
+                face_index ));
+
     /* if we just wanted to check the format, leave successfully now */
     if ( face_index < 0 )
       goto Exit;
@@ -516,7 +526,8 @@
 
         error = FT_CMap_New( cmap_classes->unicode, NULL, &charmap, NULL );
         if ( error                                      &&
-             FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) )
+             FT_ERR_NEQ( error, No_Unicode_Glyph_Name ) &&
+             FT_ERR_NEQ( error, Unimplemented_Feature ) )
           goto Exit;
         error = FT_Err_Ok;
 
@@ -564,20 +575,21 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <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.                             */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( FT_Module  module )
   {
@@ -620,17 +632,18 @@
   }
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    T1_Driver_Done                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Finalizes a given Type 1 driver.                                   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    driver :: A handle to the target Type 1 driver.                    */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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( FT_Module  driver )
   {
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1objs.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1objs.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1objs.h                                                               */
-/*                                                                         */
-/*    Type 1 objects manager (specification).                              */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1objs.h
+ *
+ *   Type 1 objects manager (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -34,59 +34,59 @@
   typedef struct T1_Glyph_Hints_  T1_Glyph_Hints;
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    T1_Size                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A handle to a Type 1 size object.                                  */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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.                                     */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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                 */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   *                 HERE BEGINS THE TYPE1 SPECIFIC STUFF
+   *
+   */
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    T1_SizeRec                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Type 1 size record.                                                */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   T1_SizeRec
+   *
+   * @Description:
+   *   Type 1 size record.
+   */
   typedef struct  T1_SizeRec_
   {
     FT_SizeRec  root;
@@ -105,14 +105,14 @@
   T1_Size_Init( FT_Size  size );
 
 
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    T1_GlyphSlotRec                                                    */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Type 1 glyph slot record.                                          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @Type:
+   *   T1_GlyphSlotRec
+   *
+   * @Description:
+   *   Type 1 glyph slot record.
+   */
   typedef struct  T1_GlyphSlotRec_
   {
     FT_GlyphSlotRec  root;
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1parse.c	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1parse.c	Thu May 09 16:09:39 2019 -0700
@@ -1,36 +1,36 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1parse.c                                                              */
-/*                                                                         */
-/*    Type 1 parser (body).                                                */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1parse.c
+ *
+ *   Type 1 parser (body).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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.          */
-  /*                                                                       */
-  /*************************************************************************/
+  /**************************************************************************
+   *
+   * 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>
@@ -43,14 +43,14 @@
 #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.                                            */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * 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
+#define FT_COMPONENT  t1parse
 
 
   /*************************************************************************/
@@ -169,21 +169,21 @@
       }
     }
 
-    /******************************************************************/
-    /*                                                                */
-    /* 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.         */
-    /*                                                                */
+    /*******************************************************************
+     *
+     * 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 */
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1parse.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1parse.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1parse.h                                                              */
-/*                                                                         */
-/*    Type 1 parser (specification).                                       */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1parse.h
+ *
+ *   Type 1 parser (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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_
@@ -28,36 +28,45 @@
 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.          */
-  /*                                                                       */
+  /**************************************************************************
+   *
+   * @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;
--- a/src/java.desktop/share/native/libfreetype/src/type1/t1tokens.h	Wed May 08 22:59:20 2019 -0700
+++ b/src/java.desktop/share/native/libfreetype/src/type1/t1tokens.h	Thu May 09 16:09:39 2019 -0700
@@ -1,19 +1,19 @@
-/***************************************************************************/
-/*                                                                         */
-/*  t1tokens.h                                                             */
-/*                                                                         */
-/*    Type 1 tokenizer (specification).                                    */
-/*                                                                         */
-/*  Copyright 1996-2018 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used,       */
-/*  modified, and distributed under the terms of the FreeType project      */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
+/****************************************************************************
+ *
+ * t1tokens.h
+ *
+ *   Type 1 tokenizer (specification).
+ *
+ * Copyright (C) 1996-2019 by
+ * David Turner, Robert Wilhelm, and Werner Lemberg.
+ *
+ * This file is part of the FreeType project, and may only be used,
+ * modified, and distributed under the terms of the FreeType project
+ * license, LICENSE.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