changeset 54876:da3834261f0c

8222362: Upgrade to Freetype 2.10.0 Reviewed-by: serb, erikj
author prr
date Thu, 09 May 2019 16:09:39 -0700
parents bcfedddcf4ce
children dde07ac16610
files 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
diffstat 316 files changed, 30972 insertions(+), 30879 deletions(-) [+]
line wrap: on
line diff
--- 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.